前言¶
用 DSH 的 Web 界面跑任務時,比較常見的困惑是不知道自己還剩多少額度、這個窗口打開以來花了多少錢。想確認餘額,通常要切到「設置 → 賬戶」;想看燒錢速度,基本只能靠事後算用量。dsh-usage-footer 針對這個場景做了一條常駐底部狀態條,把餘額、贈送額度、本次打開消耗、消耗速度和最近刷新時間一次擺出來,不需要改 DSH 本體。
插件由 Roccn 維護,分類爲客戶端,簡介是「DeepSeek balance and burn-rate status strip for the DeepSeek Harness Web UI」。它是第三方社區插件,與 DeepSeek / 幻方沒有官方從屬關係,使用前建議先檢查源碼與許可證。下面按 README 裏寫明的能力與口徑介紹。
狀態條顯示的是什麼¶
狀態條掛在 shell.bottom 槽位,顯示順序固定爲:
↻ · 餘額 · 贈送 · 本次打開消耗 · 消耗速度 · 最近刷新時間
各項含義如下。
- 餘額:DeepSeek 賬戶剩餘額度與幣種,來自已有的
account/getBalanceRemote(與「設置 → 賬戶」同一數據源)。賬戶可能有多個幣種錢包,插件按幣種分別彙總後取總額最大的那個顯示,符號隨幣種(CNY 用¥、USD 用$)。 - 贈送:贈送錢包餘額合計,大於 0 時顯示。
- 本次打開消耗:打開本窗口時第一次讀到的(充值餘額 + 贈送餘額)減去當前兩者之和,充值部分顯示爲
+。 - 消耗速度:所有正在運行會話的 token 增量折算成人民幣,單位元/秒,取近 2 分鐘平均。
- ↻:手動刷新按鈕,點擊後立刻重讀餘額並重新採樣會話,按鈕短暫變淡表示進行中;支持 Enter / 空格觸發。
兩個容易踩的坑,README 裏已經寫清楚:一是多幣種錢包若不按幣種彙總取最大,一個排在前面、餘額爲 0 的 CNY 錢包會把真實額度蓋住,整條永遠顯示 0;二是 DeepSeek 抵扣先走贈送額度,如果只看充值餘額,本次打開消耗會一直是 0,插件第一版就踩過這個坑。
消耗速度怎麼算¶
速率不是接口直接返回的,插件按下面四步計算。
- 每 5 秒調
session/list,只取running === true的會話,累加整段日誌的 token 用量(uncachedInputTokens/cacheReadTokens/cacheWriteTokens/outputTokens)。 - 與 2 分鐘窗口內最早一次採樣求差,得到 Δtoken / Δt。
- 按 deepseek-flash 單價折算(元 / 百萬 tokens),價格來源是 DeepSeek 官方定價頁:
| 時段 | 緩存命中輸入 | 緩存未命中輸入 | 輸出 |
|---|---|---|---|
| 高峯 | 0.04 | 2 | 8 |
| 空閒 | 0.02 | 1 | 4 |
高峯定義爲北京時間週一至週五 9:00–12:00、14:00–18:00,其餘爲空閒。
4. 賬戶錢包不是 CNY 時(例如 USD),用 client.js 頂部的 CNY_PER_CURRENCY 常量折算成錢包幣種,使「消耗速度」與「餘額」同爲 $ 或同爲 ¥。當前常量爲 USD = 6.67,是 2026-11-04 查自 wise.com 的中間市場匯率;匯率漂移後改這個常量即可。
「消耗速度」的懸浮提示可以看到更多明細:首行是當前時段價格,寫成 每百萬token(命中:X元 未命中:X元 輸出:X元);非 CNY 賬戶多一行折算說明;其後按會話拆分正在運行的會話數、每個會話各自的元/秒與 tok/s。沒有會話在跑時,寫明「當前沒有正在運行的會話」。
已知口徑限制:cacheWriteTokens 按「未命中」單價計費(平臺不單列緩存寫入價);中國法定節假日未建模,按高峯計價;token 用量按步上報,速率呈臺階式,用 2 分鐘窗口平滑;無運行會話時顯示 ¥0.00。
金額顯示與刷新機制¶
金額顯示對齊 Platform Web 的規則:兩位小數、千分位分組、正數按分截斷(1.6999 顯示 1.69,不是四捨五入的 1.70),負數四捨五入且最小 0.01,正數不足一分顯示 <0.01。這樣做的目的是和「設置 → 賬戶」裏的數字逐位一致。
刷新方面:餘額沒有推送接口,「實時」等於輪詢,不是逐筆流水。餘額每 30 秒輪詢一次,窗口獲得焦點、頁面可見性變化、hashchange 時立即刷新;消耗速度每 5 秒採樣一次。
「本次打開消耗」的基線存在 sessionStorage 的 dsh-usage-footer:<path+search+hash> 鍵下(當前是 dsh-usage-footer:/),格式爲 v2,同時記錄充值餘額與贈送餘額。這一點帶來明確的邊界:關閉應用再打開,計數從 0 重新開始;頁面內 Ctrl+R 刷新則保留當前計數。sessionStorage 不可用時退回內存基線。
安裝¶
官方推薦的方式是在 Harness 裏讓 agent 用 plugin_manager 的 install_bundle,target 填倉庫地址。裝完按 Ctrl+R 刷新頁面即可,不必重啓應用。
target: https://github.com/Roccn/dsh-usage-footer.git
安裝狀態落在下面兩處:插件以 junction 形式裝進 ~/.dsh/profiles/desktop/node_modules/@local/dsh-usage-footer,並在 ~/.dsh/profiles/desktop/cordis.patch.yml 末尾追加:
- insert:
- id: usage-footer
name: "@local/dsh-usage-footer"
卸載時,刪掉那段 insert,再刪掉 node_modules/@local/dsh-usage-footer 鏈接即可。
典型用法¶
插件沒有額外配置項,裝好狀態條直接出現在 Web 窗口底部。日常使用基本是看一眼窗口底部:餘額 是當前賬戶可用額度,本次打開消耗 是這輪窗口打開以來的淨支出,消耗速度 是當前跑着會話的燒錢速率;需要立刻重算時點 ↻。
當多個會話同時運行、想確認哪個會話在空轉時,可以把鼠標停在 消耗速度 上看懸浮提示,那裏按會話拆分了各自的元/秒與 tok/s。
適用場景與注意¶
適合在 DSH Web 界面裏跑長任務、想隨時掌握額度與消耗的用戶,尤其是不方便反覆切到「設置 → 賬戶」的場景。要留意的幾點:
- 插件以當前 dsh 進程權限運行。它調用的是賬戶 Remote,安裝前應檢查源碼與許可證,確認來自可信來源。
CLIENT_VERSION硬編碼爲0.2.1-rc.5,僅用於賬戶接口的客戶端標識頭;DSH 升級後如接口校驗變嚴,需要同步改這個常量。- 客戶端
inject必須同時聲明remote與remote.account/remote.session。只聲明後者時訪問ctx.remote會拋cannot get property "remote" without inject,而桌面端 web boot 審計會把它當成致命錯誤,導致整個窗口打不開。 - 賬戶錢包不是 CNY 時,折算匯率寫在源碼常量裏,不會自動更新,需自行維護。
小結¶
dsh-usage-footer 的價值在於把餘額、贈送額度、本次打開消耗和消耗速度收進一條狀態條,數據源沿用 DSH 已有的賬戶與 session 接口,不需要改本體,也不需要額外配置。想隨時掌握賬戶餘量與燒錢速度的用戶值得一試。
- 目錄頁:https://www.skillhub.cn/plugins/Roccn/dsh-usage-footer
- GitHub:https://github.com/Roccn/dsh-usage-footer