前言¶
DSH 的 Web GUI 適合承載較長的多輪會話,但會話越長,回看某一輪問題的成本越高:用戶消息、模型回覆、運行上下文不斷累積,想確認前面某次提問或對應回覆,往往只能反覆滾動。
下面介紹 kiligzzz/dsh-session-nav。它是 DSH Web GUI 的一個會話內導航插件:每根鍵對應一條用戶消息,懸停可預覽該輪用戶消息與模型回覆,點擊可跳轉到對應位置。
這是什麼¶
dsh-session-nav 是 kiligzzz 維護的插件,許可證爲 MIT,用於 DeepSeek Harness Web GUI 的單個會話。
它基於 DSH 官方雙面插件機制(host + browser half),不侵入 DSH 源碼。插件把一輪對話壓縮成導航鍵:用戶消息佔鍵,模型回覆不單獨佔鍵,而是併入對應輪次的懸停預覽。這樣長會話裏的用戶問題可以集中顯示,減少來回滾動查找。
核心功能¶
- 爲單個會話提供多輪對話導航。
- 每根鍵錨定一條用戶消息;模型回覆不單獨佔鍵,併入對應輪次的預覽。
- 懸停顯示用戶消息單行省略,以及模型回覆最多 3 行。
- 當前查看內容對應的鍵隨滾動即時聯動高亮。
- 點擊目標消息時:目標消息已在加載窗口內,則平滑滾動直達;目標消息在窗口外時,自動調用官方分頁接口加載歷史,並定位到視口頂部。
- 導航鍵數據來自 host 端按需讀取的完整會話日誌,長會話可一屏看到全部用戶問題。
- 與即時快照合併時按消息 UUID 去重。
- 支持深淺色主題自適應。
安裝與啓用¶
環境要求:Node.js >= 18。
從 GitHub 安裝時執行:
dsh plugin --profile web add github:kiligzzz/dsh-session-nav
新裝插件後需要重啓 dsh web 實例,再刷新頁面。
本地開發時可以用 link 方式:
dsh plugin --profile web add link:<本目錄>
這種方式下,修改 lib/client.js 後刷新頁面即生效;修改 host 端 index.js 需要重載插件。
典型用法¶
啓用後,在 DSH Web GUI 的單個會話裏即可看到導航鍵。每根鍵代表一條用戶消息,按會話中的用戶消息生成。
懸停某根鍵時,可以看到該輪用戶消息的單行摘要,以及對應模型回覆最多 3 行內容。點擊任意鍵後,頁面會跳轉到對應消息;如果歷史尚未加載,插件會通過官方分頁接口加載更早內容,直到目標消息定位到視口頂部。
本地調試時,可以使用資料中給出的診斷入口:
window.__dssnNavDebug__
它會暴露 entryCount、fullCount、stats,便於通過 CDP 檢查。
本地開發常用命令:
pnpm install
pnpm test
pnpm lint
pnpm format
適用場景與注意¶
適合在 DSH Web GUI 中處理較長多輪會話、需要快速回看用戶問題和對應模型回覆的場景,例如調試智能體運行軌跡、覈對多輪上下文、定位某次提問後的回覆。
注意事項:
- 插件以當前
dsh進程權限運行,安裝前應檢查源碼與許可證。 - 插件聲明依賴包括
@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-slots、react、react-dom、cordis。 - 新裝插件後需要重啓
dsh web實例;只改lib/client.js時刷新頁面即可,改index.js需要重載插件。 - 倉庫聲明許可證爲 MIT,環境要求 Node.js >= 18。
結尾¶
dsh-session-nav 解決的是單個會話內“找到某輪對話”的問題:把用戶消息映射成導航鍵,把模型回覆併入預覽,並把歷史加載和定位串起來。
倉庫地址:
https://github.com/kiligzzz/dsh-session-nav