Live provider quota / balance / credits for OpenCode v2 — in the TUI sidebar, with gradient bars, trend ETA and a
/quotadialog. 中文文档如下。
opencode v2 插件:在 TUI 侧栏实时显示各模型提供商的额度 / 余额,点击侧栏块或 /quota 查看明细。
侧栏块随当前模型自动切换:
⚡ GLM Coding Plan
5h ████████▌░░ 62%
7d ████░░░░░░░ 21%
30d █████░░░░░░ 30%
→ 02:24 (2h left)
/quota 打开当前提供商明细,/quota all 并列显示全部有 key 的提供商:
OpenCode Usage
5h ░░░░░░░░░░░░░░░░░░░░ 0% → 10-08 04:12 (5h left)
7d ░░░░░░░░░░░░░░░░░░░░ 0% → 10-12 08:00 (4d left)
30d ██████░░░░░░░░░░░░░░ 30% → 11-02 21:44 (26d left)
- 条形按用量 6 档梯度变色(绿 → 红),明暗主题自适应;余额类一行显示:
💰 ¥299.59。 - 明细含窗口状态、积分明细、涨跌箭头、趋势与预计用满时间;重启后首秒即有数据。
- 查询失败显式标注(
⚡ key无效/⚡ 限流退避中 12m/⚡ 查询失败),不用旧数据冒充最新值;429 每家独立退避。
| 适配器 | 内容 | 接口 |
|---|---|---|
| opencode / opencode-go | 订阅额度(5h / 7d / 30d) | opencode.ai/zen/go/v1/usage |
| deepseek | 账户余额(CNY / USD) | api.deepseek.com/user/balance |
| stepfun | 账户余额(CNY) | api.stepfun.com/v1/accounts |
| zai / zhipuai | GLM Coding Plan 积分(5h / 周 / 月) | open.bigmodel.cn / api.z.ai |
| openai-codex | ChatGPT 订阅额度(主 / 次窗口) | chatgpt.com/backend-api/wham/usage |
| moonshot / kimi | 账户余额(.cn 为 CNY,.ai 为 USD) | api.moonshot.cn / api.moonshot.ai /v1/users/me/balance |
| siliconflow | 账户余额(.cn 为 CNY,.com 为 USD) | api.siliconflow.cn / .com /v1/user/info |
| openrouter | 预付费 Credits 剩余(需 Management Key) | openrouter.ai/api/v1/credits |
| skywork | 账户余额(自带币种字段) | api.skyworkmodel.ai/api/v1/balance |
| novita | 账户余额(接口单位为 1/10000 USD,已换算) | api.novita.ai/openapi/v1/billing/balance/detail |
- 没有公开余额接口、只能去控制台看的厂商(MiniMax、Qwen/百炼、火山方舟、Groq、Together、Mistral、xAI 等)连了 key 也不会显示。
- 插件按 opencode 实际配置的服务商自动发现(含自定义 baseURL),解析得出 key 的才显示,无
无key噪音;key 移除后自动消失。 - 新增适配器只需在
src/providers.ts加一个ids/hosts/fetch定义。CN / 国际双站点(moonshot、siliconflow、zai)一家 401/403 自动换另一家试。
要求 OpenCode v2(≥ 2.0.3,在 2.0.24 上开发测试)。
1. 加入全局配置 —— 编辑 ~/.config/opencode/opencode.json(没有就新建):
已有 plugins 数组的话追加一项即可,cli.json 不用改。
2. 重载
opencode service restart # 或直接重启 TUI首次加载会从 npm 拉包,视网络可能要几十秒。
3. 配置凭据(至少一家,三种方式任选)
- TUI 里执行
/connect; - 终端执行
opencode auth login; - 设置环境变量:
OPENCODE_API_KEY、DEEPSEEK_API_KEY、ZHIPU_API_KEY/ZAI_API_KEY、MOONSHOT_API_KEY、SILICONFLOW_API_KEY、OPENROUTER_API_KEY(需 Management Key)、SKYWORK_API_KEY、NOVITA_API_KEY、STEPFUN_API_KEY。
4. 验证
opencode plugin list # 应出现 opencode-provider-usage进入会话后侧栏出现额度块即成功(首轮刷新最多等 2 分钟)。
opencode plugin update opencode-provider-usage # 省略参数 = 更新全部
opencode service restart想锁定版本可在 plugins 里写 opencode-provider-usage@0.1.2,精确版本不会被 plugin update 触碰。
- 侧栏无显示:
grep -i provider-usage ~/.local/share/opencode/log/opencode.log | tail - 拉包失败(registry 不通):多次
opencode service restart重试,或在能访问的机器npm pack后改用本地路径安装。
bun install
bun test # 单元测试(全部 mock,不访问真实接口)
bunx tsc --noEmit # 类型检查本地调试:把 plugins 指向仓库绝对路径,改动自动重载;OPENCODE_PROVIDER_USAGE_DEBUG=1 opencode service restart 打开详细日志:
tail -f ~/.local/share/opencode/log/provider-usage.log架构:server 插件(src/index.ts,凭据解析 + 发现 + 轮询 + storage)与 TUI 插件(src/tui.tsx,只读 RPC 渲染侧栏)通过 RPC 通信;各提供商接口在 src/providers.ts。
- zai 的 GLM monitor 接口在 key 失效时返回 HTTP 200 +
success:false,插件归类为key无效。 - MIT License。
{ "$schema": "https://opencode.ai/config.json", "plugins": ["opencode-provider-usage"] }