dsh-ccswitch-usage:把 DSH 的 token 用量寫進 CC Switch 用量面板

前言

用 DeepSeek Harness(DSH)做模型調用時,會話日誌裏會記錄每次調用的 inputTokens、outputTokens 以及緩存相關 token。若你同時用 CC Switch 管理 Claude Code、Codex、OpenCode 等 CLI 的代理與用量,DSH 的消耗往往不在同一塊面板裏,總用量和成本要對賬就得兩邊看。

社區插件 dsh-ccswitch-usage(維護者 LyaQanYi)在 DSH 側監聽完成後的模型調用,把用量寫入 CC Switch 的 SQLite 庫,字段與 CC Switch 自帶的 DSH 會話導入器對齊,便於和其餘應用一起統計。

這是什麼

dsh-ccswitch-usage 是 DeepSeek Harness 的 Cordis 插件(npm 包名 dsh-ccswitch-usage,當前版本 0.1.0,MIT)。它不做推理本身,屬於「模型推理」分類下的用量橋接:把 DSH 每次成功結束的模型調用折成一行記錄,寫入 CC Switch 的 proxy_request_logs(app_type = 'dsh'),費用按 CC Switch 的 model_pricing 表計算,與統計其他應用的方式一致。

目錄頁:SkillHub 插件頁
源碼:GitHub — LyaQanYi/dsh-ccswitch-usage

核心功能

DSH 每完成一次模型調用,會在會話日誌裏寫一條 assistant/message,攜帶 inputTokens / outputTokens / cacheReadTokens / cacheWriteTokens。本插件訂閱這條事件流,經摺疊與串行寫庫,落表後 CC Switch 側可以:

  • 在總用量、成本、緩存命中率裏包含 DSH;
  • 在模型統計裏看到 DSH 使用過的模型;
  • 在請求明細裏逐條查看每次調用。

寫庫時還維護 session_usage_dedup 去重臺賬(request_id = 'dsh:<message.id>'),與官方導入器字段一致,便於將來 CC Switch 內置 DSH 導入器與插件並存時通過 INSERT OR IGNORE 避免重複計數。

首次啓用時,若配置允許,會冪等地回填歷史會話用量,可反覆執行。

安裝與啓用

插件以 Host 側代碼運行,安裝後需下次 DSH 啓動(或重啓 DeepSeek Harness.app)纔會加載;僅刷新網頁不夠。安裝前應自行查看倉庫源碼與 MIT 許可證,並確認本機 CC Switch 數據庫路徑與權限。

桌面版(DeepSeek Harness.app)

桌面版 profile 由 App 獨佔管理,不能使用全局 dsh 命令安裝,需使用 App 內置 CLI 的完整路徑(以 macOS 爲例):

"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" \
  plugin --profile desktop add /path/to/dsh-ccswitch-usage

成功時會把包以 link: 形式裝進 ~/.dsh/profiles/desktop/node_modules/,並在 dsh.profile.bundles 中登記聲明瞭 dsh.bundle 的包,無需手工改 bundles。

驗證是否裝上:

"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" \
  plugin --profile desktop list | grep ccswitch

卸載時將 add 改爲 remove dsh-ccswitch-usage。已寫入 CC Switch 的歷史用量不會被插件刪除。

非桌面版或自建 profile

dsh plugin --profile <profile 名> add /path/to/dsh-ccswitch-usage

手動安裝

編輯 ~/.dsh/profiles/desktop/package.json,在 dependencies 中加入 link: 指向源碼絕對路徑,並在 dsh.profile.bundles 中包含 dsh-ccswitch-usage,隨後在 profile 目錄執行 App 內 CLI 的 plugin --profile desktop install 並重啓 DSH。具體 JSON 結構見倉庫 README。

配置

在 profile 的 cordis.patch.yml 中覆蓋插件默認值,例如:

- id: dsh-ccswitch-usage
  name: dsh-ccswitch-usage
  config:
    enabled: true
    ccSwitchDbPath: ''      # 留空則 $CC_SWITCH_HOME/cc-switch.db,否則 ~/.cc-switch/cc-switch.db
    backfillOnStart: true   # 啓動時補歷史用量
    refreshPricing: true    # 60 秒後重新讀定價,改價無需重啓

ccSwitchDbPath 留空時使用環境變量或默認路徑;首次啓動回填由 backfillOnStart 控制。

數據寫到哪裏

主要寫入兩張表,語義與 CC Switch 的 session_usage_dsh.rs 導入器一致:

表 用途
proxy_request_logs 一條記錄對應一次模型調用
session_usage_dedup 去重,request_id = 'dsh:<message.id>'

常見列含義包括:app_type = 'dsh',data_source = 'dsh_session',input_token_semantics = 2(FRESH,DSH 的 inputTokens 不含緩存讀),session_id 爲 DSH 會話 id;DeepSeek 賬號路由時 provider_id 爲 _dsh_account_session,否則爲 _dsh_session。

適用場景與注意

適合誰:已在用 CC Switch 做代理與用量看板,又希望 DSH 的 token 與 Claude Code 等 CLI 出現在同一套統計裏,而不是單獨對會話日誌做手工彙總。

運行權限:插件隨當前 DSH 進程讀寫本機 CC Switch 數據庫;安裝前請確認路徑與信任來源。

已知限制(來自 README,隨 CC Switch / DSH 版本可能變化):

  • 部分 CC Switch 版本(README 提到本機 4.0.21)用量面板頂部尚無單獨「DSH」篩選按鈕,數據仍計入總量、模型統計與請求明細。
  • 僅完整成功的模型調用(assistant/message)記賬;失敗嘗試(assistant/attempt)無用量,與官方導入器口徑一致。
  • 定價表無精確模型命中時成本記 0,不做 LIKE 猜價;行數據保留,日後補價可重算。
  • CC Switch 寫庫 busy 時插件重試後跳過並打 warn,不阻塞會話。

結尾

dsh-ccswitch-usage 把 DSH 會話裏的 token 事件轉成 CC Switch 認可的 dsh 用量行,讓 DSH 與常見 CLI 共用同一張價目表和麪板。DeepSeek Harness 生態強調「一切皆插件」;SkillHub 等社區目錄獨立於 DeepSeek / 幻方,並非官方應用商店。

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

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

小夜