dsh-conversation-stats:DSH Web GUI 的會話統計插件

前言

在 DSH Web GUI 裏跑智能體任務時,一次會話可能包含多輪對話、多次工具調用和多次模型調用。輪數、步數、token 用量、緩存命中、LLM/工具耗時這些信息分散在會話日誌裏,逐條打開歷史會話不容易覈對。

dsh-conversation-stats 面向這個問題:在 DSH Web GUI 頂部新增「會話統計」tab,把會話數據從 ~/.dsh/sessions 下的會話日誌中解析出來,以總覽和明細兩種視圖展示。下面介紹它的能力、安裝方式和需要注意的點。

這是什麼

dsh-conversation-stats 是 DeepSeek Harness(DSH)Web GUI 的會話統計插件,由 wellcover 維護,許可證爲 MIT。

它會在頂部「對話」「軌跡」之後註冊 conversation.view tab,排在「對話」「軌跡」及用量插件的 tab 之後。頁面列出每個對話的輪數、步數、模型調用次數、token 用量(輸入 / 輸出 / 緩存),並彙總 LLM/工具耗時、模型分佈、結束原因;點擊會話可展開逐條模型調用明細與工具調用統計。

它不依賴常駐監聽,直接解析 ~/.dsh/sessions/**/session.jsonl.zstd,因此歷史對話與當前對話同樣可見。

核心功能

會話總覽

  • 會話總覽表包含:標題/片段、輪數、步數、調用、輸出 tok、輸入 tok、緩存 tok、緩存命中率、最後活躍。
  • 默認按最後活躍倒序。
  • 跨工作區會話一併列出,每行標註 cwd。
  • 彙總 chips 顯示:會話數、總輪數、總步數、總模型調用、總 token。

緩存命中率

v1.0.6 引入緩存命中率列:

命中率 = 緩存讀 /(輸入 + 緩存讀)

分子分母都爲 0 時顯示「—」。

會話明細

點擊某個會話後,可查看:

  • 會話信息卡
  • 工具調用表:次數、總耗時、失敗數
  • 逐條模型調用明細表:時間、模型、結束原因、輸入、輸出、緩存、工具

刷新與刪除

  • 頁面顯示掃描時間。
  • 支持手動「刷新」,頁面 60 秒自動刷新。
  • 列表結果緩存 30 秒,?refresh=1 可強制重掃。
  • v1.0.2 起,總覽表最右側有「刪除」列;點擊紅色確認彈層後,刪除對應會話目錄 ~/.dsh/sessions/…/<sessionId>,其中包括 session.jsonl.zstd。

加載歸檔會話

v1.0.3 起,總覽表有「加載」列。對已歸檔會話顯示綠色「恢復」按鈕,點擊後會話 id 從 DSH storages/workspace.json 的 global.archivedSessionIds 移除,使該會話重新出現在 DSH 對話列表。該操作需要重啓 DSH Web 後生效。

安裝與啓用

環境要求

  • Node 引擎要求:>=22
  • 插件會讀取當前 dsh 進程可訪問的會話目錄;安裝前應檢查源碼和 MIT 許可證。

從 GitHub 安裝

dsh plugin --profile web add github:wellcover/dsh-conversation-stats

如需鎖定穩定版本 tag:

dsh plugin --profile web add github:wellcover/dsh-conversation-stats#v1.0.6

從源碼打包安裝

cd dsh-conversation-stats
npm pack
dsh plugin --profile web add dsh-conversation-stats-1.0.6.tgz

重啓

裝完重啓 dsh web,或重新打開桌面應用。

手動安裝

如果沒有 pnpm,可以按下面步驟手動安裝:

1、把包裝拷到 ~/.dsh/profiles/web/node_modules/dsh-conversation-stats

2、在 profile package.json 的 dsh.profile.bundles 追加 "dsh-conversation-stats"

3、在 cordis.patch.yml 追加:

- insert:
    - id: conversation-stats
      name: 'dsh-conversation-stats'
      inject:
        - fs
        - webServer

4、重啓 dsh web

典型用法

1、打開 DSH Web GUI 頂部「會話統計」tab。

2、查看總覽表、彙總 chips 和會話明細。

3、需要重新掃描時,點擊「刷新」,或等待 60 秒自動刷新。

4、對已歸檔會話點擊「恢復」,然後重啓 DSH Web。

5、確認要刪除某段會話時,在總覽表最右側「刪除」列操作,並等待確認彈層。

數據口徑

  • 會話掃描路徑:$DSH_HOME/sessions,默認是 ~/.dsh/sessions。
  • 數據文件:.jsonl.zstd 會話日誌,直接解析,不做常駐監聽。
  • token 字段:inputTokens、outputTokens、cacheReadTokens、cacheWriteTokens;不同提供方可能缺少某些字段,缺省按 0 計。
  • 緩存命中率:緩存讀 /(輸入 + 緩存讀)。
  • 列表緩存 30 秒;?refresh=1 強制重掃;頁面 60 秒自動刷新。

適用場景與注意

適合這類需求:

  • 需要在 Web GUI 裏快速覈對多段 DSH 會話的輪數、步數和 token 用量。
  • 需要查看工具調用耗時、失敗數、模型調用明細和結束原因。
  • 需要管理歷史會話,包括刪除會話或恢復已歸檔會話。

注意:

  • 插件以當前 dsh 進程權限運行,會讀取並可能刪除會話目錄;安裝前建議先閱讀源碼,確認許可證爲 MIT。
  • 若 DSH_HOME 指向別處或 ~/.dsh/sessions 爲空,列表可能爲空。
  • 若頂部沒有「會話統計」tab,先確認 profile bundles 包含本包,並重啓。
  • 若提示會話統計加載失敗,檢查 cordis.patch.yml 中是否存在本插件行,且 inject 包含 fs 和 webServer,然後重啓。
  • 刪除會話會刪除對應目錄,不是僅從界面隱藏。
  • 恢復歸檔會話必須重啓 DSH Web 後生效。

鏈接

GitHub: https://github.com/wellcover/dsh-conversation-stats

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

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

小夜