dxxo77/dsh-plugin-quota-balance:在 DSH 用量行最左側顯示賬戶餘額

前言

DSH 桌面版在輸入框下方有一行官方用量行:輪次、步數、採樣速度、Token 用量、緩存命中、上下文佔用,都在。唯獨賬戶裏有多少錢,界面上看不到。要確認餘額得另外打開 DeepSeek 的網頁賬戶頁,切窗口、看數字、再切回來,和當前會話的消耗對不上。

dxxo77 維護的插件 dsh-plugin-quota-balance 解決的就是這件事:把餘額放到用量行最左側,和官方那幾組數字同一行、同一字號、同一灰度,不額外佔位;點一下原地展開明細,能看到普通餘額和贈送額度分項。下面是它的功能、安裝方式和實現要點。

這是什麼

一句話定位:DSH 的 Host + Client 雙半邊插件,新增一個 HTTP 接口把 deepseekAccount 的餘額讀出來,再往客戶端輸入框的用量行裏塞一個單元格。

  • 維護者:dxxo77
  • 許可證:MIT
  • 倉庫:https://github.com/dxxo77/dsh-plugin-quota-balance
  • 目錄頁:https://www.skillhub.cn/plugins/dxxo77/dsh-plugin-quota-balance
  • 目錄頁上的分類是「客戶端」,星標 1(以目錄頁爲準)
  • README 裏提交給 awesome-dsh-plugin 的市場條目分類是 usage

前提是宿主要具備 deepseekAccount 服務,也就是需要 DSH 桌面版,並且當前已登錄 DeepSeek 賬號。只裝瀏覽器插件環境跑不了。

核心功能

從 README 的功能描述看,覆蓋這幾件事:

  1. 用量行最左側顯示當前賬戶餘額(¥),和官方數字同一行、同一字號、同一灰度。
  2. 點擊徽標原地展開明細浮層:賬戶餘額、普通餘額、贈送額度、更新時間,以及「刷新」和「去充值」。
  3. 未登錄或讀取失敗時整塊隱藏,不佔位。
  4. 徽標與浮層全部讀取宿主暴露的表面 token,不做自己的一套配色,因此自動跟隨 dsh-plugin-wallpaper-engine 的玻璃參數、明暗主題和壁紙切換;沒裝壁紙引擎時它是普通的深色浮層。

顯示規則細節:

  • 同幣種的多個錢包(普通餘額 + 贈送額度)合併求和,例如 ¥10.47;多幣種時用 · 連接。
  • 徽標爲 order: -10,排在 conversation.composer.dock 的最左側。
  • 浮層底邊對齊徽標上方 6px,直接蓋在輸入框上,窗口縮放時重新貼靠。
  • 收起方式:Esc、點擊卡片外部、再點一次徽標。
  • 字體與顏色跟隨用量行:font: inherit、12px、--dsw-alias-label-tertiary。
  • 懸停有淺色圓角底、按下更深、focus-visible 有強調色描邊;底襯用「內邊距 + 等量負外邊距」實現,懸停文字不位移。
  • 卡片掛在 document.body 上並用獨立樣式表,原因是輸入框卡片自帶裁剪與層疊上下文,放在插槽裏的懸浮層會被它蓋住。

安裝與啓用

README 給的安裝方式不是命令行一條命令,而是先拿到代碼,再在插件管理裏掛載目錄:

git clone https://github.com/dxxo77/dsh-plugin-quota-balance

然後在 DSH 的插件管理裏安裝該目錄,install_bundle 指向倉庫路徑。安裝後即時生效,輸入框下方用量行最左側出現餘額,點它展開明細。

卸載:在插件管理裏移除 dsh-plugin-quota-balance 即可。

倉庫自帶的文件分工:

文件 作用
index.js Host 半邊:註冊 GET /plugin/quota-balance/status,通過 deepseekAccount.getBalance() 讀取餘額並做 30s(失敗 5s)緩存
client.js Client 半邊:往 conversation.composer.dock 註冊一個 order: -10 的單元格,每 60s、以及窗口重新可見時刷新
cordis.patch.yml 安裝時插入 quota-balance 這一行
locale/*.json 插件在「插件」列表裏的標題與描述
icon.svg 插件圖標,由 package.json 的 dsh.client.exports 導出

package.json 裏跟安裝相關的字段:

"dsh": {
  "bundle": { "patch": "./cordis.patch.yml" },
  "client": {
    "platform": "web",
    "immediately": true,
    "inject": ["@deepseek-ai/dsh-client-ui-conversation"]
  }
}

inject 聲明瞭客戶端依賴的宿主模塊,immediately 爲 true 意味着隨客戶端一起加載。

接口與本地數據

插件內部接口:

GET /plugin/quota-balance/status
{"ok":true,"wallets":[{"currency":"CNY","balance":"5.40"},...],"normal":[...],"bonus":[...],"links":{"usageUrl":"...","topUpUrl":"..."},"fetchedAt":1793627086526}
{"ok":false,"reason":"unavailable"|"signed-out"|"failed"}

餘額只在本地迴環地址上暴露,且響應不帶 CORS 頭,網頁無法跨源讀取。這條限制可以放心:餘額不會因爲你裝了這個插件而傳到別的站點。

典型用法:改代碼後怎麼生效

  • 改 client.js:保存後頁面會熱更新,README 註明本插件實測即時生效。
  • 改 index.js:在插件管理裏把本插件禁用再啓用即可重載 Host 模塊,不必重啓應用(已實測);之後點卡片裏的「刷新」取一次新數據。

與壁紙引擎的關係

這裏的做法值得單獨說:壁紙引擎不是給插件一套「浮層樣式」,而是把宿主自己的表面 token 就地改寫成玻璃配方,--dsw-alias-bg-layer-*、--dsw-alias-bg-overlay、--dsw-alias-border-* 全部被重映射。官方那些浮層(Token 用量、會話統計)讀的就是這些 token,所以這個插件直接讀同一個宿主 token,而不是抄壁紙插件的參數:

用途 取值
面板底色 var(--dsw-alias-bg-overlay, #26272b)
毛玻璃 backdrop-filter: blur(var(--we-blur, 13px)) saturate(var(--we-saturate, 1.3))
邊框 --dsw-alias-border-l2
文字 --dsw-alias-label-primary/secondary/tertiary
強調色(去充值) var(--we-accent, var(--dsw-alias-brand-primary, #7db3ff))

README 裏記了兩個坑值:--dsw-alias-bg-base 在壁紙引擎下是 transparent,--dsw-alias-border-l1 的 alpha 是 0,拿這兩個去鋪底不會得到預期效果;--we-panel-color 這類實色會變成不透明板子。

另有一條值得抄的思路:樣式注入到 <style id="quota-balance-css">,熱更新時舊節點還在頁面上,injectPanelCss() 必須覆蓋 textContent,不能發現節點就 return;樣式表原先只在浮層首次展開時注入,導致刷新頁面後徽標沒有樣式,現在改爲在 ctx.slots.inject(...) 裏先調一次 injectPanelCss()。

適用場景與注意

適合這幾類人:

  • 常駐桌面版跑會話、需要邊看邊算消耗的開發者;
  • 賬戶裏有贈送額度,想看普通餘額和贈送額度分項的人;
  • 已經在用 dsh-plugin-wallpaper-engine,希望浮層樣式自動跟上主題和壁紙的人。

注意幾點:

  • 插件以當前 DSH 進程的權限運行,能讀到宿主已登錄賬戶的餘額。裝之前建議先打開 index.js 和 client.js 看清楚,認同之後再啓用。許可證是 MIT,作者是 dxxo77。
  • 餘額數據只在本地迴環暴露、無 CORS 頭,本地腳本或瀏覽器控制台理論上可讀,頁面外無法跨源取。如果在意,裝之前要確認這個邊界符合你的預期。
  • 依賴兩個宿主條件:DSH 桌面版(Host 有 deepseekAccount 服務)和已登錄 DeepSeek 賬號。只裝客戶端半邊、不滿足這兩個條件時插件不會顯示任何東西(未登錄或讀取失敗整體隱藏,不報錯也不佔位)。
  • 這個插件不是官方出品,README 中列出的市場條目也投放在社區維護的 awesome-dsh-plugin 倉庫,站點與市場會自動讀入,和 DeepSeek / 幻方沒有官方從屬關係。

最後回顧:它做的事很窄,就是把餘額從網頁賬戶頁挪到用量行裏,順帶複用宿主表面 token 讓浮層跟着壁紙引擎走。如果你已經在桌面版上長期使用,這是一條低成本的信息補全。

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

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

小夜