dsh-llm-error-retry:大模型请求错误休眠重试

前言

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> 进行操作。

核心功能

该插件提供以下核心能力:

  1. 多形态错误匹配:支持按 HTTP 状态码、机器码(如 RATE_LIMIT)、返回字段=值(如 code=insufficient_quota)三种形态命中报错。这覆盖了包括把状态码压平进 message 的适配器形态在内的常见场景。
  2. 独立规则配置:每条规则可以独立配置休眠时长(delayMs)与最大重试次数(maxRetries)。
  3. GUI 实时编辑:提供图形界面用于实时编辑规则,保存即生效,且跨重启持久。
  4. 会话展示:重试过程会在会话框内以原生重试卡片展示,显示当前进度(如“第 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 仓库。

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

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

小夜