在使用 DeepSeek Harness (DSH) 處理長對話時,用戶往往需要頻繁地在歷史消息中定位自己提出的問題。依靠原生滾動條逐條查看效率較低。dsh-conversation-nav 插件通過語義化的導航按鈕,讓開發者或用戶可以按“用戶消息”爲單位快速跳轉,並自動處理歷史分頁。
插件簡介¶
這是一個 Web UI 插件,由 uigdwunm 維護。它爲 DSH Web 對話區提供了一組圓形導航按鈕:回到頂部、上一條用戶消息、下一條用戶消息、回到底部。
該按鈕欄懸浮在輸入框上方、對話內容右緣,並會替換產品自帶的單一“回到底部”按鈕。它不依賴哈希定位,而是通過屬性(如 data-chat-anchor-key)定位 DOM 元素,僅針對 user 和 steering 類型的消息進行跳轉,會跳過工具調用、上下文注入等其他過程節點。
核心功能¶
-
語義化導航
- 回到頂部:滾動到當前頂部,並持續翻頁加載更早歷史,直到真正的頂部。
- 上一條 / 下一條:跳轉到上一條或下一條用戶消息。如果目標超出當前已加載窗口,會自動觸發翻頁。
- 回到底部:直接跳轉到最新位置。
-
智能交互
- 目標錨點:跳轉後,目標消息會停留在視口頂部約 1/12 的位置。
- 自動顯隱:默認隱藏。當檢測到平均向上滾動速度超過 200 px/s 時出現;出現後 3 秒無操作自動隱藏,點擊任意按鈕會重置倒計時。
- 位置佈局:右對齊,距離輸入框 16px,在渲染前同步定位以避免閃爍。
-
狀態與兼容
- 內存狀態:僅使用頁面內存狀態,無持久化存儲(無 localStorage、IndexedDB 等)。
- 樣式自修復:樣式節點丟失時,插件會每 100ms 檢查 DOM 並重建樣式節點。
- 清理機制:插件卸載時會自動清理所有樣式、計時器和滾動監聽器。
安裝與啓用¶
安裝此插件需要使用 DSH 的 Web 配置文件(profile)。
1、執行以下命令安裝:
dsh plugin --profile web add dsh-conversation-jump
2、安裝完成後,重啓 dsh web 即可生效。
開發與擴展¶
本地開發:
npm install
npm run build
構建後的文件位於 lib/client.js。由於 profile 目錄下的 node_modules 是硬鏈接,重新構建會破壞鏈接,因此本地開發時需要先運行 npm run build,再執行一次安裝命令:
dsh plugin --profile web add file:/absolute/path/dsh-conversation-nav
其他安裝方式:
* 從 GitHub 安裝源碼:
dsh plugin --profile web add github:uigdwunm/dsh-conversation-nav
- 從預構建 Release 包安裝:
dsh plugin --profile web add https://github.com/uigdwunm/dsh-conversation-nav/releases/download/v0.1.5/dsh-conversation-jump-0.1.5.tgz
技術細節¶
- 定位方式:使用屬性
[data-conversation-scroll]、[data-chat-anchor-key]等定位,不依賴 URL 哈希。 - 翻頁機制:插件會查找
[data-chat-flow]內部的“加載更多”按鈕並模擬點擊,直到錨點數量增加。 - 組件結構:
index.mjs:主機部分(Web 端),爲一個空的apply函數,不注入任何宿主服務。src/client.ts:瀏覽器端邏輯,處理導航、分頁、定位和可見性策略。
注意事項¶
- 適用範圍:僅限 Web UI 插件。
- 分頁限制:如果主機界面從未渲染“加載更多”按鈕,插件將無法進行翻頁操作。
- 許可證:MIT。