dsh-usage-replay:跨會話按模型回放 Token 用量

前言

在 DeepSeek Harness(DSH)裏做多模型、多工作區開發時,官方界面往往只能看到當前會話或粗粒度的活動信息。若你想按 provider/model、按天、按工作區(cwd)彙總歷史用量,又希望數字與計費語義一致、且不依賴額外上報通道,就需要從 Harness 自己落盤的 session 日誌裏重算一遍。dsh-usage-replay 走的就是這條路:只統計 Token,不做費用估算,也不發起網絡請求。

這是什麼

dsh-usage-replay 由社區維護者 Eclipse-NotFound 發佈,分類屬於模型推理相關插件。它回放 $DSH_HOME/sessions(默認 ~/.dsh/sessions)下已持久化的 session 日誌,把 provider 上報的 usage 按模型、按日、按工作區聚合,並在 UI 與本地只讀 HTTP 接口中展示。數字全部來自 Harness 既有日誌,不在旁路記賬;卸載插件不會丟歷史,安裝前已有的會話同樣計入。

核心功能

用量面板 Tab

在右側邊欄註冊「用量 / Usage」Tab,依賴可選同伴插件 dsh-better-sidebar ≥ 0.28。未安裝 better-sidebar 時,該 Tab 不會註冊,但 Composer 塢區的分模型入口仍可用。

面板包含三塊:

  1. Models — 按 provider/model 列出 sessions、requests、uncached input、output、cache read、cache write、total。
  2. By day — 最近 30 天;可在堆疊柱狀圖與分模型平滑曲線間切換,懸停顯示日期、當日合計與各模型明細。曲線視圖按單日最大單模型用量縮放縱軸;可對長尾數據開啓 Log-scale。柱狀圖按真實 Token 佔比堆疊。
  3. Workspaces — 按 session 的 cwd 排序用量,並展示各工作區內的模型構成。

Composer 塢區分模型芯片

在原生 activity/usage 芯片旁增加中性標籤「分模型 / Per-model」。點擊可打開當前會話的 per-model 表格(model、requests、input、output、cache read、cache write、total)。塢區一行不重複展示合計。

本地只讀 HTTP 路由

通過 Host 的 Connection 服務(與 0.2.1 起其他插件路由相同的 loopback/trusted-host 准入)暴露:

  • GET /usage-replay/api/summary
  • GET /usage-replay/api/session?sessionId=…

返回內容僅爲分模型 Token 數字,無額外敏感字段。插件不向模型注入 prompt、tool 或 schema。

可選:會話範圍內的變更文件

原生 changed-files 卡片基於 git 工作樹快照,多會話共享工作區時可能列出本會話未改動的文件。在插件配置中開啓 sessionScopedEdits: true 後,卡片僅保留本會話 file tools 實際觸達的文件(跟蹤 fs/write-intent / fs/edit-intent,與錄製器同源事件)。Subagent 的文件工具編輯計入父會話對應 turn。僅通過 shell 改動的文件在此模式下不會被歸因。默認關閉,因會改變其他插件可觀察行爲。

- id: usage-replay
  config:
    sessionScopedEdits: true

統計方式與隱私

回放邏輯概要如下:

  • 掃描 session[.vN].jsonl[.zstd],逐幀解碼 multi-frame Zstandard 容器(容忍尾部損壞)。
  • 將 assistant/message 的 usage 事件歸併到最近一次 request/header 信封對應的 provider/model。
  • 針對完整 session 日誌(非可見/壓縮窗口),被 prune 或 compact 的 turn 仍計入。
  • 按文件 size + mtime 緩存解析結果,未變更文件不重複讀取。
  • Retry/attempt 在 provider 上報 usage 處計數,語義與官方 token meter 的計費形態一致。

隱私方面:僅讀本地 session 日誌;無網絡請求、無遙測、無上傳。

安裝與啓用

需要 DeepSeek Harness 0.2.1+(使用 0.2.1 Connection 服務)。package.json 中 engines.dsh 爲 >=0.2.1-rc.1 <0.3.0;當前包版本 0.2.0,許可證 MIT。

社區市場或 npm 安裝:

dsh plugin --profile <profile> add dsh-usage-replay

或指定本倉庫:

dsh plugin --profile <profile> add https://github.com/Eclipse-NotFound/dsh-usage-replay

桌面應用由應用內 Plugins 頁管理 profile:用包路徑/spec 安裝,而非上述 CLI。新增 host 側能力需重啓應用;僅 client 更新可在硬刷新後生效。

典型用法

  1. 安裝插件;若需要右側「用量」Tab,再安裝 dsh-better-sidebar ≥ 0.28。
  2. 日常使用 Harness 後,打開側邊欄「用量 / Usage」查看跨會話模型、按日曲線或工作區排名。
  3. 在當前會話 Composer 塢區點擊「分模型 / Per-model」查看本會話分模型明細。
  4. 若需在腳本或本地工具中讀取聚合結果,向 Host 請求上述兩個 GET 路由(須滿足 Host 的 trusted 連接策略)。

開發自檢(無構建步驟,Node 22.19+ / 24):

node test/offline-check.mjs

適用場景與注意

適合需要跨會話、分模型、分工作區覈對 Token、且只要 Token 不要價目表的場景。與「實時側路上報」類方案不同:這裏的一切數字都可追溯到本地 jsonl/zstd 日誌,卸載插件後日志仍在,重裝可繼續回放。

安裝前請自行審閱 GitHub 源碼 與 MIT 許可證。插件以當前 DSH 進程權限運行,能讀取 ~/.dsh/sessions 下日誌;多用戶或共享機器上應確認目錄權限是否符合預期。DSH 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-usage-replay 把 Harness 已落盤的 session 日誌重放爲可瀏覽、可查詢的 per-model 用量視圖,並明確限定爲 Tokens only。目錄與文檔:

  • 社區目錄:https://www.skillhub.cn/plugins/Eclipse-NotFound/dsh-usage-replay
  • GitHub:https://github.com/Eclipse-NotFound/dsh-usage-replay
羽毛球分组比赛记分
小程序二维码

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

小夜