前言¶
DeepSeek Harness (DSH) 采用插件化架构,允许用户扩展功能。在使用 DSH 进行工作流编排时,常会遇到网络波动、服务端报错或模型流输出中断的情况。内置的重试机制有时不够用,或者执行太快导致用户无法感知,而断开的回合往往需要手动介入。
dsh-auto-retry 插件旨在解决这些问题。它提供请求级补充重试、回合级自动继续以及挂起自动唤醒。通过这些机制,插件能在后台自动处理大部分异常,并将过程可视化,避免用户盯着屏幕干等。
核心能力¶
请求级补充重试¶
当 DSH 内置重试耗尽后,插件会针对 8 种触发情况进行追加重试。这 8 种情况包括:限流 (429)、服务端错误 (5xx)、响应超时、空响应、网络传输错误、未知错误、HTTP 4xx 错误以及请求中断。用户可以在设置中逐项勾选并设定重试次数(0~20 次)。
回合级自动继续¶
对于重试无法挽救的回合,插件会延迟一段时间(默认 5 秒)后自动以用户身份发送“继续”消息,恢复上下文。这包括输出被截断后的续写,以及因无可用模型等原因导致的停摆。为了避免在网络彻底断开时无限空转,插件内置了熔断机制,连续失败达到阈值后会暂停自动继续,直到回合成功。
无响应看门狗¶
dsh 的流式输出默认没有超时保护。如果模型长时间不输出任何内容(零活动),任务会永远挂起。插件通过“看门狗”机制检测这种情况:一旦判定时长(默认 180 秒)内无流帧或事件,主动取消当前请求并触发自动继续。
实时状态展示¶
为了解决“后台到底发生了什么”的盲区,插件在界面底部增加了实时倒计时横幅,显示重试进度、触发原因和剩余时间。同时,右上角会弹出轻量级战报通知,每条通知 4 秒后自动消失。
数据看板¶
在设置页底部提供可折叠的数据看板。它会记录重试次数、成功所需平均重试次数、错误码分布、模型分布以及按日统计的趋势。数据持久化在本地(~/.dsh/auto-retry-stats.),重启后保留最近 5000 条记录。
内置策略展示与输入优化¶
设置页会直接展示各 Provider 当前生效的内置重试策略,帮助用户理解插件追加重试的时机。同时,针对 UI 输入框,插件修复了数值框“边输边改”的问题,支持输入时自由书写,失焦后自动校验修正。
主/子智能体分治¶
插件采用分治策略:主智能体负责处理重试和自动继续;子智能体仅负责请求级重试。当子智能体彻底失败时,错误会返回给主智能体,由主智能体自行判断是否重试或继续,避免越权操作。
安装与启用¶
进入 profile 目录:
cd ~/.dsh/profiles/web
使用插件命令安装:
dsh plugin add github:zxmqq1234/dsh-auto-retry
安装完成后,重启 DSH Web。进入设置页,即可看到“自动重试”板块。
配置与设置¶
设置页从上到下包含以下板块:
- 总开关与实时通知:一键停用插件,或仅关闭弹窗通知。
- 触发情况:勾选 8 种需要触发补充重试的错误类型,并设置各自的重试次数。
- 主智能体:配置自动继续的延迟时间、熔断上限、继续文案、看门狗判定时长以及截断续写开关。
- 子智能体:仅开启补充重试,并查看相关说明。
- 高级:选择间隔策略(指数退避或固定间隔)及参数。
- 内置重试策略:查看当前生效的配置。
- 数据看板:点击展开统计面板。
默认配置即推荐值,通常无需调整。
注意事项¶
- 恢复范围:插件只恢复“看门狗取消”和“真报错”两种情况。手动点击停止的回合不会自动继续。
- 追加而非替代:插件尊重 DSH 内置重试,只在它耗尽或不覆盖时出手,不会双重重试。
- 数据存储:统计数据存储在本地,文件名为
~/.dsh/auto-retry-stats.。
兼容性¶
该插件兼容以下 DSH 版本:
- dsh 0.1.7-alpha.1
- dsh 0.1.7-alpha.2
- dsh 0.2.0-rc.1
- dsh 0.2.0-rc.2
结尾¶
dsh-auto-retry 将繁琐的手动干预工作自动化,适合网络环境不稳定或需要长时间运行的任务场景。更多详情与源码,请访问 GitHub 仓库。