Back to home

xinman100

dsh-opencode-go-usage-plus

DeepSeek Harness 插件:OpenCode Go 用量与花费实时展示(配额 + 官方日/月/累计统计,侧边栏悬停面板 + 设置页卡片)| DSH plugin: OpenCode Go quota & spend dashboard with official usage.list stats

Stars
0
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-plugin-opencode-go

DeepSeek Harness 插件 —— OpenCode Go 套餐用量与花费实时展示

在 DSH Web 界面实时展示 OpenCode Go 的配额消耗(滚动/周/月)与官方账户级花费统计(今日/本月/累计):侧边栏底部一个「Go」图标,悬停即看统计面板;设置页有完整详情卡片。

中文 | English

主界面

✨ 功能

能力说明
🎯侧边栏图标 + 悬停面板左下角「Go」胶囊图标(状态点随本月配额变色:≥70% 黄、≥90% 红);悬停弹出统计面板,离开即关
🍩配额进度滚动 / 本周 / 本月三条进度条:已用百分比 + 状态色 + 重置倒计时
📅用量统计滚动用量 / 每周用量 / 每月用量(窗口与配额一致:5h / 7d / 30d,结束于重置时刻):费用($)+ 总 token + 请求数 + 重置剩余时间;另有总计行(总费用 + 总 token)
⚙️设置页详情卡片设置 →「OpenCode Go 用量」:配额条、统计、密钥来源提示、凭据配置表单、立即刷新
🔑密钥零存储API Key 通过 DSH 凭据服务原生读取(.credentials.yaml / 环境变量 / .env,与模型 provider 同源),插件不复制、不落盘
🔄自动刷新宿主每 60 秒轮询配额接口;官方明细 15 分钟缓存;浏览器每 30 秒读本地快照

悬停统计面板

🗄️ 数据来源与口径

数据接口认证说明
配额百分比(优先)https://opencode.ai/workspace/<wid>/go 仪表盘 HTML 解析(usagePercent + resetInSec浏览器 auth Cookie滚动 / 周 / 月实时用量 % + 重置倒计时(配置官方凭据后使用,同 GoGauge 口径)
配额百分比(兜底)GET https://opencode.ai/zen/go/v1/usageBearer <API Key>未配置官方凭据时的配额来源
花费明细https://opencode.ai/_server(server-fn usage.list浏览器 auth Cookie账户级逐请求官方计费(cost 单位 1e-8 美元),与官网账单一致、跨设备
  • 窗口口径:滚动 = 5 小时、每周 = 7 天、每月 = 30 天,均以对应配额窗口的重置时刻为终点聚合 usage.list 记录(与配额条同一窗口,可对照百分比与金额);配额不可用时回退为 now-5h / now-7d / 自然月
  • 总 token = 输入 + 输出 + 推理 + 缓存读 + 缓存写(与 GoGauge 的「输入(含缓存命中)+ 输出 + 推理」口径一致)
  • 配额明细是两种不同计量口径:配额百分比按用量单位计(部分模型限时 2×),明细为逐请求美元计费,二者不可直接换算对比
  • 明细不可用时(未配置/凭据过期/网络失败)配额部分照常工作,互不影响
  • 抓取上限 5000 页(约 25 万条),超出时面板标注「数据截断」

🚀 安装

插件为纯 JS(无需构建),lib/ 即发布产物。

方式 A:git clone + 目录链接(推荐)

git clone https://github.com/xinman100/dsh-opencode-go-usage-plus
$plugin = (Resolve-Path './dsh-opencode-go-usage-plus').Path
foreach ($profile in @('web', 'desktop')) {
  $dir = Join-Path $HOME ".dsh/profiles/$profile/node_modules"
  New-Item -ItemType Directory -Force $dir | Out-Null
  New-Item -ItemType Junction -Path (Join-Path $dir 'dsh-plugin-opencode-go') -Target $plugin | Out-Null
}

~/.dsh/profiles/<profile>/cordis.patch.yml 注册 loader 条目:

- insert:
    - id: opencode-go-usage
      name: dsh-plugin-opencode-go
      config:
        refreshMs: 60000

⚠️ 该插件没有 dsh.bundle manifest(纯插件模块),不要把它加进 profile package.jsondsh.profile.bundles 列表——dsh-app-boot 会对缺失 dsh.bundle 的 bundle 报硬错误导致启动失败。

重启 DSH(Web 页面 Ctrl+F5 刷新加载 client)。

方式 B:dsh plugin 命令

dsh plugin --profile web add link:/path/to/dsh-plugin-opencode-go
# 再手动在 profile 的 cordis.patch.yml 插入上面的 loader 条目

⚙️ 配置

插件行配置

字段默认值说明
credentialRefOPENCODE_GO_API_KEY从 DSH 凭据服务解析的密钥名
baseUrlhttps://opencode.ai配额 API 基地址
refreshMs60000宿主轮询间隔(毫秒,下限 5000)

官方花费明细凭据(可选,仅需一次)

「日/月/累计」统计需要浏览器 auth Cookie(与 Xenia 的 dsh-opencode-go-usage 面板共用同一配置文件):

  1. 浏览器登录 opencode.ai → F12 → Application → Cookies → 复制 auth
  2. 打开 https://opencode.ai/workspace/<你的工作区>/usage,复制地址栏的 wrk_xxx
  3. 在设置页「OpenCode Go 用量」卡片粘贴两者 → 「保存并抓取」

凭据保存在 ~/.config/dsh-opencode-go-usage.json(仅本机)。未配置时配额功能不受影响。

📡 API

GET /api/opencode-go/usage

本地快照(配额 + 统计):

{
  "ok": true,
  "usage": {                       // 配额(官方 zen/go/v1/usage)
    "rolling":  { "percent": 1, "status": "ok", "resetsAt": "..." },
    "weekly":   { "percent": 62, "status": "ok", "resetsAt": "..." },
    "monthly":  { "percent": 59, "status": "ok", "resetsAt": "..." }
  },
  "fetchedAt": 1755,
  "keySource": "file",
  "credentialRef": "OPENCODE_GO_API_KEY",
  "quotaSource": "dashboard",       // dashboard(仪表盘解析)| api(Bearer 兜底)
  "stats": {                        // 官方 usage.list 统计(未配置时为 null)
    "rolling": { "requests": 964, "cost": 1.52, "tokens": 327041613, "tokensInput": 1636221, "tokensOutput": 530041, "tokensReasoning": 0, "tokensCacheRead": 324600841, "tokensCacheWrite": 0 },
    "weekly":  { "requests": 7217, "cost": 13.21, "tokens": 1931414647, "tokensInput": 22044225, "tokensOutput": 5827537, "tokensReasoning": 0, "tokensCacheRead": 1901419885, "tokensCacheWrite": 0 },
    "monthly": { "requests": 11095, "cost": 23.29, "tokens": 2748490805, "tokensInput": 55002423, "tokensOutput": 9075425, "tokensReasoning": 0, "tokensCacheRead": 2681730957, "tokensCacheWrite": 0 },
    "total":   { "requests": 11147, "cost": 23.29, "tokens": 2752232540, "tokensInput": 55371480, "tokensOutput": 9109677, "tokensReasoning": 0, "tokensCacheRead": 2685735383, "tokensCacheWrite": 0 },
    "fetchedAt": 1755,
    "truncated": false,
    "skippedPages": 0,
    "records": 11147
  },
  "statsConfigured": true,
  "statsError": null               // { type, message }:NotConfigured / NoRecords / StatsError
}

GET /api/opencode-go/usage/config

{ "ok": true, "configured": true }

POST /api/opencode-go/usage/config

// body
{ "authCookie": "Fe26.2**...", "workspaceId": "wrk_xxx" }
// 立即返回;官方明细抓取在后台进行,卡片下一次轮询即可看到结果

🔒 隐私与安全

  • API Key 只经 DSH 凭据服务读取,插件不保存、不打印、不外传密钥
  • auth Cookie 仅保存在本机 ~/.config/dsh-opencode-go-usage.json,不出本机
  • 网络请求仅发往 opencode.ai 官方接口,不向任何第三方发送数据

❓ 常见问题

现象原因 / 处理
配额正常但「日/月/累计」提示 NotConfigured尚未配置官方凭据,按上文「官方花费明细凭据」粘贴 authCookie + workspaceId
提示 NoRecordsauthCookie 无效或已过期:重新登录 opencode.ai 后复制最新 auth
「累计」与配额百分比对不上口径不同:累计是全部历史美元明细;配额是滚动/周/月窗口用量,二者不可直接对比
未找到密钥在 DSH 模型设置(Models)配置 OPENCODE_GO_API_KEY,或设置同名环境变量

🙏 致谢

📋 更新日志

CHANGELOG.md

📄 License

MIT