dsh-usage-android:Android 上可用的 DSH 會話 Token 用量統計(host 側)

前言

在桌面或 Web 上使用 DeepSeek Harness(DSH)時,社區裏已有不少「token 用量統計」類插件,多數帶 Web 面板或側欄入口。Android 版 DSH 引擎(@dsh-android/bundle-android)沒有 Web Client 層:引擎裏不包含 dsh-client-ui-slots、側欄 slot 等 UI 組合,App 是原生界面加 JSON-RPC。那些在 package.json 裏聲明瞭 dsh.client 的用量插件,裝到手機上通常也渲染不出來。

下面介紹維護者 Verchiel666 發佈的 dsh-usage-android:把「會話 token 用量統計」做成純 host 側只讀工具,在 Android 上可以直接用工具結果或命令行看報告,不依賴 Web UI。

這是什麼

dsh-usage-android 是會話 token 用量統計插件,分類屬於 DSH 生態中的客戶端側能力(零 UI 依賴)。它對應官方「創造模式」Demo #7「會話統計」要解決的一類問題,但落地形態是 host 工具,而不是 Web Client 面板。

數據來自 DSH 寫入的會話日誌,插件只讀本地文件、不聯網、不修改任何會話數據。

和常見用量插件的差別

截至 README 中 2026-11-06 的核對,npm 上查到的 5 個同類插件均聲明瞭 dsh.client(Web 面板、按鈕條或側欄等)。Android 引擎自述會裁掉 desktop/web 相關能力,因此在手機上更適合選用像 dsh-usage-android 這種僅註冊 host 工具、capabilities 爲 tools:register 與 fs:read 的插件。

若你在桌面或 Web 端,帶面板的用量插件可能更直觀;在 Android 上,本插件的定位是「能跑起來且信息夠用」的文本報告。

核心功能

插件註冊 host 工具 usage_report,可回答例如:

  • 指定時間範圍內總共消耗多少 token,輸入、輸出、緩存讀寫各佔多少;
  • 哪一天的用量最高,最近 N 天的趨勢(按天 sparkline);
  • 哪些會話最費 token(可限制 Top 條數,並帶輪次與調用次數);
  • 緩存命中率(cacheRead 相對 total 等);
  • 若你自己配置了單價,可顯示成本估算(不內置價格、不充當賬單);
  • 可選附帶一行 CPU 核數、load、內存佔用(includeSystem,默認開啓)。

掃描結果默認帶 30 秒 mtime 緩存;需要時可傳 refresh: true 強制重掃。

數據來源

DSH 將會話寫在:

<DSH_HOME>/sessions/<cwd-slug>/<sessionId>/session.v4.jsonl.zstd

每行一個事件。模型調用的用量在 assistant/message 事件的 data.usage 字段,形如:

{ inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens, totalTokens }

插件用 Node.js node:zlib 的 zstdDecompressSync 解壓後逐條累加。

工具參數

usage_report 支持:

參數 說明
range 1d / 7d / 30d / all(默認 7d)
groupBy day(默認)或 session
top Top 會話條數,1–20(默認 5)
session 按標題或 ID 關鍵詞過濾單個會話
refresh 跳過緩存強制重掃
includeSystem 是否附 CPU/內存行(默認 true)

安裝與啓用

插件是純 host 側,不需要 Web Client,也不需要額外構建工具。安裝前應自行查看倉庫源碼與 MIT 許可證;插件以當前 DSH 進程權限讀 DSH_HOME 下的會話文件。

方式一:profile patch(本機開發,指向源碼目錄)

在 $DSH_HOME/profiles/android/cordis.patch.yml 追加:

- insert:
    - id: usage
      name: /absolute/path/to/dsh-usage/index.mjs

name 必須是字面絕對路徑。不要寫成 name: !!js "...":!!js 表達式只在 entry 的 config 裏求值,寫在 name 位置會被當成模塊名導入,可能導致引擎無法啓動。

完成後完全退出 App 再打開,重啓引擎。

方式二:從 npm 安裝(便於分享)

npm install dsh-usage-android@0.1.0

在 App 的插件管理裏搜索並安裝 dsh-usage-android@0.1.0(README 要求安裝時帶版本號),然後重啓引擎。npm 包當前 package.json 版本爲 0.1.2,若以包管理器實際解析爲準,請以你安裝時選擇的版本與 App 內顯示爲準。

包聲明引擎要求:dsh >= 0.2.0。

典型用法

在 DSH 對話中讓智能體調用 usage_report,按需傳入 range、top、session 等參數即可得到文本報告。

README 中還提供了面向開發者的命令行示例(路徑需按本機倉庫位置調整):

node $HOME/work/dsh-usage/dev/cli.mjs 7d
node $HOME/work/dsh-usage/dev/cli.mjs all 論文

第二條示例中的「論文」用於按關鍵詞過濾會話。

適用場景與注意

適合在 Android 版 DSH 上需要查看會話 token 用量、趨勢和 Top 會話的開發者或日常用戶;不適合期望在手機裏看到 Web 熱力圖、側欄圖表的場景——本插件只輸出文本報告,不提供 UI 面板。

已知邊界(來自 README):

  • 僅支持 session.v4 格式日誌;格式變更需同步改插件。
  • 會話刪除後,對應歷史統計隨之消失。
  • 不內置任何模型單價;成本行完全依賴你自己配置。
  • Android 上報告形態爲文本(工具返回值或 CLI),沒有面板。

社區插件目錄見 SkillHub,與 DeepSeek / 幻方無官方從屬關係;倉庫與問題反饋:GitHub — Verchiel666/dsh-usage-android,目錄頁:SkillHub — dsh-usage-android。

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

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

小夜