dsh-reconnect:DSH 模型请求安全重试与网关恢复

前言

在 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 用户。

注意:

  1. 插件在当前 DSH 进程权限下运行;安装前请自行审阅 GitHub 源码 与 MIT 许可证。
  2. 配额类错误默认不重试,避免在余额耗尽时无意义刷请求;若业务明确需要,再开启 retryQuota。
  3. 社区插件目录 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye