dsh-session-view:把一次會話的負載、成本、時序和原文放進一個面板

前言

用 DSH 跑長會話時,最常見的幾個問題都藏在”這一次到底發生了什麼”裏:這一輪爲什麼慢、token 都花在哪個模型上、工具爲什麼失敗、429 是哪一次觸發的、模型實際看到的上下文和我以爲的是不是一回事。

現有的排查方式通常是翻本地會話日誌、手工統計 token、憑感覺壓時間軸,結論很難落到一條時間線上,也不容易導出留檔。dsh-session-view 做的事情是把負載、成本、時序和原文這幾件事合併到一個面板裏,按分區看,不需要在日誌和表格之間來回切。

下面介紹這個插件。

這是什麼

dsh-session-view(包名 @local/dsh-session-view)是一個 DSH 客戶端插件,維護者是 NAS1112,分類爲客戶端,社區目錄頁顯示 star 數爲 0。它在會話頁上方加了一個「工具 / 內容」兩個標籤,把一次會話的負載、成本、時序和原文放在一起看。

插件只讀本地會話日誌(~/.dsh/sessions/...),不發起網絡請求,不上報任何數據。價格、密度、脫敏開關等設置存在瀏覽器 localStorage。

核心功能

工具頁(四個分區)

  • 概覽:體檢結論(一句話判斷)、問題清單、重複調用檢測、工具分佈、失敗原因。
  • 成本:按模型的 token 結構與價格、子智能體自動彙總、手動補充、單價導入導出、配置基線。
  • 時序:時間軸(可縮放、可框選)、瀑布圖、輪次基線(Tukey 異常判定)、耗時分佈、輪次對比。
  • 運維:平均/峯值 TPM、平均/峯值 RPM、首字延遲 P95、限流事件(點開看每一次 429)。

明細:可搜索、排序、分頁的調用表 + 限流表,支持「原文」定位和「追問」回填。

內容頁

系統提示詞 / 提示詞組裝 / 上下文 / 用戶與助手消息,逐條可複製、可回填到輸入框。

通用

  • ⌘K 命令面板,緊湊/舒適密度切換。
  • 導出 Markdown / TSV / 單文件 HTML,HTML 可搜索排序,支持脫敏。

安裝與啓用

前置

需要 DSH 桌面版或 Web 版,且已有 profile 目錄 ~/.dsh/profiles/<profile-name>/(常見爲 desktop)。

步驟

1、先放到固定位置,不要放臨時目錄,DSH 會通過 link 引用這個路徑。

mkdir -p ~/dsh-plugins
# 方式一:git clone 本倉庫
git clone https://github.com/NAS1112/dsh-session-view.git ~/dsh-plugins/dsh-session-view
# 方式二:下載 zip 解壓
unzip dsh-session-view-*.zip -d ~/dsh-plugins
# 得到 ~/dsh-plugins/dsh-session-view/

2、把插件登記到 profile。編輯 ~/.dsh/profiles/<profile-name>/package.json,加兩處:

{
  "dependencies": {
    "@local/dsh-session-view": "link:/Users/<you>/dsh-plugins/dsh-session-view"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "...",
        "@local/dsh-session-view"
      ]
    }
  }
}

dependencies 裏的路徑必須是絕對路徑,指向解壓後的目錄;bundles 數組裏加上包名,DSH 啓動時纔會掛載它。

3、完全退出應用再打開,只刷新頁面不夠,bundle 列表在啓動時讀取。

4、驗證:打開任意會話,頁面上方應出現「工具 / 內容」兩個標籤,右上角有一行版本標記(如 2026-11-04 19:48)。

自檢(可選)

cd ~/dsh-plugins/dsh-session-view
node smoke.cjs              # 期望:ok: rendered tools tab / content tab
node jump-check.cjs         # 期望:高亮、篩選、提示各項斷言通過

兩個腳本都用樁 React 執行組件樹,不需要瀏覽器和真實數據。jump-check.cjs 需要本機存在一組會話日誌,否則會跳過數據相關斷言。

卸載

從 profile 的 dependencies 和 bundles 裏刪掉對應條目,刪掉目錄,重啓 DSH。

典型用法

  • 這輪怎麼這麼慢 → 「時序」頁:時間軸可縮放、可框選,瀑布圖定位最慢的工具調用,輪次基線(Tukey 異常判定)標出離譜的那一次。
  • token 都燒在哪了 → 「成本」頁:按模型拆 token 結構與價格,子智能體自動彙總,導入單價後與配置基線對比。
  • 工具爲什麼失敗 → 「概覽」頁的問題清單、失敗原因、重複調用檢測;「運維」頁的限流事件可以點開看每一次 429 的細節。
  • 模型到底看到了什麼 → 「內容」頁:系統提示詞、上下文與每條消息逐條還原,可複製、可回填到輸入框復現問題。
  • 留檔或分享 → 導出 Markdown / TSV / 單文件 HTML(自包含、可搜索排序、支持脫敏)。

入口:打開任意會話,頁面上方出現「工具 / 內容」兩個標籤;⌘K 呼出命令面板。

文件說明

文件 作用
package.json 插件清單:dsh.client 聲明客戶端入口,dsh.bundle.patch 指向 bundle 配置
index.js Host 側入口(空實現,渲染全在客戶端)
client.js 全部 UI 與數據計算,單文件
cordis.patch.yml bundle patch,向宿主注入 session-view 這一行
locale/en.json、locale/zh.json 語言包
icon.svg 圖標
smoke.cjs 冒煙測試:node smoke.cjs,驗證四個分區都能渲染
jump-check.cjs 跳轉回歸測試:驗證「原文」和「明細定位」落到正確位置

適用場景與注意

適合已經在用 DSH、需要事後復盤會話的開發者:想從一次會話裏讀出成本結構、慢調用位置、限流事件和真實上下文,而不是靠手工翻日誌。

需要注意兩點:一是插件以當前 DSH 進程的權限運行,能讀到該 profile 下的全部會話日誌,安裝前應先檢查源碼和許可證(package.json 聲明爲 MIT);二是它只做只讀分析,不修改日誌,也不發起網絡請求,導出報告是自包含 HTML、不含腳本外鏈。

結尾

dsh-session-view 的價值在於把一次會話的幾個關鍵維度收進同一個只讀面板,排查時不用再在日誌、表格和時間軸之間來回手工拼接。安裝前把源碼和許可證過一遍,裝好後用 smoke.cjs 和 jump-check.cjs 跑一遍自檢。

目錄頁:https://www.skillhub.cn/plugins/NAS1112/dsh-session-view
GitHub:https://github.com/NAS1112/dsh-session-view

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

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

小夜