dsh-plugin-opencode-limits:在 DSH 作曲栏查看 OpenCode Go 订阅额度

前言

在 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 将插件市场作为可选实验能力。推荐从市场安装:

  1. 打开 Plugins → Experimental plugins → Custom plugin markets。
  2. 在 Discover 中选 Add index source,粘贴市场索引 URL:
https://cdn.jsdelivr.net/gh/GreenJenckens/dsh-plugin-opencode-limits@main/market/index.json
  1. 在插件卡片上安装(确认页会显示 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜