Agent 设计:从 ReAct 到 Reflection

LLM + 工具 + 记忆 + 反思 —— 构建自主研究和决策的智能体

从 Chat 到 Agent 的跨越

Chat(聊天)
用户 → LLM → 回复 → 结束
一问一答
Agent(智能体)
用户 → 思考 → 选择工具 → 执行 → 观察 → 思考 → ... → 完成
自主循环

Chat 的局限

  • 无法访问外部工具(搜索、数据库)
  • 无法执行多步复杂任务
  • 无法记住跨会话的知识
  • 无法自我检查和修正错误
  • 受限于训练数据的截止日期

Agent 的能力

  • ✅ 自主搜索和获取最新信息
  • ✅ 将复杂任务拆解为子步骤执行
  • ✅ 跨会话保留知识和经验
  • ✅ 审视自身输出并自我改进
  • ✅ 通过工具访问实时数据

Agent 四要素

LLM
大脑
推理引擎
理解任务
推理决策
生成回答
Planning
前额叶
决策策略
拆解任务
规划步骤
调整计划
Tools
手脚
执行层
搜索
计算
读写文件
Memory
海马体
存储层
短期记忆
长期记忆
经验学习

ReAct = Reasoning + Acting

Google DeepMind 2022 年提出,是目前所有 Agent 的基础范式。核心思想:推理和行动交替进行,形成自我纠正的闭环。

Thought
推理当前状态
Action
选择并执行工具
Observation
观察工具结果

循环直到得出 Final Answer 或达到步数上限

一个完整的 ReAct 示例

任务:LangGraph 最新版本是多少?支持哪些 Python 版本?

Step 1:
  Thought: 我需要搜索 LangGraph 的最新版本信息
  Action: search("LangGraph latest version 2026")
  Observation: LangGraph 1.2.0 released, supports Python 3.10-3.13

Step 2:
  Thought: 已获取版本和 Python 支持信息,数据齐全
  Final Answer: LangGraph 最新版 1.2.0,支持 Python 3.10-3.13
为什么 ReAct 有效?
思考链可见:每步推理可追溯,方便调试 | 工具与推理解耦:推理归 LLM,执行归工具 | 自我纠正:观察到意外结果时可调整下一步 | 可中断恢复:任一步骤可检查、修改后继续

Planning = 行动前先想清楚怎么做

LLM 不是接到任务就直接执行,而是先规划步骤,再按计划行动。就像人类接到复杂任务时先列清单。

隐式 Planning ReAct 自带

LLM 在每步 Thought 中自然形成规划,但不显式列出。边想边做。

优点缺点
延迟低复杂任务容易丢失方向
Token 消耗少可解释性弱
适应变化灵活无全局视图

显式 Planning Plan-and-Execute

先生成完整计划,再逐步执行。执行中可修订计划。

优点缺点
路线清晰可见首次延迟高
适合复杂多步任务Token 消耗多
可解释性强计划可能过时需修订

Tool Calling = LLM 以结构化方式调用函数

LLM 不执行工具,只声明"调用哪个函数、传什么参数"。Agent 框架负责实际执行并反馈结果。

工具定义的三要素

name

唯一标识符
search, calculator

description

何时使用此工具
LLM 根据描述决定选哪个

inputSchema

参数 JSON Schema
定义参数类型和必填项

LLM 的 Tool Call 响应

{
  "role": "assistant",
  "tool_calls": [{
    "id": "call_abc123",
    "type": "function",
    "function": {
      "name": "search",
      "arguments": "{\"query\": \"LangGraph latest version\"}"
    }
  }]
}
Tool Calling vs 自然语言指令
旧方式:LLM 输出 "请搜索 XXX" → 正则解析,格式不稳定
新方式:LLM 输出结构化 JSON → 可直接调度函数,100% 可靠

Reflection = Agent 审视自己并自我改进

让 Agent 从"做完"到"做好"的关键机制。类比代码 Review:写代码 → 审查 → 发现问题 → 修改 → 再审查。

Reflection 循环

Generate
生成输出
Review
自我审视
Output
通过输出
不通过 ↓
Revise 修改
→ 回到 Review

审查维度(5 维度评分)

维度检查内容扣分条件
1. 事实准确性数据是否有来源支撑?缺少来源标注
2. 结构完整性是否有标题、正文、结论?结构缺失
3. 内容丰富度小节数是否足够?少于 4 个小节
4. 主题相关性是否回应了原始任务?关键词匹配不足
5. 细节充分度内容是否充分展开?少于 500 字符
防止无限反思
设置 MAX_REFLECTION_ROUNDS = 3(最多修改 3 轮)
设置 PASS_THRESHOLD = 7(评分 >= 7 自动通过)
两重保险确保 Agent 不会陷入死循环

完整 Agent 架构

Agent Orchestrator

Planning Loop: Plan → Execute → Observe

ReAct 循环
Think → Act → Observe
Reflection 反思
Review → Revise → Repeat
Memory 存取
短期 + 长期 + 压缩
Tools 工具层
search · read · write · calculate
Memory Store 记忆存储
Short-term dict · Long-term vector DB

数据流

def run(task):
    plan = self.plan(task)           # 1. 规划阶段
    for step in plan.steps:          # 2. 执行循环
        while not step.completed:
            thought = self.think()   #    ReAct 推理
            action = self.decide()   #    Tool Calling
            observation = self.exec()#    执行工具
            self.remember(...)       #    存入记忆
        if step.should_reflect:      # 3. 反思阶段
            review = self.reflect()
            if not review.passed:
                step.revise()        #    修改后重做

三阶段渐进 Demo

阶段 主题 新增能力 运行方式
Phase 1 基础 Research Agent ReAct 循环 · 模拟搜索 · 自动报告生成 python agent_demo.py --phase 1
Phase 2 + 记忆系统 短期对话记忆 · 长期知识记忆 · 上下文压缩 python agent_demo.py --phase 2
Phase 3 + 反思机制 5 维度自审评分 · 问题检测 · 自动修改循环 python agent_demo.py --phase 3

Phase 3 反思效果演示

--- 反思第 1 轮 ---
  评分: 1/10
  问题: [缺少来源标注, 缺少结论, 内容不丰富, 报告过短]
  ❌ 不通过 → 自动修改

--- 反思第 2 轮 ---
  评分: 6/10
  问题: [内容不丰富, 报告过短]
  ❌ 不通过 → 再次修改

--- 反思第 3 轮 ---
  评分: 6/10
  ⚠️ 达到最大修改轮次 (3),停止反思
  最终评分: 6/10

注意:Demo 的 revise 是简化版(添加结构元素),生产级应用需要让 LLM 进行真正的文本修改。

Agent 设计模式全景对比

模式核心循环优点缺点适用场景
ReAct Think → Act → Observe 简单可靠 复杂任务容易迷路 搜索、问答
Plan-Execute Plan → Execute 路线清晰 计划可能过时 多步工作流
ReWOO Plan → Tool → Solve 减少 LLM 调用 缺少中间纠正 Token 敏感的批量任务
Reflexion ReAct + Reflection 质量高 延迟和成本翻倍 需要高品质输出
Multi-Agent 多角色协作 专业化分工 协调开销大 复杂项目

选择决策树

任务复杂度?
│
├── 简单(1-2 步)→ 直接 ReAct
│
├── 中等(3-5 步)→ ReAct + Reflection
│
└── 复杂(> 5 步或有子任务)
    │
    ├── 子任务独立 → Multi-Agent(Supervisor 模式)
    └── 子任务有依赖 → Plan-Execute + Reflection

三个框架的定位

框架定位何时用
MCP Tool Calling 标准化协议 需要跨平台复用工具时
LangGraph Agent 图编排框架 需要精确控制 Agent 流程时
CrewAI 高层 Multi-Agent 抽象 快速搭建多 Agent 协作时