正在加载页面…
交互界面暂未加载完成。你可以先阅读下方内容,或刷新重试

Agent 中的 Plan-and-Execute 是什么?

Plan-and-Execute 是 Agent 里一种很常见的任务执行方式。 它的名字已经把核心说得很清楚了: 先规划,再执行。 如果只用一句话解释: 先把一个复杂任务拆成几步,再按照计划一步一步完成。 它和 ReAct 最大的区别就在这里。 ReAct 更像是边走边看。 Plan-and-Execute 更像是先想清楚路线,再开始走。 为什么需要 Plan-and-Execute 如果任务很简单,其实不需要专门规划。 比如: 帮我查一下今天北京的天气。 直接调用天气工具就可以。 但如果任务变成: 帮我分析三家 AI Agent 公司,比较它们的产品、价格和技术特点,最后给我一份报告。 这个

Plan-and-Execute 是 Agent 里一种很常见的任务执行方式。

它的名字已经把核心说得很清楚了:

先规划,再执行。

如果只用一句话解释:

先把一个复杂任务拆成几步,再按照计划一步一步完成。

它和 ReAct 最大的区别就在这里。

ReAct 更像是边走边看。

Plan-and-Execute 更像是先想清楚路线,再开始走。

为什么需要 Plan-and-Execute

如果任务很简单,其实不需要专门规划。

比如:

帮我查一下今天北京的天气。

直接调用天气工具就可以。

但如果任务变成:

帮我分析三家 AI Agent 公司,比较它们的产品、价格和技术特点,最后给我一份报告。

这个任务明显复杂很多。

Agent 需要做的事情可能包括:

确定要研究的公司
↓
搜索每家公司的资料
↓
整理产品功能
↓
整理价格
↓
分析技术特点
↓
做横向比较
↓
生成报告

如果模型直接开始做,很容易做到一半漏掉某些内容。

所以可以先生成一个计划。

Plan-and-Execute 是怎么工作的

整个过程可以拆成两个部分:

Plan

先规划。

比如 Agent 先生成:

1. 确定三家公司
2. 搜索官网和公开资料
3. 整理每家的产品功能
4. 整理价格
5. 整理技术特点
6. 做对比
7. 输出最终报告

然后进入:

Execute

也就是按照这个计划逐步执行。

执行步骤 1
↓
执行步骤 2
↓
执行步骤 3
↓
……
↓
完成任务

所以它的核心结构非常简单:

用户任务
↓
生成计划
↓
执行计划
↓
输出结果

为什么它比直接执行更稳定

复杂任务最容易出现的问题,就是模型做到后面忘记前面的要求。

比如用户要求:

比较产品、价格、技术和优缺点。

模型直接开始搜索时,可能查了大量产品功能,却忘记查价格。

有了 Plan 之后,任务会更明确。

Agent 知道自己现在正在做哪一步。

比如:

当前任务:
步骤 4,整理价格。

这样就不容易跑偏。

所以 Plan-and-Execute 很适合:

复杂研究
长任务
多步骤任务
需要固定输出结构的任务

它和 ReAct 有什么区别

这两个经常一起出现。

ReAct 的思路是:

做一步
↓
看结果
↓
决定下一步

而 Plan-and-Execute 是:

先决定要做哪些步骤
↓
再执行这些步骤

比如去一个陌生城市旅游。

ReAct 更像:

先往前走,到了路口再决定往哪边。

Plan-and-Execute 更像:

先在地图上规划路线,再按照路线走。

所以它们适合的任务也不太一样。

如果任务路径变化很多,ReAct 会更灵活。

如果任务比较长,而且大致步骤可以提前确定,Plan-and-Execute 会更清楚。

Plan 也不是一成不变的

现实里的任务不一定会完全按照计划发展。

比如原来的计划是:

1. 搜索官网
2. 获取价格
3. 比较产品

执行以后发现:

某家公司官网根本没有公开价格。

那 Agent 就不能继续死磕原计划。

它可能需要重新规划:

搜索官方文档
↓
搜索新闻报道
↓
搜索公开访谈

所以更完整的 Plan-and-Execute 往往还会加入:

Replan

也就是重新规划。

结构就变成:

Plan
↓
Execute
↓
检查结果
↓
必要时 Replan
↓
继续 Execute

Plan-and-Execute 的问题

它也有一个明显的问题。

如果一开始的计划就错了,后面的步骤可能都会跟着错。

比如模型一开始理解错了任务。

后面虽然执行得很认真,但方向已经偏了。

另外,规划本身也会增加一次甚至多次模型调用。

所以简单任务没必要硬套 Plan-and-Execute。

否则会出现一种情况:

明明两步能做完的事情,Agent 先花时间写了一份五步计划。

反而更慢。

最后

Plan-and-Execute 的核心其实很好记:

先想清楚怎么做,再开始做。

它适合那些步骤比较多、任务比较复杂的问题。

最简单的结构就是:

Plan
↓
Execute
↓
Finish

复杂一点则会变成:

Plan
↓
Execute
↓
检查
↓
Replan
↓
继续执行

如果说 ReAct 强调的是:

下一步该做什么?

那么 Plan-and-Execute 更关注的是:

整个任务应该怎么完成?