前言¶
在 DeepSeek Harness(DSH)里跑智能体或长任务时,模型请求常因短暂网络抖动、网关异常或上游限流而失败。若只依赖 Provider 内置的 normal 重试策略,策略耗尽后轮次往往直接中断。下面介绍社区插件 dsh-reconnect(维护者 mrbeandev),它在 DSH 的 agent/request-error 瀑布流上接管可恢复错误,用指数退避重新提交同一模型请求,并支持 Web 端配置面板。
这是什么¶
dsh-reconnect 是 DSH 的模型推理类插件,npm 包名 dsh-reconnect,当前版本 2.0.0(MIT 许可证)。定位是:在内置 Provider 重试用尽后,或由 always 策略把恢复交给下游时,对可恢复的模型请求做安全重试,避免临时故障打断 agent turn 或长任务。
插件监听 DSH 的 agent/request-error 事件;依据机器可读的错误码决定是否重试,不会从任意 tool 输出推断模型失败(tool/result 中的工具执行失败不在本插件重试边界内)。
重试策略¶
README 中的策略如下(与 Provider 策略配合使用):
| 条件 | 行为 |
|---|---|
EMPTY_RESPONSE、RATE_LIMIT、SERVER、STREAM_CLOSED、TIMEOUT、TRANSPORT |
无限重试 |
| 模型缺失或未配置 | 在配置恢复前无限重试 |
QUOTA |
默认不重试;可通过 retryQuota 开启 |
未知错误(如 PI_AI_ERROR) |
默认无限重试;关闭 retryUnknown 后可设上限 |
| 工具、参数、认证、凭证、上下文溢出、中止类错误 | 不重试 |
退避、取消与会话事件¶
- 指数退避:
1s → 2s → 4s → …,默认上限 60 秒(由maxDelayMs控制本地退避上限,不限制 Provider 的Retry-After或总重试时长)。 - 若 Provider 返回正的
Retry-After,会作为无上限下限的最小等待时间。 - 发出标准
llm/retry、llm/retry-started会话事件;Harness 对话 UI 可显示重试次数与倒计时。 - turn 中止或插件卸载时立即停止;热重载与关闭时会安全排空 pending 等待。
安装与启用¶
推荐通过 npm 在 web profile 安装并激活:
dsh plugin --profile web add dsh-reconnect
安装后需重启正在运行的 DSH web 进程。包声明了 dsh.bundle patch,profile 包管理器会自动加入 active bundle,一般无需手改 cordis.yml。
更新或移除:
dsh plugin --profile web update dsh-reconnect
dsh plugin --profile web remove dsh-reconnect
也可从 GitHub 安装,并可钉住版本以便复现:
dsh plugin --profile web add github:mrbeandev/dsh-reconnect
dsh plugin --profile web add github:mrbeandev/dsh-reconnect#v2.0.0
环境要求(来自 README):
- 带 Host settings 服务的 DeepSeek Harness
- Node.js
^22.19.0或>=24.0.0 - 使用 web profile 才能看到可视化设置卡片(客户端设置卡片不读取凭证)
配置与设置面板¶
在 Settings → Plugins → Plugin configuration → ReConnect automatic retry 中可调整:
- Maximum retry delay:1、2、5、10、30、60、120 秒或自定义值
- Retry quota errors:默认关闭
- Retry unknown errors indefinitely:默认开启
- Maximum unknown-error retries:默认 3,仅在关闭无限未知错误重试时生效
修改后立即生效。
YAML 示例(插入 reconnect 插件块):
- insert:
- id: reconnect
name: dsh-reconnect
config:
maxDelayMs: 15000
retryQuota: false
retryUnknown: true
unknownMaxRetries: 3
| 配置项 | 类型 | 默认 | 说明 |
|---|---|---|---|
maxDelayMs |
integer | 60000 |
本地指数退避最大延迟(毫秒) |
retryQuota |
boolean | false |
是否对配额/余额耗尽类错误无限重试 |
retryUnknown |
boolean | true |
是否对未知错误码无限重试 |
unknownMaxRetries |
integer | 3 |
retryUnknown 为 false 时,连续未知错误上限 |
适用场景与注意¶
适合:需要长时间跑 agent、对网关/网络/限流偶发失败容忍度要求高、希望在 UI 里看清重试进度的 DSH web 用户。
注意:
- 插件在当前 DSH 进程权限下运行;安装前请自行审阅 GitHub 源码 与 MIT 许可证。
- 配额类错误默认不重试,避免在余额耗尽时无意义刷请求;若业务明确需要,再开启
retryQuota。 - 社区插件目录 SkillHub 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」,本包为 npm 与 GitHub 上的社区维护版本,英文版基于 MIT 授权的 MistRain-1/dsh-reconnect 演进。
结尾¶
经过上面的步骤,你可以在 Provider 重试之外多一层可配置、可观测的模型请求恢复能力。目录页:https://www.skillhub.cn/plugins/mrbeandev/dsh-reconnect;源码与完整说明:https://github.com/mrbeandev/dsh-reconnect;npm:https://www.npmjs.com/package/dsh-reconnect。