前言¶
DeepSeek Harness (DSH) 採用插件化架構。在 Web UI 端,開發者有時需要更精細的交互控制,比如在生成過程中快速取消當前回合,或者在不打斷當前生成流的情況下追加指令。dsh-esc-enter 插件針對這些需求,提供了 opencode 風格的 UX 支持。
插件簡介¶
該插件由 Liangebra 維護,歸類爲客戶端插件,採用 MIT 許可證。它不包含宿主邏輯,純客戶端實現,主要解決兩個問題:一是通過 Esc 鍵取消運行中的任務,二是在輸入框 dock 槽中提供直觀的“追加”與“停止”按鈕。
核心功能¶
- Esc 取消當前任務
在 agent 運行時按下 Esc 鍵,會立即取消當前回合。該機制與“停止”按鈕完全一致,均調用Session.cancel(),且隊列中未執行的工作會保留到下一回合。 - Dock 槽追加與停止按鈕
插件掛載於conversation.composer.dock槽位。當ConversationSnapshot.running爲 true 時,會在輸入框旁渲染“追加”和“停止”兩個按鈕。
- 追加按鈕:調用inputActions.submit(),將當前輸入框草稿提交爲隊列指令。若草稿爲空,按鈕自動禁用。
- 停止按鈕:調用sessions.binding(sessionId).session.cancel(),用於中斷當前任務。
兩按鈕僅在運行中顯示,空閒時自動隱藏以保持界面整潔。 - Enter 行爲不重複實現
插件不會覆蓋 DSH 內置的“運行中按 Enter”的行爲。該行爲由 DSH 內置設置決定,可能是“追加指令”也可能是“打斷”。 - 空閒時不攔截 Esc
在 agent 空閒時,Esc 鍵不會觸發插件邏輯,命令菜單或彈層可以正常關閉。
安裝與啓用¶
在終端中執行以下命令安裝插件:
dsh plugin --profile web add github:Liangebra/dsh-esc-enter
安裝完成後,重啓 dsh web 服務,並在瀏覽器中執行硬刷新(Ctrl / Cmd + Shift + R)以加載更新。
典型用法¶
- 取消任務:當智能體正在生成回覆時,直接按下鍵盤上的 Esc 鍵,即可取消當前回合。
- 追加指令:在輸入框旁的 dock 槽中,點擊“追加”按鈕將當前草稿加入待發隊列;點擊“停止”按鈕則中斷當前回合。
- Enter 交互:運行中按下 Enter 鍵,具體行爲(追加或打斷)取決於 DSH 內置的設置。
適用場景與注意¶
該插件適合需要在 Web UI 中獲得更清晰任務控制反饋的開發者。
注意事項:
- 插件完全基於客戶端邏輯運行,無宿主後端邏輯。
- Esc 取消機制與停止按鈕共享同一底層路徑。
- 下載使用前,建議檢查源碼與許可證(MIT)。
結語¶
dsh-esc-enter 通過鍵盤快捷鍵和 UI 按鈕的結合,優化了 DeepSeek Harness Web UI 的交互體驗。更多細節可查閱社區目錄或 GitHub 倉庫。