前言¶
在 DeepSeek Harness(dsh)中接入多个 OpenCode Go 订阅 key 时,常见需求不止是“能用”:需要在多个 key 之间分摊请求,在某个 key 出现限流、配额超限或凭证问题时自动切换,并能看到成本与配额状态。手动导出 env、手工判断 key 是否还能用,在多 key 场景下容易出错。
dsh-go-rotator 是一个 dsh 插件,用于为 DeepSeek Harness 提供 OpenCode Go 订阅 key 的负载均衡、自动轮换与配额管理。
这是什么¶
dsh-go-rotator 是一个面向 dsh 的 OpenCode Go 订阅 key 轮换器。它把多个 key 的管理放进插件目录下的 data/ 中,provider 通过 apiKeyEnv 每请求解析活跃 key。项目按 MIT 许可证开源,GitHub 地址为 https://github.com/echo-xianyu/dsh-go-rotator。
核心功能¶
按请求路由¶
provider 通过 apiKeyEnv 在每个请求时解析活跃 key。多个 key 可以同时存在于状态中,由插件决定当前请求使用哪一个,从而分摊负载。
自动轮换¶
当一次 LLM 流以 RATE_LIMIT、QUOTA_EXCEEDED、AUTH 或 INVALID_CREDENTIAL 错误终止时,插件会冷却当前 key 并切换到其他可用 key。
成本记账¶
正常完成的流会按 token 估算成本。滚动窗口用量(5h/周/月)写入状态文件,长期账本(日/月/年)写入统计文件。
配额看门狗¶
插件可以定时抓取各 key 在 dashboard 中的真实配额,所需信息包括 workspaceId 和 authCookie。当配额越过阈值时,自动禁用该 key。
Web 设置界面¶
插件提供 dsh web 客户端设置页,并提供独立 HTTP API,默认地址为 http://localhost:7777,供外部工具读写同一状态。
自包含数据¶
全部数据落在插件安装目录的 data/ 下,配置不需要绝对路径。
安装与启用¶
安装前需要 dsh 版本不低于 0.1.0-rc.6。下面以 0.2.0 版本为例。
先安装插件。如果你已经拿到本地 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_HOME/settings.yaml 中配置 opencode-go provider。这里只展示已核实的 provider 字段:
llm-pi-ai:
providers:
opencode-go:
api: openai-completions
baseURL: https://opencode.ai/zen/go/v1
apiKeyEnv: GO_ROTATOR_ACTIVE_KEY
这一步是让 dsh 通过 opencode-go provider 访问 OpenCode Go 的 openai-completions 接口,并通过 GO_ROTATOR_ACTIVE_KEY 解析插件给出的活跃 key。
如果希望把默认模型路由到 opencode-go,可以在 $DSH_HOME/cordis.patch.yml 中设置:
provider: opencode-go
model: deepseek-v4-flash
最后运行:
dsh --profile <profile> "hello"
适用场景与注意¶
适合在 dsh 中使用多个 OpenCode Go 订阅 key、需要自动切换和观察配额的人。
使用前建议先查看源码和 MIT 许可证。插件以当前 dsh 进程权限运行,安装前应自行评估代码的安全性与合规性。
插件会把密钥保存在状态文件中,不会打印密钥,也不会写入日志。data/ 目录不随 npm 包发布,并已在 .gitignore 中排除。状态文件写入采用原子操作(tmp + rename),在多进程并发场景下更安全。首次运行会全新初始化,不包含旧路径探测或迁移逻辑。
链接¶
- GitHub:
https://github.com/echo-xianyu/dsh-go-rotator