前言¶
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 仓库。