自动轮换订阅密钥,额度耗尽即刻切换
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/11 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add TianYa-DAO/dsh-opencode-go-pool该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 21 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
- 发起网络请求index.js:203
const response = await fetch(settings.usageUrl, {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 多订阅密钥池
- 自动轮换密钥
- 配额耗尽故障转移
DeepSeek Harness 插件:把多个 OpenCode Go 订阅汇到一个服务商路由后面,每次请求都用最健康的密钥,配额窗口用尽时自动故障转移。
README
由 DeepSeek 最新模型翻译生成dsh-opencode-go-pool
反馈 / Feedback:遇到 bug 或有改进建议,请到 Issues 提;也可以直接发邮件到 2842425998@qq.com。
把多个 OpenCode Go 订阅(每把 key 一个订阅)放在同一条 provider 路由后面:请求前选额度最健康的那把,被网关拒绝时按重置时间冷却并换下一把,全程不用你手动切换模型。
为什么是「换凭据」而不是「换路由」
DSH 的 agent loop 发出的模型请求是深冻结的(options 不可改,改了就抛错),所以 waterfall 监听器只能读 options.provider,不能改。真正每次请求都会重新解析的是 provider 的 apiKeyEnv 凭据引用 —— 于是本插件让路由指向一个由自己托管的 activeRef,在每次请求前把当前健康的订阅 key 写进去。
工作原理
1. 每个订阅 key 存在标准凭据存储里($DSH_HOME/.credentials.yaml,可用设置页管理),插件只按引用名读取。
2. 路由的 apiKeyEnv 指向 activeRef(例如 OPENCODE_GO_ACTIVE_KEY),这个引用由插件独占写入。
展开完整文档(README 剩余 1 节)
dsh-opencode-go-pool
反馈 / Feedback:遇到 bug 或有改进建议,请到 Issues 提;也可以直接发邮件到 2842425998@qq.com。
把多个 OpenCode Go 订阅(每把 key 一个订阅)放在同一条 provider 路由后面:请求前选额度最健康的那把,被网关拒绝时按重置时间冷却并换下一把,全程不用你手动切换模型。
为什么是「换凭据」而不是「换路由」
DSH 的 agent loop 发出的模型请求是深冻结的(options 不可改,改了就抛错),所以 waterfall 监听器只能读 options.provider,不能改。真正每次请求都会重新解析的是 provider 的 apiKeyEnv 凭据引用 —— 于是本插件让路由指向一个由自己托管的 activeRef,在每次请求前把当前健康的订阅 key 写进去。
工作原理
1. 每个订阅 key 存在标准凭据存储里($DSH_HOME/.credentials.yaml,可用设置页管理),插件只按引用名读取。
2. 路由的 apiKeyEnv 指向 activeRef(例如 OPENCODE_GO_ACTIVE_KEY),这个引用由插件独占写入。
3. 插件调用网关官方用量接口 GET https://opencode.ai/zen/go/v1/usage(纯 API key,无需 org token),读取 5 小时 / 周 / 月三个窗口的 percent 与 status;status: "rate-limited" 或 percent >= 100 即视为该窗口已用尽。
4. 每次请求前:读数缺失时先查一次(不知道就可能把满额 key 发上线);读数只是过期时后台刷新,不阻塞请求;当前 key 已用尽则立刻换成余量最健康的一把。
5. 网关以 HTTP 429 + {"error":{"type":"GoUsageLimitError"}} + Retry-After 拒绝时(Harness 归类为 QUOTA,不在默认重试码里,所以插件自己负责重发):按 Retry-After 与窗口重置时刻冷却该 key,换上另一把,并在本次请求尚未产出任何 token 的前提下原样重发一次。已经有输出则如实报错,绝不重复生成。
多个决策(激活预热与并发请求)会串行执行,避免两份状态快照互相交叉。
配置
插件本体只有一行 insert(见 cordis.patch.yml),真正的配置写在你的 profile patch 层:
- insert:
- id: opencode-go-pool
name: 'dsh-opencode-go-pool'
- id: opencode-go-pool
config:
route: opencode-go # 要接管的 provider 路由名 activeRef: OPENCODE_GO_ACTIVE_KEY # 插件独占写入的凭据引用 keys:
- { ref: OPENCODE_GO_API_KEY, label: 订阅A }
- { ref: OPENCODE_GO_API_KEY_B, label: 订阅B }
同时把该路由的 apiKeyEnv 改成 activeRef:
- id: llm-pi-ai
config:
providers:
opencode-go:
apiKeyEnv: OPENCODE_GO_ACTIVE_KEY
api: openai-completions
baseURL: https://opencode.ai/zen/go/v1
可选字段与默认值:usageUrl(默认上文的网关用量接口)、usageTtlMs(60000)、cooldownMs(60000,网关未给出窗口时的冷却下限)、maxFailovers(1,一次调用最多切换几次)。
keys[].ref 不能与 activeRef 相同,配置错误会在插件激活时直接报错并指出字段名。
可观察行为
日志(前缀 opencode-go-pool:,走 Host logger):
1. pooling 订阅A, 订阅B behind route "opencode-go" through OPENCODE_GO_ACTIVE_KEY —— 装载成功。
2. installed 订阅B as the active key —— 首次装填或首次换 key。
3. switched away from 订阅A (quota spent, resets …) to 订阅B —— 请求前主动避开已用尽的 key。
4. failover 订阅A (quota spent, resets …) -> 订阅B (until …) — Go usage limit exceeded —— 被拒绝后切换并重发。
本机接入现状(desktop profile)
1. 插件源码在 ~/.dsh/plugins/dsh-opencode-go-pool,profile 通过 file:../../plugins/dsh-opencode-go-pool 依赖 + cordis.patch.yml 里的 insert 行接入。
2. 凭据:OPENCODE_GO_API_KEY(订阅 A)、OPENCODE_GO_API_KEY_B(订阅 B)、OPENCODE_GO_ACTIVE_KEY(插件独占写入的生效 key)。
3. llm-pi-ai 的 opencode-go 与 opencode-go-responses 两条路由都指向 OPENCODE_GO_ACTIVE_KEY。
4. profile 用 nodeLinker: hoisted,file: 依赖以硬链接落盘:改 index.js 立即对 profile 生效;若编辑器用「替换文件」的方式写(inode 变了),要在 profile 目录 pnpm install 重建链接。改动生效仍需重启桌面端。
5. 真实链路回归 overlay:tests/e2e-overlay.yml(用量驱动切换)、tests/e2e-overlay-failover.yml(429 驱动切换,把 usageUrl 指到不可达端口)。
测试
node tests/selfcheck.mjs
用假 context 与假用量端点跑真实插件代码,覆盖 8 组行为:满额 key 不上线、已装填健康 key 不重复写凭据、被拒绝后接管并重发、已有输出时不重发、全满额时按预算收敛、非本路由请求原样透传、配置错误报警、被拒绝那次的记账块不外泄。
限制
1. 只在请求发出前与被拒绝后判断健康度,不预测额度耗尽。
2. 只对 route 指定的那一条路由做逐请求决策;其它路由若也指向同一个 activeRef,只能继承当前生效的 key。
3. 切换属于传输层路由,不写会话事件;判定依据在 Host 日志里,不在会话记录里。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
TianYa-DAO/dsh-opencode-go-pool
自动轮换订阅密钥,额度耗尽即刻切换
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1