dsh-llm-key-rotation:让 DeepSeek Harness 在额度耗尽时自动换 key 重试

前言

如果你在 DeepSeek Harness(DSH)里长期跑同一个 LLM provider,大概率遇到过这种情况:任务跑到一半,请求返回 QUOTA 或 429,整条工作流被迫停下来,手动换 key、重启进程、恢复上下文。

社区里一个常见做法是写脚本监控日志再人工干预,但这类方案脱离了 Harness 本身的请求流程,处理不了「换 key 后立即重试」这件事。m1khal3v 写的 dsh-llm-key-rotation 插件把这一步做进了 Harness 的恢复链路里:请求失败时自动切换到配置链中的下一个 key 并立即重试,不需要重启,也不丢上下文。下面介绍它的功能、安装和配置方式。

这是什么

dsh-llm-key-rotation 是一个面向 DeepSeek Harness 的插件,README 里的定位是「Seamless API-key rotation for DeepSeek Harness」——为 LLM provider 提供无感的 API-key 轮换。作者是 m1khal3v,当前版本 1.1.0,许可证为 MIT,README badge 标明适配 DeepSeek Harness v0.1.1-rc.1。

它解决的场景很具体:当一个 provider 的某个 key 触发 QUOTARATE_LIMITAUTH 错误时,插件从你预先配置的 key 链中取下一个,热切换后立刻重试这次请求。对 Agent 和用户来说这个过程是透明的——本轮请求用新 key 重试成功,后续请求继续沿用当前可用的 key。

核心功能

按 README 的说明,插件提供以下能力:

1、错误触发的热切换:请求返回 QUOTA / RATE_LIMIT / AUTH 时,自动换到配置链中的下一个 key 并立即重试,无需重启、不丢失上下文。

2、对 Agent 与用户透明:请求重试无感知,工作流不会因为额度问题中断。

3、原生 Web UI:在 Settings 中查看 provider 可用的所有 keys,并切换轮换开关。

4、Smart Anti-Spin:内置冷却机制,防止所有 key 都耗尽时陷入无限循环。

5、Smart Rotation Window(300 秒):连续失败时依次向前轮换 key;超过 5 分钟没有失败,链会重置回链首重新开始。

6、零核心补丁:插件干净地接入 Harness 的 recovery waterfall(恢复瀑布),安装和移除都不会改动核心。

7、密钥安全存储:keys 保存在 Harness credential store 中。

8、终端实时日志且不泄露密钥:轮换事件实时输出到 dsh 终端,日志只包含 provider 名称、索引和错误码,不记录密钥值。

安装

插件通过 web profile 安装,在终端执行:

dsh plugin --profile web add @m1khal3v/dsh-llm-key-rotation

环境方面,package.json 的 engines 要求 Node ^22.19 || >=24

配置与使用

安装完成后,进入 Settings → Plugins → Key Rotation,按以下步骤配置:

1、为目标 provider 打开轮换开关。

2、选择触发码(默认为 QUOTAAUTH)。

3、点击 Add key,把该 provider 要轮换的所有 keys 依次粘贴进去,然后点击 Save

keys 会保存到 Harness credential store,不会出现在明文配置里。

配置完成后,轮换事件会在 dsh 终端实时输出,日志格式如下:

[llm-key-rotation] rotated provider="opencode-go" chain[0]→"OPENCODE_GO_API_KEY" (QUOTA)

可以看到 provider 名称、链中的索引位置、切换到的环境变量名和触发错误码,密钥值本身不会出现在日志里。

与 dsh-llm-retry 的协作及轮换行为

如果你同时使用 dsh-llm-retry 插件,两个插件的分工是:

  • QUOTAAUTH:由 key-rotation 立即轮换。
  • RATE_LIMIT:默认先交给 dsh-llm-retry 做退避重试。

如果你希望遇到 429 时也立即换 key 而不是退避等待,可以把 RATE_LIMIT 从该 provider 的 retryableCodes 中移除,之后 429 会直接触发轮换。

轮换本身遵循 Smart Rotation Window 机制:连续失败期间插件沿 key 链依次向前切换;一旦超过 5 分钟没有失败发生,链会重置,下次从头开始。这个窗口配合冷却机制,保证所有 key 都耗尽时不会陷入无意义的循环。

适用场景与注意事项

这个插件适合的情况很明确:你有同一个 provider 的多个 API key,希望额度耗尽或遇到限流、鉴权错误时工作流能自动续上,而不是停下来人工干预。尤其是长时间运行的 Agent 任务,中断恢复的成本越高,这个插件的价值越明显。

使用前有几点需要确认:

1、插件以当前 dsh 进程的权限运行,它需要读取你的 keys 并介入请求恢复流程。安装前建议先查看源码(仓库地址见文末)确认实现符合预期。

2、确认许可证。该项目采用 MIT,允许自由使用和修改。

3、安装命令使用的是 web profile,客户端 platform 为 web,确认这与你的部署方式一致。

4、如果你参与插件本身的开发,仓库提供了标准的验证流程:

pnpm install
pnpm run verify    # typecheck + test
pnpm run build

结尾

dsh-llm-key-rotation 做的事情不复杂,但切中了一个真实痛点:多 key 场景下的额度与限流处理。它通过接入 Harness 的 recovery waterfall 实现热切换,不动核心代码,配合 Web UI 和 credential store,安装配置的成本都很低。

  • 插件目录页:https://www.skillhub.cn/plugins/m1khal3v/dsh-llm-key-rotation
  • GitHub 仓库:https://github.com/m1khal3v/dsh-llm-key-rotation

顺带说明:插件目录 skillhub.cn 是独立的社区站点,与 DeepSeek、幻方没有官方从属关系。

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

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

Xiaoye