前言¶
用 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 / 幻方,並非官方應用商店。