dsh-llm-cost:爲 DeepSeek Harness 增加逐 turn、逐 step 的 LLM 成本顯示

前言

DSH 已經記錄了每個 step 的真實 token 用量,但本身並沒有把用量換算成美元成本。對日常跑智能體任務的人來說,光看 token 數不夠:還需要知道某一輪 assistant 回覆花了多少錢、一個 session 累計花了多少錢,以及價格表過期後如何更新。

dsh-llm-cost 是一個 DeepSeek Harness(DSH)插件,用來補上這一環:在 host 端生成 costUsage session projection,在 Web 客戶端把每個 turn 的成本渲染到消息下方,並在會話頭顯示整個 session 的累計成本。它還提供 llm_cost_refresh 工具,通過 LLM 加聯網搜索自動抽取當前價格,並寫入 override 價格文件。

這是什麼

dsh-llm-cost 是倉庫 owner 爲 chenyinrusi 的 DSH 插件,許可證爲 MIT

它解決的問題可以概括爲三件事:

  1. 把 DSH 已有的 token 用量換算成美元成本。
  2. 在 Web UI 中顯示每個 turn、每個 step、整個 session 的成本。
  3. 當內置價格快照可能過期時,用 LLM 和聯網搜索生成 override 價格文件。

該插件要求 DSH 不低於 0.1.1-rc.2,並且 package.jsonengines 要求 node >= 20

核心功能

成本投影:costUsage

插件會把成本結果寫入 costUsage session projection,包含以下字段:

totalCostUsd
pricedSteps
unpricedSteps
token 分桶
byModel 聚合
steps[] 每步明細

其中:

  • totalCostUsd 表示累計美元成本。
  • pricedStepsunpricedSteps 用於區分已定價和未定價的 step。
  • byModel 按模型聚合成本。
  • steps[] 保存每一步的明細,便於排查某一輪爲什麼是這個價格。

每 turn 成本展示

在 Web 客戶端中,插件會在每個完成的 assistant 消息下方的 stats 行渲染該 turn 的成本,例如:

$0.0042 · 1.2K tok

如果某個模型沒有匹配到價格,插件顯示:

unknown

未定價模型不會被顯示爲 $0.00,避免“未知”被誤讀成“免費”。

會話累計成本

插件還會在會話頭右上角顯示整個 session 的累計成本,並在存在未定價 step 時提示:

+ N unknown

價格自動維護:llm_cost_refresh

llm_cost_refresh 是一個用於維護價格表的工具。它的目標鏈路是:

  1. 聯網搜索目標模型當前價格。
  2. 用 LLM 抽取 JSON 價格數據。
  3. 校驗後寫入 pricingFile override 文件。

這個工具不會覆蓋內置快照,而是寫入 override 文件。因此,抽取結果建議先人工抽查,再決定是否長期採用。

安裝與啓用

如果通過 GitHub 安裝,使用下面命令:

dsh plugin --profile web add github:chenyinrusi/dsh-llm-cost#v0.6.1

如果使用本地 tarball,例如內網或離線環境,可以使用:

dsh plugin --profile web add ./dsh-llm-cost-0.6.1.tgz

插件要求:

DSH >= 0.1.1-rc.2
Node >= 20

npm 渠道暫未發佈。如果希望使用包名形式安裝,需要先在倉庫中發佈 npm 包:

npm login && npm publish

安裝後可以用下面的命令啓動本地 Web 驗證:

pnpm dsh web --patch ./cordis.patch.yml

典型用法

1、安裝插件

先選擇 GitHub 或本地 tarball 渠道安裝:

dsh plugin --profile web add github:chenyinrusi/dsh-llm-cost#v0.6.1

或者:

dsh plugin --profile web add ./dsh-llm-cost-0.6.1.tgz

2、啓動 Web 會話

通過 DSH Web 進入會話,發送消息並等待 assistant 回覆。

回覆完成後,可以在消息下方查看該 turn 的成本行。會話頭右上角會顯示整個 session 的累計成本。

3、查看成本明細

costUsage 投影中會保留:

totalCostUsd
pricedSteps
unpricedSteps
byModel
steps[]

如果某一步顯示 unknown,說明該模型沒有匹配到內置或 override 價格。

4、配置價格刷新

cordis.patch.yml 中該插件行的 config 可以設置以下鍵,均爲可選:

pricing
pricingFile
refreshProvider
refreshModel

各鍵的含義如下:

  • pricing:內聯定價覆蓋,合併到內置快照之上。
  • pricingFilellm_cost_refresh 寫出的 override 文件路徑。
  • refreshProvider:價格抽取調用優先使用的 provider 路由。
  • refreshModel:價格抽取調用優先使用的模型 id。

配置由 zod Config schema 校驗。省略 config 鍵表示使用全部默認值;config: {} 是合法的;不要寫空的 config: 鍵,因爲 YAML 會把它解析爲 null,配置校驗會拒絕;未知鍵會被靜默丟棄。

價格刷新規則

llm_cost_refresh 可以自動執行整條價格更新鏈路,不需要 agent 逐步編排。

大致流程是:

  1. 使用 DSH 中已安裝的 web 搜索 provider,搜索目標模型的當前價格。
  2. 使用可用 LLM 路由抽取 JSON 價格數據。
  3. 對抽取結果做寬鬆校驗。
  4. 將有效結果合併進價格 registry,並寫入 pricingFile override 文件。

自動維護價格需要滿足兩個前置條件:

DSH 中安裝了 web 搜索 provider,例如 dsh-web-search-*
至少有一個可用 LLM 路由

如果配置了 refreshProviderrefreshModel,工具會優先使用這一組 provider/model。如果未配置,工具也能自動選擇最便宜的可用模型。

需要注意:

  • 工具寫入的是 override 文件,不會覆蓋內置快照。
  • 抽取結果建議先人工抽查。
  • 壞模型或無效價格會被丟棄,避免污染價格表。

峯谷定價

dsh-llm-cost 支持峯谷定價。

峯時窗口爲:

01:00–04:00 UTC
06:00–10:00 UTC

這兩個窗口僅適用於工作日。自 2026-08-23 起,UTC 週六和週日全天均按閒時處理。

對於聲明瞭 offPeakFactor 的模型,閒時成本會乘以該折扣係數;未聲明 offPeakFactor 的模型恆按峯值價計算。

價格匹配階梯

插件按下面的階梯匹配價格:

0. provider === "ollama" → 免費
1. 模型 id 精確匹配
2. 最長 key 子串匹配
3. 未知 → unknown

匹配到價格時,成本按對應單價計算;未匹配到價格時,顯示 unknown,而不是 $0.00

開發與維護

在插件倉庫中,常用命令如下:

npm test

運行 node --test 純邏輯測試。

npm run gen

重新生成價格快照:

pricing.json
src/pricing-data.ts
npm run build

使用 tsdown 打包 host、client 和聲明文件。

適用場景與注意

適合使用 dsh-llm-cost 的場景包括:

  • 使用 DSH Web profile,希望看到每個 turn 的美元成本。
  • 需要查看一個 session 的累計成本。
  • 使用多個模型,希望按模型聚合成本。
  • 需要維護價格表,但不想每次都手工改配置。

安裝前需要注意:

  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼、依賴和許可證。
  • 許可證爲 MIT
  • npm 渠道暫未發佈。
  • 要求 DSH 不低於 0.1.1-rc.2
  • 要求 Node 不低於 20
  • 自動刷新價格需要 DSH 中安裝 web 搜索 provider,並且至少有一個可用 LLM 路由。
  • unknown 表示未匹配到價格,不表示免費。
  • llm_cost_refresh 寫入的是 override 文件,不會覆蓋內置快照。

結尾

dsh-llm-cost 的價值在於把 DSH 已有的 token 用量轉化爲可直接查看的美元成本,並保留每個 turn、每個 step 的成本明細。它還提供價格刷新工具,讓內置價格表過期後可以通過 LLM 加聯網搜索生成 override 文件。

GitHub 倉庫:

https://github.com/chenyinrusi/dsh-llm-cost

DSH 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係;本材料未給出具體目錄頁 URL,可通過 GitHub 倉庫查看完整 README 和發佈版本。

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

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

小夜