DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

zyhnbyyds /

zyhnbyyds/dsh-opencode-go-usage

Verified

DeepSeek Harness plugin: OpenCode GO quota (5h/week/month) pill + details popover below the composer, with an API key settings page.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@94189c95

dsh-opencode-go-usage

OpenCode GO 套餐用量显示插件,为 DeepSeek Harness Web GUI 而生。

license DSH check

在对话框输入框下方显示一个小药丸:Go · 5h 7% · 周 7% · 月 3%(Go 前缀 + 三个额度窗口,间距按自带统计栏压缩)。

用量药丸

点击后在指示条上方弹出详情卡片——头部是图标 + OpenCode GO + 本月已用 / 额度,单条分隔线下是 5 小时 / 每周 / 每月三行(百分比 + 重置倒计时),底部是更新时间、套餐名与到期 / 续费状态; 刷新按钮在卡片头部。配色、字号、行距与分隔线都对齐输入框自带的「Token 用量」统计弹层。

用量详情

功能

  • 5 小时 / 每周 / 每月三个额度窗口的已用百分比,鼠标悬停 / 键盘聚焦有底色反馈。
  • 详情卡片:精确已用金额($)与额度、剩余估算、各窗口重置倒计时、套餐名与到期状态。
  • 弹层按药丸位置左对齐锚定,不占布局、不被输入框 dock 行裁切。
  • 设置页填 API Key:设置 → OpenCode GO 用量,支持保存 / 清除 / 重新读取,实时显示当前凭据来源。
  • 没配 Key 时药丸显示 Go · 设置 Key,不会再凭空消失。
  • 主题适配:只用 --dsw-alias-* 主题变量,跟随深浅色。
  • 零运行时依赖:Host 是纯 Node ESM,Client 是手写懒加载 bundle,不依赖 Typert 代码生成。

安装

需要 DSH 0.2.1(在 0.2.1-rc.3 实测)。

包名沿用本地安装名 @local/dsh-opencode-go-usage。npm 上同名的 dsh-opencode-go-usage 是另一个作者的项目, 如果要发布到 npm,请改成自己的 scope。本仓库定位为从 git / 本地目录安装的 DSH bundle。

方式 A:git 源(需要 DSH CLI)

dsh plugin --profile <你的 profile> add github:zyhnbyyds/dsh-opencode-go-usage

装好后刷新 DSH 页面即可。

方式 B:本地目录

git clone https://github.com/zyhnbyyds/dsh-opencode-go-usage.git

然后在 DSH 的「设置 → 插件」里从这个目录安装(bundle 名 @local/dsh-opencode-go-usage), 或让 agent 用 plugin manager 的 install_bundle 指向该目录。插件行会通过 cordis.patch.yml(dsh.bundle.patch)自动注入,不需要手改 profile。

使用

输入框下方是药丸:Go · 5h 7% · 周 7% · 月 3%。点开是详情卡片,头部 ↻ 立即刷新。 Windows 上鼠标移入会有底色变化。

设置页填 Key:设置 → OpenCode GO 用量

  • 输入 oc_sk_… → 保存:写入 Harness 凭据服务里本插件专用的 OPENCODE_GO_USAGE_API_KEY, 不会改动 DSH 模型 provider 用的那把 Key;保存后立即重读用量。
  • 清除已保存的 Key:删除专用凭据,回到 DSH 模型凭据 / 环境变量 / auth.json 的回退链。
  • 顶部实时显示来源(插件设置 / DSH 凭据 / 环境变量 / auth.json);Key 无效时显示「当前读取:…」。
  • Key 只在 Host 进程内使用,接口响应只暴露 configured/source,不返回明文。

API Key 解析顺序

  1. 设置页保存的 OPENCODE_GO_USAGE_API_KEY(插件专用,优先级最高)
  2. Harness 凭据服务里的 OPENCODE_GO_API_KEY(「设置 → 模型」里给 opencode-go provider 配的 Key)
  3. 进程环境变量 OPENCODE_GO_API_KEY
  4. OpenCode 自己的 auth.json:~/.local/share/opencode/auth.json 或 ~/.config/opencode/auth.json, 格式 { "opencode-go": { "type": "api", "key": "oc_sk_..." } }

注意:设置页里填的 Key 只用于用量展示;DSH 调用模型仍用「设置 → 模型」里的 Key,两者可以是不同账号。 如果两把 Key 属于不同账号,界面显示的会是设置页那把 Key 对应账号的用量。

数据来源

数据 来源
三窗口额度百分比、重置时间 GET https://opencode.ai/zen/go/v1/usage(Bearer API Key,Host 侧请求)
套餐名、计费周期、精确美元额度与已用 GET https://opencode.ai/console/api/go/status(同一把 Key;micro-cent 金额,1 USD = 1e8)。内部接口,失败时自动退回下一条的估算
剩余美元估算 无 status 数据时按官方 Go 用量说明:5 小时窗口 = 月额度 20%,每周 = 50%,每月 = 100%;月额度默认 $60(Go 套餐),可在配置中改

结构

index.js          Host 半:解析 Key、读取用量接口、注册 /opencode-go-usage/api/state 与 /api/key 路由
client.js         Client 半:输入框下方药丸 + 详情弹层 + 「OpenCode GO 用量」设置页
cordis.patch.yml  bundle 插件行(dsh.bundle.patch 自动注入)
locale/           插件市场 / 设置页显示用的标题与描述(en / zh)
icon.svg          插件图标
docs/             截图

Host 与 Client 之间只用同源 HTTP 路由通信(/opencode-go-usage/api/*),带同源围栏与请求体大小限制。

配置

安装后如需自定义,在 profile 的 cordis.patch.yml 用户层覆盖该行 config:

- id: opencode-go-usage
  config:
    # 凭据名(环境变量 / 凭据服务里的名字),作为回退来源
    credential: OPENCODE_GO_API_KEY
    # 设置页保存 Key 时使用的专用凭据名
    settingsRef: OPENCODE_GO_USAGE_API_KEY
    baseUrl: https://opencode.ai/zen/go/v1/usage
    statusUrl: https://opencode.ai/console/api/go/status
    enrich: true
    # 缓存刷新间隔(毫秒)
    refreshMs: 60000
    timeoutMs: 15000
    # 套餐月额度(美元):Go 是 60;按实际套餐改
    monthlyLimitUsd: 60
    # 也可以直接给三个窗口的额度(美元),优先生效
    # limits: { rolling: 12, weekly: 30, monthly: 60 }
    planLabel: Go
    debug: false

状态语义

error 含义 界面表现
null 读取成功 显示三个窗口
no-key 没有找到 API Key 药丸显示 Go · 设置 Key,点开提示去设置页填写
unauthorized Key 无效 / 被撤销 显示红色错误提示
no-subscription 账号未订阅 GO 显示错误提示
network 连不上 opencode.ai 保留上次快照并提示
bad-shape / bad-json / http-* 接口异常 显示错误提示

验证记录

在 DSH 0.2.1-rc.3(Windows,Web GUI)实测:

  • Host:GET /opencode-go-usage/api/state 返回 200,keySource: "credentials",sources: { usage: "ok", status: "ok" }; ?refresh=1 会真正重新拉取(fetchedAt 变化);POST /api/key 非法参数 400、跨站来源 403。
  • Client:conversation.composer.dock 槽位有效;药丸约 151×18 逻辑尺寸;弹层左边缘与药丸左边缘对齐(左差 0px、垂直间距 11px); 详情卡片 334×169 逻辑尺寸,数据行距 25px,仅头部一条分隔线。
  • 设置页:设置面板出现导航项「OpenCode GO 用量」;用假 Key 走完整流程——保存后状态变为「已在插件设置里保存 · 插件设置」 并提示「当前读取:… 无效或已被撤销」,清除后回退到「使用 DSH 模型凭据 …」且用量恢复。测试用假 Key 已清除。
  • 暗色主题未单独截图验证;样式只使用主题变量。

已知限制

  • 用量接口没有公开文档,官方可能调整;解析做了防御式处理,异常显示为状态而不是崩溃。 /console/api/go/status 是 Console 内部接口,失败时只影响精确美元与套餐信息,百分比照常显示。
  • 百分比是账户级数据(含同一账号其他设备 / 客户端的用量);同一把 Key 在凭据服务和 auth.json 里可能属于不同账号。
  • 三个窗口的百分比含义以官方说明为准。

开发

node --check index.js
node --check client.js

改完源码后,在 DSH 里重新加载该 bundle(插件管理器里关闭再启用该 bundle,或重启 DSH)并刷新页面。

License

MIT © 2026 zyhnbyyds

—/ 5

No ratings yet

Verified DSH bundle

Commit 94189c95af0e

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout