云计算百科
云计算领域专业知识百科平台

一文搞懂 Agent Loop、Graph Loop、Reflection、Reflexion:执行、编排与反馈改进的层次关系

很多人在学习大模型 Agent 时,容易把 Agent Loop、Graph Loop、Reflection、Reflexion 混为一谈。造成混淆的根本原因是:这些概念描述的并不是同一件事,有些属于执行机制,有些属于编排方式,有些属于反馈改进方法。

要真正理解它们,应当按照以下顺序:

  • Agent 如何执行任务?——Agent Loop
  • 如何控制任务的执行流程?——Graph Loop
  • 执行过程中如何发现错误并改进?——Reflection
  • 具体有哪些反馈改进方案?——Self-Refine、CRITIC、Reflexion
  • 这些机制在实际 Agent 系统中如何组合?

一、首先建立三个不同的概念层次

理解这些技术,最重要的是区分三个维度。

维度核心问题对应概念
执行机制 智能体如何不断决策、行动并完成任务? Agent Loop
编排机制 如何组织节点执行、条件分支和循环? Graph Loop
反馈改进机制 如何判断结果是否存在问题,并利用反馈优化? Reflection

这三个维度可以同时存在于同一个 Agent 系统中,并不相互排斥。

例如,用户要求 Agent 修复一段代码。

Agent 首先分析代码、调用工具、读取报错信息、修改文件。这一系列持续决策与工具交互,可以通过 Agent Loop 完成。

如果系统将“生成代码、运行测试、检查结果”拆成不同节点,并在测试失败时通过条件边返回修改节点,就形成了 Graph Loop。

而当系统根据测试结果分析错误原因,判断应该如何改进代码时,就使用了反馈与反思机制。

这里需要区分三种不同的东西:

  • Agent Loop 关注执行过程;
  • Graph Loop 关注控制流结构;
  • Reflection 关注反馈如何用于改进。

它们不是互斥关系,也不存在固定的父子包含关系。

二、Agent Loop:智能体持续决策与执行任务的机制

2.1 什么是 Agent Loop?

Agent Loop 是指 Agent 根据当前任务状态不断进行决策、执行行动、获取观察结果,再利用新信息决定下一步操作的循环。

典型流程为:

LLM 决策 → 执行 Action → 获取 Observation → 更新上下文 → 再次决策

直到任务完成、达到执行上限,或者满足其他终止条件。

与普通固定工作流不同,Agent Loop 的核心在于:Agent 可以根据执行过程中获得的新信息,动态决定下一步做什么。

例如,用户要求 Agent 查询某个接口报错的原因。

第一轮:Agent 决定读取日志。

第二轮:根据日志发现数据库连接异常,决定检查数据库状态。

第三轮:发现连接池耗尽,决定进一步检查连接释放逻辑。

第四轮:定位问题,给出修复方案。

这个过程中,Agent 的后续行动并不是全部提前写死,而是依赖每一步的 Observation。

2.2 ReAct 与 Agent Loop 的关系

ReAct 是 Agent Loop 的典型实现范式。

ReAct 的核心思想是将推理与行动交替结合:

Reasoning → Acting → Observation → Reasoning → …

模型可以根据观察结果调整后续行动。

但需要注意:

ReAct 不等于 Agent Loop 的全部。

Agent Loop 是更一般的执行机制,而 ReAct 是其中一种经典的推理与行动组织方法。其他采用不同规划方式的 Agent,也可以具有执行循环。

另外,ReAct 并不要求模型把所有内部推理都明确展示出来。实际工程系统可以通过工具调用、状态更新等方式实现类似的决策与行动循环。

2.3 Agent Loop 一定在节点内部吗?

不一定。

Agent Loop 描述的是智能体的执行行为,而不是代码必须部署在哪里。

它至少可以有两种常见实现。

实现一:通过普通程序循环实现。

在一个函数中反复调用模型,根据模型输出执行工具,再将工具结果传回模型。

实现二:通过图编排实现。

把模型调用和工具执行拆成两个节点:

Agent 节点 → Tool 节点 → Agent 节点

只要 Agent 还需要调用工具,就继续循环;如果 Agent 给出最终答案,就结束。

因此,同一个 Agent Loop 既可以被封装在单个节点内部,也可以由多个图节点共同实现。

不能简单认为“Agent Loop 是节点内部循环,Graph Loop 是节点之间循环”。

三、Graph Loop:图编排中的循环控制结构

3.1 Graph Loop 的本质是什么?

Graph Loop 是指工作流图中的执行路径通过某条边返回先前节点,从而产生循环。

例如:

生成节点 → 校验节点 → 判断节点

如果校验成功,则结束;如果校验失败,则返回生成节点。

它的本质是图上的循环控制流。

Graph Loop 只规定流程可以怎样重复执行,本身并不规定循环的具体目的。

因此,它可以用于很多不同场景:

  • Agent 反复调用工具;
  • 文本生成失败后修改;
  • 代码测试失败后重试;
  • 审核不通过后重新生成;
  • 完整任务失败后开启新一轮尝试。

3.2 Graph Loop 与 Agent Loop 的区别

最容易混淆的地方是:二者确实可能表现为相似的循环,但关注点不同。

Agent Loop 是按执行语义定义的:

它要求智能体能够根据状态和观察结果继续决策与行动。

Graph Loop 是按程序控制结构定义的:

只要图中存在可重复执行的循环路径,就可以构成 Graph Loop。

所以,Graph Loop 不一定包含 Agent。

例如,一个完全使用确定性程序的工作流:

调用接口 → 检查状态码 → 失败则重试接口

这也可以是 Graph Loop,但不一定属于 Agent Loop。

反过来,Agent Loop 也不一定通过图实现,它可以直接用普通 while 循环编写。

3.3 Graph Loop 一定是局部循环吗?

不是。

Graph Loop 可以是局部循环,也可以是整个图的循环。

例如:

局部循环:

生成答案 → 检查答案 → 修改答案

整体循环:

Agent 完整执行任务 → 评估是否成功 → 反思失败原因 → 重新执行任务

只要这些阶段被建模为图节点,并通过条件边返回先前节点,就属于图上的循环控制。

因此,不能把“同一个 trial 内部的局部重做”作为 Graph Loop 的必要定义。

Graph Loop 是否跨 trial、是否使用 Memory、是否重新开始完整任务,是系统设计者决定的,而不是由 Graph Loop 这个概念本身决定的。

3.4 Graph Loop 与 Agent Loop 可以重合

一个典型例子是用 LangGraph 实现 ReAct Agent:

Agent → Tool → Agent

这个循环可以同时被描述为:

  • 从执行机制看,它是 Agent Loop;
  • 从图编排结构看,它是 Graph Loop。

也就是说,二者不是非此即彼,而是从两个不同角度描述同一段执行流程。

四、Reflection:一种反馈驱动的检查与改进机制

理解 Reflection,首先要避免将其直接等同于某个特定循环。

Reflection 通常是指系统回顾已有输出、行动过程或执行结果,分析问题并生成可用于改进的反馈。

其一般逻辑是:

产生结果 → 评估结果 → 诊断问题 → 利用反馈改进

这里有两个需要区分的概念。

Evaluation(评估) 主要回答:结果是否正确、是否合格、得分是多少?

Reflection(反思) 更强调:为什么会出现问题,应该如何调整?

实际方法中,评估与反思往往紧密结合,但二者并不完全相同。

例如,单元测试报告某个测试没有通过,属于评估反馈;Agent 根据失败信息分析边界条件遗漏,并决定补充相应逻辑,则包含进一步的诊断与改进。

4.1 Reflection 是一个固定算法吗?

不是。

Reflection 更适合作为反馈改进思想或机制的宽泛称呼。

Self-Refine、CRITIC、Reflexion 都可以放在反馈驱动改进的框架下理解,但它们并不是某个严格标准化技术分类中的三个固定子类。

这点很重要,因为三者的研究目标和设计方式并不完全相同。

4.2 Reflection 必须使用自然语言吗?

不必须。

反馈可以来自多种来源:

  • 模型自己生成的评价;
  • 外部工具提供的运行结果;
  • 规则系统给出的判断;
  • 真实环境返回的反馈;
  • 人类提供的评价或指导。

反馈可能是自然语言,也可能是测试结果、分数或其他结构化信号。

模型可以进一步将这些反馈转化为自然语言形式的改进建议。

需要强调的是,Self-Refine、CRITIC、Reflexion 这三种经典方法主要在推理和执行阶段利用反馈改进结果,而不是通过每次失败更新模型权重。但“绝不更新权重”并不是广义 Reflection 的普遍定义。

4.3 Reflection 必须构成循环吗?

也不必须。

反思之后,系统可能:

  • 直接修改当前输出;
  • 回到某个步骤重新执行;
  • 保存失败经验,供下一次尝试使用;
  • 只生成诊断报告,不自动重试。

所以,Reflection 描述的是反馈改进机制,而循环如何实现,则属于执行和编排层面的问题。

接下来真正需要重点比较的是 Self-Refine、CRITIC 和 Reflexion。

五、Self-Refine、CRITIC、Reflexion:三种具体方法

这三种方法可以放在同一个问题下比较:

模型第一次执行效果不好时,系统怎样利用反馈让后续结果更好?

三者选择了不同的解决方案。

5.1 Self-Refine:模型自己评价,并修改当前结果

Self-Refine 的核心思想是让同一个大模型承担生成、反馈和修改的角色。

典型流程:

初始生成 → 自我反馈 → 根据反馈修改 → 再次反馈 → …

例如,让模型写一封商务邮件。

模型先生成初稿,然后评估措辞是否正式、信息是否完整、结构是否清晰。

如果发现问题,就根据反馈修改原稿,并重复这一过程,直到满足停止条件。

关键特征:

  • 反馈主要来自模型自身,而不是必须依赖外部工具。
  • 改进主要针对当前候选结果,通常会将已有内容和反馈共同用于下一次修订。
  • 不需要跨 trial 的经验记忆。

Self-Refine 的创新重点,是通过模型自身的反馈与迭代修订提升输出质量,而不是设计一种具有长期经验积累能力的 Agent。

需要注意:Self-Refine 是迭代优化方法,本身并不要求使用 Graph 框架实现。

5.2 CRITIC:借助外部工具验证,再修改结果

Self-Refine 有一个明显的局限:模型如果不知道自己错在哪里,单纯依赖自我评价,也可能无法发现错误。

CRITIC 试图利用外部工具提供额外的验证信息。

典型流程:

初始生成 → 工具交互与检查 → 获得外部反馈 → 模型分析并修改 → 再次验证

例如,让模型编写一个排序算法。

模型先生成代码,然后调用代码执行器运行测试。

如果发现测试失败,模型读取测试反馈,分析错误原因并修改代码。

然后重新执行测试。

与 Self-Refine 相比,CRITIC 的关键不是简单增加一个评审步骤,而是将外部工具提供的信息引入批评和修订过程。

不过,不能理解为 CRITIC 完全由工具自动判断所有错误。

工具通常提供检索证据、执行结果或可验证信息;如何根据这些信息形成批评、决定怎样修订,仍可能由模型完成。

因此,外部反馈也不必然正确。搜索结果可能不可靠,单元测试也可能覆盖不全面。

CRITIC 的原始方法重点是工具交互式的检查与修正,而不是跨 trial 反思记忆。

5.3 Reflexion:把一次失败变成下一次尝试的经验

Reflexion 与前两种方法最重要的区别,在于它关注的不只是当前输出的修订,还包括如何让 Agent 利用先前尝试的经验,改进下一次执行。

原版 Reflexion 的核心包含四个部分:

Actor、Evaluator、Self-Reflection、Memory。

它们分别承担以下职责。

Actor:负责执行任务。

Actor 可以采用 ReAct 等方式与环境交互,生成一条完整的执行轨迹。

Evaluator:负责评价结果。

根据任务结果或执行轨迹,判断本次尝试的表现,例如成功与否。

Self-Reflection:负责反思原因。

将执行轨迹和评价反馈转化为对后续行动有帮助的经验。

Memory:负责保存反思经验。

下一轮尝试时,Actor 可以读取这些经验,调整行动策略。

其典型流程为:

Trial 1:执行任务 → 评价失败 → 生成反思 → 写入 MemoryTrial 2:读取 Memory → 重新执行任务 → 再次评价

如果仍然失败,则可以继续反思与重试,直到满足成功条件或尝试次数上限。

例如,Agent 需要在一个复杂环境中找到某个物品。

第一次尝试中,它反复检查同一个位置,却忽略了其他房间。

任务失败后,Self-Reflection 可能总结出:

“之前重复检查了相同区域。下一次应先记录已经搜索过的位置,再探索尚未检查的房间。”

这条经验被保存到 Memory 中。

第二次尝试时,Actor 利用该经验调整搜索策略。

Reflexion 的关键不是简单地多执行一次任务,而是将前一次失败转化为可以影响后续决策的文字经验。

5.4 Reflexion 中的 trial 究竟是什么意思?

这是理解原始论文最关键的地方。

一个 trial 可以理解为一次完整的任务尝试。

如果 Actor 采用 ReAct,它在一次 trial 内部就可能进行多次行动与环境交互。

例如:

Trial 1 内部:

观察环境 → 选择行动 → 获取反馈 → 再次选择行动 → … → 本次尝试结束

然后 Evaluator 对这次尝试进行评价。

如果失败,Self-Reflection 生成反思并写入 Memory,之后进入新的 trial。

因此必须区分两个循环:

内层:Actor 的行动循环。

负责完成当前这次尝试。

外层:Reflexion 的 trial 循环。

负责通过反思记忆改进后续尝试。

在原版 Reflexion 的核心设计中,反思记忆主要用于后续 trial,而不是把当前已经发生的整条执行轨迹原地改写。

但这不意味着当前 trial 内不存在 Agent Loop,更不意味着整个 Reflexion 系统不能用 Graph Loop 实现。

另外,Reflexion 论文中的 Memory 主要是跨同一任务的不同尝试保存反思经验,不等于必须具有跨所有任务、永久持久化的数据库记忆。

六、三种方法究竟有什么本质区别?

可以从三个问题判断:

第一,反馈从哪里来?

Self-Refine 主要依靠模型自身反馈。

CRITIC 强调借助外部工具获取可用于验证的信息。

Reflexion 可以利用环境反馈、评价器、测试结果等多种信号,再通过自反思生成经验。

第二,反馈主要用在哪里?

Self-Refine 用于修订当前结果。

CRITIC 用于通过工具反馈检查并修订当前结果。

Reflexion 则强调将本次尝试的经验用于改进后续尝试。

第三,是否强调跨 trial 的反思记忆?

Self-Refine 和 CRITIC 的原始设计不以跨 trial 的反思记忆为核心。

Reflexion 则将跨 trial 的经验记忆作为关键设计。

对比维度Self-RefineCRITICReflexion
核心目标 提高当前输出质量 借助外部信息发现并修正错误 利用失败经验改进后续尝试
主要反馈来源 LLM 自身 外部工具与模型分析 Evaluator、环境及自反思
改进对象 当前候选输出 当前候选输出 后续 trial 的执行策略或结果
典型迭代方式 反馈—修订循环 工具检查—修订循环 执行—评价—反思—重试
跨 trial 反思记忆 非核心设计 非核心设计 核心设计
是否必须使用 Agent 否 否 是,属于 Agent 框架
是否必须使用 Graph 否 否 否

可以用三句话概括:

Self-Refine:我检查自己刚才生成的内容,然后修改。

CRITIC:我利用外部工具验证刚才生成的内容,再根据结果修改。

Reflexion:我总结这一次为什么失败,把经验保存下来,在下一次尝试中避免重复错误。

但要注意,它们之间并不是完全互斥的关系。

一个 Reflexion Agent 完全可以在某次 trial 内部使用 CRITIC 或 Self-Refine 进行局部改进。

七、把三种方法放进一个完整的 Agent 系统

假设要设计一个自动修复代码的 Agent。

用户提交了一个存在 Bug 的 Python 项目,要求 Agent 找到错误并修复。

整个系统可以包含三个层次。

第一层:Agent Loop——执行修复任务

Agent 根据当前状态决定操作:

读取代码 → 分析异常 → 调用工具 → 查看执行结果 → 继续修改

它负责实际推进任务。

第二层:当前尝试中的反馈修订

Agent 编写补丁后,需要验证代码是否正确。

可以使用 CRITIC 风格的方法,通过运行测试获取外部反馈,再分析并修改代码。

如果测试失败,可以继续在当前尝试内修订补丁。

如果只是优化代码注释、错误提示或文档措辞,也可以使用 Self-Refine 风格的自评修订。

这部分循环可以通过 Graph Loop 实现。

第三层:Reflexion——完整尝试失败后的经验积累

假设当前尝试达到预算上限,仍然没有修复问题。

Evaluator 判断本次尝试失败。

Self-Reflection 分析本次完整轨迹,并生成经验:

“之前只检查了异常函数,忽略了调用方传入参数的类型。下一次应优先检查调用链和输入数据。”

系统将这条经验写入 Memory。

随后,Agent 开启新的 trial,利用已有经验重新制定修复策略。

这样就形成了三个不同的循环:

循环作用
Agent Loop 持续决定下一步行动
当前尝试内的反馈修订循环 检查并修改当前结果
Reflexion 的跨 trial 循环 总结失败经验,重新尝试任务

而 Graph Loop 可以用于组织上述任意一种循环。

这说明 Agent Loop、Graph Loop、Reflection、Reflexion 不应该机械地摆在同一张“谁属于谁”的分类树中。

它们描述的是一个 Agent 系统中不同层面的能力与设计。

八、工程实现中应该如何设计循环?

理解理论之后,还需要知道怎样在系统中正确组织循环。

首先,应当为不同循环设定独立的状态和终止条件。

8.1 Agent 执行循环

需要管理当前消息、工具调用结果、任务状态、执行步数与预算。

典型停止条件包括:

  • Agent 已经完成任务;
  • 不再需要工具;
  • 达到最大执行步数;
  • 超过时间或 token 预算;
  • 触发异常或安全终止条件。

8.2 反馈修订循环

需要保存当前候选输出、评估反馈、修订历史和循环次数。

典型停止条件包括质量达标、达到修订上限、连续多次没有改善。

尤其需要注意:模型给出“已经正确”的自我评价,不一定意味着结果真的正确。

对于代码执行、数据计算等任务,应优先使用可验证的工具结果辅助判断。

8.3 Reflexion 的 trial 循环

需要区分:

当前 trial 的执行状态:保存本次行动、工具结果、临时工作上下文等。

跨 trial 的反思记忆:保存前几次尝试中提炼出的、对后续决策有用的经验。

进入新的 trial 时,不能简单地把全部失败日志无限追加到上下文中。

更好的方式是提炼具体、可执行、与当前任务相关的教训,并对 Memory 设置容量或长度限制。

此外,还需要区分两个概念:

Retry:失败后再次执行;

Reflection:分析问题并形成改进信息。

不是所有 Retry 都具有 Reflection,也不是所有 Reflection 都必须触发 Retry。

九、面试中最容易被问到的几个问题

问题一:Agent Loop 和 Graph Loop 有什么区别?

Agent Loop 描述智能体持续决策、行动和观察的执行机制;Graph Loop 描述工作流图中节点通过循环边重复执行的控制流结构。

二者不属于同一维度。

Agent Loop 可以通过 Graph Loop 实现,也可以通过普通程序循环实现;Graph Loop 也可以用于完全不包含 Agent 的重试工作流。

问题二:Reflection 和 Reflexion 有什么区别?

Reflection 是更宽泛的反馈检查与反思改进思想。

Reflexion 是一种具体的语言 Agent 框架,它通过 Actor 执行任务、Evaluator 评价结果、Self-Reflection 生成反思、Memory 保存经验,使 Agent 能在后续 trial 中利用先前失败的信息。

因此,Reflexion 使用了 Reflection 思想,但不应该把二者视为两个同级、互斥的算法。

问题三:Self-Refine 和 CRITIC 的区别是什么?

二者都强调根据反馈修改已有输出。

Self-Refine 的经典设计主要依靠同一个模型生成反馈并修改结果。

CRITIC 的关键是引入外部工具,通过工具交互获得更有依据的检查信息,再驱动模型修正输出。

最重要的区别是反馈与验证信息的来源,而不是是否使用 Graph 框架。

问题四:CRITIC 和 Reflexion 的区别是什么?

CRITIC 更关注如何通过工具反馈验证并修正当前生成结果。

Reflexion 更关注如何把一次完整尝试的执行反馈转化为反思经验,并在后续 trial 中加以利用。

需要注意,Reflexion 的 Evaluator 也可以使用外部工具,所以不能简单认为“用工具的是 CRITIC,不用工具的是 Reflexion”。

问题五:Reflexion 为什么需要 Memory?

因为 Reflexion 的核心目标不是只对当前结果做一次修补,而是使下一次尝试能够利用之前的经验。

如果不将反思结果传递给后续 trial,那么单纯重复执行任务未必能避免相同的错误。

不过,Memory 中保存的经验也可能不准确,因此实际工程实现还需要考虑记忆筛选、纠错和失效机制。

问题六:原版 Reflexion 在单次 trial 内是否存在循环?

需要区分循环类型。

如果 Actor 使用 ReAct,那么一次 trial 内就可能包含多轮 Thought、Action 和 Observation。

但 Reflexion 最有代表性的反思—记忆—重新尝试机制发生在 trial 之间。

所以,准确的表述应当是:

原版 Reflexion 的跨 trial 反思不等于在同一条执行轨迹中原地修订,但它并不排斥单次 trial 内部存在 Agent 行动循环。

问题七:Reflexion 可以用 Graph Loop 实现吗?

当然可以。

例如:

Actor → Evaluator → Self-Reflection → Memory → Actor

其中,从 Memory 返回 Actor 的循环边,表示开启下一次 trial,而不是返回当前 trial 的中间执行步骤。

这属于一种跨 trial 的图循环。

十、总结

Agent Loop、Graph Loop 和 Reflection 分别属于执行机制、图编排机制和反馈改进机制三个不同维度。

Agent Loop 负责让 Agent 根据环境观察结果持续决策和行动,ReAct 是典型的实现范式。

Graph Loop 则是工作流图上的循环控制结构,可以用来实现 Agent 的工具调用循环、结果修订循环,或者跨 trial 的重试循环,并不天然局限于节点内部或局部子图。

Reflection 是通过评估、诊断与反馈改善系统结果或行为的宽泛机制。

具体到经典方法,Self-Refine 主要通过模型自身反馈迭代修订当前输出;CRITIC 强调引入外部工具获取验证信息并修改输出;Reflexion 则通过 Actor、Evaluator、Self-Reflection 和 Memory,将一次尝试的失败经验用于指导后续 trial。

原版 Reflexion 的反思记忆主要在 trial 之间发挥作用,但每次 trial 内部的 Actor 仍然可以通过 ReAct 等方式进行多步行动。

最终需要记住的是:Agent Loop 解决怎么执行,Graph Loop 解决怎么编排循环,Reflection 解决怎么利用反馈改进,而 Self-Refine、CRITIC、Reflexion 是不同的反馈改进方案。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 一文搞懂 Agent Loop、Graph Loop、Reflection、Reflexion:执行、编排与反馈改进的层次关系
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!