前言¶
在 DeepSeek Harness(DSH)里用 OpenCode Go 时,额度按 5 小时、周、月三个窗口滚动计算,官方 usage 接口只返回各窗口剩余比例和重置时间,没有公开的美元余额字段。若不在 IDE 旁单独查接口或记时间,很容易在某个窗口快耗尽时仍按平时强度调用模型。
下面介绍的 dsh-plugin-opencode-limits(维护者 GreenJenckens,MIT 许可)把 OpenCode Go 的剩余额度做成作曲栏(composer dock)里的原生统计胶囊,与 DSH 自带的步数、解码速度、token 总量、缓存命中等指标并列,便于在对话界面内扫一眼各窗口还剩多少。
这是什么¶
插件全名 dsh-plugin-opencode-limits,归类为 DSH 客户端插件:在已打开会话、作曲栏可见的界面里注入 UI,不替代 DSH 自带的模型路由或计费逻辑。数据来自 OpenCode 的 usage 端点,由 DSH 进程内的 host 半部代请求,浏览器只收到百分比与重置时间。
社区目录页:skillhub.cn 插件条目。源码与说明:GitHub — GreenJenckens/dsh-plugin-opencode-limits。
界面展示什么¶
OpenCode Go 的月度美元额度在 API 里拆成三个窗口:5 小时(月限的 20%)、weekly 周(50%)、monthly 月(100%)。胶囊上「OpenCode」后跟每个窗口一个小环,弧长表示该窗口剩余比例:满环表示余量充足,弧缩短表示窗口在消耗;耗尽时显示空轨并带「лимит」类提示(README 示例为俄文界面文案)。
| 胶囊片段示例(README) | 含义 |
|---|---|
5ч 87% |
5 小时窗口仍有 87% 可用 |
нед 83% |
周窗口仍有 83% |
мес 92% |
月窗口仍有 92% |
每个环与 DSH 上下文指示器同几何(svg 14×14,circle r=5.5,stroke-width: 2 等)。悬停某段可看精确重置时刻与剩余时间;悬停整颗胶囊可看密钥来源、拉取时间与「点击可刷新」说明;点击胶囊强制刷新。余量充足时胶囊与邻居一样单色;已消耗 ≥85% 时用警告色,≥95% 或 status: "rate-limited" 时用错误色。
数据源为:
GET https://opencode.ai/zen/go/v1/usage
Authorization: Bearer oc_sk_…
公开接口不提供美元余额,插件也只展示百分比与重置时间。
安装与启用¶
DSH 将插件市场作为可选实验能力。推荐从市场安装:
- 打开 Plugins → Experimental plugins → Custom plugin markets。
- 在 Discover 中选 Add index source,粘贴市场索引 URL:
https://cdn.jsdelivr.net/gh/GreenJenckens/dsh-plugin-opencode-limits@main/market/index.json
- 在插件卡片上安装(确认页会显示 Git 来源与 commit)。
也可在 Plugins → Installed → Install bundle 填写 Git spec,或用 CLI(将 <commit> 换成具体 commit):
dsh plugin --profile desktop install "git+https://github.com/GreenJenckens/dsh-plugin-opencode-limits.git#<commit>"
本地开发可将仓库以 link: 形式链入 profile 的 dependencies 与 dsh.profile.bundles;README 也描述了通过 Plugins 页完成同样操作的方式。当前 package 版本为 0.1.0,要求 node >= 20、dsh >= 0.2.1-rc.3。
配置与密钥¶
默认值在 lib/index.js,可在 profile patch 中覆盖:
- id: opencode-limits
name: dsh-plugin-opencode-limits
config:
usageUrl: https://opencode.ai/zen/go/v1/usage
routePath: /x/opencode-limits
keyEnv: OPENCODE_GO_API_KEY
refreshMs: 20000
timeoutMs: 15000
| 字段 | 默认值 | 说明 |
|---|---|---|
usageUrl |
https://opencode.ai/zen/go/v1/usage |
usage 端点 |
routePath |
/x/opencode-limits |
host 半部对外路由 |
keyEnv |
OPENCODE_GO_API_KEY |
环境变量 / 凭据名 |
refreshMs |
20000 |
host 向 OpenCode 轮询间隔(毫秒) |
timeoutMs |
15000 |
单次请求超时(毫秒) |
每次轮询按顺序解析密钥:process.env[keyEnv] → DSH 凭据存储 ctx.credentials.resolve(keyEnv) → $DSH_HOME/.credentials.yaml 的 refs: 段。轮换密钥无需重启进程。
密钥不会进入浏览器。 host 半部持钥请求 OpenCode,经 /x/opencode-limits 仅向 loopback 对等端提供百分比与重置时间,该路由不会代理给模型;插件不写盘、不向其他地址发送数据。
刷新节奏与调试¶
| 链路 | 周期(README) |
|---|---|
| host 请求 OpenCode | 每 20 s(与窗口状态无关) |
| 客户端请求 host | 窗口激活时每 15 s,可见性变化时立即 |
| 点击胶囊 | 立即(?refresh=1) |
隐藏标签页时 Chromium 会节流定时器,因此轮询放在 host 进程;回到窗口时数据通常不超过约二十秒。百分比本身是月额度占比,变化往往较慢。
本地调试(<port> 换为 DSH 监听端口):
curl -s http://127.0.0.1:<port>/x/opencode-limits
curl -s "http://127.0.0.1:<port>/x/opencode-limits?refresh=1"
返回 JSON 含 ok、usage(三窗口)、error、status、fetchedAt、keySource(env / store:… / file)、refreshMs 以及 hits / lastHitAt 等诊断字段。
适用场景与注意¶
适合已订阅 OpenCode Go、长期在 DSH 作曲栏里写对话、希望与步数/token 同一行观察三窗口余量的开发者。插件以当前 DSH 进程权限运行,安装前建议阅读仓库源码与 MIT 许可证,并自行评估将 oc_sk_… 类密钥交给 host 半部代调 OpenCode 是否可接受。
README 列出的限制:
- 胶囊只在有 composer 的会话界面出现,无 composer 的服务页不会显示。
- 无公开美元余额,界面只有比例与重置时间。
- 若 OpenCode 变更
/v1/usage响应形状,胶囊会显示「нет данных (…)」类提示,而不是拖垮整个界面。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文安装路径以插件 README 为准。
结尾¶
dsh-plugin-opencode-limits 把 OpenCode Go 三窗口剩余额度嵌进 DSH 作曲栏统计行,密钥留在 host、界面只读比例,适合需要边写 harness 边盯额度的场景。
- 目录页:https://www.skillhub.cn/plugins/GreenJenckens/dsh-plugin-opencode-limits
- GitHub:https://github.com/GreenJenckens/dsh-plugin-opencode-limits