AI Agent 理论基石——从 ReAct 范式到框架工程化选型

本文为「AI Agent 技术系列」第 1 篇,后续文章将分别深入 Function Calling、MCP 协议、LangChain 工程化、护栏与安全、上下文工程、多 Agent 协作等主题。

一、主题定义与背景

Agent 的权威定义

OpenAI 应用研究主管 Lilian Weng 在 2023 年的经典博文《LLM Powered Autonomous Agents》中给出了被广泛引用的定义:

“Agent = LLM + Planning + Memory + Tool Use”

其中 LLM 充当 Agent 的大脑,负责核心推理;Planning 模块将复杂任务拆解为可执行步骤;Memory 模块管理短期与长期记忆;Tool Use 模块让 Agent 能够调用外部工具获取信息或执行操作 [1]。

这一定义确立了 Agent 的四要素架构,至今仍是主流框架设计的基石。

范式演进时间线

Agent 的推理范式经历了三个关键阶段:

1
2
3
4
5
6
7
8
9
10
11
12
13
2022.01  CoT (Chain of Thought)
└─ LLM 通过"让我们一步步思考"实现推理链
└─ 局限:纯推理,无法与外部世界交互

2022.10 ReAct (Reasoning + Acting) [2]
└─ 推理与行动协同迭代:Thought → Action → Observation
└─ 弥补 CoT 缺乏外部交互的短板
└─ 成为当前 Agent 框架的主流范式

2024.02 CodeAct [3]
└─ 用可执行 Python 代码统一行动空间
└─ 代码即工具,更灵活地组合复杂操作
└─ 当前框架从 ReAct 逐渐融合 CodeAct

2024-2025 年 Agent 工程化爆发

Agent 从研究走向工程化爆发,有两个驱动力:

  1. 模型能力跃升:GPT-4o、Claude 3.5、Gemini 2.0 等模型在推理和工具调用上达到生产可用水平
  2. 工具生态成熟:MCP 协议标准化工具集成、Function Calling 成为模型标配能力、Agent 框架(LangGraph、AutoGen、CrewAI)快速迭代

二、核心技术原理与架构设计

2.1 ReAct 模式深度拆解

ReAct 的核心是将推理(Reasoning)与行动(Acting)交替进行,形成闭环迭代:


flowchart LR
A[用户输入] --> B[推理 Reasoning]
B --> C[行动 Acting]
C --> D[观察 Observation]
D --> E{是否得到答案?}
E -->|否| B
E -->|是| F[输出最终结果]

三阶段详解

阶段 职责 技术实现
Reasoning LLM 分析当前任务状态,生成内部推理(Thought),决定下一步行动 Prompt 中要求模型输出 “Thought: …” 前缀
Acting 根据推理结果执行具体操作:信息查询、Function Call、代码执行 调用工具 API,将结果注入上下文
Observation 观察行动结果,将反馈用于下一轮思考或判断已完成 将工具返回值格式化为 “Observation: …” 追加到上下文

最小可运行示例(基于 LangChain ReAct Agent):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// npm install langchain @langchain/openai @langchain/community

import { ChatOpenAI } from "@langchain/openai";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
import { tool } from "@langchain/core/tools";
import { z } from "zod";

// 定义工具
const searchTool = tool(
async ({ query }) => {
// 此处接入实际搜索 API(如 DuckDuckGo、SerpAPI)
return await fetchSearchResults(query);
},
{
name: "search",
description: "用于搜索互联网获取实时信息",
schema: z.object({ query: z.string().describe("搜索关键词") }),
}
);

// 创建 ReAct Agent
const llm = new ChatOpenAI({ model: "gpt-4o", temperature: 0 });
const agent = createReactAgent({ llm, tools: [searchTool] });

// 执行
const result = await agent.invoke({
messages: [{ role: "user", content: "2025年最新的 AI Agent 框架有哪些?" }],
});
console.log(result.messages[result.messages.length - 1].content);

ReAct 的核心价值在于通过工具调用获取外部反馈,让 LLM 不再”闭门造车”,而是基于真实世界的信息进行推理 [2]。

2.2 Plan-and-Execute 模式

Plan-and-Execute 由 LangChain 团队在 2023 年提出,基于《Plan-and-Solve Prompting》论文的思路:

flowchart TD
    A[用户任务] --> B[Planner 规划器]
    B --> C[任务1]
    B --> D[任务2]
    B --> E[任务3]
    C --> F[Executor 执行器]
    D --> F
    E --> F
    F --> G[Summary 总结]

与 ReAct 的关键差异

维度 ReAct Plan-and-Execute
规划时机 每一步即时决策 先全局规划,再逐步执行
适合任务 探索性、需要动态调整 依赖明确、步骤可预期
可预测性 低(每步可能改变方向) 高(计划先行)
典型实现 LangChain ReAct Agent LangChain Plan-and-Execute

Plan-and-Execute 的优势在于结构化流程,可预期性强,但缺点是倾向 workflow,缺乏动态调整能力。

2.3 Reflection 模式

Reflection(反思)模式通过自我纠错提升 Agent 性能,有三篇里程碑论文:

论文 核心思想 性能提升 出处
Reflexion 通过语言反馈(而非权重更新)强化 Agent,在情节记忆中维护反思文本 显著提升多轮任务表现 Shinn et al., arXiv:2303.11366 [5]
Self-Refine 先输出、再反馈、不断迭代,受人类改进文本方式启发 评估任务平均提升约 20% Madaan et al., arXiv:2303.17651 [6]
CRITIC 结合外部工具(搜索引擎、代码执行器)验证输出,基于验证结果自我修正 提升事实准确性 Gou et al., arXiv:2305.11738 [7]

关键洞察:这三篇论文是 Reflection 模式的理论基础,但当前主流 Agent 框架的核心实践依旧离不开 ReAct——Reflection 通常作为 ReAct 的增强层存在。

2.4 Agent 工程核心三要素

无论框架如何演进,Agent 工程的本质可归纳为三要素:

flowchart TD
    subgraph Agent核心
        A[LLM Call<br/>推理本质]
        B[Tools Call<br/>执行本质]
        C[Context Engineering<br/>连接二者]
    end
    A <--> C
    B <--> C
    A -.->|推理决定调用| B
    B -.->|结果反馈推理| A
要素 职责 演进方向
LLM Call 兼容各大 LLM 厂商 API,提供标准化调用接口 从单一模型到多模型路由
Tools Call Function Call → MCP → Skills,文件操作/网络搜索/代码执行 从单工具到工具编排
Context Engineering 提示词工程 + Tools 集成 + 记忆管理 从 Prompt 到文件系统即上下文

业内关于 Agent 工程有两大共识:

  1. 文件系统即上下文:使用文件保存 Agent 长期记忆(如 SOUL.md、TOOLS.md、MEMORY.md),让 Agent 在不同会话间拥有持续上下文
  2. 编程是通用解法:AI 更擅长使用代码解决问题——问题 → 生成代码 → 执行 → 迭代 → 解决。代码可视为 Tools 的高级形式(详见 CodeAct [3])

三、实际应用场景与最佳实践

场景一:智能客服系统(Router 模式选型)

需求:构建客服系统,能处理订单查询、退换货、投诉、知识库搜索等任务。

选型分析:客服场景任务边界清晰、路由明确,适合 Router 模式——主 Agent 将请求路由给最专业的子 Agent。

框架选择:LangGraph(基于状态图,支持条件路由)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { StateGraph, Annotation, END } from "@langchain/langgraph";

// 定义状态类型
const CustomerServiceState = Annotation.Root({
query: Annotation<string>,
intent: Annotation<string>,
response: Annotation<string>,
});

// 路由器:识别用户意图
async function classifyIntent(state: typeof CustomerServiceState.State) {
// LLM 判断意图,返回 "order" / "refund" / "complaint" / "knowledge"
const intent = await llmClassify(state.query);
return { intent };
}

// 订单查询子 Agent
async function orderAgent(state: typeof CustomerServiceState.State) {
const response = await queryOrderSystem(state.query);
return { response };
}

// 退换货子 Agent
async function refundAgent(state: typeof CustomerServiceState.State) {
const response = await processRefund(state.query);
return { response };
}

// 构建状态图
const graph = new StateGraph(CustomerServiceState)
.addNode("classify", classifyIntent)
.addNode("order", orderAgent)
.addNode("refund", refundAgent)
.addConditionalEdges("classify", (state) => state.intent, {
order: "order",
refund: "refund",
})
.addEdge("order", END)
.addEdge("refund", END)
.setEntryPoint("classify");

const app = graph.compile();

场景二:数据分析 Agent(Plan-and-Execute 选型)

需求:用户用自然语言提问,Agent 自动分析数据库并生成报告。

选型分析:数据分析任务依赖明确(先查数据、再分析、最后生成报告),适合 Plan-and-Execute 模式。

框架选择:LangChain Plan-and-Execute

五大框架对比(2025 年最新版本)

框架 定位 核心特点 适用场景 最新状态
LangChain 通用 Agent 框架 工具链丰富,社区成熟 快速构建 AI 应用原型 活跃迭代,已拆分为 LangChain + LangGraph + LangSmith [4]
LlamaIndex 数据索引与检索 高效文档处理与查询 RAG、知识密集型应用 专注数据层,与 LangChain 互补
AutoGen 多 Agent 对话协作 微软出品,对话驱动 复杂任务分解执行 v0.4+ 架构重构,API 大改 [8]
CrewAI 角色扮演协作 Agent 有明确角色目标 模拟团队协作场景 快速增长,适合结构化协作
LangGraph 状态图流程控制 精细化状态管理 复杂流程控制需求 LangChain 生态核心,生产推荐

选型决策建议

  • 快速出原型 → LangChain(最成熟,工具链丰富)
  • RAG 应用 → LlamaIndex(专注数据索引与检索)
  • 多 Agent 协作 → AutoGen / CrewAI(专为多智能体协作而生)
  • 复杂流程控制 → LangGraph(基于状态图,工作流灵活性高)

四、常见挑战与解决方案

挑战 表现 解决方案 代码要点
Agent 循环不收敛 Agent 反复调用工具,无法到达最终答案 设置最大迭代数 + 早停策略 recursionLimit: 10, 检测重复 Action
工具选择错误 Agent 选错工具或参数提取错误 优化工具描述 + 动态路由预筛选 工具 description 要包含使用场景
上下文窗口溢出 多轮对话后 token 超限 摘要裁剪 + 选择性共享上下文 定期 summarize 历史消息
幂等性问题 Agent 重试导致重复操作 共享状态写入需考虑幂等 操作前检查是否已执行
可观测性不足 无法调试多 Agent 交互 集成 trace/log,使用 LangSmith 每步记录 state 快照

循环不收敛的解决方案示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import { StateGraph, END } from "@langchain/langgraph";

// 早停策略:检测是否收敛
function shouldContinue(state: {
iteration_count: number;
last_action: string;
current_action: string;
}) {
if (state.iteration_count >= 10) {
return "force_end";
}
if (state.last_action === state.current_action) {
return "force_end"; // 检测重复 Action
}
return "continue";
}

graph.addConditionalEdges(
"agent_step",
shouldContinue,
{ continue: "agent_step", force_end: END }
);

五、行业趋势与前沿进展

从 ReAct 到 CodeAct 的演进

2024 年 2 月,Wang 等人提出 CodeAct [3],核心思想是用可执行 Python 代码统一 Agent 的行动空间。与传统 Function Calling 相比,CodeAct 的优势在于:

  • 统一行动空间:不再为每个工具定义单独的 Function,而是用代码组合
  • 更灵活的组合:一个代码块可以串联多个工具调用
  • 自我纠错:代码执行失败后,Agent 可以读取错误信息并修正代码

当前 LangChain 等框架已从纯 ReAct 逐渐融合 CodeAct,但推理与执行的本质并未改变。

Agent 评估基准

Agent 评估是 2024-2025 年的热点领域,主要基准包括:

基准 评估维度 最新状态
SWE-bench 软件工程任务(修 GitHub Issue) SWE-bench Verified 500 实例子集,Claude 3.5 Sonnet 达 ~50% 通过率 [9]
SWE-bench-Live 自动更新的软件工程任务 3 天前更新,持续跟踪最新任务 [10]
AgentBench 通用 Agent 能力(Web/OS/检索/推理/游戏) 覆盖多环境交互与长程规划 [11]

SWE-bench 已成为衡量 AI 编码代理能力的标杆,leaderboard 上各家模型竞争激烈 [9]。

框架竞争格局

2025 年 Agent 框架竞争的核心已从”功能丰富度”转向”生产可用性”:

  • LangGraph 凭借显式状态机和精细控制,成为生产环境推荐选择 [8]
  • AutoGen v0.4+ 进行了架构重构,从对话驱动转向更结构化的编排
  • CrewAI 以角色化协作和低门槛,在团队协作场景快速增长

上下文工程(Context Engineering)兴起

2025 年,”Context Engineering”作为概念逐渐成形——它比 Prompt Engineering 更广,涵盖:

  • 提示词工程(狭义上下文)
  • 工具集成(Tools 即上下文的一部分)
  • 文件系统即上下文(AGENTS.md / CLAUDE.md 模式,详见系列第 6 篇)
  • 多 Agent 间上下文共享(详见系列第 7 篇)

目标是从「预训练导向推理」转向「检索导向推理」——让 Agent 基于上下文中提供的最新信息进行推理,而非依赖可能过时的训练数据。


结论

AI Agent 的理论基石可归纳为三个层次:

  1. 范式层:ReAct 是当前主流,CodeAct 是演进方向,Reflection 作为增强层
  2. 架构层:LLM Call(推理)+ Tools Call(执行)+ Context Engineering(连接)是核心三要素
  3. 框架层:LangGraph 适合复杂流程控制,CrewAI 适合角色协作,LangChain 适合快速原型

选型时遵循一个原则:先确定任务范式(探索性用 ReAct,结构化用 Plan-Execute),再选择对应框架,而非反过来。


参考资料

[1] Lilian Weng. LLM Powered Autonomous Agents. 2023-06-23

[2] Yao, S. et al. ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629. 2022-10-06

[3] Wang, X. et al. Executable Code Actions Elicit Better LLM Agents (CodeAct). arXiv:2402.01030. 2024-02-01

[4] LangChain.js 官方文档

[5] Shinn, N. et al. Reflexion: Language Agents with Verbal Reinforcement Learning. arXiv:2303.11366. 2023-03-21

[6] Madaan, A. et al. Self-Refine: Iterative Refinement with Self-Feedback. arXiv:2303.17651. 2023-03-30

[7] Gou, Z. et al. CRITIC: Large Language Models Can Self-Correct with Tool-Interactive Critiquing. arXiv:2305.11738. 2023-05-19

[8] AI Agent 框架实测:AutoGen、CrewAI、LangGraph. 2025-10-28

[9] SWE-bench Leaderboards. 2026-03-04

[10] SWE-bench-Live Leaderboard. 2026-06

[11] AI Agent Benchmark & Evaluation 2025. 2025-12-04