OpenCode Go 套餐用量显示:输入框下方常驻徽章显示滚动 / 每周 / 每月用量百分比与重置倒计时,点击展开进度卡片;Agent 可经 `opencode_go_usage` 工具随时查询余额。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:vinyumao/dsh-opencode-usage
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DSH 官方 bundle 插件,安装一条命令:
dsh plugin --profile web add github:vinyumao/dsh-opencode-usage#<ref>
English | 中文
能力面
| 工具 | 说明 |
|---|---|
opencode_go_usage |
对话中查询 OpenCode Go 套餐余额:三个窗口的已用百分比与重置倒计时(无参数) |
| UI 能力 | 说明 |
|---|---|
| 常驻徽章 | 输入框(composer)下方一行:OpenCode Go:滚动用量 0% · 每周用量 0% · 每月用量 0%,按配置间隔自动刷新 |
| 用量卡片 | 点击徽章展开:三个窗口的进度条 + 已用百分比 + 重置倒计时(每秒走动)+ 立即刷新 + opencode 链接(新标签页打开网页端用量面板) |
| 配置表单 | 卡片内直接填写 API key / Base URL / 刷新间隔 / 用量网页 URL,保存即生效 |
| 双语界面 | 中文 / English——所有文案跟随全局 DSH 语言设置(设置 → 通用 → 语言),卡片底部也内置 中文 / English 切换按钮(切换整个 GUI 语言) |
| Key 复用 | API key 默认取环境变量 OPENCODE_GO_API_KEY——与 DSH 的 opencode-go 模型提供商配置(settings.yaml 中 apiKeyEnv)一致,通常零配置可用 |
原理
用量来自 OpenCode Go 订阅套餐的配额接口:
GET https://opencode.ai/zen/go/v1/usage
Authorization: Bearer <API_KEY> # 即普通的 Anthropic 兼容 API Key
响应示例:
{
"usage": {
"rolling": { "status": "ok", "percent": 0, "resetsAt": "2026-…Z" },
"weekly": { "status": "ok", "percent": 0, "resetsAt": "2026-…Z" },
"monthly": { "status": "ok", "percent": 0, "resetsAt": "2026-…Z" }
}
}
⚠️ 存疑标注:该接口未写入 OpenCode 官方公开文档,由 cc-switch 社区 发现(issue 中附有验证脚本)。响应结构可能随 opencode 变动;本插件做了防御性解析(
usage.前缀与裸窗口、resetsAt与resetsInSeconds两种形式均可识别),结构若变更请以实际响应为准。
浏览器不直接访问上游:所有请求经宿主进程的 /api/dsh-opencode-usage/* 路由代理(同源 fetch),API key 不进入浏览器。
关于 OpenCode Zen
本插件仅面向 Go 套餐——它展示的是订阅配额窗口,只有 OpenCode Go 才有。OpenCode Zen 是另一套按量付费网关(预充值余额、按 token 计费),没有等价的 API-key 鉴权余额接口:官方功能请求(anomalyco/opencode#10448「Add Zen balance API endpoint」)至今仍未实现;社区中能显示 Zen 余额的工具都依赖抓取工作区 billing 页面的浏览器 cookie(脆弱方案,如 CodexBar)。若未来 OpenCode 提供公开的 Zen 余额 API,本插件可增加 plan 选项接入。
安装
零运行时 SDK 依赖:host 半部分不 import 任何
@deepseek-ai/*运行时包——Agent 工具按ctx.tools.register直接接受的原始可注册形状编写(output.schema为标准 JSON Schema,含render/execute),而不是用@deepseek-ai/dsh-tools的defineTool构建。这正是 git vendoring 安装(dsh plugin add github:...,会 clone 到工作区vendor/目录)能开箱即用的原因:Node 永远不需要从插件自己的node_modules解析@deepseek-ai/*,因为插件根本不 import 它们。(早期版本 import 了defineTool;若遇到@deepseek-ai/dsh-tools的ERR_MODULE_NOT_FOUND,请更新到最新 ref。)
方式一:dsh plugin 一条命令(推荐)
从任意目录执行:
dsh plugin --profile web add github:vinyumao/dsh-opencode-usage#<ref>
package.json 声明了 dsh.bundle.patch,安装后自动进入 profile 的 dsh.profile.bundles 层栈并挂载 cordis.patch.yml。然后重启 dsh web,输入框下方出现余额徽章。
git 安装拉取的是源码;本插件为纯源码(
index.mjs/client.js无构建步骤),装完即用,无需prepare脚本。若 pnpm 提示需要allowBuilds许可,请把 pnpm 打印的包 key 加入 profile 的pnpm-workspace.yaml后重试;为可复现安装,建议固定<ref>为 commit SHA(#<sha>)。
方式二:手动接入
- 在 profile 的
package.jsondependencies增加:"@chen-001/dsh-opencode-usage": "github:vinyumao/dsh-opencode-usage#<ref>" - 在 profile 目录执行
pnpm install。 - 确认 profile 的
dsh.profile.bundles已包含该包(dsh plugin会自动 reconcile);或在其cordis.patch.yml增加:- insert: - id: opencode-usage name: '@chen-001/dsh-opencode-usage' - 重启
dsh web,输入框下方出现余额徽章。
给 AI(agent)的安装指引
若由 AI 助手代为安装,请按以下步骤执行:
- 确认 dsh CLI 可用:
dsh --version。若在仓库源码环境运行,用pnpm dsh ...代替。 - 安装(
#<ref>建议固定为仓库最新 commit SHA):dsh plugin --profile web add github:vinyumao/dsh-opencode-usage#<ref>- 首次会初始化 profile(自动带
@deepseek-ai/dsh-base)。 - 若 pnpm 拒绝执行 git 依赖的 prepare 脚本,将 pnpm 打印的包 key 加入
$DSH_HOME/profiles/web/pnpm-workspace.yaml的allowBuilds后重跑。
- 首次会初始化 profile(自动带
- 验证层栈:
dsh --profile web --dump-config应能看到# == @chen-001/dsh-opencode-usage层(含opencode-usage行)。 - 重启 web:结束当前
dsh web进程后重新启动。 - 冒烟:浏览器打开 DSH Web GUI,输入框下方应出现
OpenCode Go:…徽章;对话中让 Agent 执行opencode_go_usage工具应返回三个窗口用量。 - 告警排查:若徽章显示「查询失败」,检查
OPENCODE_GO_API_KEY环境变量是否已设置,或点击徽章在配置表单中填写 API key。
卸载
与安装同一条 dsh plugin 命令即可卸载:它会在 profile 目录执行 pnpm remove,并自动把该插件从 dsh.profile.bundles 层栈中移除(无需手动改 cordis.patch.yml 或 bundles 列表):
dsh plugin --profile web remove @chen-001/dsh-opencode-usage
然后重启 dsh web:徽章消失,/api/dsh-opencode-usage/* 路由、opencode_go_usage 工具与 Agent 宣告一并卸载。
可选清理
- 配置文件:API key 明文存于
~/.dsh/dsh-opencode-usage.json(权限 0600)。若不打算重装,删除之:rm ~/.dsh/dsh-opencode-usage.json。(key 也可能被 DSH 的 opencode-go 模型提供商经OPENCODE_GO_API_KEY环境变量引用——那是独立配置,与本插件无关。) - allowBuilds 条目:若安装时曾把 pnpm 打印的包 key 加入 profile 的
pnpm-workspace.yaml的allowBuilds,可一并移除。
手动兜底
若 dsh plugin 不可用,可在 profile 目录(~/.dsh/profiles/web)手动移除依赖与层条目:
pnpm remove @chen-001/dsh-opencode-usage- 删除
package.json中dsh.profile.bundles里的"@chen-001/dsh-opencode-usage"行 - 重启
dsh web
验证
dsh --profile web --dump-config不应再列出# == @chen-001/dsh-opencode-usage层。- 重启后输入框下方不再出现
OpenCode Go:…徽章。
配置
API key 解析顺序:插件配置文件 → 环境变量 OPENCODE_GO_API_KEY → 无。
| 配置 | 默认值 | 说明 |
|---|---|---|
apiKey |
环境变量 | 在用量卡片「配置」中填写后存 ~/.dsh/dsh-opencode-usage.json(权限 0600) |
baseUrl |
https://opencode.ai/zen/go |
上游网关地址,末尾自动拼 /v1/usage |
refreshSeconds |
300 |
徽章自动刷新间隔(秒,最小 10) |
webUsageUrl |
(空) | 卡片上 opencode 按钮打开的网页端用量面板,如 https://opencode.ai/workspace/<workspace-id>/go。workspace ID 与账号绑定、因人而异——请配置自己的,不要照抄别人的;留空则隐藏按钮 |
enabled / announceToAgent |
true |
总开关 / 是否向 Agent 宣告插件 |
文件方式(可选):
// ~/.dsh/dsh-opencode-usage.json
{ "apiKey": "sk-…", "baseUrl": "https://opencode.ai/zen/go", "refreshSeconds": 300, "webUsageUrl": "https://opencode.ai/workspace/<workspace-id>/go" }
Agent 工具
opencode_go_usage(无参数)返回:
OpenCode Go 用量(https://opencode.ai/zen/go)
滚动用量:0%,重置于 3 小时 20 分钟
每周用量:0%,重置于 2 天 9 小时
每月用量:0%,重置于 30 天 22 小时
抓取时间:…
安全
/api/dsh-opencode-usage/*仅限 loopback(含同源校验),LAN 暴露的部署不会泄漏代理的 key。- API key 明文存于
~/.dsh/dsh-opencode-usage.json(0600),与 dsh-ssh 的凭据存储同一信任模型。 - 配置读取接口只返回
hasApiKey/apiKeySource,key 本身永不出宿主机。
插件管理
已装插件可用 plugin-registry 的薄控制台管理(浏览器面板):管理 profile 插件安装态(bundle 层栈 + insert 行 + 启停),无需手改配置。安装:
dsh plugin --profile web add github:vlln/plugin-registry/packages/plugin/console
开发
node tests/sanity.mjs # 纯逻辑验证(解析/格式化/配置读写),无需 dsh 环境
node tests/routes.mjs # 路由层集成验证(loopback 围栏/方法守卫/JSON body)
已知限制
- 徽章挂在 composer dock(会话打开时显示),无会话时不可见。
- 用量接口非官方文档化,结构可能变化(见「原理」)。
- 配置表单的 key 输入为「追加/覆盖」语义:留空保存 = 不改动现有 key;如需回退到环境变量,请手动编辑配置文件删除
apiKey字段。
License
链接
同类插件
Mars-Sea/dsh-commandcode-provider★ 14
非官方 Command Code 模型接入插件:注册 `commandcode` 路由,带实时模型目录与推理强度支持。
feibi-mochi/deepseek-harness-wallet★ 14
多供应商钱包标签:官方 DeepSeek 余额、本会话花费与 token、第三方合计 token、一键充值、低余额提醒。
franksong2702/dsh-codex-connect★ 11
通过 ChatGPT OAuth 将 OpenAI Codex 模型接入 DeepSeek Harness,并提供可选的搜索与图片工具。
jyh20030112/dsh-visual-plugin★ 9
给纯文本模型装上眼睛:把用户图片转发给任意 OpenAI 兼容的视觉模型生成描述,并在 Web UI 右侧面板展示结果。
suntianc/dsh-codex-auth★ 7
复用 Codex CLI 的 ChatGPT 登录态注册 `openai-codex` LLM 路由,并在 DSH Web 设置中提供 GPT Auth 控件。
Noob-stupid/dsh-github-login★ 6
零终端的 GitHub 可视化登录插件:窗口内完成设备码授权,令牌同步进 gh CLI,附宿主端状态与唤起接口。