用 dsh-web-billing 給 dsh web 加上官方峯谷價 Token 賬單

前言

DeepSeek Harness(簡稱 dsh)把智能體運行時拆成「一切皆插件」:會話、工具、界面都可以按需掛載。很多人日常用的是它的 Web 界面 dsh web——一邊跑任務,一邊看模型吐 token。2026 年 8 月 17 日起,DeepSeek 官方 API 對 V4 系列改成了峯谷定價:北京時間 9:00–12:00、14:00–18:00 是高峯,其餘爲空閒,空閒價是高峯價的一半。同一條對話,上午寫代碼和夜裏跑批處理,單價可以差一倍。

dsh 自帶的統計行會報 token 用量,但不會按官方政策把費用算出來,也不會把賬號餘額、本會話花費、本地模型「省了多少」放在同一處。社區插件 dsh-web-billing 做的就是這件事:按官方政策時間表自動計價,逐條消息記賬,並在瀏覽器裏實時顯示。

需要先說明兩點。第一,DeepSeek Harness 官方倉庫在 deepseek-ai/deepseek-harness;插件目錄站點 deepseek-harness-plugin.com 是社區收錄,和 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。第二,插件給出的費用是按官方單價和會話 usage 估算的本地賬本,扣費仍以 DeepSeek 平臺賬單爲準。

這是什麼

dsh-web-billing 是一款面向 dsh web 的會話與消息插件,由 bpc-oss 維護,MIT 許可證,主要語言是 JavaScript。目錄頁把它歸在「會話與消息」分類;倉庫 package.json 當前版本號是 2.1.0,寫作時 GitHub 星標爲 9。

它解決的問題很具體:在 Web 界面裏把「這條回覆花了多少錢、這個會話累計多少、賬號還剩多少」顯示出來,並且計價規則跟官方政策走——包括 2026-08-17 起的峯谷時段,而不是寫死一張價格表然後忘了改。

Host 端訂閱 session/event,對每條帶 usage 的 assistant/message 按消息完成時刻取價,賬本寫到 $DSH_HOME/storages/web-billing.json。瀏覽器端在每條助手消息動作條和會話頭部放費用角標;更完整的彙總在「設置 → 費用」。中文界面默認顯示人民幣 ¥,英文界面顯示美元 $,也可以用配置強制指定。

核心功能

按官方政策自動計價

定價引擎在 lib/pricing.js,內置政策時間表 OFFICIAL_PRICING_POLICIES。README 裏列出的人民幣單價(單位:元 / 百萬 tokens,緩存命中 / 緩存未命中 / 輸出)如下。

固定價階段:

生效時刻(北京) 政策 單價
2025-02-09 deepseek-chat / deepseek-reasoner 標準價 0.5/2/8 · 1/4/16
2026-05-22 V4 系列 75% 降價轉永久 v4-flash 0.02/1/2 · v4-pro 0.025/3/6

2026-08-17 起的峯谷價:

模型 空閒 高峯
deepseek-v4-flash 0.05 / 1.5 / 4.5 0.10 / 3.0 / 9.0
deepseek-v4-pro 0.15 / 4.5 / 13.5 0.30 / 9.0 / 27.0

這張表和寫作時打開的 DeepSeek 官方價格頁 一致:高峯爲北京時間 9:00–12:00、14:00–18:00,空閒爲高峯的一半。插件默認時區 Asia/Shanghai,高峯窗口 [[9,12],[14,18]](左閉右開)。

計價語義按倉庫說明是這樣的:

  1. 按消息時刻取價。每條消息用它完成那一刻生效的政策和峯谷時段,新政策生效後不用改配置。
  2. 政策鏈繼承。新政策沒點名的模型沿用最近一次被點名的價格,歷史賬單才和平臺對得上。
  3. 改價自愈。政策表或配置變了,重啓時按當前規則重估存量記錄,token 數還在賬本里,不會丟。
  4. 用戶覆蓋prices 裏精確到模型的條目會覆蓋官方價;* 只填補官方從未點名的模型。officialPricing: off 則完全走用戶價格表。
  5. 可追加政策。官方以後再調價,可以在配置裏用 policyOverrides 追加,不必改代碼。

人民幣和美元是兩套官方單價,不是簡單匯率換算。政策時間表策展自官方公告,插件 README 也寫了:發現偏差以官方頁面爲準,歡迎提 PR。

逐條記賬和界面展示

記賬發生在 host 端:以 (sessionId, messageId) 爲主鍵,重複或重放事件只覆蓋明細,不重複累計。落盤是 1 秒防抖加臨時文件原子替換;加載失敗會從空賬本開始並告警。每條明細會記下當時用的單價 unitPrice 和計價模式 modeflat / peak / offPeak)。

瀏覽器端能看到兩層:

  • 每條 assistant 消息動作條上的費用角標,懸停可以看到 token 拆分和模型。
  • 會話頭部角標,懸停浮層只針對本會話:本會話今日與累計的花費/節省、按模型的金額和 Input / 緩存命中率 / Output;用 DeepSeek 系列模型時還會標當前是高峯還是空閒。

今日、本月、累計、賬戶餘額、按模型、按會話、按天曆史,集中在「設置 → 費用」。時間段可以選今日 / 本週 / 本月 / 近 30 天 / 全部 / 自定義日期。費用頁還支持月度預算進度條、CSV / JSON 導出(CSV 帶 UTF-8 BOM)。需要注意:範圍明細基於最近流水窗口,默認 maxRecent 爲 20000 條,更早的數據只保留日維度聚合。

賬號餘額

Host 端複用 provider 的 API key,調用官方只讀接口 GET /user/balance(默認地址 https://api.deepseek.com/user/balance;若設置了 DEEPSEEK_BASE_URL,會以其爲前綴)。默認 60 秒刷新、5 秒超時,失敗靜默降級。Key 只在服務端解析,不會下發到瀏覽器。餘額查詢可以在費用頁運行時開關,不必重啓。

Coding plan 與本地模型

除了直連 DeepSeek API,dsh 裏還可以掛各種 coding plan。插件內置 DSH 預設的官方美元價(取自 Harness 內置 pi-ai catalog,見 lib/coding-plans.js),按 (provider, model) 路由:

  • opencode-go / opencode / kimi-coding:按平臺公佈的 $/1M 計費。人民幣展示價 = 美元官方價 × codingUsdCnyRate(默認 7.2,僅展示換算,不影響 DeepSeek 自己的人民幣官方價)。
  • qwen-token-plan / xiaomi-token-plan / zai-coding:平臺不公佈逐 token 單價,調用按 0 元計。
  • 未雙雙命中的模型,仍走 DeepSeek 官方政策鏈(含峯谷)。同一個模型名在不同 provider 下不會串價。

本地(自託管)provider 可以寫進 localProviders。這類調用按官方價算「名義價值」,實際成本按 localCostPerM(默認 0,相當於免費),差值記成「已節省」,角標會顯示類似 省¥X

費用頁還可以給每個 provider 設收費形式(即時生效):usage 按量、usage-free 按量但免費模型清單按 0、subscription 月費調用按 0 並折算回本、free 活動免費、local 本地部署。切換後會立刻重估歷史記錄。

安裝與啓用

目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端裏運行即可:

dsh plugin add github:bpc-oss/dsh-web-billing

這是一個標準 DSH 組合包(bundle),package.jsondsh.bundle.patch 指向包內 cordis.patch.yml,客戶端聲明 platform: web。倉庫 README 建議顯式指定 web profile:

dsh plugin --profile web add github:bpc-oss/dsh-web-billing

需要可復現安裝時,按目錄頁說明固定 commit 哈希,例如寫作時倉庫 master 最新提交爲 27f3750d23ee08af1b8aa7d9843d470d26eadf67

dsh plugin add github:bpc-oss/dsh-web-billing#27f3750d23ee08af1b8aa7d9843d470d26eadf67

安裝後重啓 dsh web 纔會生效。同一 $DSH_HOME 下只應跑一個實例,多個實例會爭寫同一份賬本。倉庫說明:本包是純 JS,git 安裝一般不必走構建;若 pnpm ≥10 提示構建授權,把提示的包鍵加入 profile 的 pnpm-workspace.yamlallowBuilds 後再試。

插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前請自己看一遍源碼倉庫和許可證。

典型用法

默認配置就能用:官方價格表已經寫在 lib/pricing.js 裏。裝好並重啓後,正常對話即可。助手消息旁會出現費用角標,會話頭部能看到本會話花費;打開「設置 → 費用」可以看餘額、分模型明細和導出賬單。

如果要覆蓋默認配置,在 $DSH_HOME/profiles/web/cordis.patch.yml 按 id web-billing 覆寫整行。覆蓋會替換整份 config,需要把要用的鍵都寫上。下面是倉庫文檔裏的常用項(單價單位都是每百萬 tokens):

默認 說明
displayCurrency auto auto 跟隨界面語言;CNY / USD 強制指定
timezone Asia/Shanghai 峯谷判定時區
peakWindows [[9,12],[14,18]] 高峯時段,[start,end)
officialPricing auto off 則只用用戶 prices
localProviders [] 本地 provider 名單
localCostPerM 0 本地實際單價(¥/1M)
codingUsdCnyRate 7.2 coding plan 美元價的參考人民幣匯率
loopbackOnly true /billing 端點僅允許迴環訪問
balance.enabled true 是否查詢並展示餘額

注意:給某個模型在 prices 裏寫死單價,會凍結該模型價格,連峯谷切換也會被蓋掉,一般不需要這麼做。官方以後調價,更穩妥的做法是往 policyOverrides 追加帶 since 的政策條目。

查詢端點默認只監聽迴環:GET /billing/state(支持 ?range=...)、GET /billing/session/。運行時設置用 POST /billing/meteringPOST /billing/budgetPOST /billing/balance,同樣默認僅迴環。需要從局域網看賬單時才把 loopbackOnly 改成 false;改完後與 GUI 其它路由一樣,插件本身沒有再做一層鑑權。

適用場景與注意事項

比較適合這幾類用法:

  1. 日常在 dsh web 裏用 DeepSeek 官方 API,想按 8 月 17 日之後的峯谷價看每條消息和每個會話的費用。
  2. 同一套 Harness 裏混用 coding plan、本地模型和官方 API,希望按 provider 路由計價,而不是把 glm / kimi 錯誤套進 DeepSeek 峯谷表。
  3. 需要本月預算、導出 CSV/JSON、或者看賬號餘額,但不想自己去爬官方價格頁。

使用時有幾條邊界需要記住:

  • 費用是估算。token 數來自會話 usage,單價來自插件內置(或你覆蓋)的政策表;折扣、贈金扣減順序、稅務等以 DeepSeek 平臺爲準。政策表若滯後,以 官方價格頁 爲準。
  • 這是 Web 端插件,給 dsh web 用,不是通用 CLI 賬單工具。
  • 餘額接口走官方只讀 GET /user/balance,失敗會靜默降級,界面上可能暫時看不到餘額。
  • coding plan 的人民幣數字是參考匯率換算;美元金額纔是平臺官方真值。
  • /billing 默認僅本機可訪問;關掉迴環限制等於把只讀賬單接口暴露到監聽地址上,按自己的網絡環境決定。
  • 插件只讀 session/event,不改會話內容;但仍然以當前 dsh 進程權限運行,安裝前檢查源碼和許可證,生產環境建議固定 commit。

小結

dsh-web-billing 把 DeepSeek 官方政策(含 2026-08-17 峯谷價)嵌進 dsh web:host 端按消息時刻記賬,瀏覽器端用角標和「設置 → 費用」把花費、餘額、節省和分模型明細攤開。默認配置就能跟上當前官方單價;coding plan 和本地模型走單獨路由,避免串價。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-web-billing/

GitHub:https://github.com/bpc-oss/dsh-web-billing

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

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

小夜