前言¶
在 DeepSeek Harness(DSH)里跑长任务时,一轮对话可能因为 429 限流、配额用尽、或模型返回空内容而异常结束。DSH 内置的 dsh-llm 会在单步内重试若干次,但步级重试耗尽后,整轮仍会停在那里,需要人工再发一条「继续」才能把任务接下去。
下面介绍社区插件 dsh-auto-continue(维护者 spix18):在可恢复的错误类结束一轮后,等待片刻并替你发送 continue,让长任务在限流窗口内有机会自行恢复,而不是硬停。
这是什么¶
dsh-auto-continue 是 DSH 的 Auto-continue 工作流类插件。定位是:当一轮在限流、配额、空响应或你自定义的错误码上失败时,在 dsh-llm 步级重试已经用尽 之后,再自动发起一轮带 continue 的跟进,直到该轮成功,或达到可配置的连续失败上限。
插件以标准 Cordis 双半部形式发布(npm 包名 dsh-auto-continue,当前 README 对应版本 0.4.7,许可证 MIT)。社区目录页:skillhub.cn/plugins/spix18/dsh-auto-continue;源码与说明:github.com/spix18/dsh-auto-continue。
核心功能¶
轮次级自动 continue¶
插件监听会话的 turn/end。若结束原因是可重试的错误(或你扩展的错误码),则在随机 1–2 秒 后退避(固定区间、不指数增长,便于滑过限流窗口),再通过 agent 的 followup 发送 continue 消息,开启新一轮。
内置始终匹配的错误码包括:RATE_LIMIT(429)、QUOTA、ACCOUNT_QUOTA、EMPTY_RESPONSE。这些与 DSH 文档一致,按 LlmFailure.code 精确 匹配,不解析错误文案。
SERVER、TIMEOUT、TRANSPORT 未 内置为自动 continue 对象:dsh-llm 已在步内重试,轮级再 continue 会叠加重试。
连续失败上限与会话隔离¶
同一 session 内连续自动 continue 失败会累加计数;任意一轮正常结束 或 你手动发送一条消息,计数归零。达到 Consecutive failure limit(默认 20,可调 1–100)后停止自动 continue,等待你介入。其他 session 互不影响。
自定义错误码¶
在设置页可追加逗号或换行分隔的错误码;匹配时对整棵错误对象做递归搜索,便于捕获嵌在 cause 里的厂商码。
界面与持久化¶
- 输入区底部 composer 提供快捷开关 pill,可临时启用/关闭,无需离开对话。
- 侧栏 Settings → Auto-Continue 通过 DSH 官方 slot API 渲染,不依赖 DOM scraping。
- 设置写入
~/.dsh/dsh-auto-continue.json。
浏览器半部注册在 conversation.input.left(list slot)与 settings.section;Host 半部提供 /api/dsh-auto-continue/* 路由供 UI 轮询状态(约每 2 秒,标签页隐藏时暂停)。
安装与启用¶
环境要求: Node ≥ 20;DSH ≥ 0.2.0-rc.2。
先做安装,再重启 DSH(浏览器端在启动时加载),最后在侧栏打开设置。
# 1. 安装到 web profile
dsh plugin --profile web add dsh-auto-continue
# 2. 重启 DSH
# 3. 在侧栏打开 Settings → Auto-Continue 按需配置
若使用 headless profile,将 --profile web 换为 --profile headless 即可(README 原文示例)。
安装完成后,composer 底部会出现快捷开关;默认参数即可工作。可将 Consecutive failure limit 设为 1–100,并按需添加额外错误码。
配置说明¶
设置页¶
| 控件 | 作用 |
|---|---|
| Enable plugin | 总开关;关闭后隐藏 pill 并停止所有自动 continue |
| Show the quick switch in the composer | 仅隐藏 pill;后台 auto-continue 仍可运行 |
| Consecutive failure limit | 1–100,默认 20 |
| Additional auto-continue error codes | 额外错误码,逗号或换行分隔 |
Profile / patch 可选覆盖¶
可在 cordis.patch.yml 或 profile 配置中声明:
- id: auto-continue
name: dsh-auto-continue
config:
maxRetries: 20 # 连续失败多少次后放弃
continueMessage: "continue" # 跟进轮发送的文本
errorCodes: ["invalid_request_error"]
典型工作流程¶
理解插件在栈中的位置,有助于判断是否该开 auto-continue:
LLM 返回 429 / 配额用尽 / 空响应
↓
dsh-llm 步内重试(内置约 5 次,500ms → 10s 退避)
↓
重试用尽 → turn 以 reason.kind === 'error' 或 'max-tokens' 结束
↓
dsh-auto-continue 介入
↓
随机等待 1–2 s → 发送 "continue" → 新一轮开始
↓
仍失败则重复,直至成功或达到连续失败上限
长脚本生成、多步 agent 工作流、对接容易 429 的 API 时,这一层「最后一道防线」可以减少因短暂限流而整任务中断的情况。若错误属于服务端/超时/传输且步内已在重试,通常不必指望本插件再叠一层 continue。
适用场景与注意¶
适合: 已在 DSH web(或 headless)profile 中开发或运行 agent,且经常遇到可恢复的 429、配额或空响应,希望少手动点「继续」的场景。
注意:
- 插件与 DSH 进程同权限运行;安装前请阅读 源码 与 MIT 许可证,自行评估是否纳入环境。
- 社区目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本包为社区维护的工作流扩展。
- 自动 continue 会消耗额外轮次与配额;连续失败上限是为避免无限循环而设,请按厂商限流策略调整 limit 与自定义错误码。
- README 提供本地 checkout 与
node test/run.mjs验证方式;日常安装以 npm 包与上述dsh plugin add命令为准。
结尾¶
dsh-auto-continue 在 DSH 步级重试之后补一层轮级恢复:识别限流、配额与空响应等失败类,退避后自动发送 continue,并可用 composer 快捷开关与设置页控制行为与上限。