前言¶
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]](左閉右開)。
計價語義按倉庫說明是這樣的:
- 按消息時刻取價。每條消息用它完成那一刻生效的政策和峯谷時段,新政策生效後不用改配置。
- 政策鏈繼承。新政策沒點名的模型沿用最近一次被點名的價格,歷史賬單才和平臺對得上。
- 改價自愈。政策表或配置變了,重啓時按當前規則重估存量記錄,token 數還在賬本里,不會丟。
- 用戶覆蓋。
prices裏精確到模型的條目會覆蓋官方價;*只填補官方從未點名的模型。officialPricing: off則完全走用戶價格表。 - 可追加政策。官方以後再調價,可以在配置裏用
policyOverrides追加,不必改代碼。
人民幣和美元是兩套官方單價,不是簡單匯率換算。政策時間表策展自官方公告,插件 README 也寫了:發現偏差以官方頁面爲準,歡迎提 PR。
逐條記賬和界面展示¶
記賬發生在 host 端:以 (sessionId, messageId) 爲主鍵,重複或重放事件只覆蓋明細,不重複累計。落盤是 1 秒防抖加臨時文件原子替換;加載失敗會從空賬本開始並告警。每條明細會記下當時用的單價 unitPrice 和計價模式 mode(flat / 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.json 裏 dsh.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.yaml 的 allowBuilds 後再試。
插件以當前 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/metering、POST /billing/budget、POST /billing/balance,同樣默認僅迴環。需要從局域網看賬單時才把 loopbackOnly 改成 false;改完後與 GUI 其它路由一樣,插件本身沒有再做一層鑑權。
適用場景與注意事項¶
比較適合這幾類用法:
- 日常在
dsh web裏用 DeepSeek 官方 API,想按 8 月 17 日之後的峯谷價看每條消息和每個會話的費用。 - 同一套 Harness 裏混用 coding plan、本地模型和官方 API,希望按 provider 路由計價,而不是把 glm / kimi 錯誤套進 DeepSeek 峯谷表。
- 需要本月預算、導出 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