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

会思考,是 Agent 区别于「一次性聊天机器人」的根本标志。问它一个问题,它不是直接吐答案,而是先想一下、查查资料、必要时做几步——这套「思考方式」背后,是一套被工程化的推理模式。
本文梳理 LLM 推理模式的演进脉络:从最朴素的直接生成,到 CoT 思维链,再到 ReAct(推理+行动交替)、Plan-and-Execute(先规划后执行)、Reflexion(失败后反思再试)。
本文脉络:
- 为什么需要「思考模式」:直接生成的局限
- CoT:让模型「想一想」再答
- ToT:思维树,分叉探索
- ReAct:推理与行动交替
- Plan-and-Execute:先规划,再执行
- Reflexion:反思循环,失败中学习
- 五种模式对比与选型
- 它们怎么组合成现代 Agent
- 常见误区与陷阱
- 常见问题
一、为什么需要「思考模式」:直接生成的局限
先看 LLM 最朴素的用法:直接生成(Direct Prompting)。
你:「我们公司有 100 人,离职率 20%,一年大概走多少人?」 |
直接生成的问题:模型一次前向传播就要给出最终答案,没有「打草稿」的机会。
类比人脑:简单问题(比如「你叫什么」)可以脱口而出;复杂问题(比如 17 × 24)通常需要列竖式、分步算。LLM 的直接生成更像永远在「脱口而出」,遇到多步推理或需要拆解的问题,准确率就会明显下降。
核心矛盾:模型有这个知识(它训练时见过乘法),但「一次生成」的范式让它没机会分步思考。
思考模式要解决的,就是给模型一个「打草稿」的机会:让它把推理过程显式地写出来,再得出答案。
下面五种模式,本质上都是在回答一个问题:「怎么让模型把思考过程显式化、可控化」。
二、CoT:让模型「想一想」再答
Chain-of-Thought(思维链) 是所有思考模式的鼻祖,2022 年 Google 的论文提出,简单到令人发指。
2.1 原理:加一句「让我们一步一步想」
不用 CoT: |
为什么有效:模型生成每个 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 的四个步骤
- 思维分解:把问题拆成多个中间步骤。
- 思维生成:每步用 LLM 生成 K 个候选想法。
- 状态评估:用 LLM 或规则给每个候选打分,判断前景。
- 搜索与回溯:用 BFS、DFS 等策略继续探索,走不通就退回上一层。
3.3 适用场景与代价
ToT 适合需要探索多条路径的问题,例如 24 点游戏、填字、创意规划,也适合中间步骤可以评估的任务:至少能判断「这条路有没有希望」。
它的代价是调用次数暴增。每个节点都可能需要生成候选、评估候选,所以速度慢、成本高。生产中很少直接用纯 ToT,但它的「多候选 + 评估」思想已经被很多 Agent 框架吸收。
四、ReAct:推理与行动交替
CoT/ToT 都只在「脑子里想」,但 Agent 常常需要做事(查资料、调工具)。ReAct = Reasoning + Acting,把思考和行动交替进行。
4.1 原理:Thought → Action → Observation 循环
ReAct 的基本节奏是:先思考「我现在该干什么」,再调用工具,读取工具返回的观察结果,然后根据结果继续思考下一步。这个循环会持续到信息足够、可以给出最终答案为止。
具体例子:
问题:「2024 年奥斯卡最佳影片的导演还活着吗?」 |
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 通常分成两阶段:
- Planner(规划者):把任务拆成完整、有序、可执行的计划。比如「加完整测试」可以拆成梳理现有覆盖、确认测试框架、给核心模块补测试、跑全量、补遗漏。
- 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 循环通常分成五步:
- 尝试解决任务。
- 评估结果,判断成功或失败。
- 如果失败,反思原因:哪里做错了,学到了什么。
- 把反思写成「自我反馈」,作为一条文本记忆放回上下文。
- 带着反馈重试,直到成功或达到上限。
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 | 失败后反思重试 | 可重试、能判成败 | 多次迭代、成本高 |
选型决策树:
可以先问三个问题:任务是否真的需要多步思考;是否需要外部工具或资料;是否需要探索多条候选路径。如果任务可以多次尝试,并且能客观判断成功失败,就在基础模式上叠加 Reflexion。
八、它们怎么组合成现代 Agent
真实的 Agent(Claude Code、Codex、Cursor)不是用单一模式,而是组合:
一个完整的现代 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 的完整图景,四篇合起来读最清楚。