前言¶
DeepSeek Harness (DSH) 的插件生態支持對客戶端的輕量級擴展。在長對話場景下,快速定位歷史指令和回填已發送內容是常見需求。dsh-message-jump 插件通過在會話區提供懸浮導航條和終端式的鍵盤歷史穿梭功能,解決這兩個痛點。
該插件由 TiChuXiXi 維護,採用 MIT 許可證。它是一個同時聲明 dsh.bundle.patch(host 層)與 dsh.client(瀏覽器層)的包,旨在不依賴私有接口的前提下,增強 web 端的消息瀏覽與輸入效率。
功能概覽¶
指令導航條¶
在會話區左側或右側邊緣常駐一個懸浮導航條(Codex 時間線風格):
- 滾動聯動定位:每條已發送的用戶指令對應一個刻度。深色刻度表示當前位於視口頂部的指令,滾動時實時更新。
- 懸停預覽:鼠標懸停在刻度上時,會產生寬度過渡的漣漪效果,並在旁側浮出指令內容預覽。
- 點擊跳轉:點擊刻度平滑滾動到對應消息(距頂部 16px 停靠)並閃爍高亮。
- 全歷史覆蓋:讀取本地會話完整事件日誌,覆蓋所有用戶指令。即使聊天視圖未加載的歷史部分,也會以“幽靈態”顯示刻度。點擊未加載的刻度會自動觸發“加載更早”直到該指令進入窗口。
- 位置可配置:在設置 → 常規中切換“指令導航條位置”(左/右),並持久化到
localStorage。
歷史消息穿梭¶
在消息輸入框聚焦時,利用鍵盤 ↑/↓ 鍵快速回填歷史指令:
- 終端式交互:按 ↑ 回退,按 ↓ 前進。
- 草稿保護:進入穿梭前輸入框的內容會被暫存。退出時(按 Esc 或翻到最新後按 ↓)完整還原。穿梭中直接打字會自動退出穿梭模式。
- 智能讓位:當輸入框忙碌、只讀、開啓輸入法或彈出菜單時,方向鍵不會被劫持,原有交互不受影響。
- 狀態提示:穿梭時輸入框上方會顯示
歷史消息 ↑↓ n/m · Esc 退出的提示條。
安裝¶
使用官方命令安裝插件:
dsh plugin --profile web add dsh-message-jump
安裝完成後,重啓 dsh web 生效。
使用方法¶
指令導航條¶
- 打開任意會話,導航條默認顯示在會話區右緣。
- 滾動聊天,觀察深色刻度標記當前指令。
- 鼠標懸停刻度查看內容預覽,點擊刻度跳轉定位。
- 在設置中切換“指令導航條位置”爲左側。
歷史消息穿梭¶
- 聚焦消息輸入框。
- 按 ↑ 回填最近一次發送過的內容,繼續按 ↑ 或 ↓ 翻閱歷史。
- 按 Esc 或翻到最新後繼續按 ↓ 恢復草稿。
- 穿梭中直接打字即可退出並開始編輯。
工作原理¶
插件的數據與定位不依賴私有接口,複用宿主現有的組件與數據源:
- 數據源:列表數據來自會話快照
ConversationSnapshot.chat(與useSession同源),通過sessions.binding(id).session訂閱。 - 完整歷史:通過 Package-private RPC
msgjump.fullHistory調用ctx.sessionQuery.readSession(sessionId)獲取本地完整日誌。 - 組件掛載:瀏覽器層通過
shell.overlay註冊懸浮導航條,通過settings.general.item註冊位置設置,通過conversation.input.dock註冊歷史穿梭提示條。 - 滾動機制:複用 DSH 聊天視圖的
data-chat-anchor-key錨點機制,通過[data-conversation-scroll]容器的bounding rect計算懸浮位置。
自定義¶
插件核心邏輯位於 lib/client.js。修改該文件並重啓 dsh web 可調整樣式與行爲:
- 間距與尺寸:
RAIL_PAD(貼邊間距)、BAR_W(刻度條默認寬度)、BAR_MAX_W(最大寬度)、BAR_H(條高)、BAR_GAP(條間距)。 - 視覺效果:懸停“寬度漣漪”的衰減半徑(
barWidth中1 - d / 3的分母)。 - 內容過濾:
collectItems和collectHistory中可放寬kind判斷,決定是否收錄context注入消息。
結尾¶
dsh-message-jump 通過 Codex 風格的導航條和終端式的鍵盤穿梭,爲 DSH 用戶提供了長對話管理的具體解決方案。如需查看源碼或提交反饋,請訪問 GitHub 倉庫。