在 DSH Web UI 中進行長對話時,快速定位特定的用戶提問往往需要多次滾動。dsh-conversation-nav 插件在對話右側生成一條「問題導航」豎條,解決這一導航痛點。
這是 Fiker1203 維護的 DSH Web UI 插件。它在對話右側生成一條序號清晰的豎條,列出當前會話中的每條用戶提問。懸停可預覽內容,點擊可平滑跳轉。
核心功能¶
- 消息識別:自動識別當前會話中的每條用戶消息(
[data-chat-flow-kind="user"])。 - 右側導航:在對話右側生成豎向問題導航,序號清晰,窄條不遮擋聊天區。
- 預覽與跳轉:懸停或鍵盤聚焦時展開預覽卡片,顯示「第 N 問」和提問文本;點擊序號平滑滾動到目標消息並閃爍高亮。
- 滾動監聽:頁面滾動時自動高亮當前正在瀏覽的問題。
- 動態渲染兼容:響應 React 動態渲染,支持加載更早消息、切換會話、虛擬滾動時的自動更新。
- 貼底滾動兼容:適配 DSH 聊天區的「貼底滾動」邏輯。
- 主題適配:適配女僕主題(maid-atelier)。
- 淺色模式:使用象牙白 / 海軍藍 / 金色描邊。
- 深色模式(
data-ds-dark-theme):使用深海夜藍 / 香檳金。 - 未啓用女僕主題時自動回退到 DSH 官方設計變量。
安裝與啓用¶
dsh plugin --profile web add github:Fiker1203/dsh-conversation-nav
安裝後重啓 Web UI,並硬刷新瀏覽器(Ctrl+Shift+R)。
典型用法¶
- 懸停序號 → 展開預覽卡片,查看該問題內容。
- 點擊序號 → 平滑滾動到該問題並高亮。
- 向上/向下滾動對話 → 導航條自動高亮當前所在問題。
結構與維護¶
插件主要包含以下文件:
- index.js:host,無主機行爲(瀏覽器專用)。
- client.js:browser,注入右側問題導航 UI 及跳轉/預覽邏輯。
- cordis.patch.yml:插入 conversation-nav 條目。
- package.json:聲明 dsh.bundle 和 dsh.client。
維護注意:用戶消息選擇器定義在 client.js 開頭的 USER_NODE_SELECTOR。若 DSH 改版導致用戶消息 DOM 標記變化,更新該選擇器即可。
注意事項¶
- 插件只讀取頁面 DOM,不發送任何數據。
- 安裝前建議檢查源碼與許可證(MIT)。