前言¶
在 DSH 的插件化做法裏,一些界面增強能力可以單獨安裝。dsh-message-navigator 解決的是網頁聊天界面中“對話太長、回到某條用戶輸入不方便”的問題:它在界面右側提供一條垂直消息索引,把每條用戶輸入映射爲可點擊的 marker,點擊後可跳轉,滾動時也會即時高亮當前閱讀位置。
這是什麼¶
dsh-message-navigator 是 TableRogue 維護的 Client-only DSH 插件,許可證爲 MIT,版權標記爲 © 2026 TableRogue。
它面向 DeepSeek Harness 網頁聊天界面,在右側邊緣增加一個輕量消息索引:
- 每條用戶輸入對應一個 marker;
- 點擊 marker 可平滑跳轉;
- 滾動時,當前閱讀位置對應的高亮 marker 會即時更新;
- AI 流式輸出期間不生成 marker;
- 不替換現有界面,UI 掛載在
shell.overlay層。
核心功能¶
點擊跳轉¶
點擊 marker 後,通過 scrollIntoView 將目標消息平滑居中。如果目標已經在視口附近,會跳過動畫,並且不產生橫向位移。
滾動同步¶
滾動同步以視口 40% 處作爲閱讀線,即時高亮對應 marker。該滾動路徑採用純算術計算,不觸發額外 DOM 查詢,也不觸發 re-render。
Hover 預覽¶
將鼠標懸停在 marker 上時,會顯示一個統一寬度的 tooltip 卡片:
- 寬度爲
240px; - 文本控制在 1–2 行,超出省略。
動態同步¶
以下操作發生後,索引會自動重建:
- 新消息進入;
- 消息刪除;
- 加載歷史消息;
- 切換會話。
AI 流式輸出不會生成 marker,只在對應消息穩定後參與索引。
穩定標識¶
marker 與消息通過 data-chat-flow-key 一一對應,該字段內含 messageId。跳轉和高亮不依賴 DOM 順序索引,因此在消息新增、刪除或歷史加載時更穩定。
性能與響應式¶
- 幾百條消息下仍可流暢使用;
- 窗口寬度
≤1100px時隱藏 tooltip; - 窗口寬度
≤880px時隱藏整個導航組件。
安裝與啓用¶
GitHub 安裝¶
dsh plugin --profile web add github:TableRogue/dsh-message-navigator
本地安裝¶
如果已經獲取本地目錄,可以使用本地安裝命令:
dsh plugin --profile web add ./dsh-message-navigator
驗證配置¶
安裝後,可以查看當前 web profile 的配置,確認插件層已經出現:
dsh --profile web --dump-config
輸出中應看到:
# == dsh-message-navigator 層
卸載¶
dsh plugin --profile web remove dsh-message-navigator
典型用法¶
安裝後啓動¶
完成安裝後,啓動 web profile:
dsh --profile web
進入網頁聊天界面後,右側會出現垂直消息導航條。
點擊 marker 跳轉¶
在右側導航條上點擊任意 marker,對應消息會被平滑滾動到視口中心附近。
滾動時查看當前位置¶
在聊天區域上下滾動時,導航條上的高亮 marker 會跟隨當前閱讀位置變化,可用於快速確認自己正處於哪條消息附近。
臨時方式¶
README 同時提供動態插件臨時方式:把 src/client.js 頭註釋以下的內容填入 cordis_define 的 code.client,再執行 cordis_run。具體操作可參考該文件頭註釋。
適用場景與注意¶
適合以下場景:
- 超長對話中需要快速回到某條用戶輸入;
- 希望在現有網頁聊天界面上增加一個只讀導航入口;
- 不想替換原有界面,只做輕量增強;
- 本地鏈接安裝時,希望修改源碼後重啓即生效。
使用前需要注意:
- 插件會以當前
dsh進程權限運行,安裝前應檢查源碼與許可證; - 它依賴產品自身的穩定錨點,例如
data-conversation-scroll、data-chat-flow-key、data-chat-flow-kind等; - 產品改版後,可能需要同步更新選擇器;
- 該插件只讀使用這些錨點,不替換現有界面;
- 小窗口下組件會按規則隱藏,屬於響應式行爲,不是安裝失敗。
鏈接¶
社區目錄頁:
https://www.skillhub.cn/plugins/TableRogue/dsh-message-navigator
GitHub 倉庫: