Skip to content

规划循环

一句话理解:规划循环按照 Plan → Execute → Observe → Replan 反复运转,直到完成、失败或触发兜底。

规划循环是 Planning 层的“心跳”。它把目标、计划、执行、反馈串联起来,使 Agent 能够在复杂、动态的环境中持续前进。

状态图

时序图

Plan 详解

输入

  • 结构化目标(Goal):用户想达成什么、约束条件、成功标准。
  • 上下文(Context):来自 Memory 的历史信息、用户偏好、环境状态。
  • 可用能力(Capabilities):工具/MCP 描述、Agent 能力清单。
  • 策略(Policy):成本预算、最大步骤数、是否允许人工介入。

输出

  • 结构化计划(Plan):包含步骤、依赖、执行顺序、预期输出、完成标准。

关键注意点

  • 计划必须可验证:每个步骤应有明确的完成标准,Observer 能据此判断成败。
  • 避免过度规划:不要一次性规划出过细的步骤,保留根据反馈调整的空间。
  • 约束前置:把硬约束(如不能访问某些数据、必须在某些时间窗口内完成)体现在计划生成阶段。

Execute 详解

输入

  • 当前计划
  • 调度器决定的下一个/下一批可执行步骤

输出

  • 每个步骤的执行结果(成功/失败/超时/部分成功)
  • 实际产生的副作用(如写入数据库、调用 API)

关键注意点

  • Executor 不重新解释目标:它只按计划执行,避免目标漂移。
  • 原子性:每个步骤应尽量原子化,失败时影响范围可控。
  • 幂等性:在可能失败并重试的场景下,步骤应设计为幂等。

Observe 详解

输入

  • 步骤执行结果
  • 原始工具输出
  • 环境状态变化

输出

  • 观测结论:是否成功、是否偏离预期、是否需要关注
  • 结构化指标:如准确率、延迟、成本、覆盖率

关键注意点

  • Observer 需要标准:不能只看“是否抛异常”,还要看“结果是否满足业务目标”。
  • 区分可恢复与不可恢复失败:网络超时可能是可恢复的,数据越权是不可恢复的。
  • 记录上下文:观测结论应包含足够上下文,供后续 Reflection 和审计使用。

Replan 详解

触发条件

触发条件说明示例
步骤失败工具调用返回错误或异常API 500、MCP 连接断开
结果不达标步骤成功但输出不满足成功标准模型生成代码未通过测试
环境变化外部状态影响后续计划目标服务已下线、数据已更新
新信息出现执行中获得原计划未考虑的信息发现新的相关数据源
用户修正用户中途改变目标或约束“再加一个条件”

重规划策略

  • 局部修复:只修改失败步骤及其直接依赖。
  • 子计划替换:重新生成某个子树。
  • 全局重规划:从头生成完整计划。
  • 跳过/降级:跳过非关键步骤,或用备选方案替代。

终止条件

规划循环需要明确的终止条件,否则可能无限循环。

终止条件说明
成功完成所有步骤完成且满足成功标准
失败兜底重规划次数耗尽、不可恢复错误、违反安全策略
人工终止用户或运维人员主动中断
成本/时间上限达到预算或超时阈值
无进展连续多次重规划仍未产生有效进展

回滚与补偿

当计划执行到一半失败时,系统需要决定是否回滚已完成的步骤。

回滚(Rollback)

回到上一个 checkpoint 的状态。适用于:

  • 失败步骤有副作用(如写入数据、修改配置)。
  • 重规划后的新计划与之前状态不兼容。

补偿(Compensation)

为已完成的步骤执行反向操作。例如:

  • 创建了资源 → 删除资源
  • 发送了通知 → 发送撤回或更正通知
  • 修改了配置 → 恢复配置

补偿比回滚更灵活,但也更复杂,需要在设计计划时就考虑。

人机协同(HITL)

在以下节点引入人工 gate,可以显著提升系统安全性:

  • 计划生成后:让用户确认或修改计划。
  • 高风险步骤前:如删除数据、修改生产配置、发起转账。
  • 重规划后:当系统决定大幅调整计划时,请求人工确认。
  • 失败兜底前:在自动终止前,给人工一次介入机会。

HITL 不应成为阻塞点,应提供同步等待、异步通知、预授权等多种模式。

失败模式

失败模式表现应对
重规划风暴频繁触发重规划,成本飙升、无进展设置冷却时间、最大次数、进展检测
计划粒度过细计划步骤过多,执行开销大、灵活性差采用骨架+细化的混合粒度
计划粒度过粗步骤模糊,Observer 无法判断成败每个步骤定义明确的输入输出与成功标准
目标漂移执行过程中逐渐偏离原始目标Goal Parser 固化目标,关键节点做一致性检查
不可恢复错误被重试安全/权限错误反复触发重规划在 Observer 中分类错误,标记不可恢复
状态不一致回滚或重规划后环境状态与计划假设不符每次重规划前读取最新环境状态

本章小结

  • 规划循环是 Plan → Execute → Observe → Replan 的反复过程。
  • 每个阶段都有明确的输入、输出和注意点;终止条件必须提前定义。
  • 回滚、补偿、HITL 是生产系统应对失败的必备机制。
  • 重规划风暴、计划粒度失衡、目标漂移等失败模式需要在设计时就加以防范。

参考来源

Released under CC-BY-SA-4.0 License.