前言¶
用 DSH Web GUI 长时间跑任务时,大家一般不关心模型供应商叫什么,只关心两件事:还有多少额度、什么时候重置。OpenCode GO 套餐把额度切成 5 小时、每周、每月三个窗口,但官方界面只在网页上能看到百分比,脚本或 GUI 里没有仪表盘。下面介绍的这个插件把三窗口用量做成输入框下方的药丸,点开能看到精确金额和各窗口倒计时,不用切窗口、不用自己写脚本。
插件由 zyhnbyyds 维护,仓库为 zyhnbyyds/dsh-opencode-go-usage,定位是 DSH 客户端插件,在对话 composer 下方新增用量展示与 API Key 设置页。先讲功能,再讲安装、用法和注意点。
核心功能¶
1、输入框下方显示药丸,形如 Go · 5h 7% · 周 7% · 月 3%,前缀是套餐名,后面依次是三个额度窗口的已用百分比,间距按自带统计栏压缩。
2、点击药丸在指示条上方弹出详情卡片:头部是图标、套餐名、本月已用与额度;一条分隔线下是三行数据,每行含百分比与重置倒计时;底部是更新时间、套餐名与到期 / 续费状态。卡片头部带刷新按钮 ↻。
3、没有可读的 API Key 时,药丸显示 Go · 设置 Key,点击提示去设置页填写,不会白屏或消失。
4、设置页支持保存 / 清除 / 重新读取 Key,并实时显示当前凭据来源(插件设置 / DSH 凭据 / 环境变量 / auth.json);Key 无效时显示「当前读取:…」。
5、Host 半为纯 Node ESM,Client 半是手写懒加载 bundle,零运行时依赖,样式只用 --dsw-alias-* 主题变量,跟随深浅色。
安装与启用¶
需要 DSH 0.2.1 及以上版本,README 记录在 0.2.1-rc.3 实测通过。npm 包名 @zgyh/dsh-opencode-go-usage。
方式 A,从 npm 安装,推荐:
dsh plugin --profile <你的 profile> add @zgyh/dsh-opencode-go-usage
方式 B,从 git 源安装:
dsh plugin --profile <你的 profile> add github:zyhnbyyds/dsh-opencode-go-usage
方式 C,本地目录:先把仓库拉到本地,然后在 DSH 的「设置 → 插件」里从该目录安装,bundle 名 @zgyh/dsh-opencode-go-usage;也可以让 agent 用 plugin manager 的 install_bundle 指向该目录。插件行通过 cordis.patch.yml(dsh.bundle.patch)自动注入,不需要手改 profile。
装好后刷新 DSH 页面即可。
典型用法¶
装好后打开任意会话,输入框下方即出现用量药丸。想换账号或补全额度,进「设置 → OpenCode GO 用量」:
1、输入 oc_sk_… 后点「保存」,写入 Harness 凭据服务里本插件专用的 OPENCODE_GO_USAGE_API_KEY,保存后立即重读用量。
2、点「清除已保存的 Key」删除专用凭据,用量读取退回 DSH 模型凭据 / 环境变量 / auth.json 的回退链。
3、Key 的解析顺序为:设置页保存的 OPENCODE_GO_USAGE_API_KEY → Harness 凭据服务里的 OPENCODE_GO_API_KEY → 进程环境变量 OPENCODE_GO_API_KEY → OpenCode 的 auth.json,即 ~/.local/share/opencode/auth.json 或 ~/.config/opencode/auth.json。
注意设置页里填的 Key 只用于用量展示,DSH 调用模型仍用「设置 → 模型」里的 Key,两者可以是不同账号;若两把 Key 属于不同账号,界面显示的是设置页那把 Key 对应账号的用量。
如果需要调整额度或刷新频率,可在 profile 的 cordis.patch.yml 用户层覆盖该行的 config:
- id: opencode-go-usage
config:
credential: OPENCODE_GO_API_KEY
settingsRef: OPENCODE_GO_USAGE_API_KEY
baseUrl: https://opencode.ai/zen/go/v1/usage
statusUrl: https://opencode.ai/console/api/go/status
enrich: true
refreshMs: 60000
timeoutMs: 15000
monthlyLimitUsd: 60
planLabel: Go
debug: false
数据来源方面,三窗口百分比与重置时间来自 GET https://opencode.ai/zen/go/v1/usage;套餐名、计费周期、精确美元额度与已用来自 GET https://opencode.ai/console/api/go/status(同一把 Key)。后者是 Console 内部接口,失败时自动退回按官方 Go 用量说明估算:5 小时窗口 = 月额度 20%,每周 = 50%,每月 = 100%,月额度默认 $60。
状态语义与验证¶
接口读取结果会映射到固定状态,界面据此表现:null 读取成功、显示三个窗口;no-key 跳设置页;unauthorized、no-subscription、network、bad-shape、bad-json、http-* 等分别对应红色错误提示或保留上次快照。
README 记录在 DSH 0.2.1-rc.3(Windows,Web GUI)的实测:Host 侧 GET /opencode-go-usage/api/state 返回 200,keySource: "credentials",?refresh=1 会真正重新拉取;POST /api/key 非法参数 400、跨站来源 403。Client 侧 conversation.composer.dock 槽位有效,药丸约 151×18 逻辑尺寸,弹层左边缘与药丸左边缘对齐,详情卡片 334×169。
适用场景与注意¶
适合想在 DSH 界面内直接看到 OpenCode GO 剩余额度和重置时间、不想开网页或写脚本的用户,也适合管理多个 OpenCode 账号时区分各账号用量的场景。
使用前请确认三件事:
1、插件以当前 DSH 进程权限运行,Host 半会向 opencode.ai 发起带 Key 的请求,安装前应先查看源码与 MIT 许可证。
2、用量接口没有公开文档,官方可能调整,插件做了防御式解析;/console/api/go/status 是内部接口,失败时只影响精确美元与套餐信息,百分比照常显示。
3、百分比是账户级数据,含同一账号其他设备 / 客户端的用量;同一把 Key 在凭据服务和 auth.json 里可能属于不同账号。
结尾¶
这个插件的价值很明确:把 OpenCode GO 的三窗口额度从网页搬进 DSH 输入框下方,没有常驻面板,不占布局,也不改模型配置。目录页:https://www.skillhub.cn/plugins/zyhnbyyds/dsh-opencode-go-usage,GitHub:https://github.com/zyhnbyyds/dsh-opencode-go-usage。