DeepSeek Harness Hub
← 返回列表

全量重试插件Yaing-Yan/dsh-better-retry

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

任意报错自动重试模型请求,滑块可调次数

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/21 · 已提供中文文档

DSH (DeepSeek Harness) Cordis plugin: retry ANY model-request failure with durable backoff; retry budget adjustable in Settings → General via slider (0–64, default 8). 无论报什么错都重试模型请求,设置滑块可调 0–64 次,默认 8。

综合分
28.1
GitHub 分
28.1
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Yaing-Yan/dsh-better-retry
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery@deepseek-ai/dsh-settings@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-slots
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-better-retry 🔁

一个 DeepSeek Harness(DSH)Cordis 插件:无论报什么错都自动重试模型请求(持久化 + 指数退避),并在 设置 → 常规 里提供滑块实时调整重试次数(0–64,默认 8)与 429 等待时长(5–120 秒,默认 15 秒)。
一个 DSH(DeepSeek Harness)Cordis 插件:无论报什么错都自动重试模型请求(持久化 + 指数退避),并在 设置 → 常规 里提供滑块实时调整重试次数(0–64,默认 8)与 429 等待时长(5–120 秒,默认 15 秒)。

License: MIT
DSH

✨ 为什么需要它 / 为什么需要它

内置的 dsh-llm-retry 只重试 provider 策略里列出的错误码(默认:空响应、限流、5xx、超时、传输错误)。其它错误(鉴权、配额、无效请求、流空闲超时……)一遇即终,直接「本轮运行失败」。本插件把这张白名单变成"全量重试"。

内置的 dsh-llm-retry 只重试 provider 策略里列出的错误码(默认:空响应、限流、5xx、超时、传输错误)。其它错误(鉴权、配额、无效请求、流空闲超时……)一遇即终,直接「本轮运行失败」。本插件把这张白名单变成"全量重试"。

- 任意错误码 — 重试所有失败类别,受你的预算上限约束。
- 持久且可见 — 追加与内置插件相同的 llm/retry / llm/retry-started 事件,因此聊天界面会显示"正在重试模型请求(n/N)· Xs",会话保持可安全重放。
- 设置中的滑块 — 设置 → 常规 → "失败重试次数 / Failure retries"(0–64,默认 8)与 "429 等待(秒) / 429 wait (s)"(5–120,默认 15),持久化到 settings.yaml,无需重启即可对下一次失败生效。
- 两个刻意的例外 — ABORTED(用户取消)与 CONTEXT_WINDOW_EXCEEDED(由压缩插件处理)永不重试。
- 与内置重试良好协作 — 下游的重试/压缩决策始终优先;本插件只恢复无人认领的失败。

🧩 工作原理 / 工作原理

| 部分 | 作用 |
| --- | --- |
| 宿主(lib/index.js) | 监听 agent 循环的 agent/request-error 瀑布流。对于任何不在永不重试集合中、且尚未被下游恢复的失败,它会追加一个持久的 llm/retry 事件,等待指数退避(500 毫秒 → 上限 10 秒,10% 抖动)——或者,对于携带 Retry-After 的失败(429 限流/配额),则等待服务器请求的时长,并夹取到用户的 429 窗口 [5 秒, retryAfterMs] 内——追加 llm/retry-started,并返回 { kind: "retry" },以便循环重新发起请求。设置位于 dsh-better-retry 命名空间(maxRetries 默认 8 最大 64,retryAfterMs 默认 15 秒范围 5–120 秒),每次更改都会热重载。 |
| 客户端(lib/client.js) | 注册两行 settings.general.item:范围滑块,读写 Host 半部分的同源路由 /dsh-better-retry/config(settings wire API 只提供 apiproxy 允许列表中的命名空间,因此 Host 通过 settings 服务提供自己的路由)——每次释放都会立即将 dsh-better-retry.maxRetries / retryAfterMs 持久化到 settings.yaml 中。 |

模型请求失败(任意代码)
│
▼
agent/request-error(瀑布流)
│  下游优先:原版重试 / 压缩决定?
▼
永不重试? ── ABORTED / CONTEXT_WINDOW_EXCEEDED ──► 直接放行
│
▼
追加 llm/retry(持久化) ──► 退避 ──► llm/retry-started ──► 循环重试
│                                                         (上限:滑块值)
▼
预算耗尽 ──► 原始失败浮出(“本轮运行失败”)

📦 安装 / Install

A. 全局静态插件(推荐——重启后仍然有效)

cd "$DSH_HOME/profiles/web"          # DSH_HOME 默认为 ~/.dsh
pnpm add https://github.com/Yaing-Yan/dsh-better-retry/archive/refs/tags/v1.0.0.tar.gz
然后将 "dsh-better-retry" 添加到 package.json 中的 "dsh.profile.bundles" 数组
dsh --profile web                    # 重启应用

这正是 dsh-at-file / dsh-better-status / dsh-show-picture 的安装方式。Host 半部分注册重试监听器;Client 半部分作为 Web 模块(/plugins/dsh-better-retry/client.js)提供,并将滑块行添加到 设置 → 通用。

B. 动态 Cordis 插件(会话本地)

该插件也可以通过 cordis_define(kind 为 new)在单个会话中创建:
- code.host ← 粘贴 plugin/host.js 的内容
- code.client ← 粘贴 plugin/client.js 的内容

然后使用 cordis_run(模式 run)激活。Client 半部分首次激活时会在 UI 中请求用户批准。动态插件是进程本地的:它们不会在 DSH 重启后保留,并且属于创建它们的会话。在动态模式下,预算固定为 8(沙箱没有 settings 服务);滑块仍会为静态安装持久化该值。

完整的分步说明(包括升级和回滚)见 docs/INSTALL.md。

🎚 配置 / Configuration

| 位置 | 内容 | 默认值 | 范围 |
| --- | --- | --- | --- |
| 设置 → 通用 → 失败重试次数 | dsh-better-retry.maxRetries | 8 | 0–64 |
| 设置 → 通用 → 429 等待(秒) | dsh-better-retry.retryAfterMs | 15 s | 5–120 s |
| ~/.dsh/settings.yaml → dsh-better-retry: → maxRetries / retryAfterMs | 同上,可手动编辑 | 8 / 15000 ms | 0–64 / 5000–120000 ms |

- 0 会完全禁用任意代码重试(原版策略仍然适用)。
- 更改会应用于下一次失败;进行中的重试链会保留其启动时的预算(该链的 policyKey 内嵌了预算)。
- 退避:初始 500 ms,翻倍,上限 10 s,±10% 抖动。
- 提供方返回的 Retry-After(429 配额/速率限制)会被作为等待时间予以遵循,并被限制在 [5 s, retryAfterMs] 范围内——绝不会被跳过,因此配额错误会在预算范围内重试(例如 Retry-After 为 60 s,而默认上限为 15 s 时,每次重试等待 15 s)。

⚠️ 注意事项 / 说明

- 重试 AUTH/QUOTA 失败仅对暂时性抖动有帮助——永久无效的密钥或空余额只会失败 9 次(1 次 + 8 次重试)后才会暴露出来。
- 上下文窗口溢出由 dsh-compaction-basic 恢复(压缩,然后从替换后的表面重试),而非盲目重复。
- 会话重放保持有效:发出的事件满足原生 llm-retry 的不变量(模式、递增的重试编号、每条链的 retryId)。

📁 仓库布局 / 目录结构

dsh-better-retry/
├── lib/
│   ├── index.js         # 宿主端(任意错误重试 + 设置区段)——静态安装
│   └── client.js        # 客户端(设置滑块)——作为 Web 模块提供
├── plugin/
│   ├── host.js          # 宿主端——粘贴为 code.host(动态;预算固定为 8)
│   └── client.js        # 客户端——粘贴为 code.client(动态)
├── docs/
│   └── INSTALL.md       # 分步安装 / 更新 / 回滚
├── cordis.patch.yml     # 捆绑补丁:插入 dsh-better-retry 行
├── dsh.plugin.json      # 插件元数据(入口 + 客户端平台)
├── package.json
└── LICENSE

📄 许可证 / 许可证

MIT © 2026 dsh-better-retry 贡献者

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群