Description 目标问题(Why)
当前痛点:计划模式已经能够在会话中生成带 plan_id 与 revision 的 draft 计划,但 Web 端缺少一条经 Gateway 显式批准计划的稳定 RPC 通道,客户端只能继续发送普通文本来推动执行,无法把“用户批准的计划 revision”作为可校验的控制面动作记录下来。
触发场景:用户在 Web Chat 中查看最新 draft 计划后,希望明确同意该计划,并选择以 default 或 bypass 权限模式进入 build 执行阶段。
影响范围:该问题跨越 Web、Gateway、CLI bridge 与 Runtime。若没有统一 RPC,前端容易绕过 Gateway 边界或把计划审批语义混入普通聊天输入,导致计划 revision 过期、计划 ID 不匹配、状态非 draft 等异常无法被稳定映射为协议错误。
设计方案(How)
核心设计:新增 gateway.approvePlan JSON-RPC 方法与 approve_plan Frame Action,参数包含 session_id、plan_id、revision,只允许批准当前会话中匹配的 draft 计划 revision。
关键机制:
Gateway 负责鉴权、ACL、参数校验、运行时超时、错误码映射与 ack 返回。
Runtime 保持计划状态判断与批准逻辑的唯一来源,返回可识别的计划审批业务错误。
CLI bridge 仅做 Gateway 输入到 Runtime ApproveCurrentPlan 的适配,不在 Gateway 或 Web 中内嵌 Runtime 细节。
Web 端在最新 draft 计划下展示审批入口;审批成功后再发起 build 模式执行,失败时保留可重试状态。
边界与非目标:
不改变计划生成、计划展示和 todo bootstrap 的既有语义。
不引入跨层直连,Web 不直接访问 Runtime 或 Session。
不把 provider 差异或模型厂商字段引入 Gateway、Runtime 或 Web 协议。
不在本提案中扩展多计划历史管理、计划回滚或批量审批能力。
落地清单(What)
验收标准(Done)
风险与回滚
风险:新增 RPC 若参数校验不严格,可能批准过期计划 revision 或跨会话计划;Web 若把审批和执行耦合过深,可能在执行失败时造成用户无法重试。
回滚方案:移除 gateway.approvePlan 方法、approve_plan Frame Action、Web 审批入口与相关文档,恢复为用户通过普通输入推动计划执行;Runtime 既有计划生成和展示链路不受影响。
Reactions are currently unavailable
You can’t perform that action at this time.
目标问题(Why)
plan_id与revision的 draft 计划,但 Web 端缺少一条经 Gateway 显式批准计划的稳定 RPC 通道,客户端只能继续发送普通文本来推动执行,无法把“用户批准的计划 revision”作为可校验的控制面动作记录下来。default或bypass权限模式进入 build 执行阶段。设计方案(How)
gateway.approvePlanJSON-RPC 方法与approve_planFrame Action,参数包含session_id、plan_id、revision,只允许批准当前会话中匹配的 draft 计划 revision。ApproveCurrentPlan的适配,不在 Gateway 或 Web 中内嵌 Runtime 细节。落地清单(What)
gateway.approvePlan方法、参数类型、Frame Action、请求归一化与 payload 校验。invalid_action。approvePlan调用,Chat 面板展示计划审批操作、执行入口和失败重试。验收标准(Done)
gateway.approvePlan在已认证 WebSocket 控制面请求中可通过 ACL,并返回approve_planack。session_id、缺失plan_id、revision <= 0等输入能返回稳定协议错误。invalid_action,不会暴露内部错误细节。default或bypass权限模式。风险与回滚
gateway.approvePlan方法、approve_planFrame Action、Web 审批入口与相关文档,恢复为用户通过普通输入推动计划执行;Runtime 既有计划生成和展示链路不受影响。