dsh-pause-button:在 DSH 输入区旁暂停与恢复智能体任务

前言

在 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)

  1. 不中断当前步骤:正在进行的工具或模型请求允许跑完。
  2. 在下一个 agent/pre-step 边界,本轮在发起下一次模型请求前被挂起。
  3. 恢复时释放该 pre-step 决策,在同一轮内原地继续;已完成的步骤不会重做,也不会额外插入用户消息。
  4. 若任务在抵达下一边界前已结束,插件会说明未到达暂停点,而不会假装已暂停。

强制暂停(force / stop)

  1. 立即调用 agent.cancel({ kind: 'user' }, { keepInbox: true }),打断当前步骤并保留已完成历史。
  2. 恢复时发送一条续写提示,请模型从断点继续、不重做已完成工作。
  3. 因此强制恢复会在界面留下一条可见的用户角色消息;安全恢复则不会。

界面与命令

  • 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。

典型用法

  1. 长任务运行中,在 Composer 右侧点暂停按钮,或输入 /pause(行为与当前默认粒度一致)。
  2. 需要立刻打断当前工具/请求时,使用 /pause force 或 /pause stop。
  3. 确认方向后输入 /resume,或 /pause resume。
  4. 不确定当前状态时执行 /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,可访问目录页与仓库:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜