dsh-convmap:對話地圖插件

前言

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 進程權限運行,安裝前建議檢查源碼與許可證。

參考資料

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

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

小夜