Skip to content

dsh-opencode-usage-settings

Verified

dsh-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%)。 所以按模型的数据由本插件自己算:

  1. 启动时回扫 $DSH_HOME/sessions 下近 40 天的会话日志,取每条 assistant/message 的 usage 与 message.source(时间用事件自带的 time)。
  2. 之后实时监听 session/event,同一套 reducer 折进内存记录。
  3. 金额按内置价格表(离峰/标准价)估算,DeepSeek 模型峰时(UTC 周一至周五 01–04、06–10)乘 2; 免费模型价格为 0。
  4. 窗口起点优先用官方 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 官方客户端等其它工具不计入。
  • 金额是估算;官方百分比只有一行,无法按模型拆分,页面把它原样展示作为交叉核对。
  • 数据接口只监听回环地址;插件路由本身不做鉴权。