在 DSH Web 的使用場景中,用戶往往需要對助手回答中的某一段具體文本進行追問。如果直接在主對話中追加消息,會破壞當前的流式輸出和上下文連貫性;如果開啓新的會話,則過於沉重且難以回溯。dsh-ask-in-sidebar 插件通過創建一個臨時的、隔離的側邊欄,解決了這一痛點。
這是一個由 Ruiming-cn 維護的聯網工具類插件。它允許用戶在主對話中選中助手文本後,在右側面板中基於主對話的快照進行提問和討論,且不修改主對話內容。
核心功能¶
- 選區交互:在主 DSH 對話中選中助手回答中的任意文本(方案、術語、解釋等),選區旁會出現一個浮動操作按鈕“在側邊欄提問”。
- 側邊欄面板:點擊按鈕後,右側會打開一個臨時面板。面板內顯示引用的選中文本、問題輸入框,以及持續更新的討論記錄和實時流式輸出。
- 思考過程展示:面板中支持展示可摺疊的思考過程,並顯示思考時間、首字時間、總耗時和 token 用量(可用時)。
- Markdown 渲染:回答內容以 Markdown 安全渲染,支持標題、列表、行內代碼、代碼塊、引用、鏈接和表格。
- 快照機制:首個問題基於主對話在發起提問時的已有 LLM 消息歷史快照 + 引用文本進行回答。同一側邊欄討論內支持連續追問。
- 狀態管理:關閉面板即丟棄當前討論及其 host 端內存快照。重新選中其他助手文本發起新提問時,會建立新的討論並重新獲取主對話上下文快照。
安裝與啓用¶
該插件要求本地 DSH Web profile,以及 Node.js 20+ 環境。
安裝命令:
dsh plugin --profile web add github:Ruiming-cn/dsh-ask-in-sidebar
也可以通過以下方式安裝:
* 從固定版本 Release 安裝:
dsh plugin --profile web add https://github.com/Ruiming-cn/dsh-ask-in-sidebar/archive/refs/tags/v0.2.0.tar.gz
- 從本地檢出構建後安裝:
npm run build
dsh plugin --profile web add /path/to/dsh-ask-in-sidebar
典型用法¶
- 打開 DSH Web 對話。
- 選中助手回答中的一段文本。
- 點擊出現的“在側邊欄提問”按鈕。
- 在面板的問題輸入框中輸入問題(例如“爲什麼這麼做?”或“這是什麼意思?”),按 Enter 或點擊“發送”。
- 在面板中閱讀回答,並可繼續追問。
- 隨時關閉面板返回主對話。
適用場景與注意¶
適用場景:適合需要對特定技術細節進行深入探討,且不希望打斷主對話流,也不希望引入複雜工具調用的場景。
重要注意:
- 上下文複用:模型上下文跟隨主會話。主對話很長時,側欄請求也會較大,因爲完整派生歷史會被複用。
- 權限限制:插件不向側欄模型提供任何工具,因此無法從面板調用 host 工具或修改工作區。
- 渲染限制:Markdown 渲染是輕量實現,未覆蓋全部 Markdown 擴展語法(例如複雜表格嵌套、腳註、任務列表等)。
- 進程內狀態:臨時快照是進程內狀態。Host 重啓後快照會丟失;重啓後的追問會回退到當前主對話上下文快照。
- 技術依賴:面板是純 DOM 浮層,不是 DSH 原生 slot,依賴當前 Web UI 的
data-chat-flow-kind="assistant-step"對話 DOM 約定。
總結¶
dsh-ask-in-sidebar 爲 DSH Web 用戶提供了輕量級的上下文追問能力。通過快照機制和獨立的側邊欄視圖,它在保持主對話完整性的同時,提供了針對性的討論空間。