一句话结论
OMP 的 /pause 不是 cancel-all:它允许已开始的 provider stream / tool call 正常完成,然后在下一次 model call 或 tool call 前停住主 Agent、in-process subagent 和 advisor;resume 后原队列继续。
这是很有价值的 operator control primitive。OpenPI 可以研究对应能力,但正确位置应优先是 Pi agent loop seam;不能靠各 extension 分别打一个 pause flag 来伪装原子全局暂停。
固定证据
对比固定在:
- OpenPI
main@2a69d3f32994da4123f1312b7fa84ef3d6119be1
- OMP
main@151dc754e8cd9314721aa6c78a168a205a4b0e4c
OMP 当前:
OpenPI 当前:
- control surface 分散为
subagent_cancel、workflow_stop、bg_kill,分别属于不同 owner:owned control tools
- 这些是终止单个/一组 owner work 的命令,不是“让 Pi main + 所有 child 在安全边界暂时静止”。
- OpenPI extension 无法仅凭自身证明在 Pi provider/tool dispatch 前建立全局 gate。
为什么值得讨论
暂停与取消解决不同问题:
- 用户发现环境、凭证、branch 或需求需要先确认,但不想杀掉长时间调查;
- 多个 child 正在运行,需要先阻止它们继续发起新模型/工具动作,再逐个检查;
- provider 429、成本异常或外部系统故障时,希望立即阻止新的请求,同时让已开始的写操作完整结算;
- operator 想获得一个稳定观察窗口,而不是和持续变化的 dashboard 竞速。
这属于 operator authority 和 runtime lifecycle,不是模型判断。
OpenPI 应保留的优势
- Pi 是所有 in-process Session 的 owner;暂停原语应位于 Pi loop,而不是 OpenPI 第二控制面;
- pause 不改变 Task/Goal/Workflow canonical status;
- 不把 pause 当 success、cancel 或 quiesced receipt;
- 不自动恢复;恢复必须来自明确 operator action 或调用方协议;
- Background Terminal 是外部 process,是否继续运行必须单独定义,不能假装 Pi Agent gate 已暂停它。
需要先设计的边界
- scope:当前 Session tree、当前 Pi process,还是所有 OpenPI-owned external process?
- safe boundary:provider request 前、tool execute 前、child spawn admission 前、completion-triggered wake 前;
- 已开始的 mutating tool、Workflow sandbox、Background Terminal 是否完成、冻结或只禁止后续步骤;
- paused 时新 user input 是排队、允许 control command,还是隐式 resume?
- cancel/interrupt while paused 如何只终止目标,不释放其他 Agent;
- RPC/ACP/print 模式如何表示 paused,不制造永远 busy 的客户端状态;
- shutdown 时是否自动释放 waiters,且不能因此启动新工作;
- operator 如何看到“已请求 pause”与“所有 scope 已实际 parked”的区别。
非目标
- 不用 pause 代替 cancel/kill;
- 不暂停 OS 进程或线程;
- 不在任意 tool 中间强行冻结;
- 不由模型自动触发;
- 不让 extension monkey-patch Pi internals;
- 不声称按下 pause 时所有 Agent 已瞬间静止。
完成条件
与现有 Issue 的关系
一句话结论
OMP 的
/pause不是 cancel-all:它允许已开始的 provider stream / tool call 正常完成,然后在下一次 model call 或 tool call 前停住主 Agent、in-process subagent 和 advisor;resume 后原队列继续。这是很有价值的 operator control primitive。OpenPI 可以研究对应能力,但正确位置应优先是 Pi agent loop seam;不能靠各 extension 分别打一个 pause flag 来伪装原子全局暂停。
固定证据
对比固定在:
main@2a69d3f32994da4123f1312b7fa84ef3d6119be1main@151dc754e8cd9314721aa6c78a168a205a4b0e4cOMP 当前:
/pause只在 interactive TUI 可用,process-global gate 覆盖 main、in-process subagents、advisor;in-flight work 不 abort,新工作不开始:command contractOpenPI 当前:
subagent_cancel、workflow_stop、bg_kill,分别属于不同 owner:owned control tools为什么值得讨论
暂停与取消解决不同问题:
这属于 operator authority 和 runtime lifecycle,不是模型判断。
OpenPI 应保留的优势
需要先设计的边界
非目标
完成条件
与现有 Issue 的关系
subagent_wait阻塞主会话,已关闭