🧠 核心能力

Agent Planning(Agent规划)

AI Agent将复杂任务分解为可执行步骤的核心推理能力

推理任务分解ReActPlan-and-ExecuteOpenClaw

⚡ 一句话解释

Agent Planning(Agent规划)是AI Agent将复杂任务分解为可执行子步骤,并按照逻辑顺序执行的能力。就像人类项目经理拆解任务一样,Agent需要先"想清楚怎么做",再"一步步去做"。这是区分"简单聊天机器人"和"真正Agent"的关键能力。

📖 什么是Agent Planning?

当你给Agent一个复杂任务——比如"帮我分析竞品网站,生成报告,发到飞书群"——Agent不会一股脑地乱试。它会先规划

  1. 确定需要分析哪些竞品网站
  2. 逐个抓取网站内容
  3. 分析对比关键指标
  4. 生成结构化报告
  5. 发送到指定飞书群

这种将复杂目标分解为有序子任务的能力,就是Agent Planning。

💡 Planning vs Reasoning:Planning关注"做什么、按什么顺序做"(战略层);Reasoning关注"怎么做这一步"(战术层)。好的Agent两者兼备。

🔄 主流Planning策略对比

策略核心思想优点缺点
ReAct推理-行动交替进行灵活、可纠错可能偏离目标
Plan-and-Execute先规划完整计划,再逐步执行全局最优、可控计划可能过时
Tree of Thoughts探索多条推理路径复杂问题表现好计算成本高
Reflexion执行后反思改进自我纠错能力强需要多次迭代
LATS蒙特卡洛树搜索+LLM搜索空间大延迟高、成本高

🚀 OpenClaw中的Planning实践

1. System Prompt中的隐式规划

OpenClaw通过SOUL.md和SKILL.md为Agent提供规划指导。Agent在接收任务时,会参考这些指导文件来制定执行计划。SOUL.md定义了Agent的行为模式和决策规则,SKILL.md提供了具体技能的执行流程。

2. update_plan工具 — 显式规划管理

OpenClaw内置了update_plan工具,让Agent可以显式地管理复杂任务的执行计划:

OpenClaw update_plan工具使用示例JSON
{
  "explanation": "开始执行竞品分析任务",
  "plan": [
    {"step": "搜索竞品网站最新动态", "status": "completed"},
    {"step": "抓取并分析关键页面", "status": "in_progress"},
    {"step": "生成对比报告", "status": "pending"},
    {"step": "发送到飞书群", "status": "pending"}
  ]
}

通过update_plan,Agent可以:

3. ReAct模式 — 推理与行动交替

OpenClaw的Agent采用ReAct模式,在每个决策点:

  1. 思考(Thought):分析当前状态,决定下一步
  2. 行动(Action):调用工具执行操作
  3. 观察(Observation):获取工具返回的结果
  4. 循环:基于观察结果继续思考和行动
ReAct执行流程示例文本
用户: 帮我分析竞品futuretools.io的最新动态

[Thought] 我需要搜索futuretools.io的最新内容
[Action]  web_search("futuretools.io latest news 2026")
[Observation] 搜索返回5条结果...

[Thought] 搜索结果不够详细,需要抓取网站首页
[Action]  web_fetch("https://futuretools.io")
[Observation] 获取到首页HTML,分析中...

[Thought] 已获取足够信息,开始生成报告
[Action]  write("competitor-report.html", report_content)
[Observation] 报告已保存

[Task Complete] 竞品分析报告已生成

✅ Planning最佳实践

✅ 推荐做法:
  • 复杂任务(3步以上)使用update_plan显式管理
  • 每步完成后更新状态,保持透明
  • 在计划中预留错误处理步骤
  • 动态调整计划——当新信息出现时更新后续步骤
  • 使用explanation字段说明当前进展
⚠️ 常见陷阱:
  • 过度规划 — 花太多时间在计划上,迟迟不动手
  • 计划僵化 — 执行中发现新信息却不愿调整计划
  • 粒度不当 — 步骤太粗("完成所有分析")或太细(每行代码一步)
  • 忽略依赖 — 步骤之间的依赖关系不清晰

🔗 相关术语