03:Agent三大设计范式
本文概述了Agent设计的三大范式:ReAct、Plan-and-Execute和Reflection。ReAct通过交替推理与行动实现灵活交互,适合简单任务但缺乏全局视角;Plan-and-Execute先规划后执行,适合复杂任务但成本较高;Reflection通过评估和重试提升输出质量,但延迟和成本显著增加。文章提供了Java伪代码示例,并给出工程化建议,包括设置资源预算、日志记录和评估规则化
·
学习笔记:详述 Agent 图中的三大设计方式的原理、示例、优劣、工程落地要点与选型建议
目录
概述
在 Agent 设计里,常见的运行范式决定了 Agent 如何生成“思考”和“行动”的节奏。三大常用范式是ReAct、Plan-and-Execute、Reflection(及其变体 Reflexion)。理解它们的差异有助于在工程中做出成本、稳定性和质量间的权衡。
三大范式速览
- ReAct:交替进行“推理(Thought)”与“行动(Action)”,适合交互式、需要多轮工具调用的任务。优点是即时反馈、灵活;缺点是缺乏全局视角,长链任务可能走偏。
- Plan-and-Execute:先由规划器生成完整或分层计划,再逐步执行并在必要时重规划。优点是
全局可见、便于人工审核;缺点是规划成本与延迟较高。 - Reflection/Reflexion:在执行后加入评估/反思环节(可以是单步或整体),若不通过则修正并重试。优点是能显著提升输出质量;缺点是额外的代价(token、延迟、复杂性)。

ReAct(Reasoning + Acting)
- 核心思路:在每轮循环中让模型先“写出思考过程(Thought)”,再决定“采取何种行动(Action)”,执行后把结果(Observation)反馈回模型,形成 Thought → Action → Observation 的循环。
- 优势:实现简单、适合交互式检索/工具调用场景;便于逐步调试(可查看每次 Thought)。
- 劣势:局部视角、易陷入循环或反复调用同类工具;对于需要全局规划的任务表现有限。
- 工程建议:添加循环上限、token/时间预算、动作校验与防抖(防止重复相同行为)。

Plan-and-Execute(先规划后执行)
- 核心思路:先让模型(或专用规划器)输出一份分解的步骤清单(Plan),然后按步骤依次执行;执行过程中把结果反馈给规划器,必要时重规划(dynamic replanning)。
- 优势:对复杂、多步骤任务有全局视角,易于人工审核与回滚,适合需要保证结构/一致性的任务。
- 劣势:规划阶段可能犯方向性错误;规划+执行需要额外 LLM 调用,延迟和成本较高。
- 工程建议:
在规划阶段限制深度/粒度(分层计划),为关键步骤加入人工审查点;实现轻量版模拟执行以验证计划可行性。
Reflection / Reflexion(反思)
- 核心思路:在执行后加入评估器(可由另一个 LLM 或同模型不同角色担任),对输出进行质量判定;若不通过,评估器给出改进建议并触发重试;Reflexion 会把“失败原因+改进建议”写入上下文,作为下一次尝试的记忆。
- 优势:对代码生成、写作、设计类高质量场景效果显著(可量化提升)。
- 劣势:需要额外评估模型和多次迭代,成本与延迟显著增加。
- 工程建议:把评估规则工程化为可执行打分函数(包含单元测试、风格检查、约束校验等),并限制最大重试次数和资源消耗。

每种范式的 Java 伪代码示例
ReAct
public String runReActAgent(String goal) {
List<String> history = new ArrayList<>();
for (int round = 0; round < MAX_ROUNDS; round++) {
String thought = llm.think(goal, history);
Action action = llm.decideAction(thought);
if (action.isToolCall()) {
Object result = tools.execute(action.getName(), action.getArgs());
history.add(formatObservation(action, result));
continue;
}
if (action.isFinalAnswer()) return action.getContent();
}
return "未能在限制内完成";
}
Plan-and-Execute
public String runPlanExecute(String goal) {
List<PlanStep> plan = planner.createPlan(goal);
for (PlanStep step : plan) {
ExecutionResult res = executor.execute(step);
planner.update(plan, step, res); // dynamic replanning
if (res.isFailure()) {
if (planner.shouldReplan()) plan = planner.replan(goal, plan, res);
}
}
return planner.collectResult(plan);
}
Reflection
public String runWithReflection(String goal) {
String output = runPlanExecute(goal); // 或 runReActAgent
EvalResult eval = evaluator.evaluate(output);
if (!eval.passed()) {
String feedback = eval.feedback();
// 可选:把反馈作为新的上下文触发一次修正
return runWithFeedback(goal, feedback);
}
return output;
}
工程化要点与常见陷阱
- 停止条件与资源预算:为任何会导致循环的范式(ReAct / Reflection / Planner 重试)设置轮次、token 与超时上限。
- 可复现性与日志:记录每轮 Thought、Action、工具输入/输出及评估器打分,便于回放与定位错误。
- 工具接口健壮性:工具必须返回结构化、可解析的错误信息,避免返回模糊异常码。
- 规划器可信度:在 Plan-and-Execute 中,优先把计划拆成可验证的里程碑(微计划),并在关键里程碑前设置人工审批或模拟执行。
- 评估器规则化:Reflection 依赖评估器质量,推荐将评估标准工程化为自动检查脚本(单元测试、约束校验、风格规则、语义相似度阈值等)。
- 成本控制:分层模型架构(大模型负责规划/评估,小模型做抽取/格式化)可显著降低成本。
何时选哪种:决策矩阵与混合实践
- 任务维度:
低复杂度、低质量门槛:优先 Workflow 或简单 ReAct。中等复杂度、可分步骤:Plan-and-Execute(带动态重规划)优先。高质量要求(代码/法律文档等):在 Plan/ReAct 基础上加入 Reflection/Reflexion。
- 生产实践:优先用 Workflow 骨架;在需要灵活性的节点嵌入 Agent(ReAct)或用 Planner 做全局协调;对关键输出引入 Reflection 做质量把关。
测试与监控建议
- 场景测试:正常流、工具异常、模型生成非法参数、极端与恶意输入。
- 指标:成功率、平均轮次、平均 token 消耗、平均延迟、评估分数与人工复核率。
- 告警:超出 token 上限、长轮次未完成、评估分数低于阈值时触发人工介入。
参考资料
- 小林笔记:Agent 设计范式
https://xiaolinnote.com/ai/agent/4_patterns.html - Multi-agent system(Wikipedia):关于多 Agent 协作与编排的参考 https://en.wikipedia.org/wiki/Multi-agent_system
- Reflective programming(Wikipedia):作为“反思”概念的补充背景 https://en.wikipedia.org/wiki/Reflective_programming
更多推荐



所有评论(0)