前言¶
DeepSeek Harness (DSH) 的核心設計理念是「一切皆插件」。在長會話中定位特定提問,尤其是存在運行中插話或需要切換標籤頁時,操作較爲繁瑣。dsh-plugin-question-index 插件在主聊天區左緣提供問題刻度軌道,點擊提問即可自動滾動定位。
核心功能¶
- 問題刻度軌道:固定在主聊天區左緣,每個用戶問題對應一條短橫線。軌道內可獨立滾動,不撐爆頁面。
- 僅對話可見:只在「對話」Tab 展示,切換到「軌跡」等其他頁籤時自動隱藏。
- 原文浮層:鼠標移入某條橫線時,該線平滑延長,並在右側顯示完整問題原文。原文浮層可獨立滾動閱讀。
- 索引列表:按順序列出當前會話全部提問(含運行中插話發送的「插話」,帶角標)。
- 點擊定位:點擊問題後,會話內容平滑滾動到該提問所在行(約視口上方 1/4 處)。
- 鍵盤訪問:Tab 聚焦橫線後顯示摘要,Enter / Space 定位到對應問題。
安裝與啓用¶
使用官方安裝命令添加插件:
dsh plugin --profile web add github:antlordGit/dsh-plugin-question-index
安裝完成後重啓 dsh web(或等待補丁層熱重載)。
注意:React 不需要單獨安裝。客戶端 bundle 裏的
require("react")由 DSH shell 的模塊表提供。插件只做加法,註冊shell.overlay的一個列表條目,不替換任何產品 UI。
典型用法¶
- 快速定位:點擊左緣任一問題橫線,聊天內容會自動平滑滾動到該提問位置。
- 查看原文:鼠標移入某條橫線,橫線延長並在右側顯示完整問題原文,方便在長對話中快速回憶上下文。
工程實現要點¶
該插件通過增量槽位和輕量 DOM 橋接實現交互:
- 界面掛載:使用
slots.inject('shell.overlay', …)註冊全局浮層列表條目,隨 Fiber 卸載自動清理。 - 浮層託管:根節點設置
pointer-events:none,僅面板/按鈕恢復pointer-events:auto以保證交互。 - 數據來源:使用全局標準 props
useSessions獲取sessions.binding(id).session,數據零 Host RPC、零持久化。 - 跳轉錨點:利用聊天節點
key上的data-chat-anchor-key屬性,與產品滾動恢復契約對齊。 - 視圖切換:點擊定位時,若當前不在「對話」Tab,會自動點擊頭部第一個標籤按鈕(
order=0)切回對話。 - 樣式:引用
--dsw-alias-*主題令牌(如--dsw-alias-bg-overlay、--dsw-alias-brand-primary),支持明暗主題自動適配。
適用場景與注意¶
該插件適合需要頻繁查看長對話上下文、快速定位特定提問的場景。
注意:本插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。