前言¶
用 DSH 做智能體開發和日常對話時,往往不止一個 DeepSeek 官方賬號,還可能接了 new-api 類的中轉站。DSH 本身不展示 API 用量:想確認餘額、今天花了多少、當前是高峯還是空閒時段,只能逐個打開各站點後臺,切賬號、翻賬單。側欄雖然常駐,卻缺一塊直觀的用量指示。
dsh-usage-panel 處理的就是這件事:在 DSH 左側邊欄底部嵌入一塊麪板,輪播顯示官方賬號(或手填 key)與各中轉站的餘額、今日消耗,官方站點額外標註當前處於高峯還是空閒時段。插件由 InkiChang 維護,屬於客戶端分類。
這是什麼¶
dsh-usage-panel 是 DeepSeek Harness 的一個客戶端插件。它不改 DSH 本身,而是在側欄底部追加一塊常駐面板;面板位於「記憶」這類底部入口之下、賬號行(頭像與用戶名)之上,採用嵌入排版而非浮層覆蓋。
它解決三類信息查詢:官方賬號餘額、new-api 中轉站餘額與今日/本月消耗、以及當前計價時段(官方高峯爲空閒的 2 倍,面板用「峯 / 閒」標記)。
核心功能¶
| 能力 | 說明 |
|---|---|
| 側欄常駐塊 | 嵌入側欄底部,位於底部入口之下、賬號行之上,寬度與左縮進同相鄰入口一致 |
| 多站點輪播 | 官方賬號、多個官方 key、多箇中轉站可同時存在,按間隔輪播 |
| 不遮擋其它入口 | 面板佔據側欄內的實際位置;其它插件新增底部入口時向上排布,兩者不重疊 |
| 餘額 + 今日消耗 | 每個站點兩行數字,未配置或出錯時給出原因與入口 |
| 峯 / 閒字塊 | 僅官方站點顯示,顏色隨主題自適應 |
| 懸停浮層 | 餘額與今日消耗;中轉站另有本月已用、本月起算日,官方另有高峯/空閒分賬 |
| 手動刷新 | 點擊面板上的時間即可立即刷新 |
| 設置浮層 | 增刪站點、測試連接、顯示開關、刷新間隔,全部在面板內完成 |
| 只存本機 | 令牌與 key 落在 ~/.dsh/usage-panel/config.json,不外發 |
核心的實現方式是:插件不註冊到 DSH 的插件入口表,因此不與「記憶」「導入會話」等入口競爭位置;它定位側欄底部的賬號行,在該行之前插入一個透明佔位元素,佔位高度等於面板自身高度,宿主佈局會把佔位下方內容下移,形成面板空間,面板繪製於佔位區域。宿主重繪側欄時佔位可能被清除,插件每 900 毫秒檢查一次並在缺失時補回。
這帶來三個直接後果:
- 其它插件在底部新增入口時,面板位置不隨之移動,不會重疊。
- 窗口尺寸、主題切換、站點輪播均不影響停靠位置,面板始終位於賬號行上方。
- 側欄底部高度增加約 56 像素(等於面板高度),會話列表可見行數相應減少。
安裝與啓用¶
插件以本地目錄作爲 bundle 包安裝,而不是用包名拉取。先把本倉庫目錄下載到本機,然後在 DSH 會話裏讓插件管理器安裝:
# 在 DSH 會話裏讓插件管理器安裝本地目錄(換成你的絕對路徑)
plugin_manager action=install_bundle target="C:\path\to\dsh-usage-panel"
安裝或卸載插件後,需完整退出並重啓一次 DSH,否則側欄不會顯示該面板。原因是 DSH 在進程啓動時讀取插件清單並註冊後端入口與前端資源,運行中的進程不會因重裝而重建這份清單,僅刷新頁面(Ctrl+R)同樣無法加載新安裝的代碼,實測表現爲前端資源返回 404、側欄對應位置爲空。
生效規則需要記清:
- 插件已安裝且只修改
client.js(界面部分)時,刷新頁面(Ctrl+R)即可生效。 - 修改
index.js(後端),或重裝、卸載插件後,必須完整退出並重啓 DSH。
典型用法¶
安裝並重啓後,按下面順序配置即可開始讀取用量。
- 左欄底部出現用量面板後,點擊面板上的「設置」(尚未配置時顯示「去設置」),或從
設置 → Usage 面板進入。 - 配置官方站點:默認「數據來源」爲 DSH 已登錄賬號,處於登錄狀態即顯示餘額,無需填 key。如需單獨跟蹤某個 key,將來源改爲「手填 API key」並填入 key。
- 添加中轉站:填寫站點地址(例如
https://<中轉站域名>)與訪問令牌。部分站點還需填寫數字用戶 ID(響應頭New-Api-User),填寫後可正常取數。 - 點擊「測試連接」確認可讀取餘額後保存。
數據口徑上,官方站點餘額取自 GET /user/balance,今日消耗則由本機採樣推算:官方只提供餘額接口、沒有用量明細,插件記錄餘額隨時間的變化,用「當日首個樣本餘額 − 當前餘額」估算今日消耗,並按採樣時刻判斷該筆消耗落在高峯還是空閒時段。因此 DSH 未運行的時段不計入統計,插件首次使用的當天從啓動時刻起算。
中轉站按 new-api 的接口形態讀取:餘額來自 GET /api/user/self 的 data.quota 除以 /api/status 提供的 quota_per_unit;今日/本月已用按 /api/data/self、/api/log/self/stat、/api/log/self 三種接口的優先級嘗試,取到即止。「本月起算」顯示自然月首日。
配置項集中在設置浮層:
| 配置 | 位置 | 說明 |
|---|---|---|
| 刷新間隔 | 設置浮層 | 默認 300 秒,最小 60 秒 |
| 顯示哪些站點 | 設置浮層 | 關閉後該站點不參與輪播 |
| 數據來源 | 官方站點卡片 | DSH 已登錄賬號 或 手填 API key |
| 用戶 ID | 中轉站卡片 | 站點要求 New-Api-User 時填寫 |
| 今天算節假日 | 設置浮層 | 強制把今天按空閒時段計價 |
配置文件爲 ~/.dsh/usage-panel/config.json(站點與令牌)與 ~/.dsh/usage-panel/samples.json(餘額採樣,保留 4 天)。
適用場景與注意¶
適合需要同時盯着官方賬號與 new-api 中轉站用量、又希望少離開 DSH 界面的場景。本着「一切皆插件」的理念,這類能力本就應由外部插件補齊。
使用前注意以下幾點:
- 插件以當前 DSH 進程權限運行,安裝前應先檢查源碼與許可證(本插件爲 MIT)。
- 手填官方 API key 是未驗證路徑:官方目前只對外提供
/user/balance,本機沒有可用的官方 key,這條分支未經實測;遇到問題時先改回「已登錄賬號」來源再排查。 - 官方今日消耗是採樣估算,精度等於刷新間隔,插件未運行期間的消費不會被記錄。
- 中轉站只按 new-api 的接口形態適配,其他面板(如 one-api 的不同分支)字段不一致時可能需要改
index.js裏的取數函數。 - 不做跨站彙總:側欄按站點輪播,浮層只顯示當前站點自己的數字,不同站點的餘額與單位不可直接相加。
- 嵌入定位通過讀取 DSH 側欄現有 DOM 結構實現,不屬於官方接口;宿主調整側欄結構後表現爲面板回退爲貼在「記憶」入口上方,其餘功能正常。
- 隱私方面,所有請求只發往設置裏填寫的站點以及
api.deepseek.com,沒有第三方統計上報;令牌只寫本機配置文件,界面上只顯示前三位與後四位。
小結¶
dsh-usage-panel 把多站點 DeepSeek 用量壓縮成側欄底部一塊常駐面板:餘額、今日消耗、峯/閒時段都能直接看到,增刪站點與測試連接在面板內完成,改動不會與其它側欄入口搶位置。對於同時使用官方賬號和 new-api 中轉站、且希望少切後臺的場景,算一個直接可用的補充。
目錄頁:https://www.skillhub.cn/plugins/InkiChang/dsh-usage-panel
GitHub:https://github.com/InkiChang/dsh-usage-panel