dsh-opencode-usage-settings
Verifieddsh-opencode-usage-settings · v1.2.0 · MIT · Web UI
dsh plugin: per-model OpenCode Go usage, per-account quotas, and account management (add keys, switch, disable, rotate) in one Settings page.
Install
dsh plugin add dsh-opencode-usage-settings Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Readme
OpenCode Go 用量(设置页 + 数据接口)
按模型统计 OpenCode Go 套餐的用量与剩余额度,并逐个账户展示官方额度。一个 bundle 同时提供两半:
- 客户端:设置 → 「OpenCode 用量」页面(
settings.section槽位),60 秒自动刷新,右上角「立即刷新」。 - Host:
GET /opencode-usage.json(设置页的数据源;?refresh=1会先强制拉一次官方额度快照)。
多账户与账户管理
账户池由 dsh-opencode-quota-router 拥有($DSH_HOME/opencode-quota-router.json):本插件只读它拿账户列表,
再通过该插件的 GET|POST /opencode-quota-router.json 做管理操作。所以在「OpenCode 用量」一页里既能看额度,也能管账户:
- 顶部状态条:
正常/全量回退+ 原因、当前账户、下次探测,「立即探测」「清空隔离」; - 「账户」表:掩码密钥、官方 5 小时 / 本周 / 本月百分比、状态(可用 / 额度用尽 / 鉴权失败 / 已停用 / 未配置);
- 每行操作:设为当前、↑ / ↓ 调顺序、停用 / 启用、改密钥、删除;
- 「添加账户」:填备注 +
oc_sk_…即可,密钥写入凭据库,页面只显示掩码; - 按顺序使用:A 的任一窗口用尽时自动切到 B 并重试当前步骤,全部用尽才回退备用模型;
- 按模型统计仍是全局的(会话日志不区分调用了哪个账户的密钥);
- 状态文件不存在时退化成
apiKeyRef指向的单个账户,两个插件分开装也能各自工作。
字段:accounts[](id/label/keyRef/enabled/active/configured/hint/usage/usageError/checkedAt)、
activeAccount、usage(当前账户)、usageError。
数据来源
OpenCode 官方 /inference/go/v1/usage 只返回一组四舍五入的 rolling/weekly/monthly 百分比,
不区分模型;而套餐实际是按模型各自计额度(5 小时 = 月额度 20%、周 = 50%、月 = 100%)。
所以按模型的数据由本插件自己算:
- 启动时回扫
$DSH_HOME/sessions下近 40 天的会话日志,取每条assistant/message的usage与message.source(时间用事件自带的time)。 - 之后实时监听
session/event,同一套 reducer 折进内存记录。 - 金额按内置价格表(离峰/标准价)估算,DeepSeek 模型峰时(UTC 周一至周五 01–04、06–10)乘 2; 免费模型价格为 0。
- 窗口起点优先用官方
resetsAt反推,monthly 用 UTC 月初。
套餐适配
cordis.patch.yml 的 plan 决定各模型的月额度表:go(默认)/ go-plus / go-teams。
升级后只有额度差 ≥1.5× 的明确变化(如 go → go-plus)会被官方百分比自动识别;
Go $100 与 Go Teams $105 只差 5%,在估算噪声内,以配置为准。
局限
- 只统计这个 harness 发出的调用;OpenCode 官方客户端等其它工具不计入。
- 金额是估算;官方百分比只有一行,无法按模型拆分,页面把它原样展示作为交叉核对。
- 数据接口只监听回环地址;插件路由本身不做鉴权。