dsh-usage-panel:在 DSH 裏本地彙總 Token 用量

前言

用 DeepSeek Harness(DSH)跑會話時,Token 會分散寫在 $DSH_HOME/sessions 下的 Session 日誌裏。想回答「總共用了多少、按模型和按天怎麼分佈、哪幾個 Session 最費 Token」時,若只靠翻 JSONL 或憑印象估算,既慢又容易漏。下面介紹的 dsh-usage-panel 是社區維護者 AlexLin0803 發佈的客戶端插件:在 Harness 內增加 Token usage / 用量 頁面,從本機持久化 Session 日誌摺疊統計,不發起模型或 Provider 請求。

這是什麼

dsh-usage-panel(GitHub:AlexLin0803/dsh-usage-panel,SkillHub 分類:客戶端)在 DSH Web 界面提供與設置頁同源的用量視圖。數據只讀當前機器上的 Session 文件,不彙總其他安裝實例,也不換算費用。

同一套頁面有兩個入口:

  • 左側邊欄一行,在主欄打開(不經過 Settings 對話框);
  • Settings → 用量 / Usage,與其他設置頁並列。

頁面語言(zh / en)與明暗主題隨 Harness 設置殼的設計 token 自動對齊。

核心功能

README 中列出的區塊如下(均來自本地 Session 日誌摺疊,非雲端報表):

區塊 含義
KPI 卡片 總 Token、輸入/輸出、緩存讀取與命中率、Session 數、活躍天數與當前連續活躍天數
活動熱力圖 近 26 周按本地日的 Token 量,懸停可看明細
Tokens by model 近 7 / 30 / 90 日按模型堆疊的日總量
Model share 各模型佔全部 Token 的比例(環形圖)
Providers 按實際處理請求的 Provider 拆分 Token
Busiest Sessions 按累計 Token 排序的 Session,含消息數與所用模型

Export 可在頁面內導出:當前時間範圍的日序列或按模型表格爲 CSV,或整份 summary 爲 JSON;均在瀏覽器端生成,不上傳。

實現上分爲 Host 與 Browser 兩半(同一 npm 包):

  • Host(lib/index.js):Cordis 插件,註冊 GET /usage-panel/api/summary?days=30[&refresh=1],掃描 $DSH_HOME/sessions/**/session.v*.jsonl[.zstd],解碼 Zstandard 幀並摺疊 assistant/message 的 usage 記錄;按文件 size/mtime 緩存, warm 請求可走內存。
  • Browser(lib/client.js):通過 window.__ModuleLoader__.load 註冊 settings.section 頁面並拉取 summary;僅依賴平臺 react 模塊與內聯主題 token。

插件面向界面與本地統計,不提供 model-facing 的 tool、prompt 或 Provider 請求。

當前 package 版本爲 0.2.0,許可證 MIT。

安裝與啓用

DSH profile 通過 bundle 樹組合插件。本包在 package.json 中聲明 dsh.bundle.patch = ./cordis.patch.yml,作爲 profile bundle 安裝即可。

1、讓 profile 能解析到該包(本地開發可用 link):

dsh plugin --profile desktop add link:E:/path/to/dsh-usage-panel

2、在 profile 的 dsh.profile.bundles 中選中該 bundle(與 @deepseek-ai/dsh-base、@deepseek-ai/dsh-web-app 等並列):

"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-usage-panel"

若已開啓 HMR,運行中的組合會立即拾取 bundle;否則需重啓 Harness。然後打開 Settings → 用量 / Usage,或使用左側邊欄入口。

若不想手改 profile,可通過 Web 側欄 Plugins 頁或 plugin_manager 工具安裝,由工具維護 dsh.profile.bundles。

排查: 配置重載後邊欄或 Settings 頁消失,多半是 compose 時跳過了 bundle。確認 package.json 爲 UTF-8 無 BOM(帶 BOM 會導致 JSON.parse 失敗、整包被丟棄)。可用 throwaway profile 離線檢查:

Copy-Item ~/.dsh/profiles/desktop ~/.dsh/profiles/desktop-check -Recurse
dsh --profile desktop-check --dump-config | Select-String "skipping profile bundle"
Remove-Item ~/.dsh/profiles/desktop-check -Recurse

健康的 dump 應包含 - id: usage-panel。

典型用法

驗證 Host 路由(Harness Web 服務默認監聽本機,示例端口以你環境爲準):

curl.exe "http://127.0.0.1:60341/usage-panel/api/summary?days=30"

正常返回 {"ok":true,...} 形態的摺疊 summary。加 ?refresh=1 可繞過約 20 秒的緩存。

本地開發預覽(不依賴 GUI 反覆刷新時可跑 dev/preview.mjs):

node dev/preview.mjs zh --shot assets/preview-zh.png
node dev/preview.mjs en

node dev/preview.mjs zh --sample --shot assets/preview-zh.png
node dev/preview.mjs en --sample

node dev/preview.mjs zh --sample --panel

--sample 使用倉庫內合成數據集(README 截圖即此路徑);不帶 --sample 時會請求正在運行的 Host。Host 不在默認地址時,可設置 DSH_ORIGIN。

適用場景與注意

適合: 在本機 DSH 上長期跑 Session、需要 KPI、熱力圖、按模型/Provider/Session 排行,並偶爾導出 CSV/JSON 做離線分析的開發者。

限制(README Limits):

  • 僅本機 $DSH_HOME/sessions;不調用 Provider,看不到其他機器上的用量。
  • 只統計 Token,不推導金額(單價因 Provider 與時間變化)。
  • 僅統計帶 usage 的事件;Provider 開始上報 usage 之前寫入的 Session 可能消息數有、Token 爲 0。
  • 路由無獨立鑑權,與其他非 /api 的 web-server 路由一樣依賴 loopback 綁定;能訪問該端口的進程可讀本地 Token 彙總。

插件以當前 dsh 進程權限 讀取 Session 目錄並提供 HTTP 彙總。安裝前建議在 GitHub 查看源碼與 MIT 許可證,確認符合你的安全與合規要求。SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝來源以你信任的倉庫與 bundle 配置爲準。

結尾

dsh-usage-panel 把已在磁盤上的 Session usage 收成一頁可視化與可導出 summary,雙入口進同一頁面,Host 掃描緩存、Browser 複用設置殼主題。需要詳情時可查閱 SkillHub 目錄頁與 GitHub 倉庫:

  • https://www.skillhub.cn/plugins/AlexLin0803/dsh-usage-panel
  • https://github.com/AlexLin0803/dsh-usage-panel
羽毛球分组比赛记分
小程序二维码

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

小夜