# ReAct 与 Plan-and-Execute 的区别

## 一、ReAct

我的核心理解是：Agent 不会提前制定一个完整的执行计划，而是根据当前任务和上一步的执行结果，动态决定下一步应该做什么。

例如，用户要求查询天气并计算一个数学问题，Agent 可以先调用天气工具，得到结果后，再根据当前任务决定是否调用计算器工具。

它的基本流程是：**思考 → 行动 → 观察 → 再思考 → 再行动 ……**

ReAct 更像是 **"边思考、边执行、边根据结果调整"**。

它的优点是灵活，适合执行路径不确定的任务。

---

## 二、Plan-and-Execute

Plan-and-Execute 的核心理解是：Agent 先对整个任务进行规划，再按照计划逐步执行，并根据执行结果调整计划。

也就是：**先规划，再执行，执行过程中根据结果进行检查和调整。**

它的基本流程是：**规划 → 执行 → 检查 → 调整 → 再执行 ……**

Plan-and-Execute 更像是 **"先规划整体路线，再按照路线执行"**。

---

## 三、我认为两者最本质的区别

**ReAct 关注"下一步做什么"，Plan-and-Execute 关注"整个任务怎么完成"。**

ReAct 是"边走边决定下一步"，而 Plan-and-Execute 是"先规划整体路线，再按照路线执行"。

---

## 四、适用场景

- **ReAct** 更适合简单、动态、实时的任务。它的特点是边思考边行动，根据当前环境和工具返回结果动态决定下一步。
- **Plan-and-Execute** 则是先对整个任务进行规划，再由 Executor 按步骤执行，并通过 Replanner 根据执行结果调整计划。它更适合复杂的多步骤任务，尤其是步骤之间存在依赖关系的场景。
