前言¶
DeepSeek Harness(DSH)在長對話場景下常面臨導航困難的問題:默認視圖受客戶端分頁窗口限制,難以快速定位早期的對話輪次。dsh-convmap 是一個爲此設計的 Web 插件,它通過在主對話區左緣渲染刻度,解決了長會話的索引與跳轉痛點。
是什麼¶
這是一個在 DSH 主對話區左緣中部渲染「對話地圖」的插件。每條刻度對應一輪用戶提問。它提供懸停預覽、點擊跳轉和滾動高亮功能,並針對長會話做了性能優化。
核心功能¶
- 全量輪次刻度:直接讀取會話完整日誌,覆蓋所有輪次,不受客戶端分頁窗口限制。
- 代理自跑的輪次也有刻度:只要有用戶消息,就會生成刻度;整輪無人發言時,使用第一條注入消息(如通知)生成刻度。
- 先畫後補:優先渲染已渲染的輪次,待 host 返回全量日誌後再合併,長會話冷啓動時刻度不會爲空。
- Hover 梯度展開:鼠標劃過刻度區時,鄰近刻度按距離梯度展開,右側浮出預覽卡。
- 刻度多也跟手:性能優化,支持幾百條刻度。Hover 渲染僅修改 7 條刻度的 CSS 變量,預覽卡內容按 120ms 限頻更新。
- 預覽卡可停可滾:預覽卡按位置決定顯示與否,支持鼠標滑入查看完整內容。提問標題固定,回覆正文可滾動查看。
- 點擊跳轉:點擊刻度跳轉到對應輪次。若目標輪次未渲染,會自動分頁加載後再跳轉。
- 滾動高亮:滾動對話時,當前可視輪次的刻度自動高亮。
- 鍵盤可達:支持 Tab 聚焦,使用 ↑/↓/Home/End 移動,Enter 跳轉。
- 無干擾:不攔截周邊交互,預覽卡顯示期間僅爲了接收滾動事件。
安裝與啓用¶
安裝腳本會自動將插件寫入 ~/.dsh/profiles/web/package.json 並註冊到 bundles 中。
curl -fsSL https://raw.githubusercontent.com/GeekRicardo/dsh-convmap/main/install.sh | bash
安裝完成後重啓 DSH Web 進程:
pm2 restart dsh-web
卸載¶
使用安裝腳本提供的卸載功能:
bash install.sh --uninstall
前置條件¶
- 已初始化 DeepSeek Harness web profile(目錄
~/.dsh/profiles/web存在)。 - 環境需滿足 Node.js >= 20 和 pnpm。
工作原理¶
插件分爲 Host 和 Client 兩部分協同工作。
Host 職責:
註冊同源路由 GET /dsh-convmap/turns,使用 sessionPersistence.readRaw 讀取原始日誌文本。按行解析所有輪次,重建 key 爲 13:input-message<messageId>(與 DOM 錨點對應)。在提取階段將提問截取到 200 字,回覆截取到 800 字(上限)。
Client 職責:
在 conversation.input.overlay 槽位掛載刻度組件。將已渲染輪次與 host 全量輪次合併。使用 data-conversation-scroll 和 data-chat-anchor-key 定位對話滾動容器和目標行。
對於未渲染的老輪次,通過 sessions.binding(sessionId).session.loadOlder() 逐頁加載後再跳轉。
適用場景¶
適用於需要頻繁查閱長會話歷史上下文、進行多輪調試或回顧長對話內容的開發者。插件以當前 DSH 進程權限運行,安裝前建議檢查源碼與許可證。