dsh-token-usage:爲 DSH 增加 LLM API 調用用量統計面板

前言

做 DSH 相關開發時,模型調用本身通常不是最難看的部分,難的是調用發生後如何快速覈對:哪次調用來自哪個會話、用了哪個模型、狀態碼是什麼、各 Token 桶數量是多少、金額大概是多少、失敗時錯誤信息在哪裏。

下面介紹一個插件:@wycto/dsh-token-usage。它記錄 DeepSeek Harness 中所有 LLM API 調用(模型請求),並提供單窗口全屏統計面板。本文以 npm 包 name @wycto/dsh-token-usage 指代該插件;倉庫與 README 中使用 dsh-token-usage 名稱。

這是什麼

@wycto/dsh-token-usage 是一個 DSH 插件,用於把 DSH 中的模型調用記錄整理成可查詢的統計面板。

已覈實資料中的基本信息如下:

  • 維護者:wycto
  • npm 包 name:@wycto/dsh-token-usage
  • package.json version:0.1.14
  • license:MIT
  • peerDependencies@deepseek-ai/dsh *
  • 源碼倉庫:https://github.com/wycto/dsh-token-usage

它的定位不是重新攔截模型請求,也不替代 DSH 的調用鏈路,而是讀取 DSH 會話日誌,把已有的調用信息整理成統計、篩選、排序和導出能力。

核心功能

入口與全屏面板

安裝啓用後,DSH 側邊欄底部會出現藍色漸變大按鈕“Token 用量”。點擊後打開全屏統計面板。

查詢與篩選

面板支持按條件查詢調用記錄:

  • 起止時間使用 datetime-local,可精確到秒。
  • 默認不限制時間,顯示全部記錄。
  • 篩選條件暫存在 localStorage,下次打開可恢復上次條件。
  • 點擊【重置】可清空全部條件。
  • 提供商 / 模型下拉去重合並現有配置與歷史記錄。
  • 支持會話 ID / 模型提供商 / 模型 / 狀態 / 推理強度下拉篩選。

明細表與排序

明細表提供逐條調用記錄。README 中說明明細表全部 15 列可點擊表頭排序,排序維度包括:

  • 時間
  • 會話 ID
  • 提供商
  • 模型
  • 輸入
  • 緩存
  • 命中 %
  • 輸出
  • 推理
  • 總額
  • 金額
  • 金額(¥)
  • 強度
  • 狀態
  • 耗時

默認按時間倒序,最新記錄在前。

會話 ID 快捷篩選

明細表中顯示會話 ID。點擊任意會話 ID,即可按該會話篩選後續記錄。

狀態碼與詳情彈窗

狀態列會展示調用狀態。對於存在狀態碼的調用,可顯示 HTTP 狀態碼,例如 200400401429500 等。

狀態下方可打開詳情彈窗,查看更完整的調用信息,包括:

  • 會話 ID
  • 錯誤信息
  • 錯誤碼
  • 各 Token 桶
  • 金額
  • 耗時
  • Turn / Step 相關信息

分組統計

面板支持按以下維度分組統計:

  • provider
  • model
  • status
  • effort

分組統計項包括調用數、各 Token、命中率、金額、耗時等。

CSV 導出

支持按當前篩選條件導出全字段 CSV 明細,便於在本地繼續處理。

金額顯示

金額以雙幣顯示:

  • USD
  • 人民幣

README 說明金額基於官方人民幣刊例和匯率換算,默認匯率爲 7.2,可通過 settings.yaml 中的 token-usage.usdCnyRate 覆蓋。

該插件支持 DeepSeek-V4 峯谷兩檔。金額仍屬於估算,不是精確賬單。

安裝與啓用

npm 包安裝

已覈實資料給出的安裝命令爲:

dsh plugin --profile <profile名> add @wycto/dsh-token-usage

執行該命令後,安裝到指定 profile。

重啓 DSH

安裝後需要重啓 DSH:

dsh --profile <profile名>

打開面板

重啓完成後,在 DSH 側邊欄底部點擊藍色“Token 用量”按鈕,即可打開全屏統計面板。

典型用法

按時間範圍查詢

打開面板後,可以使用起止 datetime-local 精確到秒過濾調用記錄。

例如,只查看某一天內某一時段的調用。如果不想繼續保留篩選條件,可以點【重置】清空全部條件,回到顯示全部記錄的狀態。

按會話 ID 查詢

在明細表中看到某個會話 ID 後,直接點擊該會話 ID,即可按該會話篩選。

適合在排查一次完整會話中的多次模型調用時使用。

按表頭排序

點擊明細表任意列表頭可切換升降序。

默認按時間倒序。也可以按模型、狀態、金額、耗時等列重新排序,用來快速找出消耗較高或失敗較多的記錄。

本地開發體驗

本地開發時,可以按 README 示例把插件文件接入 DSH web 構建。

先準備文件:

  1. lib/index.jsclient/index.js 放入 src/
  2. cordis.patch.yml 中插入插件行。README 示例中 name / id 使用帶 scope 的包名 @wycto/dsh-token-usage
  3. 執行構建命令:
pnpm dsh web --patch ./dsh-token-usage/cordis.patch.yml

配置匯率與定價

可以在 settings.yamltoken-usage 下配置匯率、定價頁、自動獲取間隔和手動價格覆蓋。

已覈實資料列出的配置項包括:

token-usage:
  usdCnyRate: 7.2
  pricingUrl: ''
  pricingFetchIntervalHours: 24
  pricing: {}

其中:

  • usdCnyRate:USD 與人民幣之間的匯率,README 示例默認值爲 7.2
  • pricingUrl:定價頁地址。
  • pricingFetchIntervalHours:自動獲取定價的間隔,單位爲小時,README 示例默認值爲 24
  • pricing:手動覆蓋或新增價格條目。README 示例中支持按模型配置,並支持 DeepSeek-V4 的 peak 峯谷時段。

修改 settings.yaml 後,按 DSH 實際加載機制重啓或重新加載後生效。

數據來源與邊界

數據來源

該插件只讀取 DSH 會話日誌,不侵入模型調用鏈路。

README 說明它會從 DSH 會話事件中提取每次模型調用的信息,並整理爲面板中的明細、狀態、Token、金額、耗時等字段。

金額是估算值

金額顯示爲估算值。插件內置常見模型單價表,未知模型使用 fallback 單價。

如果官方價格變動,README 說明插件會每天自動從官網獲取最新定價;獲取失敗時回退內置默認值。也可以通過 settings.yaml 手動覆蓋。

失敗調用可能沒有 Token 記錄

失敗調用,尤其是沒有 assistant/message 的調用,可能不產生 Token 記錄。

此時狀態列反映 turn 結局,用於判斷這次調用最終是完成、錯誤、中止等狀態。

OCX 網關下的 Token 顯示

本機爲 OCX 網關時,usage 字段可能缺失。此時 Token 數可能顯示爲 0

記錄重建

插件中的記錄爲本地內存索引。進程重啓後,會從 DSH 會話日誌重新構建。

密鑰展示

apikey 永不落明文,僅展示掩碼。插件不復制密鑰。

適用場景與注意

適合以下場景:

  • 需要查看 DSH 中某次會話的模型調用明細。
  • 需要按模型、提供商、狀態、推理強度分組觀察調用分佈。
  • 需要排查 400401429500 等狀態碼及錯誤信息。
  • 需要導出 CSV 做本地二次分析。
  • 需要查看 USD 與人民幣雙幣金額估算。

使用前需要注意:

  • 插件會隨當前 DSH 進程權限運行。安裝前應檢查源碼、許可證和依賴關係。
  • 金額爲估算值,不適合作爲精確財務依據。
  • 失敗調用可能沒有 Token 記錄。
  • OCX 網關下部分 Token 字段可能顯示爲 0
  • 插件只讀取 DSH 會話日誌,不改變模型調用鏈路。

結尾

@wycto/dsh-token-usage 的價值在於把 DSH 中原本分散在會話日誌裏的 LLM API 調用信息,整理成一個可查詢、可篩選、可排序、可導出的本地統計面板。它適合用來查看模型消耗、排查調用狀態,以及按會話或模型維度做本地分析。

已覈實資料未包含目錄頁 URL,本文只給出源碼倉庫地址:

  • GitHub:https://github.com/wycto/dsh-token-usage
羽毛球分组比赛记分
小程序二维码

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

小夜