前言¶
在 DeepSeek Harness(DSH)裏開發智能體時,經常需要估算單次調用的成本、監控會話消耗、在長時間跑任務時檢查餘額是否充足。當前平臺只提供「設置 → 賬號」裏的餘額展示,切換窗口或頻繁查看都會打斷工作流。dsh-balance-badge 把餘額膠囊直接掛在對話輸入框正下方,與上下文用量指示器同一排,點擊即可查看消耗曲線、本會話累計消耗和一鍵充值入口。
插件定位¶
- 名稱:dsh-balance-badge
- 維護者:huachabobo
- 分類:客戶端插件
- 功能:在 DSH 輸入框下方顯示 DeepSeek 賬戶餘額、消耗曲線、本會話消耗,並提供一鍵充值入口
核心功能¶
餘額膠囊¶
膠囊默認掛在 Composer 卡片正下方(conversation.composer.dock),新建會話的 Hero 頁則放在工作區行右側(conversation.hero.options)。顯示內容取決於當前狀態:
- 命中餘額時顯示「餘額 ¥110.00」
- 贈金大於 0 時追加「+贈金 ¥10.00」(平臺常駐一個 0.00 的贈金錢包,不會顯示爲 0)
- 膠囊左側顯示當前模型輸出價:「谷 ¥4/M」或「峯 ¥8/M」,顏色隨時段切換(谷=綠、峯=琥珀),懸停可查看模型名與時段
膠囊支持懸停查看明細:充值餘額、贈金餘額、本會話消耗、更新時間、最近一次失敗原因。
消耗曲線浮窗¶
點擊膠囊會彈出一個向上展開的 292px 浮窗,與「任務列表」等按鈕同一種菜單材質。浮窗內容包括:
- 頭部:所選區間的淨變化(
−¥3.50表示花掉,+¥3.50表示增加) - 充值餘額、贈金餘額、合計(贈金大於 0 時才顯示合計)
- 本會話消耗與輪數
- 四檔時間範圍切換:1小時 / 6小時 / 24小時 / 3天
- 折線 + 面積圖,藍點爲最近一次採樣,琥珀色小圓點標出區間內最大的一次單次消耗
- 統計行:區間消耗 / 最大單次 / 最高 / 最低
- 底部:最近更新時間與採樣點數
- 底部操作按鈕:充值、立即刷新、清空記錄
關閉方式:點擊浮窗外部、再點一次膠囊或按 Esc。
後臺刷新與狀態¶
- 後臺每 60 秒在可見頁面靜默刷新一次餘額
- 切回窗口或恢復標籤頁時,若數據超過 20 秒會自動補讀
- 輪次結束後(模型剛花完錢)自動補讀一次
- 狀態語義:同步中 / 未登錄 / 讀取失敗;餘額低於 1 時膠囊轉爲琥珀色警示
本會話消耗估算¶
平臺不提供「某個會話花了多少錢」的接口,插件通過餘額落差歸因:
- 一輪開始時記錄當時的餘額快照,同時強制讀一次餘額
- 一輪結束後,若基線與最新余額的差額超過 0.0001 元,則累加到該
sessionId,輪數 +1 - 換會話時各會話獨立記錄,互不影響
- 數據存儲在
localStorage["dsh-balance-badge:sessions:v1"],最多保留 200 個會話(按最近更新丟棄)
這是估算而非精確賬單:同一時刻若有其他窗口也在消耗,差額會被算進當前會話;刷新失敗的那一輪不計。要查看精確數字仍以「設置 → 賬號」的平臺賬單爲準。點擊「清空記錄」可同時清空曲線與會話消耗記錄。
模型價格(峯谷)¶
膠囊左側的「谷 ¥4/M」或「峯 ¥8/M」是當前時段的輸出價格(元 / 百萬 tokens),懸停浮窗底部可查看完整價目與時段:
- 高峯時段:北京時間週一至週五 9:00–12:00、14:00–18:00
- 空閒時段:其餘時間(包括週末與法定節假日),空閒價 = 高峯價的一半
- 當前時段那一列會加粗
- 時段判斷按北京時間,與機器時區無關
價格表定義在 MODEL_PRICING 常量裏(deepseek-flash 與 deepseek-v4-pro 各含高峯/空閒三檔),PRICE_MODEL 決定膠囊按哪個模型報價,默認爲 deepseek-flash(桌面 profile 的默認模型)。若需調整,可修改 client.js 頂部的常量區。
曲線數據採樣¶
Platform 沒有餘額歷史接口,採樣由插件自己完成:
| 規則 | 值 |
|---|---|
| 採樣時機 | 每次成功讀到餘額(含 60 秒輪詢、輪次結束、打開浮窗、點「立即刷新」) |
| 記點條件 | 金額變化 ≥ 0.0001,或距上一個點已超過 10 分鐘(心跳) |
| 採樣值 | 選中幣種下「充值 + 贈金」的合計 |
| 保留 | 3 天,最多 900 點(超出丟最舊的) |
| 存儲 | localStorage["dsh-balance-badge:samples:v1"] |
| 幣種切換 | 檢測到幣種變化時清空重來 |
按「變化 + 心跳」記點,一天正常使用大約產生幾十到一百多個點。剛裝上時曲線爲空,用幾輪對話後就會長出來。同一瀏覽器裏換賬號會共用同一份歷史,不想要則點「清空記錄」。
安裝與啓用¶
通過插件市場安裝¶
目錄已收錄進 DSH 1024Store(提交 PR #673 通過自動化靜態檢查後自動合併),可通過以下命令安裝:
dsh plugin --profile <你的 profile> add github:huachabobo/dsh-balance-badge
若插件尚未發佈到 npm,市場裏能瀏覽和查看倉庫與截圖,但不會顯示「可安裝」按鈕。
本地克隆安裝¶
若想本地開發或調試,可按以下步驟操作:
# 1) 克隆到 profile 的插件目錄
git clone https://github.com/huachabobo/dsh-balance-badge `
"$env:USERPROFILE\.dsh-beta\plugins\dsh-balance-badge"
# 2) 讓 profile 聲明依賴與組合包
# ~/.dsh-beta/profiles/desktop/package.json:
# dependencies: "dsh-balance-badge": "link:../../plugins/dsh-balance-badge"
# dsh.profile.bundles: "dsh-balance-badge" ← 追加到數組末尾
# 3) 在 profile 目錄安裝(只解析本地目錄,不訪問 registry)
cd "$env:USERPROFILE\.dsh-beta\profiles\desktop"
pnpm install
link: 會把 node_modules/dsh-balance-badge 指回源目錄(Windows 上是 junction),修改 client.js 後無需重裝;若想固定一份副本,可改用 file:。使用 ~/.dsh 而不是 ~/.dsh-beta 時,請相應調整路徑。
安裝後生效¶
- 保存 profile 配置:啓用 HMR 的 profile(隨產品交付的 desktop / web 模板默認開啓)會在
package.json、cordis.patch.yml變化時重新組合,插件行即時掛載。 - 重載客戶端 bundle:Host 在組合時會快照每個
client.js,修改插件代碼後,只刷新頁面不一定能拿到新文件。
- 有把握的一步:在「側邊欄 → 插件」中把dsh-balance-badge關再開(會重新組合並替換 bundle),然後刷新頁面。
- 或直接重啓 DSH。 - 驗證掛載:在 Host 日誌中搜索
[dsh-balance-badge] badge mounted; client bundle served from ./client,出現該行即表示插件已掛載。
可調參數¶
所有可調參數集中在 client.js 頂部的 constants 區:
| 常量 | 默認值 | 含義 |
|---|---|---|
POLL_MS |
60000 |
可見狀態下的後臺輪詢間隔 |
FRESH_MS |
20000 |
焦點/掛載時判定「數據還新鮮」的窗口 |
LOW_BALANCE |
1 |
低於該總額時膠囊轉爲琥珀色 |
CLIENT_VERSION |
0.2.1-rc.2 |
上報給 Platform 的客戶端版本(跟隨 DSH 版本) |
SAMPLES_KEY |
dsh-balance-badge:samples:v1 |
曲線歷史的 localStorage 鍵 |
HEARTBEAT_MS |
600000(10 分鐘) |
數值沒變也記一個點的時間間隔 |
RETENTION_MS |
259200000(3 天) |
採樣保留時長 |
MAX_SAMPLES |
900 |
採樣點數上限 |
SESSIONS_KEY |
dsh-balance-badge:sessions:v1 |
每會話消耗的 localStorage 鍵 |
MAX_SESSIONS |
200 |
會話消耗記錄上限 |
RANGE_KEY |
dsh-balance-badge:range:v1 |
記住上次選的時間範圍 |
MODEL_PRICING |
deepseek-flash / deepseek-v4-pro |
價格表與默認報價模型 |
適用場景與注意¶
適合需要實時監控 DeepSeek 賬戶餘額、估算單次調用成本、追蹤長時間任務消耗的開發者。
插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證(本項目使用 MIT 許可證)。
結語¶
dsh-balance-badge 把餘額與消耗信息下沉到工作流中,減少在設置頁和聊天窗口之間來回切換的次數。配合曲線圖與時間範圍切換,可以更直觀地判斷消耗趨勢。更多細節可在 GitHub 倉庫查看,目錄頁提供快速安裝入口。