vacum972/dsh-usage-billing:輸入框下的會話級用量與計費膠囊

前言

DSH 的 Web 界面在輸入框(Composer)下方本來只有輪次、上下文長度這類指標,看不到這一輪會話花了多少錢、賬號餘額還剩多少。平臺側的「用量信息」統計的是近 30 天、全部會話和 API Key 的彙總,用來覈對扣費還行,用來回答「我現在這次對話用了多少錢」並不直接。

下面介紹 vacum972 維護的 @vacum972/dsh-usage-billing。它把這個缺口補上了:在輸入框下方常駐一枚膠囊,顯示本會話的消費量、剩餘餘額、API 請求次數、Tokens 與當前時段的官方價目。

這是什麼

vacum972/dsh-usage-billing 是一個客戶端分類的 DSH Web 插件,維護者 vacum972,許可證 MIT,當前版本 0.1.3,要求 DSH >=0.2.1-rc.5 <0.3.0-0。定位一句話:在會話過程中實時呈現本會話的用量與成本,而不是事後翻平臺賬單。

核心功能

下面按倉庫 README 裏已寫明的能力依次說明。

  1. 本會話用量膠囊:膠囊常駐在輸入框下方、宿主自帶輪次/上下文指標右側,點開是詳情彈窗,展示消費金額、剩餘金額、API 請求次數、Tokens 總計、平均成本、高峯/空閒時段消費拆分,以及當前時段生效的官方價目。
  2. 按官方峯谷價目逐次請求計價:每次模型請求按它發生時刻的時段(高峯/空閒)計價,切換時段不重算曆史請求。高峯價與空閒價遵循 DeepSeek 官方規則:空閒價是高峯價的一半。
  3. 價目自動校準:Host 定期拉取 DeepSeek 官方價目文檔並解析模型價格;抓取失敗時回退到上次成功價目,並在彈窗提示,隨後每 2 分鐘自動重試,成功即恢復。
  4. 法定節假日日曆:自動獲取中國法定節假日,使高峯/空閒判斷與官方一致——週末和法定節假日全天爲空閒。
  5. 剩餘金額:讀取當前登錄賬號的充值餘額與贈送餘額之和,打開彈窗即刷新、之後每 60 秒更新,也可手動重試。
  6. 不干擾輸入:膠囊與彈窗樣式對齊宿主 composer 的統計控件,佈局緊湊,不遮擋輸入框。

時段與價目

尖峯時段按 DeepSeek 官方價目頁的規則定義:北京時間週一至週五(不含中國法定節假日)的 09:00–12:00、14:00–18:00 爲高峯;其餘時間(含週末、法定節假日全天)爲空閒,空閒價等於高峯價的一半。

出廠價目(README 記錄爲 2026-11-04 抓取,單位是元 / 百萬 tokens):

模型 輸入(緩存命中) 輸入(緩存未命中) 輸出
deepseek-flash 0.04 高峯 / 0.02 空閒 2 高峯 / 1 空閒 8 高峯 / 4 空閒
deepseek-v4-pro 0.30 高峯 / 0.15 空閒 9.0 高峯 / 4.5 空閒 27.0 高峯 / 13.5 空閒

正常情況下每 30 分鐘拉取一次官方價目 Markdown 與節假日日曆,失敗後每 2 分鐘重試,成功即恢復,提示條懸停可看到失敗時間與原因。

安裝與啓用

需要 DSH >=0.2.1-rc.5。方式 A 是 npm 一鍵安裝(推薦),用 web profile:

dsh plugin --profile web add @vacum972/dsh-usage-billing

安裝後重啓 dsh web(或刷新頁面加載客戶端包),輸入框下方就會出現膠囊。

方式 B 是從 GitHub 源碼安裝,同樣走 web profile:

dsh plugin --profile web add github:vacum972/dsh-usage-billing

Desktop 需要注意:desktop profile 由 Electron 應用獨佔,普通 npm 版 dsh CLI 會拒絕管理它。在 Desktop 上要麼通過 DSH 內的插件中心安裝 @vacum972/dsh-usage-billing,要麼用 Desktop 自帶的 CLI 以本地路徑安裝,命令形如:

dsh plugin --profile desktop add link:<本倉庫路徑>

配置

配置掛在插件行的 config 上,出廠值見 cordis.patch.yml。在 profile 的 cordis.patch.yml 追加同 id 的行即可覆蓋;補丁會整體替換 config,所以想保留的鍵都要寫全。完整出廠配置如下:

- id: usage-billing
  name: '@vacum972/dsh-usage-billing'
  config:
    currency: CNY
    timeZone: Asia/Shanghai
    peakWindows: ['09:00-12:00', '14:00-18:00']
    peakWeekdays: [1, 2, 3, 4, 5]
    holidays: []                 # 額外節假日;留空則只用自動抓取的日曆
    autoRefresh: true
    refreshMinutes: 30
    priceUrl: 'https://api-docs.deepseek.com/zh-cn/quick_start/pricing.md'
    holidayUrl: 'https://timor.tech/api/holiday/year/{year}'
    default:                     # 未列出的模型使用這一行
      peak: { cacheRead: 0.04, cacheMiss: 2, cacheWrite: 0, output: 8 }
      idle: { cacheRead: 0.02, cacheMiss: 1, cacheWrite: 0, output: 4 }
    models:
      deepseek-flash:
        peak: { cacheRead: 0.04, cacheMiss: 2, cacheWrite: 0, output: 8 }
        idle: { cacheRead: 0.02, cacheMiss: 1, cacheWrite: 0, output: 4 }
      deepseek-v4-pro:
        peak: { cacheRead: 0.3, cacheMiss: 9.0, cacheWrite: 0, output: 27.0 }
        idle: { cacheRead: 0.15, cacheMiss: 4.5, cacheWrite: 0, output: 13.5 }

單價單位是 currency / 百萬 tokens。DeepSeek 不單獨計緩存寫入費,所以 cacheWrite: 0。autoRefresh: false 可以完全關閉聯網刷新,只使用配置裏的價目和 holidays。切換其他時區或供應商時,改 timeZone、peakWindows、priceUrl、holidayUrl 即可。

計費口徑與差異說明

請求次數方面:每次模型調用結束(assistant/message)或失敗/被中止(assistant/attempt)都計一次。token 只採用供應商在會話日誌裏上報的 usage,同一嘗試的最終樣本會替換流式樣本,llm/retry-started 之後的嘗試重新計一次,與 DSH 內置 tokenUsage 投影口徑一致。

成本方面:每次嘗試的 token 先用該次請求日誌時間對應的時段價目計價,再累加。單次成本按「輸入×未命中單價+緩存讀×命中單價+緩存寫×寫入單價+輸出×輸出單價」再除以 1,000,000 計算;同一嘗試的樣本被替換時按新樣本重算該次成本。

這些數值是估算值,不包含 Search/Fetch 等獨立 API 的按次費用、供應商調價窗口差、優惠等,實際扣費以 DeepSeek 賬單爲準。

插件與平臺「用量信息」數值不同是預期行爲:插件統計本會話,平臺統計近 30 天、全部會話/API Key。README 給出了一個開發環境同刻對照:

口徑 API 請求次數 Tokens 消費金額
插件(本會話) 299 78,677,354 ¥3.22(估算)
平臺(近 30 天) 488 103,214,039 ¥6.21(賬單)

同一時刻把本機所有會話投影裏的 tokenUsage 相加得到 102,263,277,與平臺 103,214,039 相差約 0.9%(平臺數據有約 5 分鐘延遲),說明 token 計數與平臺同源,差異來自統計範圍;請求次數與金額還包含其它會話/其它 Key、重試計次差異,以及插件不統計的 Search/Fetch 按次費用。彈窗底部提供了「查看平臺用量 ↗」鏈接。

隱私與外部服務

插件不保存、不讀取、不上傳任何 API Key;剩餘金額通過 DSH 已登錄賬號的賬戶服務讀取,token 只在 Host 內部使用。運行時只訪問兩個公開地址:DeepSeek 官方價目文檔與 timor.tech 節假日日曆,可用 autoRefresh: false 完全關閉。沒有遙測和第三方上報,會話用量全部在本地按會話日誌計算。

適用場景與注意

適合需要在會話過程中即時看到本會話消耗、或按高峯/空閒時段覈對成本的 DSH Web / Desktop 使用者。

有幾點要留意。第一,插件代碼以當前 dsh 進程的權限運行,安裝前應檢查源碼與 MIT 許可證。第二,它使用了 DSH 客戶端會話投影與賬戶 Remote 接口,屬於較內部接口,DSH 升級後如出現兼容問題,可在倉庫提 Issue。第三,它不統計 Search/Fetch 等獨立 API 的按次費用,也不代表官方賬單口徑。第四,官方價目和節假日緩存會定期更新,離線或網絡失敗時會回退到上次成功數據。

小結

vacum972/dsh-usage-billing 把「本會話花了多少、還剩多少」直接放到輸入框旁,按官方峯谷價目逐次請求計價,並用本會話日誌而非平臺彙總來算 token,屬於思路清楚、實現剋制的客戶端插件。目錄頁在 https://www.skillhub.cn/plugins/vacum972/dsh-usage-billing ,源碼和說明在 https://github.com/vacum972/dsh-usage-billing 。

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

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

小夜