Passer au contenu principal
2

dsh-opencode-usage

2869949486/dsh-opencode-usage

Adds an OpenCode Go usage page to dsh Settings with per-model 5-hour, weekly, and monthly spend and remaining allowance.

Installer

dsh plugin --profile web add github:2869949486/dsh-opencode-usage

README

OpenCode 账户与用量(设置页 + 数据接口)

按模型统计 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 月初。

峰谷与节假日

页面上有两套时钟,只是为了让「此刻用哪个更划算」这张卡算得准:

峰段时段是否认中国法定节假日
OpenCode GoUTC 周一至周五 01–04、06–10不认(节假日白天照算峰)
DeepSeek 官方 API北京周一至周五 09–12、14–18认,节假日整天算谷

Go 不认节假日是官方答复(issue anomalyco/opencode#53071):

Go pricing follows our own schedule, not DeepSeek's holiday calendar.

所以日历(HOLIDAYS,2026–2031)只服务官方一侧:算「官方此刻是否谷段」、给 /opencode-usage.prices.json 的 peak.chinaHolidays 对齐下游账本、以及在 holidayAware: true 时让历史估算走官方口径。默认 false,按模型统计的金额就是 Go 账单口径。

「此刻用哪个更划算」怎么算

关键不是单价,杠杆:

  • Go 套餐:付 $10/月(≈¥71)拿到 $100 官方价额度(≈¥710)。额度按官方价扣,等于打 1 折——走 OpenCode 你只付官方价的 10%。
  • 官方直连:照官方价付现,峰段 ×2。

所以结论基本恒定:额度内走 OpenCode 始终比官方直连便宜约 90%,峰段只是让额度烧得快一倍(同一请求从 扣 $1 变扣 $2,折合你的实付从 ¥0.71 变 ¥1.42,仍远低于官方的 ¥7.1)。例外只有两个:额度用尽, 或某个模型先见底(Go 里 Pro 只有 $15/月)。

卡片按「每 100 万输出 tokens」折算成人话金额(编码账单主要来自输出),汇率取 cnyPerUsd (默认 7.1,可在 cordis.patch.yml 改)。

套餐适配

cordis.patch.yml 的 plan 决定各模型的月额度表:go(默认)/ go-plus / go-teams。 升级后只有额度差 ≥1.5× 的明确变化(如 go → go-plus)会被官方百分比自动识别; Go $100 与 Go Teams $105 只差 5%,在估算噪声内,以配置为准。

局限

  • 只统计这个 harness 发出的调用;OpenCode 官方客户端等其它工具不计入。
  • 金额是估算;官方百分比只有一行,无法按模型拆分,页面把它原样展示作为交叉核对。
  • 数据接口只监听回环地址;插件路由本身不做鉴权。

Plugins associés