dsh-opencodego-usage:在 DSH Composer 里查看 OpenCode Go 订阅用量

前言

用 DeepSeek Harness(DSH)走 OpenCode Go 模型时,订阅往往按多个时间窗口计费:例如 5 小时滚动、周、月。额度还剩多少、何时重置,通常要切到控制台或另开页面查。DSH 的 Composer 本身不负责展示这类 provider 侧用量。维护者 JaMoLpE88 的客户端插件 dsh-opencodego-usage 把三个窗口的占用比例收进 Composer 工具行里的一颗紧凑 pill,点开后是带倒计时与手动刷新的详情面板,且无需单独配置 API Key。

这是什么

@jamolpe88/dsh-opencodego-usage(npm 包名,GitHub:JaMoLpE88/dsh-opencodego-usage)是 DSH 的客户端插件:在 Composer 中展示 OpenCode Go 订阅在 5-hour(rolling)、weekly、monthly 三个窗口下的用量百分比。数据来自 OpenCode Go 官方 usage API;凭证复用 DSH 在 Settings → Models 里为 OpenCode Go provider 已保存的 key,不读 cookie、不 scrape 控制台 HTML,也没有插件级设置页。当前 package 版本为 0.1.5,许可证 MIT。

核心功能

下面介绍插件在界面与数据上的具体行为,均对应 README 中的说明。

Composer 里的 pill

  • 三个窗口合在一颗紧凑 pill 中:OpenCode 标识 + 三个与 DSH 上下文 meter 同风格的环,窗口之间用 · 分隔。
  • 环与进度条颜色与 DeepSeek rate clock 一致:低于 50% 为 mint,50%–74% 为 amber,75%–100% 为 coral;被限流的窗口恒为 coral。
  • pill 出现在 Composer 工具行的共享居中 pill 组里,与同作者其他 JaMoLpE88 Composer 插件并排、居中、留小间距;行宽不足时整组一起隐藏。
  • 仅当当前活跃模型属于 opencode-go provider 时显示;换其他 provider 立即隐藏。新 Session 尚未发首条消息、尚未记录模型时,pill 会跟随 Composer 显示的模型(含默认模型)。

详情面板

点击 pill 打开 DSH 风格详情对话框:每个窗口一行百分比、细进度条、本地时区下的重置倒计时;另有最后更新时间、自动刷新间隔、数据来源与 Refresh 按钮。对话框打开期间倒计时每秒更新;某窗口倒计时到零时会自动拉一次新数据以便窗口重置。聊天背景会模糊,便于隐私。

刷新与缓存

  • 每 60 秒刷新百分比;应用窗口重新变为可见时也会刷新。
  • Host 侧对上游结果缓存 55 秒,以便 60 秒轮询与多窗口共享一次请求。
  • 上游失败时保留上次已知百分比并标记为 stale,而不是清空 pill。

刻意不做的事

插件不保存用量历史、遥测或 localStorage;不增加 agent 工具或命令;非 OpenCode Go 模型时不渲染任何 UI。

环境与前提

  1. DSH Desktop >= 0.2.1-rc.3,profile 为 desktop(README 注明在 0.2.1-rc.3、Windows 11 上测试)。
  2. 在 Settings → Models 中配置 OpenCode Go provider 且 API key 有效;未配置则无法选用其模型,插件也不会出现(设计如此)。
  3. Node 22+(DSH 自带运行时)。

安装与启用

先做安装,再刷新 DSH 窗口;在任意 Session 中,只要活跃模型使用 opencode-go provider,Composer 里就会出现 pill。

从 npm 安装(推荐):

dsh plugin --profile desktop add @jamolpe88/dsh-opencodego-usage

从 GitHub 仓库安装:

dsh plugin --profile desktop add github:JaMoLpE88/dsh-opencodego-usage

本地开发目录安装示例(README 为 Windows 路径写法):

dsh plugin --profile desktop add C:\path\to\dsh-opencodego-usage

安装后刷新 DSH 窗口即可。

典型用法

  1. 在模型选择里选中 OpenCode Go 下的某个模型。
  2. 在 Composer 工具行居中 pill 组里找到 OpenCode Go 用量 pill(可能与同作者其他 pill 并排)。
  3. 点击 pill 打开详情;需要即时数据时点 Refresh。
  4. 关闭方式:点击对话框外、按 Escape,或再次点击 pill。

重置时间在浏览器本地时区显示;对话框打开时倒计时每秒更新,无需额外操作。

工作原理(简要)

Host 使用 DSH 已存的 provider key 调用官方接口(key 由凭证服务 OPENCODE_GO_API_KEY 解析,进程环境变量 OPENCODE_GO_API_KEY 为后备):

GET https://opencode.ai/zen/go/v1/usage
Authorization: Bearer <OPENCODE_GO_API_KEY>

响应中的 usage.rolling、usage.weekly、usage.monthly 分别对应三个窗口(含 percent、resetsAt、status 等字段)。浏览器侧通过同源路由 /api/opencodego-usage 与 /api/opencodego-usage/refresh 读取聚合结果,key 不会进入浏览器。

排查时可在 DSH 运行、与界面相同 host(端口随启动变化)下请求本地 API,例如:

curl http://127.0.0.1:59863/api/opencodego-usage

返回中含各窗口百分比、重置时间戳、error 与 freshness 标记,不含 key(README 中端口仅为示例)。

适用场景与注意

  • 适合:长期在 DSH Desktop 上用 OpenCode Go 模型写代码或对话、希望在 Composer 内一眼看到三窗口额度与重置时间、又不想重复粘贴 key 或开控制台的用户。
  • 平台:README 兼容性徽章写明 Windows 11;其他桌面环境是否等同体验需自行验证。
  • 安全与信任:插件以当前 DSH 进程权限运行,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证;社区目录 skillhub.cn 插件页 与 DeepSeek / 幻方无官方从属关系,属于 DSH「一切皆插件」生态中的第三方条目。

结尾

dsh-opencodego-usage 把 OpenCode Go 的三段订阅窗口收进 Composer:零配置、共用 DSH 已有 key、pill + 详情面板 + 60 秒轮询与失败时的 stale 保留。需要安装命令与 API 细节时,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/JaMoLpE88/dsh-opencodego-usage
  • GitHub:https://github.com/JaMoLpE88/dsh-opencodego-usage
羽毛球分组比赛记分
小程序二维码

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

小夜