任务分解的经典范式 · 和 ReAct「走一步看一步」到底差在哪

面试聊 Agent,绕不开一个问题:「给你一个复杂任务,你的 Agent 怎么把它拆开做?」 如果只答「用 ReAct 边想边做」,面试官往往会追一句:「任务步骤很多、还想省 token 时,你会怎么改?」 这时候能不能说清 Plan-and-Execute,基本就是初级和中高级的分水岭。这篇把它讲透,并和 ReAct 摆在一起对比。

核心思想:规划和执行,分成两个阶段

Plan-and-Execute(先规划后执行)的做法非常直白,一句话概括就是:先让模型一次性产出一份完整计划(一个有序的子任务列表),再拿着这份计划逐个执行下去。它把 Agent 的工作显式地切成两个角色:

  • Planner(规划器) :接到用户目标后,通盘思考,输出一个分好步骤的子任务列表,比如「1. 查 A 城天气 → 2. 查 B 城天气 → 3. 对比两地温度 → 4. 汇总成建议」;
  • Executor(执行器) :不再重新思考大局,只负责照单执行------按顺序把每个子任务交给工具或子模型完成,拿到结果填回去。

关键在于:整体计划在开工前就已经定好了。执行阶段基本是「照本宣科」,不需要每走一步都重新调用大模型去想「下一步该干嘛」。

对照组:ReAct 是「走一步看一步」

要理解 Plan-and-Execute 的价值,得先看它想改进谁------ReAct(Reason + Act)。ReAct 的节奏是一个不断循环的小步子:

ini 复制代码
# ReAct:每一步都重新想一次
loop:
    thought  = LLM(观察历史)     # 想:现在该干嘛
    action   = 选一个工具去调用   # 做:执行这一步
    observation = 工具返回结果     # 看:拿到反馈
    if 任务完成: break            # 没完成就带着新观察再想一轮

ReAct 没有「全局计划」这回事,它每走一步都要把全部历史喂回大模型、重新推理下一步 。好处是极其灵活------上一步的结果不对,下一步立刻能改方向;坏处是它视野短、话痨、贵:每一步一次 LLM 调用,历史越滚越长,token 蹭蹭涨,还容易在中途「想偏」绕远路。

Plan-and-Execute 则相反,把「想」集中到开头一次做完:

ini 复制代码
# Plan-and-Execute:先想全,再照做
plan = Planner(目标)             # 一次性产出完整子任务列表
for step in plan:               # 逐个执行,通常不再调大模型规划
    result = Executor(step)
    results.append(result)
answer = 汇总(results)

为什么先规划反而更好:全局视野 + 省 token

把规划提前,带来两个实打实的好处:

  • 全局视野,减少绕路:Planner 在动手前就纵览了整个任务,能安排合理的步骤顺序、避免 ReAct 那种「走到一半发现方向错了」的短视问题。步骤之间的依赖关系也看得更清楚。
  • 省 token、更快 :规划只用一次(可能用贵的大模型),执行阶段每步不必再把完整历史反复喂给大模型重新推理------很多实现里执行器用更小/更便宜的模型甚至纯工具调用即可。相比 ReAct 每步一次昂贵 LLM 推理,整体调用次数和上下文长度都显著下降。

一句记忆点:ReAct 把「思考」摊到每一步,所以灵活但费;Plan-and-Execute 把「思考」压到开头一次,所以省且稳,代价是计划一旦定死就不够随机应变。

代价:计划僵硬,遇到意外不会转弯

Plan-and-Execute 最大的软肋,正来自它的优点------计划是一次性定死的。一旦执行中出现规划时没预料到的情况,纯粹的「照单执行」就会翻车:

  • 某一步工具报错、返回空结果,后续步骤却还在按原计划硬跑;
  • 第 2 步拿到的信息本该改变第 4 步的做法,但计划早已写死,执行器不会自主调整;
  • 任务本身信息不全,开头根本无法制定出正确的完整计划。

工程上的常见补救是引入 Re-planning(重规划) :执行完一批步骤后回看结果,让 Planner 判断是否需要修改剩余计划------这其实就是 LangChain 的 Plan-and-Execute 与后续 LLMCompilerReWOO 等变体在做的事,本质是在「纯规划」和「纯 ReAct」之间找平衡

Plan-and-Execute vs. ReAct 对比表

维度 Plan-and-Execute(先规划后执行) ReAct(走一步看一步)
节奏 先一次性出完整计划,再逐个执行 思考→行动→观察,循环往复
规划时机 开工前集中规划一次 每一步临时决定下一步
视野 全局视野,步骤统筹 局部短视,易绕路
LLM 调用 / token 少,执行阶段可省推理 多,每步一次、历史累积
灵活性 / 纠错 计划僵硬,需靠重规划补救 高,随时可改方向
擅长场景 步骤清晰、可提前拆解的多步任务 探索性强、结果高度不确定的任务

一句话总结

Plan-and-Execute 把 Agent 拆成「先出完整子任务清单的 Planner + 照单执行的 Executor」,用开头一次全局规划 换来更好的统筹和更省的 token;ReAct 则「走一步看一步」,灵活但话痨。前者胜在稳和省、输在计划僵硬,实战里常靠重规划把两者的长处缝在一起。

相关推荐
90后的晨仔9 小时前
从 H5 到 uni-app:一篇写给前端小白的"翻译指南"
前端·vue.js·前端框架
陈随易10 小时前
moon,apt和yum之外linux系统命令安装新选择
前端·后端·程序员
IT小盘10 小时前
13-企业Prompt模板-角色任务约束与输出格式
java·前端·prompt
徐小夕11 小时前
开源!我用SQLite + DuckDB打造了一款可视化AI问数平台
前端·算法·github
leslie11811 小时前
babel笔记
前端
用户0595401744612 小时前
Redis 记忆存储踩坑实录:一个并发写入 Bug 让我排查了 4 小时
前端·css
小徐_233312 小时前
Wot UI 2.3.0 发布:二维码组件来了,Open Wot 与 wot-starter 同步更新
前端·微信小程序·uni-app
kyriewen13 小时前
Claude自己跑出去hack了3家公司——我为什么还在用它写代码
前端·ai编程·claude
IT_陈寒13 小时前
SpringBoot自动配置的坑,这次真踩疼我了
前端·人工智能·后端
子兮曰13 小时前
AI 浏览器 Agent 的安全困局:当自动化工具可以偷走你的登录态
前端·人工智能·后端