
echo-xianyu/dsh-go-rotator
40最近提交 2026年8月14日
dsh-go-rotator DSH 插件
dsh-go-rotator 是一个 DSH 插件,用于管理多个 OpenCode Go API 密钥。它按请求分发到不同密钥,在错误时自动切换,按 token 统计成本,并通过定时抓取仪表盘配额来禁用接近限制的密钥。还提供 Web 设置页面和独立 HTTP API。
如何安装 dsh-go-rotator DSH 插件
dsh plugin --profile <profile> add ./dsh-go-rotator-0.2.0.tgz来源命令需要人工核对。复制不会执行命令。
dsh-go-rotator DSH 插件数据来源
dsh-go-rotator DSH 插件快照日期:2026年8月16日
discovered
dsh-go-rotator DSH 插件能做什么
- 通过 apiKeyEnv 每请求解析活跃 key,实现请求级路由。
- 在 RATE_LIMIT、QUOTA_EXCEEDED、AUTH 和 INVALID_CREDENTIAL 错误时自动轮换 key,支持冷却和防抖。
- 成功完成的流按 token 估算成本,滚动窗口(5小时/周/月)和长期账本(日/月/年)存储。
- 配额看门狗定时抓取仪表盘真实配额(需 workspaceId 和 authCookie),超过阈值自动禁用 key。
- 集成到 dsh Web 客户端的设置页,并提供独立 HTTP API(默认端口 7777)。
- 所有数据存储于插件安装目录下,无需绝对路径。
dsh-go-rotator DSH 插件适合哪些场景
- 在多个 OpenCode Go 密钥间分发 API 请求,避免触发速率限制。
- 在配额错误时自动切换到新密钥,实现无感恢复。
- 监控并限制密钥使用量,以保持在订阅预算内。
- 通过 HTTP API 将密钥轮换集成到外部工具中。
- 按会话或时间段统计 token 成本,用于计费或审计。
dsh-go-rotator DSH 插件适合谁
- 使用多个 OpenCode Go 订阅密钥的 DSH 用户。
- 需要透明地管理和轮换密钥池的开发者或自动化工具使用者。
dsh-go-rotator DSH 插件的限制
- 仅支持 OpenCode Go API 密钥,不是通用密钥轮换器。
- 需要 dsh ≥ 0.1.0-rc.6。
- 配额看门狗需要手动配置 workspaceId 和 authCookie 才能抓取仪表盘。
- 数据存储在本地,不支持远程同步或多实例共享。
- 插件仍处于早期开发阶段(版本 0.2.0),可能发生不兼容变更。
dsh-go-rotator DSH 插件的仓库 README 摘录
以下文字摘自 dsh-go-rotator DSH 插件的上游仓库 echo-xianyu/dsh-go-rotator 的 README,版权归原作者,仅作引用。
**OpenCode Go 订阅 key 轮换器** —— 为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(dsh)提供多 key 负载均衡、自动轮换与配额管理。 ## ✨ 特性 - **按请求路由** —— provider 通过 `apiKeyEnv` 每请求解析活跃 key,多 key 自动分摊负载; - **自动轮换** —— 流以 `RATE_LIMIT` / `QUOTA_EXCEEDED` / `AUTH` / `INVALID_CREDENTIAL` 错误终止时冷却当前 key 并切换(env 即时生效,错误原样上抛,内置 llm-retry 用新 key 无感重试); - **成本记账** —— 正常完成的流按 token 估算成本:滚动窗口(5h/周/月)入状态文件,长期账本(日/月/年)入统计文件; - **配额看门狗** —— 定时抓取各 key 的 dashboard 真实配额(workspaceId + authCookie),越过阈值自动禁用该 key; - **Web 设置界面** —— dsh web 客户端设置页 + 独立 HTTP API(默认 `http://localhost:7777`),供外部工具读写同一状态; - **自包含** —— 全部数据落在插件安装目录的 `data/` 下,配置永远不需要绝对路径。 ## 📦 安装 ```sh # 1. 配置 provider 路由($DSH_HOME/settings.yaml) # llm-pi-ai: # providers: # opencode-go: # displayName: OpenCode Go # api: openai-completions # baseURL: https://opencode.ai/zen/go/v1 # apiKeyEnv: GO_ROTATOR_ACTIVE_KEY # models: [ ...opencode-go 模型... ] # 2. 安装插件(tarball / 本地目录均可) dsh plugin --profile <profile> add ./dsh-go-rotator-0.2.0.tgz # 或开发期直接引用源码目录: # dsh plugin --profile <profile> add file:/path/to/dsh-go-rotator # 3.(可选)把默认模型路由到 opencode-go # $DSH_HOME/cordis.patch.
阅读完整 README仓库许可: MIT
dsh-go-rotator DSH 插件常见问题
如何安装 dsh-go-rotator 插件?
从 Releases 页面下载 tarball,然后运行 `dsh plugin --profile <profile> add ./dsh-go-rotator-0.2.0.tgz`。你也可以直接引用本地源目录:`dsh plugin --profile <profile> add file:/path/to/dsh-go-rotator`。确保你的 dsh 版本至少为 0.1.0-rc.6。
这个插件支持哪些 API 密钥?
它只支持 OpenCode Go 的订阅密钥。你需要在 dsh 的 settings.yaml 中配置 provider,位于 `llm-pi-ai` 下,设置 `api: openai-completions`、`baseURL: https://opencode.ai/zen/go/v1` 和 `apiKeyEnv: GO_ROTATOR_ACTIVE_KEY`。插件会自动管理活跃密钥。
出错时插件如何轮换密钥?
当流以 RATE_LIMIT、QUOTA_EXCEEDED、AUTH 或 INVALID_CREDENTIAL 等错误码结束时(可通过 `rotateOnCodes` 配置),插件会冷却该密钥(默认 60 分钟),并切换到下一个可用密钥。内置的 llm-retry 机制会用新密钥重试请求,使轮换对用户透明。
我能否在 DSH 外部监控密钥用量或配额?
可以,插件默认在端口 7777 上启动一个独立的 HTTP API(可通过 `guiPort` 配置)。你可以使用该 API 读取当前状态、成本和密钥状态。插件还在 dsh Web 客户端中提供了一个设置页面。
如果所有密钥都被禁用或耗尽,会发生什么?
如果所有密钥都处于冷却状态或因配额被禁用,插件将没有可用的活跃密钥,请求会因认证错误而失败。你应该监控状态文件或 API 来补充密钥或调整阈值。插件不会自动创建密钥。