dsh-balance:在 DSH Web 輸入框下方狀態欄展示供應商餘額/用量

前言

使用 DeepSeek Harness(DSH)跑 web 會話時,切換不同 provider 後,餘額或訂閱用量往往需要到對應供應商頁面查看。dsh-balance 是 GeekRicardo 維護的 DSH web 插件,MIT 許可。它把當前 provider 的餘額/用量展示到輸入框下方狀態欄,並按 provider 即時切換,減少手工查詢。

這是什麼

dsh-balance 是一個 DSH web 插件,核心能力是:

  • 在輸入框下方狀態欄展示當前供應商的餘額/用量;
  • 按當前 provider 即時切換;
  • 2 秒輪詢更新;
  • 餘額/用量 5 分鐘緩存;
  • 緩存優先展示,切會話不空白。

插件從 ~/.dsh/.credentials.yaml 讀取對應供應商密鑰,由 Host 端註冊 /dsh-balance/status HTTP route,Client 端輪詢該 route 並渲染狀態。判斷當前 provider 使用 agentDefaultModel.currentSelection()。

package.json 聲明 react 爲可選 peerDependency,版本要求 ^18.2.0。

支持的供應商

下面是當前支持列表。其他 provider 不顯示,返回 null。

provider 展示內容 密鑰 接口
deepseek / deepseek-official / deepseek-vision DeepSeek 官方餘額 + 本會話花費估算 DEEPSEEK_API_KEY GET api.deepseek.com/user/balance
kimi-coding Kimi Coding 訂閱用量 KIMI_CODING_API_KEY,兼容 KIMI_CODE_API_KEY / KIMI_API_KEY GET api.kimi.com/coding/v1/usages
opencode-go OpenCode Go 訂閱用量 OPENCODE_GO_API_KEY,兼容 OPENCODE_API_KEY GET opencode.ai/zen/go/v1/usage
zai-coding-cn / zai 智譜 GLM Coding Plan 訂閱用量 ZAI_CODING_CN_API_KEY / ZAI_API_KEY GET open.bigmodel.cn 或 api.z.ai/api/monitor/usage/quota/limit
minimax-cn / minimax MiniMax Coding Plan 訂閱用量 MINIMAX_CN_API_KEY / MINIMAX_API_KEY GET api.minimaxi.com 或 api.minimax.io/v1/api/openplatform/coding_plan/remains
openrouter OpenRouter 餘額 OPENROUTER_API_KEY GET openrouter.ai/api/v1/credits
openai-codex OpenAI Codex 訂閱用量 OPENAI_CODEX_ACCESS_TOKEN,可選 OPENAI_CODEX_ACCOUNT_ID GET chatgpt.com/backend-api/wham/usage

即時性與緩存

下面幾點決定了狀態欄的更新節奏:

  1. Client 每 2 秒輪詢一次 /dsh-balance/status,因此切換模型或切換對話後,狀態欄最多 2 秒更新。
  2. Host 端按 provider 緩存餘額/用量,同一 provider 下每 5 分鐘重新查詢一次。
  3. Client 會把上一次成功讀數緩存在內存和 localStorage。切換會話或刷新頁面時,先渲染緩存,再後臺請求最新數據。
  4. 跨會話緩存會把 DeepSeek「本會話花費」清零,但餘額/用量照舊展示。
  5. 當前 provider 的判斷依賴 agentDefaultModel.currentSelection(),不依賴最近一次請求的模型。

安裝與啓用

前置條件

安裝前需要滿足:

  • DeepSeek Harness 已初始化 web profile,即 ~/.dsh/profiles/web 存在;
  • Node.js >= 20 可用;
  • pnpm 可用;
  • 對應供應商密鑰已配置在 ~/.dsh/.credentials.yaml。

官方安裝命令

下面是一條命令安裝:

curl -fsSL https://raw.githubusercontent.com/GeekRicardo/dsh-balance/main/install.sh | bash

安裝腳本可先 --dry-run 預覽。

腳本會做以下事情:

  1. 在 ~/.dsh/profiles/web/package.json 寫入依賴 "dsh-balance": "github:GeekRicardo/dsh-balance";
  2. 把 dsh-balance 追加進 dsh.profile.bundles;
  3. 執行 cd ~/.dsh/profiles/web && pnpm install;
  4. 校驗 bundles 已註冊,並提示重啓 DSH。

重啓 DSH

如果用 pm2 託管,可以執行:

pm2 restart dsh-web

否則使用你原來的 DSH 啓動方式重啓。

重啓後硬刷新頁面,狀態欄生效。

典型用法

  1. 在 ~/.dsh/.credentials.yaml 配置對應供應商密鑰。
  2. 安裝插件並重啓 DSH。
  3. 在 DSH web 頁面切換 provider、模型或對話。
  4. 觀察輸入框下方狀態欄:
    - 切換模型/切換對話後,狀態欄最多 2 秒更新;
    - 同一 provider 下餘額/用量每 5 分鐘重新查詢一次;
    - DeepSeek 本會話花費按 session 分別累計;
    - DeepSeek 本會話花費是插件加載後開始累計,重啓清零,不持久化。

計費與用量口徑

DeepSeek

DeepSeek 官方 API 不返回金額,只返回 token 數。插件中的金額是 token 數 × 單價 的估算,不是賬單。

單價來自 models.dev,按 USD/百萬 token 計算,按模型前綴匹配。拉取失敗時回落到內置單價。匯率固定爲 7.2。

Kimi Coding

Kimi Coding 用量僅當 provider 爲 kimi-coding,即 api.kimi.com/coding 時展示。

OpenCode Go

OpenCode Go 用量僅當 provider 爲 opencode-go,即 opencode.ai/zen/go 時展示。

該接口要求同時攜帶兩個請求頭:

Authorization: Bearer <token>
x-api-key <key>

卸載

卸載時按下面步驟處理:

# 1. 從 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 移除 "dsh-balance"
# 2. 移除 dependencies 裏的 "dsh-balance"
# 3. cd ~/.dsh/profiles/web && pnpm install
# 4. 重啓 DSH

故障排查

現象 原因與處理
輸入框下方什麼都不顯示 當前 provider 不在支持列表,或 Host 尚未加載;檢查 provider 列表並重啓 DSH
顯示「餘額不可用」 對應供應商密鑰未配置,或接口認證失敗;檢查 ~/.dsh/.credentials.yaml 中對應 key 是否存在且有效
切換模型後讀數沒有立即變 輪詢間隔爲 2 秒;如果仍不更新,確認當前選擇已保存,currentSelection() 已生效
餘額數字一直不變 同一 provider 下餘額/用量每 5 分鐘重新查詢一次,屬於緩存預期

安全提示

dsh-balance 會在當前 DSH 進程權限下運行,並讀取 ~/.dsh/.credentials.yaml 中的供應商密鑰。安裝前建議先檢查源碼與 MIT 許可證,確認來源可信。

相關鏈接

  • GitHub:https://github.com/GeekRicardo/dsh-balance
  • 目錄頁:https://www.skillhub.cn/plugins/GeekRicardo/dsh-balance(來自插件線索,已覈實事實中標記爲不確定)
羽毛球分组比赛记分
小程序二维码

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

小夜