dsh-multi-provider-usage:把三家額度收進 DSH 側邊欄

前言

DSH 的插件生態裏,接海外模型和國內大模型基本各佔一半,很多人同時掛着 OpenCode GO、Command Code 和 GLM Code Plan 三套賬號。想確認還剩多少額度,得分別開控制台、看不同的頁面,5 小時滾動窗口、周窗口、月窗口各自的口徑也不一樣,什麼時候回滿更是要自己算。已有的做法是裝多個插件各盯一家,側邊欄被擠成三塊還得分別展開。

下面介紹的 dsh-multi-provider-usage 把這些查到一個側邊欄組件裏:一個組件,三行卡片,各自的額度條、時間條和充值餘額並排擺。

這是什麼

這是一個爲 DeepSeek Harness(DSH)寫的用量查詢插件。倉庫由 wjw1-Evan 維護,MIT 許可證,當前版本 0.8.4。它的做法是在宿主進程裏定時向各家接口取數,通過同源代理 /provider-usage/* 暴露給瀏覽器側邊欄組件,API 密鑰不進入瀏覽器。

它的參考實現是 @astervolans/dsh-opencode-go-usage,保留了同樣的雙半包結構(host + client)、同源代理、同一個側邊欄槽位和同一個 Plugins 面板配置頁,只是把支持的提供商從一家擴到三家。

有一處容易踩:npm 包名和倉庫名不一致。dsh-provider-usage 這個未加 scope 的名字在 npm 上已被另一個插件佔用,所以發佈名改成 dsh-multi-provider-usage;HTTP 路由(/provider-usage/*)和聊天命令(/provider-usage)保持簡短不變。下面安裝時用的命令都是包名,不是倉庫名。

核心功能

三個提供商,一列排開

啓用的提供商縱向堆疊,每個卡片頭部帶健康點、主百分比和充值餘額。點頭部可以摺疊該提供商的窗口、額度條和時間條,摺疊狀態記在本地,任意子集可以保持摺疊。

各家取數的窗口如下:

  • OpenCode GO — 5 小時窗口、周窗口、月窗口。接口把 5 小時字段叫做 rolling。優先走正在運行的 dsh-opencode-go 插件的當前賬戶,通過它的 opencodeGoUsage host 服務取數;取不到再退回官方 GET /v1/usage。
  • Command Code — 月度 credit 池、5 小時窗口、周窗口,來源是官方計費與用量接口(/alpha/billing/*、/alpha/usage/summary)。
  • GLM Code Plan — 國際版與中國版都支持,提供 5 小時 token 窗口、周 token 窗口、月 MCP 工具上限。國際版從 api.z.ai 取,中國版從 open.bigmodel.cn 取,路徑都是 /api/monitor/usage/quota/limit。區域設爲 auto 時會同時探測兩方,卡片上用 International / China 角標標出實際應答的一方;配置裏可以釘死某一方或填自定義 endpoint。兩個都不應答時,錯誤信息會分別說明兩個區域的探測結果,而不是隻報最後一次。

充值餘額

OpenCode GO 顯示 OpenCode Zen 預付餘額,Command Code 顯示已購 + 贈送的「Extra Credits」餘額,兩者都同時出現在側邊欄卡片和 /provider-usage 文本里。

OpenCode 的 console token 是自動發現的,來源依次是 OPENCODE_CONSOLE_TOKEN 環境變量、OpenCode CLI 的 auth 文件、本地 opencode.db;token 不會離開宿主。發現不到時,餘額位不會靜默消失,而是變成可點的 Set up 標籤,點開插件配置頁,OpenCode GO 卡片內會渲染一份分步配置指引。

餘額的變化是帶動畫的:正常輪詢間隔到達後,如果餘額和上次不同,數字會從舊值滾動到新值,同時有一枚紅綠 delta 小標籤(例如 -0.1)浮起淡出。沒有彈窗,也不跟蹤對話輪次,所以動畫最多會比實際變化晚一個輪詢間隔。

餘額低於閾值時有顏色提示:等於或低於 5 顯示琥珀色,等於或低於 1 顯示紅色。閾值按貨幣單位計,美元和人民幣方案都適用,側邊欄和配置頁的 live usage 區塊同步生效。

時間條與超限狀態

每個額度條下方有一條時間條,灰色是已流逝時間,藍色是剩餘時間。窗口右側顯示距離重置的倒計時。已經耗盡的窗口不會隱藏倒計時,而是在百分比後加一個小標籤,同時懸浮提示裏帶絕對重置時刻。

失敗隔離與重試

一個提供商出錯不會蓋住另外兩個。路由只要有一個提供商取數成功就返回 200,全部失敗才返回 502。個別接口失敗時保留該提供商已有的數字,健康點轉成琥珀色,懸浮提示裏點名失敗的調用。

錯誤行本身可點(也能用鍵盤觸發),點一下強制做一次新的上游讀取。

自更新

開機時以及按配置的間隔,宿主會同時檢查 npm registry、npmmirror 鏡像和 GitHub release feed,以三者中最新的版本爲準。本地 link:/file: 檢出在位於 main、工作區乾淨且是嚴格快進時會被快進;npm / market / tarball 安裝的副本則自行更新:從第一個能提供 tarball 的來源下載(依次是 registry → mirror → GitHub),每個文件先寫臨時文件再重命名覆蓋,避免在 pnpm 硬鏈接 store 上原地改寫。

兩種情況下,正在運行的 Host 都保留舊模塊圖,所以組件和配置頁會顯示「updated — restart DSH」。插件不會自己重啓 DSH。

配置頁

側邊欄 Plugins 面板裏本 bundle 的卡片是配置入口:開關每個提供商、編輯 credential 引用與 endpoint、選 GLM 區域、看網絡檢測狀態,保存立即生效。

x-opencode-session 修復:運行時把真實的按會話 harness session id 注入 OpenCode GO 的聊天請求,不改動 DSH 本體。

界面語言走 DSH 的 locale 服務,支持中英文。

插件通過聲明 dsh.bundle.patch 讓 CLI 自動併入 profile 的 bundle 層棧;widget 和 client bundle 屬於 profile 的 client-modules 圖,因此裝完需要重啓一次 DSH——運行中的 host 不會爲剛 link 的包重建 window.__DSH_BOOT__ manifest。

安裝與啓用

從 npm 裝,desktop profile:

dsh plugin --profile desktop add dsh-multi-provider-usage

web profile 則用:

dsh plugin --profile web add dsh-multi-provider-usage

開發時從本地檢出裝:

dsh plugin --profile desktop add /path/to/dsh-provider-usage

裝完重啓一次 DSH。若本地 link: 依賴讓 pnpm 報 peer-dependency 警告(@deepseek-ai/schemastery、@deepseek-ai/dsh),屬於預期:linked 檢出在開發態從自己的 node_modules 解析 schemastery,正式 npm 安裝則由 DSH 運行時提供 peer。

package.json 裏聲明瞭 engines.node >= 18,peer 依賴是 @deepseek-ai/dsh >= 0.1.7-rc.1 與 @deepseek-ai/schemastery ^3.18.4;在寫本文時(2026-11-07),npm 上最新發布的是 0.8.4。

配置憑據

所有取值都走 DSH 的 credentials 域解析(進程環境變量、$DSH_HOME/.credentials.yaml、.env 三層),設置路由不會回傳,也不會進瀏覽器。例如 OpenCode GO 的默認 ref 是 OPENCODE_GO_API_KEY;其餘提供商的默認 ref 和解析優先級以倉庫 README 的 Credentials 表爲準。憑據缺失時對應卡片會顯示錯誤行,點該行可重新讀取,配置頁裏編輯 ref 保存後會以 refresh=1 重新讀一次,改用的新憑據立刻能看到數字。

配置頁的每個提供商卡片內嵌一個 live usage 區塊:額度窗口、百分比、到重置的剩餘時間、充值餘額,與側邊欄渲染的是同一個 canonical snapshot。頁面打開期間頁面會跟隨 widget 更新(標籤可見時每 30 秒輪詢一次,帶 Updated HH:MM 戳);Refresh usage 按鈕強制重新讀取。GLM 卡片還帶一行 referral link(Z.ai 的 Invite Friends, Get Credits),可點可複製;該 URL 是 bundle 常量,不過設置路由,保存配置也覆蓋不了它。

典型用法

裝完重啓後,側邊欄直接出現三行卡片,按正常間隔自行刷新。需要看文本版或把額度貼給別人時,在對話裏發:

/provider-usage

會打印所有已啓用提供商的數字。

配置入口從兩個地方進都可以:widget 頭部的 Settings 按鈕會跳到側邊欄 Plugins 面板裏本 bundle 的配置頁;也可以直接在 Plugins 面板點開這個 bundle。在其中編輯 credential ref 或 endpoint,保存即可生效。

適用場景與注意

適合同時使用多家模型開放平臺、希望留在 DSH 裏就能看到剩餘額度和回滿時間的人,尤其是不想爲每家各裝一個插件的。也適合把額度信息當作排查依據的場景:某家被限流時,健康點變琥珀、錯誤行點名失敗調用,其餘兩家仍然正常顯示。

幾點注意:

  1. 插件運行在當前 dsh 進程的權限內,讀的是該進程能訪問的環境變量、憑據文件和網絡出口。安裝前應自行檢查源碼和許可證(MIT)再決定是否引入。
  2. 截至 2026-11-07,GitHub 倉庫 star 數爲 0,發佈 npm 包的賬號是 fsy_008,倉庫 owner 是 wjw1-Evan,兩者不是同一個用戶名。倉庫 README 提到該插件是參考 @astervolans/dsh-opencode-go-usage 的實現擴展而來。
  3. 本插件依賴 dsh-opencode-go 這個插件做 OpenCode GO 的賬戶發現,但該依賴只是「優先使用」,缺失時會退回官方 GET /v1/usage,兩者不同時需要注意。npm 包名和倉庫名不同,命令裏要用 dsh-multi-provider-usage。
  4. 自更新檢查的是 npm 和 GitHub,配置頁裏可以編輯 endpoint,但官方的取數路徑仍是資料裏列出的那些;如果平臺側改動接口路徑,需要看插件更新。

社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,不要把 SkillHub 當作官方應用商店。

結尾

這個插件解決的事情不復雜:把分散在三套控制台的額度信息收進 DSH 側邊欄,配上時間條、餘額動畫、失敗隔離和自更新,少裝一個插件,少開幾個頁面。目錄頁在 https://www.skillhub.cn/plugins/wjw1-Evan/dsh-provider-usage ,源碼在 https://github.com/wjw1-Evan/dsh-provider-usage 。

羽毛球分组比赛记分
小程序二维码

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

小夜