摘要:构建一个稳定、高可用且具备复杂推理能力的智能体(Agent),核心难点不在于大模型(LLM)基座本身,而在于认知控制流与规划执行范式(Cognitive Architecture)的设计。
本文将系统拆解当前 Agent 领域最核心的三大基础范式:
ReAct(Reasoning + Acting:单步交替决策探索);
Plan-and-Execute(全局计划拆解与分发执行);
Reflection / Reflexion(自省批判、记忆回溯与迭代微调)。
本文将从底层运行机理、状态转移图、Token/延迟开销、工程代码实现到工业级选型决策矩阵,全面对比三者的技术边界,并给出生产环境下的复合架构演进方案。
一、 认知控制流的演进:为什么需要 Agent 范式?
单纯依靠大模型的单轮输出或简单的 Chain-of-Thought(CoT 思维链),在面对多步骤、多工具依赖以及存在外部环境不确定性的任务时,极易出现以下工程缺陷:
幻觉与事实脱节:静态生成的长文本无法与外部实时状态对齐;
缺乏动态反馈回路:一旦中间某一步工具调用报错或拿到空数据,后续整个推理链路全盘崩溃;
全局目标迷失(Goal Drifting):在超长交互链条中,模型容易在上下文膨胀后遗忘最初的核心诉求。
为了给大模型装上“控制系统”,学术界与工业界抽象出了不同的智能体规划控制范式(Planning & Execution Paradigms)。其中,ReAct、Plan-and-Execute 和 Reflection 是支撑起现代 Agent 系统最基础的三大认知支柱。
┌────────────────────────────────────────────────────────────────────────┐ │ 三大 Agent 核心范式总览 │ ├──────────────────┬──────────────────────┬──────────────────────────────┤ │ 核心范式 │ 核心认知模式 │ 状态决策机制 │ ├──────────────────┼──────────────────────┼──────────────────────────────┤ │ ReAct │ 边想边做,局部迭代 │ 每次仅推演并执行当前一步动作 │ ├──────────────────┼──────────────────────┼──────────────────────────────┤ │ Plan-and-Execute │ 先谋后动,全局解耦 │ 一次性生成全量计划,按图索骥 │ ├──────────────────┼─────────────────────────────┼───────────────────────┤ │ Reflection │ 试错迭代,事后批判 │ 执行后评估偏差,记忆回传重试 │ └──────────────────┴──────────────────────┴──────────────────────────────┘二、 范式一:ReAct(Reasoning + Acting)
2.1 底层机理与执行回路
ReAct(Reasoning + 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 进行了横向对照:
| 评估维度 | ReAct | Plan-and-Execute | Reflection / 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 = f"User 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 += f"Thought: {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" 子任务 {idx+1}: {task['description']} (指派工具: {task['tool']})") execution_results = {} # 2. 阶段二:调度 Worker 逐项执行 (Executor) for idx, task in enumerate(plan): print(f"\n>>> 正在执行子任务 {idx+1}: {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, iteration=i) 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:运行边缘测试用例""" # 针对 b=0 进行断言测试 if "if b == 0" not in code: return False, "ZeroDivisionError: 当参数 b 为 0 时代码崩溃抛出异常!" return True, "All Test Cases Passed (包含边缘用例 b=0)." 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 & Timeout):
Agent 调用的外部 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 真正推向商业化落地的制胜法宝。