ReAct:让AI边思考边行动的突破性技术
- ReAct:推理与行动的交响乐------从学术论文到工程落地的深度解析
-
- 引言:为什么我们需要ReAct?
- [一、核心思想:Thought → Action → Observation 三步闭环](#一、核心思想:Thought → Action → Observation 三步闭环)
- 二、解决的三大痛点:为什么ReAct优于单一模式?
- 三、三步闭环的深层机制
-
- [1. Thought(思考):决策的中枢神经系统](#1. Thought(思考):决策的中枢神经系统)
- [2. Action(行动):与外部世界的接口](#2. Action(行动):与外部世界的接口)
- [3. Observation(观测):反馈驱动的学习](#3. Observation(观测):反馈驱动的学习)
- [四、Google Research的深层贡献:可信赖AI的基础设施](#四、Google Research的深层贡献:可信赖AI的基础设施)
- [五、工程落地:Claude Code的`queryLoop`实现解析](#五、工程落地:Claude Code的
queryLoop实现解析) - 六、工具体系:ReAct循环的弹药库
- 七、三层视角总结:从理论到实践
- 八、结语:经典架构的持久生命力
ReAct:推理与行动的交响乐------从学术论文到工程落地的深度解析
引言:为什么我们需要ReAct?
在大型语言模型(LLM)能力飞速发展的今天,我们面临一个核心困境:模型拥有海量参数知识,却困于训练数据的截止日期;模型可以生成流畅的文本,却在面对需要实时信息或多步骤决策的复杂任务时频频出错。
纯推理(如Chain-of-Thought)让模型"想得多",但遇到训练截止日后的信息只能幻觉;纯行动让模型"做得快",但一旦在多跳推理中偏离轨道,便无法自我纠偏。ReAct(Reasoning + Acting) 正是为解决这一困境而生------它让模型像人类一样,边思考边行动,在动态环境中实现鲁棒纠错。
一、核心思想:Thought → Action → Observation 三步闭环
ReAct由普林斯顿大学与Google Research于2022年提出(arXiv 2210.03629),其精髓在于将推理(Reasoning)与行动(Acting)交错执行,形成持续运转的三步闭环:
┌─────────────────────────────────────────────────────────────┐
│ Thought(思考) → Action(行动) → Observation(观测) │
│ ↑ ↓ │
│ └──────────────────────────────────────────────┘ │
│ (循环驱动) │
└─────────────────────────────────────────────────────────────┘
每个Thought都会留存于上下文 ,形成可回放的决策轨迹。这不是简单的"先想后做",而是动态交织------推理为行动提供方向,行动结果随时修正推理方向。
二、解决的三大痛点:为什么ReAct优于单一模式?
| 模式 | 核心特点 | 关键局限 | 典型失败场景 |
|---|---|---|---|
| 纯推理(Chain-of-Thought) | 仅依赖参数知识进行逻辑推演 | 遇训练截止日后信息,只能产生幻觉 | 询问"2024年诺贝尔奖得主",模型编造答案 |
| 纯行动(Action-only) | 直接执行操作,无内部规划 | 多跳问题一旦偏移则无法纠偏 | 搜索后未分析结果直接进行下一步,导致方向错误 |
| ReAct | 交错推理与行动------推理为行动提供方向,行动结果随时修正推理 | 在HotpotQA、WebShop等基准上验证有效 | 搜索后先分析结果,再决定下一步行动,实现自我纠错 |
ReAct的核心优势在于"动态纠错"能力 。在多跳问答(如HotpotQA)或复杂决策(如WebShop购物)场景中,模型不会盲目执行预设步骤,而是根据每次行动返回的观测结果,重新评估并调整策略。
三、三步闭环的深层机制
1. Thought(思考):决策的中枢神经系统
- 功能:分析当前状态,拆解目标,规划下一步行动
- 关键特性 :每个Thought都留存于上下文,形成完整的决策轨迹链
- 价值:开发者可以像播放录像一样,逐步回放模型的决策路径
在Claude Code的queryLoop实现中(src/query.ts),Thought阶段通过callModel流式输出推理内容。当检测到tool_use block时,标记needsFollowUp = true,触发Action阶段;若无工具调用,则循环退出,返回completed状态。
2. Action(行动):与外部世界的接口
- 触发机制 :由
tool_useblock触发,needsFollowUp置为true - 执行策略 (Claude Code实现):
partitionToolCalls智能分区:只读工具并发执行 ,提升效率;写操作串行执行,保证安全- 执行完毕后,
assistantMessages与tool_result追加至messages
3. Observation(观测):反馈驱动的学习
- 数据来源:工具返回的结果(如搜索内容、文件内容、命令输出)
- 循环驱动 :
messages更新后,循环进入下一轮,模型读取这些结果开始新的Thought - 关键洞察 :每一个工具的输出,都是ReAct循环下一轮的Observation,驱动模型持续调整策略
四、Google Research的深层贡献:可信赖AI的基础设施
ReAct论文的价值远不止于提出一个算法,它重新定义了LLM系统的可观测性与可控性:
白盒化:从黑盒到透明决策
传统LLM是"黑盒"------输入问题,输出答案,中间过程不可见。ReAct通过留存每个Thought步骤于上下文 ,实现了决策路径的完全白盒化:
- 开发者可以精确追踪:模型为什么决定搜索?基于什么结果改变了策略?
- 每个决策节点都有明确的"思维链"记录
可干预性:人类在环的精准控制
推理过程的可见性带来了可干预性:
- 人类可以在任意Thought节点插入修正指令
- 无需重跑整个任务,只需从干预点开始继续执行
- 这为构建高可靠性AI系统提供了基础设施级支撑
这两点------白盒化与可干预性------是ReAct对AI工程落地最深远的影响,它们构成了可信赖AI系统的技术基石。
五、工程落地:Claude Code的queryLoop实现解析
在Claude Code(及Claude Agent SDK)中,ReAct模式通过queryLoop()函数实现,位于src/query.ts。这是生产级ReAct架构的典范:
核心循环结构
typescript
// 核心为 while(true) 循环(queryLoop)
while (true) {
// 1. Thought阶段:调用模型进行推理
const response = await callModel(messages);
// 2. 检测是否需要工具调用
if (containsToolUse(response)) {
needsFollowUp = true; // 进入Action阶段
// 3. Action阶段:执行工具(runTools / toolOrchestration.ts)
const results = await partitionToolCalls(toolCalls); // 读并发,写串行
// 4. Observation阶段:结果追加至上下文
messages.push(assistantMessages, toolResults);
// 循环继续,进入下一轮Thought
} else {
// 无工具调用,任务完成(非end_turn,见query.ts L1357)
return { status: 'completed', response };
}
}
关键工程决策
- 流式输出:Thought阶段采用流式输出,提升用户体验
- 工具分区 :
partitionToolCalls实现安全与效率的平衡 - 状态持久 :
messages数组作为完整的状态载体,支持任意轮数的循环
六、工具体系:ReAct循环的弹药库
Claude Code内置超过40个工具,按职责分为五层,每一层的输出都是下一轮的Observation:
| 层级 | 代表工具 | 核心职责 | 在ReAct中的角色 |
|---|---|---|---|
| 执行层 | BashTool、REPLTool | 直接操作运行环境 | 执行代码、运行测试,获取实时反馈 |
| 文件层 | FileReadTool、FileEditTool、GrepTool | 读写代码库 | 理解项目结构,修改源代码 |
| 信息层 | WebSearchTool、WebFetchTool | 获取外部知识 | 突破训练数据截止日期,获取实时信息 |
| 编排层 | AgentTool | 启动子Agent | 实现分层决策,复杂任务分解 |
| 扩展层 | MCP协议接入 | 连接任意外部系统 | 无限扩展能力边界 |
关键设计原则:工具的输出格式标准化,确保模型能可靠解析作为Observation,驱动下一轮Thought。
七、三层视角总结:从理论到实践
| 层级 | 核心定义 | 关键载体 |
|---|---|---|
| 论文层 | LLM在动态环境中鲁棒纠错的推理---行动交错机制 | arXiv 2210.03629 |
| 研究层 | 将黑盒LLM决策白盒化,赋予可解释性与可干预性 | Google Research的扩展分析 |
| 工程层 | queryLoop()中的while(true)循环------Claude Code Agent SDK的调度引擎 |
src/query.ts,queryLoop() |
八、结语:经典架构的持久生命力
自2022年论文发表至今,ReAct的核心结构从未改变:Thought → Action → Observation,三步闭环,循环驱动。
在这个架构中:
- 推理不再是孤立的思考,而是与行动紧密耦合的动态过程
- 行动不再是盲目的执行,而是基于持续更新的上下文做出明智选择
- 观测不再是简单的输入,而是驱动下一轮推理的关键反馈
ReAct之所以成为AI Agent领域的基础架构范式 ,正因为它既足够简单 (三步循环易于理解和实现),又足够强大(支持复杂任务分解、动态纠错、人类干预)。无论是学术研究还是工程落地,掌握ReAct都是构建可靠AI Agent的必经之路。
参考与延伸阅读
- 原始论文:ReAct: Synergizing Reasoning and Acting in Language Models (arXiv 2210.03629)
- Claude Code源码:
src/query.ts中的queryLoop()实现 - Claude Agent SDK官方文档:Agent Loop 架构说明