十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ReAct、Plan-and-Execute、Reflection 三种范式有什么核心区别

ReAct、Plan-and-Execute、Reflection 三种范式有什么核心区别 摘要构建一个稳定、高可用且具备复杂推理能力的智能体Agent核心难点不在于大模型LLM基座本身而在于认知控制流与规划执行范式Cognitive Architecture的设计。本文将系统拆解当前 Agent 领域最核心的三大基础范式ReActReasoning Acting单步交替决策探索Plan-and-Execute全局计划拆解与分发执行Reflection / Reflexion自省批判、记忆回溯与迭代微调。本文将从底层运行机理、状态转移图、Token/延迟开销、工程代码实现到工业级选型决策矩阵全面对比三者的技术边界并给出生产环境下的复合架构演进方案。一、 认知控制流的演进为什么需要 Agent 范式单纯依靠大模型的单轮输出或简单的 Chain-of-ThoughtCoT 思维链在面对多步骤、多工具依赖以及存在外部环境不确定性的任务时极易出现以下工程缺陷幻觉与事实脱节静态生成的长文本无法与外部实时状态对齐缺乏动态反馈回路一旦中间某一步工具调用报错或拿到空数据后续整个推理链路全盘崩溃全局目标迷失Goal Drifting在超长交互链条中模型容易在上下文膨胀后遗忘最初的核心诉求。为了给大模型装上“控制系统”学术界与工业界抽象出了不同的智能体规划控制范式Planning Execution Paradigms。其中ReAct、Plan-and-Execute 和 Reflection 是支撑起现代 Agent 系统最基础的三大认知支柱。┌────────────────────────────────────────────────────────────────────────┐ │ 三大 Agent 核心范式总览 │ ├──────────────────┬──────────────────────┬──────────────────────────────┤ │ 核心范式 │ 核心认知模式 │ 状态决策机制 │ ├──────────────────┼──────────────────────┼──────────────────────────────┤ │ ReAct │ 边想边做局部迭代 │ 每次仅推演并执行当前一步动作 │ ├──────────────────┼──────────────────────┼──────────────────────────────┤ │ Plan-and-Execute │ 先谋后动全局解耦 │ 一次性生成全量计划按图索骥 │ ├──────────────────┼─────────────────────────────┼───────────────────────┤ │ Reflection │ 试错迭代事后批判 │ 执行后评估偏差记忆回传重试 │ └──────────────────┴──────────────────────┴──────────────────────────────┘二、 范式一ReActReasoning Acting2.1 底层机理与执行回路ReActReasoning Acting由普林斯顿大学与 Google 团队于 2022 年论文《ReAct: Synergizing Reasoning and Acting in Language Models》提出。它的核心思想是将大模型的“推理Reasoning”能力与“行动Acting”能力紧密交织在一起形成一个单步自回归的动态探索循环。┌───────────────────────────────┐ │ 用户输入目标 │ └───────────────┬───────────────┘ │ ▼ ┌───────────────────────────────┐ ┌───►│ Thought (思考当前状态与下一步)│ │ └───────────────┬───────────────┘ │ │ │ ▼ │ ┌───────────────────────────────┐ │ │ Action (调用指定工具并传参) │ │ └───────────────┬───────────────┘ │ │ │ ▼ │ ┌───────────────────────────────┐ └───-│ Observation (获取外部工具返回)│ └───────────────┬───────────────┘ │ (判断目标是否达成) ▼ ┌───────────────────────────────┐ │ Final Answer (最终回答) │ └───────────────────────────────┘ReAct 的标准执行步进在一个标准的 ReAct 循环中模型在每一步必须严格遵循三部曲Thought思考分析当前对话历史与上一步 Observation环境观察评估当前解题进度并推断下一步应采取的操作Action动作输出结构化的工具调用指令如Search[2026年半导体行业报告]或Calculator[1200 * 1.15]Observation观察系统拦截该 Action在真实环境中执行工具并将执行结果作为 Observation 重新灌回模型上下文。2.2 核心优势与局限性核心优势极高的环境适应性与动态调整能力每一步都是根据外部环境的最新反馈做出的实时决策。如果第 1 步检索为空第 2 步可以立即自主更换搜索关键词。低延迟起步Low Initial Latency无需在开头耗费大量 Token 进行全盘宏观规划模型接到任务后可立刻采取第一个动作。局限性与工程隐患容易陷入局部死循环Deadlock / Action Loop当模型连续多次调用工具返回异常时ReAct 容易在原地反复尝试同义工具无法跳出局部困境。缺乏宏观大局观Myopic Planning由于模型每一步只看“当前即时上下文”在面对包含十几个步骤的长链路任务时极易“走一步看一步”最终偏离主线目标Goal Drifting。上下文快速膨胀Context Explosion每进行一次Thought - Action - Observation循环历史 Token 都会线性累加多轮之后不仅推理成本剧增还会降低大模型对核心指令的注意力。三、 范式二Plan-and-Execute计划与执行解耦3.1 底层机理与执行回路Plan-and-Execute计划-执行范式代表工作如 Plan-and-Solve、BabyAGI打破了 ReAct 边想边做的模式提出了“认知解耦”的理念将“宏观规划Planning”与“微观执行Execution”在架构层面明确分离。┌───────────────────────────────┐ │ 用户输入目标 │ └───────────────┬───────────────┘ │ ▼ ┌───────────────────────────────┐ │ Planner (生成全局子任务计划) │ │ [Step 1, Step 2, ..., Step N]│ └───────────────┬───────────────┘ │ ┌──────────────────┴──────────────────┐ ▼ ▼ ┌───────────────────────────┐ ┌───────────────────────────┐ │ Executor (执行 Step 1) │ ──并/串行─►│ Executor (执行 Step 2) │ │ 工具调用 / 代码执行 │ │ 工具调用 / 代码执行 │ └───────────┬───────────────┘ └───────────┬───────────────┘ │ │ └──────────────────┬──────────────────┘ │ ▼ ┌───────────────────────────────┐ │ Replanner (重规划器 / 评估器) │ └───────────────┬───────────────┘ │ ┌──────────────────┴──────────────────┐ │ (仍有未完成步骤/需调整) │ (全部完成) ▼ ▼ [更新并生成剩余步骤 Plan] [汇总生成 Final Answer]Plan-and-Execute 的三层分工体系Planner规划器通常选用高智商大模型如 GPT-4o / Claude 3.5 Sonnet / DeepSeek-V3。它不直接调用外部细节工具而是负责将高抽象级别的复杂目标分解为一份有向无环图DAG或任务清单Task List。Executor / Worker执行器可以采用更轻量、更廉价的模型如 GPT-4o-mini、7B/14B 端侧微调模型。Worker 仅专注完成 Planner 分发给自己的单一子任务如“抓取特定网页内容”或“执行一段 SQL”。Replanner重规划器在每个子任务执行完毕后检查当前执行结果是否符合预期。如果中间某一步产生非预期输出Replanner 会动态修改或裁剪后续的计划列表再交给 Executor 继续执行。3.2 核心优势与局限性核心优势全局掌控力强避免偏离目标始终有一份顶层 Task List 作为状态锚点Agent 不会因为某个细节而迷失宏观方向。支持子任务并发执行Parallel Execution对于互相无数据依赖的子任务例如同时检索 5 家竞品公司的财报Planner 可以将任务并行分发给多个 Executor 同时并发执行大幅降低全链路耗时。算力与成本精细化分配规划用昂贵的大模型执行用便宜的小模型能够显著优化系统的 Token 运营成本。局限性与工程隐患初始规划延迟较高High Upfront Latency系统在接到用户请求后必须先等待 Planner 完整生成结构化计划才能启动第一个动作。过度拟合“静态计划”如果缺少强有力的 Replanner一旦第一步的真实环境输出彻底推翻了 Planner 的初始预设后续预排的所有步骤将沦为无意义的计算浪费。四、 范式三Reflection / Reflexion反思与自我修正4.1 底层机理与执行回路Reflection反思范式代表工作如 Northeastern 大学提出的《Reflexion: Language Agents with Verbal Reinforcement Learning》以及 Self-Refine、CRITIC 等将认知心理学中的“元认知Metacognition”引入 Agent。它的核心思想是人类在解决复杂问题时很少一次就写出完美答案而是通过“初稿 - 评估纠错 - 提炼反思经验 - 重新修改”的多轮循环逐步逼近最优解。┌───────────────────────────────┐ │ 用户输入目标 │ └───────────────┬───────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ Actor (行动者生成初始轨迹/代码/草稿) │◄────────────────┐ └────────────────────┬────────────────────┘ │ │ │ ▼ │ ┌─────────────────────────────────────────┐ │ │ Evaluator / Environment (评估与测试环境)│ │ │ - 运行单测 / 格式校验 / 规则断言 │ │ └────────────────────┬────────────────────┘ │ │ │ ┌──────────────────┴──────────────────┐ │ │ (通过/得分达标) │ (未通过/存在缺陷) │ ▼ ▼ │ ┌─────────────────────────┐ ┌──────────────────────────┐ │ │ 输出最优成果 (Finish) │ │ Self-Reflection (反思器) │ │ └─────────────────────────┘ │ 提炼错误归因与改进建议 │ │ └────────────┬─────────────┘ │ │ │ ▼ │ ┌──────────────────────────┐ │ │ Memory (将反思写入工作区)│─────┘ └──────────────────────────┘Reflection 的三大核心组件Actor行动者基于当前上下文和历史反思记忆生成初步的操作轨迹、代码或分析文本。Evaluator评估器可以是一个确定性的外部代码运行环境如 Pytest 单元测试、编译器也可以是一个充当审校角色的 LLM Critic。Evaluator 会输出一个标量得分Scalar Reward或具体的错误堆栈信息。Self-Reflection自我反思器当 Evaluator 判定结果未达标时反思模型会针对(输入目标, Actor产出, Evaluator报错)进行深度归因分析生成一段自然语言形式的“反思经验词Reflection Memory”例如“上一次生成的 SQL 报错原因是没有为聚合字段设置别名下一次生成时必须显式添加 AS 别名”。4.2 核心优势与局限性核心优势极端场景下的超高确定性与正确率在代码生成、复杂数学证明、数据结构转换等具备“可验证真值Ground Truth”的场景下Reflection 能够将任务成功率从 50% 提升至 90% 以上。自发沉淀短期/长期工作经验反思生成的经验文本可以写入 Agent 的 Episodic Memory情景记忆库在跨轮次同类任务中直接复用避免“在一个坑里跌倒两次”。局限性与工程隐患极高的 Token 消耗与响应延迟一次完整的任务可能需要经历 3~5 轮反思迭代Token 消耗是常规调用的数倍耗时通常以分钟计。确认偏误Confirmation Bias与无效反思如果基座模型能力不足模型在反思时可能会“一本正经地胡说八道”把正确的逻辑改错甚至在同一个错误逻辑上反复打转。五、 三大范式多维度全景横向对比为了让技术选型更加清晰下表从 10 个核心工程维度对 ReAct、Plan-and-Execute 与 Reflection 进行了横向对照评估维度ReActPlan-and-ExecuteReflection / Reflexion核心设计哲学边想边做单步敏捷探索先谋后动宏观解耦分发试错演进事后自省纠偏规划时间线局部规划Local / Step-by-Step全局前置规划Global / Upfront事后回溯规划Retrospective / Post-hoc上下文增长速率极快每次交互全量累加慢子任务执行器上下文隔离较快包含多轮草稿与反思日志首字延迟 (TTFT)极低毫秒级启动第一步较高需等待全量计划生成中等先出初稿但终稿极慢总执行耗时中等取决于探索步数低支持子任务并行执行极高多轮串行修正环境动态适应力极强实时感知外界变化中等高度依赖 Replanner强根据执行报错定向修正复杂长任务稳定性较差容易迷失或死循环极佳任务清单严格约束良好在局部复杂块上精度高Token 成本控制中等较低可使用轻量 Worker高昂数倍的 Token 开销对基座模型要求具备基础 Tool Use 即可需要极强的全局逻辑拆解能力需要极强的自检与批判能力典型适用场景动态 API 检索、多轮客服问答复杂数据报表、自动化调研代码生成修复、合同文书审查六、 生产级端到端代码实现三大范式核心模块为了帮助读者深入理解代码层面的运行差异下面使用纯 Python 构造一套结构统一、无第三方黑盒依赖的最小生产级实现。6.1 基础公共工具库模拟import json import re from typing import List, Dict, Any, Tuple # 模拟外部工具箱 class MockToolbox: staticmethod def search_web(query: str) - str: db { 2026年AI芯片市场规模: 2026年全球AI芯片市场规模预计突破1500亿美元年复合增长率超过30%。, 某公司2025年营收: 该公司2025年经审计营收为850亿元人民币同比增长12%. } for k, v in db.items(): if k in query: return v return f针对查询 [{query}] 未检索到直接匹配数据。 staticmethod def python_calculator(expression: str) - str: try: return str(eval(expression)) except Exception as e: return f计算报错: {str(e)}6.2 范式一ReAct 引擎核心实现class ReActAgentEngine: def __init__(self, max_steps: int 5): self.max_steps max_steps self.tools { Search: MockToolbox.search_web, Calculator: MockToolbox.python_calculator } def run(self, user_goal: str) - str: print(f\n [ReAct 启动] 目标: {user_goal} ) trajectory fUser Question: {user_goal}\n for step in range(1, self.max_steps 1): print(f\n Step {step} 推演中...) # 1. 模拟大模型生成 Thought 与 Action thought, action_name, action_input self._mock_llm_react_step(user_goal, trajectory, step) print(f[Thought]: {thought}) if action_name Finish: print(f[Final Answer]: {action_input}) return action_input print(f[Action]: 调用工具 {action_name}参数: {action_input}) # 2. 执行工具获取 Observation if action_name in self.tools: obs self.tools[action_name](action_input) else: obs f错误未找到工具 {action_name} print(f[Observation]: {obs}) # 3. 将单步轨迹追加到上下文中 trajectory fThought: {thought}\nAction: {action_name}[{action_input}]\nObservation: {obs}\n return 错误超出最大探索步数任务未完成。 def _mock_llm_react_step(self, goal: str, history: str, step: int) - Tuple[str, str, str]: 模拟大模型根据当前观察返回单步决策 if step 1: return (需要先查询2026年AI芯片市场规模, Search, 2026年AI芯片市场规模) elif step 2: return (已经拿到市场规模数据1500亿美元任务完成, Finish, 2026年全球AI芯片市场规模预计将突破1500亿美元。) return (无法识别状态, Finish, 结束)6.3 范式二Plan-and-Execute 引擎核心实现class PlanAndExecuteEngine: def __init__(self): self.tools { Search: MockToolbox.search_web, Calculator: MockToolbox.python_calculator } def run(self, user_goal: str) - str: print(f\n [Plan-and-Execute 启动] 目标: {user_goal} ) # 1. 阶段一全局规划 (Planner) plan: List[Dict[str, str]] self._planner(user_goal) print(\n[Planner 全局计划生成]:) for idx, task in enumerate(plan): print(f 子任务 {idx1}: {task[description]} (指派工具: {task[tool]})) execution_results {} # 2. 阶段二调度 Worker 逐项执行 (Executor) for idx, task in enumerate(plan): print(f\n 正在执行子任务 {idx1}: {task[description]}) tool_name task[tool] tool_input task[input] # 如果存在依赖前序任务的结果动态替换参数 if {prev_output} in tool_input: tool_input tool_input.replace({prev_output}, str(execution_results.get(idx - 1, ))) # 执行具体操作 result self.tools[tool_name](tool_input) execution_results[idx] result print(f[Worker 执行结果]: {result}) # 3. 阶段三汇总与最终生成 final_answer self._synthesizer(user_goal, plan, execution_results) print(f\n[Final Synthesized Answer]:\n{final_answer}) return final_answer def _planner(self, goal: str) - List[Dict[str, str]]: 模拟顶层规划器拆解任务 return [ {description: 查询某公司2025年营收数据, tool: Search, input: 某公司2025年营收}, {description: 按15%增长率推算2026年预期营收, tool: Calculator, input: 850 * 1.15} ] def _synthesizer(self, goal: str, plan: List[Dict], results: Dict) - str: return f基于全量计划执行某公司2025年实际营收为850亿元按15%增速测算2026年预期营收为 {results[1]} 亿元。6.4 范式三Reflection 引擎核心实现class ReflectionEngine: def __init__(self, max_iterations: int 3): self.max_iterations max_iterations def run(self, coding_task: str) - str: print(f\n [Reflection 启动] 编程任务: {coding_task} ) current_code reflection_memory: List[str] [] for i in range(1, self.max_iterations 1): print(f\n 迭代轮次 {i} / {self.max_iterations}) # 1. Actor 生成/重构方案 (注入历史反思经验) current_code self._actor(coding_task, current_code, reflection_memory, iterationi) print(f[Actor 产出代码]:\n{current_code}) # 2. Evaluator 执行严格的测试断言 eval_passed, eval_feedback self._evaluator(current_code) print(f[Evaluator 测试反馈]: {全部通过 if eval_passed else 存在缺陷: eval_feedback}) if eval_passed: print(f\n[任务圆满达成] 最终高质量代码已生成) return current_code # 3. Self-Reflection 生成反思记忆 critique self._self_reflection(current_code, eval_feedback) print(f[Self-Reflection 经验归因]: {critique}) reflection_memory.append(critique) return current_code def _actor(self, task: str, prev_code: str, memory: List[str], iteration: int) - str: 模拟 Actor根据反思经验逐步修复代码缺陷 if iteration 1: # 第一次初稿包含了除以零的隐藏 Bug return def calculate_ratio(a, b):\n return a / b else: # 读取了反思记忆后修复 Bug return def calculate_ratio(a, b):\n if b 0:\n return 0.0\n return a / b def _evaluator(self, code: str) - Tuple[bool, str]: 模拟 Evaluator运行边缘测试用例 # 针对 b0 进行断言测试 if if b 0 not in code: return False, ZeroDivisionError: 当参数 b 为 0 时代码崩溃抛出异常 return True, All Test Cases Passed (包含边缘用例 b0). def _self_reflection(self, failed_code: str, feedback: str) - str: 模拟反思器输出改进建议 return f诊断结论当前实现缺少除数非零校验后续修改必须加入防御性判断 (if b 0)。七、 工业级场景选型决策矩阵与实战案例在真实的企业级架构设计中面对业务部门提出的各种复杂需求我们该如何进行科学选型7.1 选型决策树模型[开始: 评估业务需求] │ ┌──────────────────────┴──────────────────────┐ │ 是否有明确、可判定的真值验证规则 │ │ (如代码测试用例、格式校验器、精确数学公式) │ └──────────────────────┬──────────────────────┘ │ ┌──────────────────────┴──────────────────────┐ ▼ (YES) ▼ (NO) ┌─────────────────────────┐ ┌─────────────────────────────────┐ │ 追求极致正确率且容忍延迟│ │ 任务是否包含高度不确定的多分支│ │ ➔ 选用 【Reflection】 │ │ (如需频繁根据 API 返回调优检索) │ └─────────────────────────┘ └────────────────┬────────────────┘ │ ┌──────────────────────┴──────────────────────┐ ▼ (YES) ▼ (NO) ┌─────────────────────────┐ ┌─────────────────────────┐ │ 交互探索、动态调整链路 │ │ 任务目标庞大但步骤相对确定│ │ ➔ 选用 【ReAct】 │ │ ➔ 选用【Plan-and-Exec】 │ └─────────────────────────┘ └─────────────────────────┘7.2 四大典型业务场景选型指南场景 1智能客服知识库问答与即时 API 检索业务特点用户提问五花八门可能需要先查用户身份、再查订单状态、最后查退款规则对响应时间首字延迟 TTFT要求高。最佳选型ReAct。选型理由ReAct 能够快速响应前两步命中结果后可随时提前终止Finish无需花费 2 秒去预先规划全盘计划。场景 2企业级深度市场调研与多源数据分析报告业务特点输入一个宏观目标如“分析 2025 年国内新能源汽车三电系统的竞争格局并输出 3000 字报告”任务可拆解为“搜电池、搜电机、搜电控、搜财务报表、汇总渲染”等十几个子任务。最佳选型Plan-and-Execute。选型理由任务长且具备大量的并行空间。Planner 生成结构化目录后可并发启动 5 个 Worker 同时抓取不同模块的数据总响应时间直接缩短 70%且输出排版高度结构化。场景 3金融自动化审计、合同合规自检与代码重构业务特点容错率极低Zero Tolerance for Errors。哪怕耗时 2 分钟、花费 5 万 Token也必须确保审查无遗漏、生成的代码 100% 能跑通。最佳选型Reflection / Reflexion。选型理由引入专用 Critic 模型与代码沙箱通过多轮交叉审校Cross-Verification与测试反馈强制将低级幻觉与语法漏洞在内部循环中消化完毕后再输出给用户。场景 4复杂软件工程级系统如 SWE-agent、DevOps 自动化运维业务特点兼具宏观架构设计、复杂环境探索与代码质量保障。最佳选型复合混合架构Hybrid Architecture。八、 走向工业生产复合混合范式Hybrid Architecture的演进在真实的生产级 Agent 框架如LangGraph、AutoGen、CrewAI或开源项目MetaGPT中几乎没有一个成熟系统采用单一的纯 ReAct 或纯 Plan 架构。当前业界公认的最强生产形态是三者的有机嵌套与融合┌────────────────────────────────────────────────────────────────────────┐ │ 工业级复合 Agent 架构 (Plan ReAct Reflection) │ └───────────────────────────────────┬────────────────────────────────────┘ │ 1. 宏观层 ▼ ┌────────────────────────────────────────────────────────────────────────┐ │ Global Planner (Plan-and-Execute) ➔ 拆解为宏观任务 DAG │ │ [Task A: 检索行业政策] ➔ [Task B: 爬取财务数据] ➔ [Task C: 编写脚本]│ └───────────────────────────────────┬────────────────────────────────────┘ │ 2. 微观执行层 ▼ ┌────────────────────────────────────────────────────────────────────────┐ │ Worker (采用 ReAct 范式) ➔ 独立负责 Task A 与 Task B 的动态探索 │ │ Thought ➔ Action ➔ Observation ➔ 解决动态网络环境未知性 │ └───────────────────────────────────┬────────────────────────────────────┘ │ 3. 质量把关层 ▼ ┌────────────────────────────────────────────────────────────────────────┐ │ Quality Gate (采用 Reflection 范式) ➔ 对 Task C 核心代码自检 │ │ 代码沙箱执行 ➔ 抛出异常 ➔ 触发反思回溯 ➔ 修正后再提交结果 │ └────────────────────────────────────────────────────────────────────────┘生产级落地避坑四原则防范死循环与设置硬中断Circuit Breaker在 ReAct 和 Reflection 中必须设置严格的max_steps如最大 8 步与重复动作指纹检测Action Hash Deduplication。一旦检测到模型连续两次发送完全一样的参数立即触发强制降级干预。上下文隔离与状态裁剪State Pruning在 Plan-and-Execute 模式中严禁将所有 Worker 的全部历史无脑丢给下一个 Worker必须由 Worker 输出精炼的 Summary 后仅向后传递当前子任务的产出成果否则上下文会在第 3 个任务后迅速爆掉。工具调用的超时与沙箱隔离Sandbox TimeoutAgent 调用的外部 API 或 Python 代码必须具备严格的timeout保护如 10 秒超时中断且代码执行必须运行于轻量 Docker 容器或 WebAssembly (Wasm) 沙箱中防止恶意或错误代码阻塞主调度线程。可观测性与轨迹追踪Observability Tracing生产环境必须集成类似LangSmith、Phoenix (Arize)或OpenTelemetry的链路追踪工具。完整记录每一轮交互的Thought、Action、Latency、Token Usage与Error Stack这是后续定位 Agent 逻辑漂移与优化 Prompt 的核心依据。结语从ReAct的“敏捷直觉探索”到Plan-and-Execute的“宏观拆解统筹”再到Reflection的“严谨自省纠错”这三种范式本质上是对人类高级认知行为在大模型工程上的具象化抽象。没有最好的范式只有最契合业务边界的权衡Trade-off。追求即时响应选 ReAct追求高并发、大目标、低成本选 Plan-and-Execute追求极端准确率与代码/形式化严谨性选 Reflection面对企业级复杂工程采用“宏观 Plan 微观 ReAct 关键节点 Reflection”的复合架构才是将 Agent 真正推向商业化落地的制胜法宝。
返回列表