前言¶
在 DSH Web 界面里跑长任务时,常见需求是「先停一下,确认方向再继续」,而不是直接取消整轮对话。手动点停止往往会打断正在执行的工具调用或模型请求,恢复时还可能重复已完成的步骤。下面介绍维护者 trammels51 发布的工作流类插件 dsh-pause-button:在 Composer 输入区右侧、发送按钮左侧提供一个小型暂停/恢复控件,并配套 /pause、/resume 命令,区分「安全暂停」(等当前步骤结束再挂起)与「强制暂停」(立即打断当前步骤)。
这是什么¶
dsh-pause-button(npm 包名同插件仓库名,当前资料版本 0.1.0,MIT 许可证)面向 DSH Web 场景:在 conversation.input.right 插槽放置 28×28 px 纯图标按钮,样式与 Composer 工具行一致;无运行任务时按钮变淡,运行中约 68% 不透明度,等待安全暂停边界时脉冲提示,已暂停时使用低饱和度蓝色。插件依赖 DSH 0.2.2-rc.1 至 0.2.x,需要宿主提供 webServer 与 agents 服务,不是无头或 ACP 专用插件。
核心功能¶
安全暂停(默认:safe / wait)¶
- 不中断当前步骤:正在进行的工具或模型请求允许跑完。
- 在下一个
agent/pre-step边界,本轮在发起下一次模型请求前被挂起。 - 恢复时释放该
pre-step决策,在同一轮内原地继续;已完成的步骤不会重做,也不会额外插入用户消息。 - 若任务在抵达下一边界前已结束,插件会说明未到达暂停点,而不会假装已暂停。
强制暂停(force / stop)¶
- 立即调用
agent.cancel({ kind: 'user' }, { keepInbox: true }),打断当前步骤并保留已完成历史。 - 恢复时发送一条续写提示,请模型从断点继续、不重做已完成工作。
- 因此强制恢复会在界面留下一条可见的用户角色消息;安全恢复则不会。
界面与命令¶
- Composer 旁按钮与裸
/pause遵循 Settings → General → Pause granularity 中的默认粒度。 /pause force(或stop)可单次覆盖默认;若已有待处理的安全暂停,亦可升级为强制暂停。/pause status可查看阶段、当前模式与默认模式。
命令一览(与 README 一致):
| 命令 | 作用 |
|---|---|
/pause |
按配置的默认粒度暂停 |
/pause force 或 /pause stop |
本次强制暂停 |
/pause safe 或 /pause wait |
本次安全暂停 |
/pause status |
显示阶段与模式 |
/pause resume |
同 /resume |
/resume |
恢复被挂起的任务 |
安装与启用¶
插件以当前 dsh 进程权限运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证,确认是否符合你的环境策略。
从 GitHub 安装:
dsh plugin --profile web add github:trammels51/dsh-pause-button
或使用预构建 release 包:
dsh plugin --profile web add https://github.com/trammels51/dsh-pause-button/releases/latest/download/dsh-pause-button.tgz
安装后若按钮未出现,刷新 Web 页面。
默认暂停粒度在 Settings → General → Pause granularity 中设置:
- Safe (wait):完成当前步骤后暂停,原地恢复。
- Force (stop):立即停止当前步骤,从断点续跑。
选项持久化在 $DSH_HOME/dsh-pause.json。
典型用法¶
- 长任务运行中,在 Composer 右侧点暂停按钮,或输入
/pause(行为与当前默认粒度一致)。 - 需要立刻打断当前工具/请求时,使用
/pause force或/pause stop。 - 确认方向后输入
/resume,或/pause resume。 - 不确定当前状态时执行
/pause status。
仓库 Verification 一节记录:在 Web GUI 中对子智能体 sleep 8 工具调用做安全暂停时,暂停在工具结束后、下一边界处挂起,恢复后同一轮继续并完成——可作为行为预期参考。
适用场景与注意¶
适合:在 DSH Web 里需要可控中断与续跑、又不想轻易丢历史的工作流调试与日常对话。
实现要点(便于排错):
- 主机侧
lib/index.js注册路由与命令,按 Session 维护状态;客户端lib/client.js约每 900 ms 轮询 Session 状态,页面隐藏时暂停轮询。 - 仅暂停当前寻址的 Agent,其 subagents 不会自动暂停。
- 安全暂停期间 Agent 状态仍可能显示为
running(同一轮被挂起);Stop/cancel 会释放挂起并结束该轮。 - 强制恢复因无「挂起的调用」可释放,会插入一条可见续写消息。
社区目录 SkillHub 插件页 与 GitHub 为独立信息来源,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,安装来源以你实际执行的 dsh plugin 命令为准。
结尾¶
dsh-pause-button 用最小 UI 和明确的两档暂停语义,把「等一步再停」和「立刻停」分开,减少误打断与重复劳动。需要进一步细节或提 issue,可访问目录页与仓库: