前言¶
用 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