前言¶
DSH(DeepSeek Harness)采用插件化架构,旨在将功能模块化以适配不同的工作流场景。在开发与调试大模型应用时,经常遇到因网络波动或限流导致的请求失败(例如 429 状态码)。dsh-llm-error-retry 插件通过拦截错误事件,根据配置的规则进行休眠后重试,从而减少人工干预,提升自动化工作流的稳定性。
插件概览¶
- 名称:dsh-llm-error-retry
- 定位:DSH Profile Bundle 插件
- 所有者:liaoyuqing
- 类别:工作流
- 许可:MIT
安装与启用¶
安装该插件需要使用 DSH 的包管理命令。请确保你的 web profile 已启动。
dsh plugin --profile web add github:liaoyuqing/dsh-llm-error-retry
安装完成后,需要重启该 profile 以完成 bundle 层的装配。刷新 GUI 页面后,在左下角找到 设置 → LLM 错误重试,即可看到配置分区。你也可以通过备用配置页 <http://127.0.0.1:3080/llm-error-retry> 进行操作。
核心功能¶
该插件提供以下核心能力:
- 多形态错误匹配:支持按 HTTP 状态码、机器码(如
RATE_LIMIT)、返回字段=值(如code=insufficient_quota)三种形态命中报错。这覆盖了包括把状态码压平进 message 的适配器形态在内的常见场景。 - 独立规则配置:每条规则可以独立配置休眠时长(
delayMs)与最大重试次数(maxRetries)。 - GUI 实时编辑:提供图形界面用于实时编辑规则,保存即生效,且跨重启持久。
- 会话展示:重试过程会在会话框内以原生重试卡片展示,显示当前进度(如“第 N/M 次 · 休眠 Xs”)。休眠期间可被用户中断/停止,卡片会显示为已取消。
典型用法¶
配置规则时,JSON 格式中的字段含义如下:
{
"rules": [
{
"code": "429",
"delayMs": 60000,
"maxRetries": 10
}
]
}
在此配置下,当模型请求返回 429 错误时,系统将休眠 60 秒,并尝试重新发起请求,最多重试 10 次。若耗尽重试次数,错误将如实上报。支持的命中示例还包括 500、RATE_LIMIT、code=insufficient_quota 等。
注意事项¶
在开发或部署时,需要注意以下几点:
- 零依赖与构建:本包无构建脚本、零运行时依赖。安装本质是 pnpm 依赖 +
dsh.bundle声明自动注册。 - 文件命名规则:宿主半(
host.v7.mjs)代码改动必须换文件名(如host.v8.mjs),并同步更新package.json中的 exports 路径与 cordis.patch.yml 中的 name,因为 DSH 的 HMR 机制不重载同路径 ESM 模块。 - HTTP 响应限制:宿主 HTTP 响应绝不自带
Content-Length。若在 web profile 中使用 gzip 中间件,手动设置Content-Length会与压缩后的实际长度冲突,导致浏览器丢弃响应体。 - 数据存储:用户配置绝不能写进包目录(pnpm store 升级会替换包内容)。数据目录固定在
~/.dsh/llm-error-retry/,包括规则配置文件(rules.json)和运行快照(status.json)。
结尾¶
dsh-llm-error-retry 通过规则化的重试策略,解决了大模型请求中常见的临时性故障问题。开发者可以在 GUI 中快速调整策略,或在配置文件中定义更复杂的重试逻辑。相关文档与源码可参考 GitHub 仓库。