Agent 怎么思考:CoT、ReAct、反思循环

Agent 推理模式封面

会思考,是 Agent 区别于「一次性聊天机器人」的根本标志。问它一个问题,它不是直接吐答案,而是先想一下、查查资料、必要时做几步——这套「思考方式」背后,是一套被工程化的推理模式。

本文梳理 LLM 推理模式的演进脉络:从最朴素的直接生成,到 CoT 思维链,再到 ReAct(推理+行动交替)、Plan-and-Execute(先规划后执行)、Reflexion(失败后反思再试)。

本文脉络:

  1. 为什么需要「思考模式」:直接生成的局限
  2. CoT:让模型「想一想」再答
  3. ToT:思维树,分叉探索
  4. ReAct:推理与行动交替
  5. Plan-and-Execute:先规划,再执行
  6. Reflexion:反思循环,失败中学习
  7. 五种模式对比与选型
  8. 它们怎么组合成现代 Agent
  9. 常见误区与陷阱
  10. 常见问题

Agent 推理模式全景

一、为什么需要「思考模式」:直接生成的局限

先看 LLM 最朴素的用法:直接生成(Direct Prompting)。

你:「我们公司有 100 人,离职率 20%,一年大概走多少人?」
LLM(直接答):「20 人。」

你:「一个订单原价 199,打 8 折,再用 30 元券,最后多少?」
LLM(直接答):「129.2 元。」

你:「如果满减、折扣、运费险、分摊退款一起算呢?」
LLM(直接答):开始容易漏步骤或套错顺序。

直接生成的问题:模型一次前向传播就要给出最终答案,没有「打草稿」的机会

类比人脑:简单问题(比如「你叫什么」)可以脱口而出;复杂问题(比如 17 × 24)通常需要列竖式、分步算。LLM 的直接生成更像永远在「脱口而出」,遇到多步推理或需要拆解的问题,准确率就会明显下降。

核心矛盾:模型有这个知识(它训练时见过乘法),但「一次生成」的范式让它没机会分步思考。

思考模式要解决的,就是给模型一个「打草稿」的机会:让它把推理过程显式地写出来,再得出答案。

下面五种模式,本质上都是在回答一个问题:「怎么让模型把思考过程显式化、可控化」


二、CoT:让模型「想一想」再答

Chain-of-Thought(思维链) 是所有思考模式的鼻祖,2022 年 Google 的论文提出,简单到令人发指。

2.1 原理:加一句「让我们一步一步想」

不用 CoT:
Prompt:「17 × 24 = ?」
LLM:「408」(容易算错)

用 CoT:
Prompt:「17 × 24 = ? 让我们一步一步想。」
LLM:「17 × 24 = 17 × 20 + 17 × 4 = 340 + 68 = 408。」(准确率飙升)

为什么有效:模型生成每个 token 时,前面的 token 都会成为后续生成的上下文。把中间步骤写出来,等于给模型「边写边看自己的草稿」,每一步都校准下一步。

不写中间步骤时,模型会一次性跳到答案,没有自我校准的机会;写出中间步骤后,每写一步,下一步都能「看到」前面的进度,就像人在纸上列竖式。

2.2 两种触发方式

方式 做法 特点
Zero-shot CoT 加一句「让我们一步一步想」或 Let's think step by step 最简单,通常已有明显收益
Few-shot CoT 给几个带推理过程的示例,让模型照着格式推理 更稳定,但要准备高质量示例

2.3 CoT 的适用边界

CoT 适合数学、逻辑、常识推理这类多步问题,也适合答案本身能拆成步骤、需要展示过程的场景,比如教学和审计。

它不适合单步事实查询、纯创意生成、实时信息查询。简单问题强行「一步步想」,反而会让回答变啰嗦,甚至把模型带偏。


三、ToT:思维树,分叉探索

CoT 是一条线(一条链推到底),但有些问题需要「走不通就回退换条路」——Tree-of-Thoughts(思维树)

3.1 为什么需要树

CoT 的局限是「一条路走到黑」。如果推理到第 3 步发现前面错了,后面很可能全错,而且没有天然的回退机制。

ToT 的思路是允许分叉和回退:每一步生成多个候选,评估每个分支的前景,选最有希望的继续;如果走不通,再退回来换另一条路径。

CoT 是一条线:步骤 1 → 步骤 2 → 步骤 3 → 答案。ToT 是一棵树:每一步可以生成多个候选分支,评估后继续走最有希望的路径,必要时回退。这里不用把树画得很复杂,记住核心区别就够了:CoT 是线性推理,ToT 是多候选搜索

3.2 ToT 的四个步骤

  1. 思维分解:把问题拆成多个中间步骤。
  2. 思维生成:每步用 LLM 生成 K 个候选想法。
  3. 状态评估:用 LLM 或规则给每个候选打分,判断前景。
  4. 搜索与回溯:用 BFS、DFS 等策略继续探索,走不通就退回上一层。

3.3 适用场景与代价

ToT 适合需要探索多条路径的问题,例如 24 点游戏、填字、创意规划,也适合中间步骤可以评估的任务:至少能判断「这条路有没有希望」。

它的代价是调用次数暴增。每个节点都可能需要生成候选、评估候选,所以速度慢、成本高。生产中很少直接用纯 ToT,但它的「多候选 + 评估」思想已经被很多 Agent 框架吸收。


四、ReAct:推理与行动交替

CoT/ToT 都只在「脑子里想」,但 Agent 常常需要做事(查资料、调工具)。ReAct = Reasoning + Acting,把思考和行动交替进行。

4.1 原理:Thought → Action → Observation 循环

ReAct 推理与行动循环

ReAct 的基本节奏是:先思考「我现在该干什么」,再调用工具,读取工具返回的观察结果,然后根据结果继续思考下一步。这个循环会持续到信息足够、可以给出最终答案为止。

具体例子

问题:「2024 年奥斯卡最佳影片的导演还活着吗?」

Thought 1:我需要先查 2024 年奥斯卡最佳影片是什么
Action 1:Search("2024 Oscar best picture winner")
Observation 1:Oppenheimer 获得最佳影片
Thought 2:Oppenheimer 的导演是 Christopher Nolan
Action 2:Search("Christopher Nolan alive")
Observation 2:Christopher Nolan 1970 年生,在世
Thought 3:我有答案了
Final Answer:导演 Christopher Nolan 仍在世

4.2 ReAct 的突破:思考能指导行动,行动能修正思考

纯 CoT 只思考,遇到知识截止的问题很容易编;纯工具调用只行动,容易变成机械查询,不会根据结果调整策略。ReAct 的关键是把两者串起来:思考决定查什么,行动拿到结果,观察结果再修正下一步思考。每一步行动都基于上一步观察,因此是动态的、有目标的。

4.3 ReAct 是现代 Agent 的鼻祖

ReAct 论文(2022)几乎奠定了现代 Agent 的雏形。ChatGPT 的浏览网页、Claude 的工具调用、Cursor 的代码搜索、Codex 的文件读写,本质上都是「思考 → 行动 → 观察 → 再思考」。

本博客「AI Agent 技能实战解析」里讲的 Skill 触发后执行,也可以理解成 ReAct 循环:Agent 判断该用哪个 Skill 是 Thought,调用 Skill 是 Action,读取 Skill 的反馈是 Observation。


五、Plan-and-Execute:先规划,再执行

ReAct 是「走一步看一步」,但有些复杂任务需要「先想清楚整体再动手」——Plan-and-Execute

5.1 为什么 ReAct 不够

ReAct 的局限是缺乏全局视野。比如任务是「给这个项目加完整测试」,如果只按 ReAct 走一步看一步,模型可能先列文件,再给某个模块加测试,做到一半才发现整体方案不对,或者在多个模块之间反复横跳。

复杂任务需要先有整体计划,而不是每一步都临场决定。

5.2 Plan-and-Execute:两阶段

Plan-and-Execute 通常分成两阶段:

  1. Planner(规划者):把任务拆成完整、有序、可执行的计划。比如「加完整测试」可以拆成梳理现有覆盖、确认测试框架、给核心模块补测试、跑全量、补遗漏。
  2. Executor(执行者):按计划逐项执行。每个执行项内部可以是一个 ReAct 循环;如果执行中发现计划有问题,再回到 Planner 重新规划。

Planner 负责把任务拆成完整计划;Executor 负责逐项执行,每一项内部都可以是一个小的 ReAct 循环。执行过程中如果发现计划不适合当前真实情况,就回到 Planner 做 re-plan,再继续推进。

5.3 Superpowers 就是 Plan-and-Execute 的工程化

本博客「Superpowers」一文讲的工作流,本质就是 Plan-and-Execute:先 brainstorming 做设计,再 writing-plans 生成计划,然后用 subagent-driven-development 执行计划;执行中发现问题,再回到 plan 调整。

Planner 阶段的精髓是把计划写到足够具体,让执行者能低歧义地完成任务。Claude Code、Codex 的「先 plan 再 execute」模式,以及 LangChain 的 PlanAndExecute,都是这个思路的工程化版本。


六、Reflexion:反思循环,失败中学习

前面的模式都是「一次过」,Reflexion(反思) 引入了「失败后总结、下次更好」的机制。

6.1 原理:失败 → 反思 → 重试

Reflexion 循环通常分成五步:

  1. 尝试解决任务。
  2. 评估结果,判断成功或失败。
  3. 如果失败,反思原因:哪里做错了,学到了什么。
  4. 把反思写成「自我反馈」,作为一条文本记忆放回上下文。
  5. 带着反馈重试,直到成功或达到上限。

6.2 和人脑的类比

人脑的学习过程很像「做错一道题 → 看错在哪 → 记住下次注意什么 → 下次做对」。Reflexion 模拟的也是这个过程:Agent 失败后,让 LLM 自己分析失败原因,把结论写进上下文或记忆,重试时带上。

关键点在于,反思内容是显式文本,不是隐式参数更新。所以它不需要重新训练模型,靠 prompt 和上下文管理就能实现。

6.3 适用场景

Reflexion 适合能明确判断成败、允许多次尝试、失败原因可以被文字描述的任务。写代码就是典型例子:测试过没过很清楚,报错信息也能帮助模型总结失败原因。

它不适合一次性的、不可重试的场景,也不适合很难客观判断好坏的开放任务,比如「这首诗够不够美」。

6.4 现代应用

Claude Code 或 Codex 写代码时,经常会经历「尝试实现 → 跑测试 → 测试失败 → 看报错 → 修正 → 再跑」的过程。这就是 Reflexion 的工程化形态:失败、自我诊断、修正、重试。

Superpowers 的「subagent + 两阶段 review」也是同源思想:每次实现被 review 出问题,反馈会进入下一轮改进。


七、五种模式对比与选型

模式 核心思想 何时用 代价
直接生成 一次出答案 简单问题、事实查询 推理弱
CoT 显式写推理链 多步推理、计算 中等
ToT 分叉探索+回退 需要多路径搜索 调用次数多、成本高
ReAct 推理+行动交替 需要调工具/查资料 中等
Plan-and-Execute 先整体规划再执行 复杂多步任务 规划不准会全盘错
Reflexion 失败后反思重试 可重试、能判成败 多次迭代、成本高

选型决策树

Agent 推理模式选型

可以先问三个问题:任务是否真的需要多步思考;是否需要外部工具或资料;是否需要探索多条候选路径。如果任务可以多次尝试,并且能客观判断成功失败,就在基础模式上叠加 Reflexion。


八、它们怎么组合成现代 Agent

真实的 Agent(Claude Code、Codex、Cursor)不是用单一模式,而是组合

现代 Agent 推理模式组合

一个完整的现代 Agent 通常会先判断要不要规划。复杂任务进入 Plan-and-Execute,被拆成多个步骤;每个步骤内部用 ReAct 推理、调工具、观察结果;执行中调用的工具可以包括 Skills、搜索、文件读写、终端命令、浏览器等;遇到失败时,再通过 Reflexion 反思、修正、重试。

对应到本博客的系列文章:Skills 提供「能力」,记忆机制提供「状态」,本文讲的推理模式提供「思考方式」。能力 + 状态 + 思考,才构成一个完整的 Agent。


九、常见误区与陷阱

误区 真相 对策
所有问题都加 CoT 简单问题强行推理反而啰嗦、跑偏 简单事实直接答,复杂推理才用 CoT
以为 ToT 是银弹 ToT 成本极高,多数问题用不上 只在需要多路径搜索时用
ReAct 没有终止条件 Agent 无限循环调工具 设最大步数、判断收敛
计划做太死,不允修订 执行中发现计划错了会硬走到底 Plan-and-Execute 要支持 re-plan
Reflexion 无上限重试 反复失败烧钱 设最大反思次数
混淆模式 把 ReAct 当 CoT 用(不调工具) 看任务要不要外部信息

最常见的误区是把「Agent」等同于「ReAct」。ReAct 确实是 2022 年以来 Agent 形态的重要起点,但现代 Agent 往往是 Plan-and-Execute、ReAct、Reflexion、记忆和 Skills 的组合体。把 Agent 等同于某个单一模式,会低估它的复杂度。


十、常见问题

问题 速答要点
为什么需要 CoT? 让模型把推理过程显式化,等于「打草稿」,每步校准下一步,多步推理准确率显著提升
CoT 怎么触发? Zero-shot 加「让我们一步一步想」;Few-shot 给带推理过程的示例
ReAct 是什么? Reasoning + Acting 交替:Thought → Action → Observation 循环,让模型边思考边调工具
ReAct 和 CoT 区别? CoT 只在脑子里想;ReAct 把思考和外部行动(调工具)结合起来,能动态获取信息
Plan-and-Execute 解决什么? ReAct 走一步看一步缺乏全局视野;Plan-Execute 先整体规划再执行,适合复杂多步任务
ToT 和 CoT 区别? CoT 是线性推理;ToT 是树形分叉+回退,适合需要探索多路径的问题,但成本高
Reflexion 的核心? 失败后自我反思,把反思写成文本记忆,带着反馈重试,像「带错题本考试」
现代 Agent 用哪种? 不单一,组合:Plan-Execute + ReAct + Reflexion + Skills + 记忆
为什么不能所有任务都 CoT? 简单问题强行推理反而啰嗦、可能跑偏;CoT 只对多步推理有增益
这些模式要训练模型吗? 不需要。都是 prompt 层面的技巧,靠指令和示例实现(除少数模型专门优化了 CoT)

一句话总结:让 Agent 「会思考」,本质是给 LLM 装上不同的「思考框架」——CoT 让它打草稿,ReAct 让它边想边做,Plan-Execute 让它先谋后动,Reflexion 让它从失败中学。这些模式不是互斥的,现代 Agent 是它们的组合体,再叠加上 Skills(能力)和记忆机制(状态),才构成了真正能干活的 Agent。

系列关联:本文和本博客的「AI Agent 技能实战解析」「Superpowers」「MattPocock Skills」(讲能力)、「AI Agent 记忆机制」(讲状态)互为补充。Skills + 记忆 + 推理模式 = Agent 的完整图景,四篇合起来读最清楚。