dsh-message-jump: 會話導航與歷史穿梭增強

前言

DeepSeek Harness (DSH) 的插件生態支持對客戶端的輕量級擴展。在長對話場景下,快速定位歷史指令和回填已發送內容是常見需求。dsh-message-jump 插件通過在會話區提供懸浮導航條和終端式的鍵盤歷史穿梭功能,解決這兩個痛點。

該插件由 TiChuXiXi 維護,採用 MIT 許可證。它是一個同時聲明 dsh.bundle.patch(host 層)與 dsh.client(瀏覽器層)的包,旨在不依賴私有接口的前提下,增強 web 端的消息瀏覽與輸入效率。

功能概覽

指令導航條

在會話區左側或右側邊緣常駐一個懸浮導航條(Codex 時間線風格):

  1. 滾動聯動定位:每條已發送的用戶指令對應一個刻度。深色刻度表示當前位於視口頂部的指令,滾動時實時更新。
  2. 懸停預覽:鼠標懸停在刻度上時,會產生寬度過渡的漣漪效果,並在旁側浮出指令內容預覽。
  3. 點擊跳轉:點擊刻度平滑滾動到對應消息(距頂部 16px 停靠)並閃爍高亮。
  4. 全歷史覆蓋:讀取本地會話完整事件日誌,覆蓋所有用戶指令。即使聊天視圖未加載的歷史部分,也會以“幽靈態”顯示刻度。點擊未加載的刻度會自動觸發“加載更早”直到該指令進入窗口。
  5. 位置可配置:在設置 → 常規中切換“指令導航條位置”(左/右),並持久化到 localStorage。

歷史消息穿梭

在消息輸入框聚焦時,利用鍵盤 ↑/↓ 鍵快速回填歷史指令:

  1. 終端式交互:按 ↑ 回退,按 ↓ 前進。
  2. 草稿保護:進入穿梭前輸入框的內容會被暫存。退出時(按 Esc 或翻到最新後按 ↓)完整還原。穿梭中直接打字會自動退出穿梭模式。
  3. 智能讓位:當輸入框忙碌、只讀、開啓輸入法或彈出菜單時,方向鍵不會被劫持,原有交互不受影響。
  4. 狀態提示:穿梭時輸入框上方會顯示 歷史消息 ↑↓ n/m · Esc 退出 的提示條。

安裝

使用官方命令安裝插件:

dsh plugin --profile web add dsh-message-jump

安裝完成後,重啓 dsh web 生效。

使用方法

指令導航條

  1. 打開任意會話,導航條默認顯示在會話區右緣。
  2. 滾動聊天,觀察深色刻度標記當前指令。
  3. 鼠標懸停刻度查看內容預覽,點擊刻度跳轉定位。
  4. 在設置中切換“指令導航條位置”爲左側。

歷史消息穿梭

  1. 聚焦消息輸入框。
  2. 按 ↑ 回填最近一次發送過的內容,繼續按 ↑ 或 ↓ 翻閱歷史。
  3. 按 Esc 或翻到最新後繼續按 ↓ 恢復草稿。
  4. 穿梭中直接打字即可退出並開始編輯。

工作原理

插件的數據與定位不依賴私有接口,複用宿主現有的組件與數據源:

  • 數據源:列表數據來自會話快照 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 倉庫。

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

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

小夜