前言¶
DSH(DeepSeek Harness)把每一次模型響應的 token 數記錄在自己的會話日誌裏。這些日誌是壓縮過的、會輪轉的,而且按 DSH 的口徑只報 token,不報價格。如果你已經在用 Vorssaint 這類工具按天看預算,直接讀 DSH 日誌會有兩個問題:文件格式不對,今天的用量也可能缺失。
dsh-vorssaint 解決的就是這個缺口。它是 RGarrido03 維護的 DSH 插件,監聽 DSH 的事件流,把每次響應的用量翻譯成 Vorssaint 的 DSH reader 能 tail 的 JSONL,落到 ~/.vorssaint/agents/dsh/。下面介紹它的工作方式、安裝和配置。
這是個什麼插件¶
一句話:把 DSH 的用量、模型、項目和實時運行情況,轉成 Vorssaint 的 feed 文件。
Vorssaint 已經在讀 Claude、Codex、OpenCode 和 GitHub Copilot 的本地會話日誌。DSH 的日誌是壓縮加輪轉的,所以這個插件不試圖讓 Vorssaint 去解 DSH 日誌,而是自己寫一份獨立的、小而穩定的 feed。插件一加載就開始上報;最近會話的用量會在首次運行時從 DSH 日誌導入,所以裝完當天的數不是空的。
來源:插件由 RGarrido03 維護,MIT 許可證,源碼和發佈頁見文末鏈接。
核心功能¶
插件關心兩組數字:token 消耗和 API 價值。
它能上報的內容,按 README 的「How it works」一節:
- 監聽 DSH 的
session/event事件流,每個產生 usage 的響應寫成一行usage:input、cache-write、cache-read、output、reasoning token 數,加上模型 id 和 provider 路由。模型有價格時再寫cost。 - turn 邊界寫成
turn行,Vorssaint 把它顯示成一次 live run。 - 一個會話一個文件,append-only 且串行化;writer 會跳過磁盤上已有的 sequence,所以重啓和重讀不會重複計數,Vorssaint 側還會按 response id 再做一次 dedupe。
- 啓動時先導入 DSH 日誌裏最近
backfillDays天的用量,再寫緩衝的實時事件。feed 比日誌新的會話直接跳過,正常重啓沒有額外開銷;fork 繼承的前綴不會重複計費。
DSH 只報 token,網關報什麼模型 id 都有可能,所以插件本身不帶價格。想看到 API value 和每日預算,需要自己配價格表。
安裝與啓用¶
DSH 要求 0.2.2-rc.1 或更高的 0.2.x 版本,Vorssaint 需要帶 DSH provider 的構建,Node.js 22.15 用於 backfill。
web profile 下安裝:
dsh plugin --profile web add dsh-vorssaint
desktop profile 用 --profile desktop。如果 DSH 跑在本地 checkout 上、npm 包還沒發佈:
dsh plugin --profile web add link:$PWD
裝完之後,如果 Plugin Manager 沒有自動啓用 bundle,要把 "dsh-vorssaint" 加進 ~/.dsh/profiles/<profile>/package.json 的 dsh.profile.bundles,然後重啓 DSH。安裝器會把新 bundle 標記爲需要重啓,因爲運行中的宿主無法加載不在 live list 裏的插件。
最後在 Vorssaint 的 Settings → AI 頁面打開 DeepSeek Harness。功能裝好後它和其他 agent 一樣默認啓用。
配置價格¶
把價格寫進 ~/.dsh/profiles/<profile>/cordis.patch.yml,文件裏已有的條目保留:
- id: vorssaint
config:
pricing:
"deepseek/deepseek-v4.1-flash":
input: 0.28
output: 0.42
cacheRead: 0.028
cacheWrite: 0.28
"*":
input: 1
output: 2
價格單位是每百萬 token 的美元數,key 必須是 Vorssaint 會顯示的那個精確模型 id(也就是 DSH 在 assistant/message 裏報的 id)。* 是未列出 id 的兜底。cacheRead 和 cacheWrite 默認等於 input 價;reasoning token 已經算在 output 裏,不會再計一次。
上面這組數字是格式示例,不是報價,請改成你 provider 價格頁上的實際費率。沒有價格也不阻礙上報——feed 裏照常有 token、模型、項目和 runs,只是這些響應的 API value 和每日預算爲空。
配置字段一覽:
| 字段 | 默認值 | 說明 |
|---|---|---|
feedDir |
~/.vorssaint/agents/dsh |
feed 寫到哪裏。Vorssaint 只讀默認路徑,改此處需要同時改應用側。 |
pricing |
{} |
按精確模型 id 的每百萬 token 美元價,* 爲兜底。 |
backfill |
true |
啓動時導入近期 DSH 日誌裏的用量。 |
backfillDays |
30 |
導入多少天,0 表示不掃描。 |
sessionsDir |
$DSH_HOME/sessions,否則 ~/.dsh/sessions |
backfill 用的 DSH 會話日誌目錄。 |
配置由 loader 校驗,非法費率會被丟掉而不是猜一個值。feed 目錄和文件按 0700/0600 創建。
隱私¶
只有 docs/FEED.md 裏定義的字段會進入 feed:session id、工作目錄、時間戳、turn 號、模型和 provider id、token 計數,以及可選的 cost。prompt 文本、工具參數、模型輸出、文件內容和憑證都不會寫進去。
寫入是 fire-and-forget:磁盤寫滿或者權限彈窗被關掉,只記一次日誌,不會阻塞 agent,也不會讓 turn 失敗。
適用場景與注意¶
適合已經在用 Vorssaint 做預算追蹤、同時跑 DSH 的開發者。你不需要在 DSH 裏改任何行爲,插件被動訂閱事件流,對 agent 本身的運行沒有侵入。
需要注意三點:
- 插件運行在當前 DSH 進程的權限下,裝之前應當檢查源碼和許可證(MIT)再確認信任。
- 沒有 model 響應的 turn(比如第一步之前就被取消)不會寫 usage 行,看到沒數據先確認
~/.vorssaint/agents/dsh目錄在 DSH 跑完一個 turn 之後是否存在。 - Vorssaint 裏沒有 DeepSeek Harness 入口,是 Vorssaint 構建不帶 DSH provider 的問題,需要升級 Vorssaint,而不是插件側能解決。
排查命令:
dsh --profile web --dump-config | grep vorssaint
能輸出 vorssaint 那一行說明插件已加載;否則按上文啓用 bundle 並重啓。
小結¶
這個插件的價值在於把 DSH 的用量口徑和 Vorssaint 的讀取方式對齊,中間不夾帶你要改的東西。裝上之後它自己開始上報,配置好價格表,token 數就能換算成你實際被計費的美元值,餵給每日預算。
目錄頁:https://www.skillhub.cn/plugins/RGarrido03/dsh-vorssaint
GitHub:https://github.com/RGarrido03/dsh-vorssaint