前言

最近在学习 Agent 的过程中,我发现一个很容易混淆的问题:

只要系统里用了大模型,就一定算 Agent 吗?
只要流程里有工具调用,就一定算 Agent 吗?

以前我会觉得,只要一个项目接入了 LLM,再加上一些工具调用能力,就可以叫 Agent。但今天进一步分析以后,我发现事情没有这么简单。

很多所谓的 Agent 项目,本质上更像是一个写死流程的 Workflow 应用。它确实可以完成任务,也可以调用工具,但它的执行路径、下一步动作、异常处理逻辑,很多时候都是开发者提前规定好的。

而真正的 Agent,更重要的能力不是“能不能调用工具”,而是:

它能不能根据目标自己思考、自己选择下一步、自己决定是否需要工具、自己判断任务是否完成。

这也是今天学习的核心内容。


一、Workflow 为什么不一定是真正的 Agent?

Workflow 可以理解为一种固定流程编排。

比如:

用户输入
  ↓
调用知识库检索
  ↓
调用大模型生成回答
  ↓
返回结果

这个流程是提前设计好的。用户一来,系统就按这个顺序执行。

这种方式的优点很明显:

稳定、可控、容易调试、适合固定业务场景

但是它的问题也很明显:

下一步做什么,不是大模型自己判断的,而是程序提前写死的。

所以我现在对 Workflow 的理解是:

Workflow 更像是“自动化流程”,而不是“自主智能体”。

它可以是 Agent 系统的一部分,但它本身不一定等于 Agent。

比如在一个智能客服系统里,如果无论用户问什么,系统都固定执行:

先查知识库 → 再查数据库 → 再生成回答

那它更像是一个业务流程系统。

但如果系统会先理解用户问题,然后判断:

这个问题需要查知识库吗?
这个问题需要调用日志工具吗?
这个问题需要查数据库吗?
是否需要继续追问用户?
当前信息够不够回答?

这时候,它才更接近真正的 Agent。


二、真正的 Agent 关键在“自主决策”

我现在觉得,Agent 和普通 LLM 应用最大的区别,不在于有没有大模型,而在于有没有自主决策能力。

普通 LLM 应用更像这样:

用户输入 → 拼 Prompt → 调模型 → 返回答案

而 Agent 更像这样:

理解目标
  ↓
拆解任务
  ↓
判断下一步
  ↓
选择工具
  ↓
观察工具结果
  ↓
继续推理或结束

也就是说,Agent 不只是回答问题,它要能围绕一个目标持续行动。

可以用一句话概括:

LLM 负责“生成”,Agent 负责“为了目标而行动”。

这也是我今天理解上的一个变化。

以前我会把 Agent 理解成:


LLM + Tools + Prompt

现在我觉得这个说法还不够完整,更准确应该是:


Agent = LLM + 工具 + 记忆 + 规划 + 反馈 + 自主决策

其中最关键的是“自主决策”。


三、ReAct 模式:边思考,边行动

今天重点分析了 ReAct 模式。

ReAct 其实可以拆成两个词:

Reasoning + Acting

也就是:


推理 + 行动

它的核心思想是:Agent 不是一次性给出最终答案,而是在执行过程中不断进行“思考—行动—观察”。

一个典型的 ReAct 流程可以理解为:

Thought:我需要先判断用户想解决什么问题
Action:调用某个工具
Observation:观察工具返回的结果
Thought:根据结果继续分析下一步
Action:必要时继续调用工具
Observation:继续观察
Final Answer:给出最终答案

比如用户问:

为什么我的服务访问变慢了?

一个 ReAct Agent 可能不会直接回答,而是先思考:

这个问题可能和服务状态、日志、数据库、监控指标有关。
我需要先查看最近的告警信息。

然后它可能调用:

Prometheus 查询工具

拿到结果后,再观察:

CPU 使用率正常,但接口响应时间变高。

接着继续思考:

可能是数据库慢查询或者下游服务异常,我需要进一步查日志。

然后调用:


日志查询工具

最终综合多个工具结果,再给用户一个完整判断。

所以 ReAct 的关键不是“调用了一次工具”,而是:

Agent 会根据当前推理状态,决定是否继续行动。

这就比固定 Workflow 更像真正的智能体。


四、ReAct 中工具调用发生在哪里?

今天还专门思考了一个问题:

ReAct 模式中的工具调用到底发生在哪里?

我的理解是:工具调用发生在 Action 阶段

也就是 Agent 经过 Thought 推理以后,发现自己不能只靠模型内部知识回答,需要外部信息,于是选择某个工具执行。

整体过程是:

Thought:我需要查询某个外部信息
Action:调用工具
Observation:获取工具返回结果
Thought:继续分析结果

这里的工具可以是很多种:

知识库检索工具
日志查询工具
监控查询工具
数据库查询工具
搜索工具
工单系统工具

但是工具不是随便调用的,而是 Agent 根据当前任务判断出来的。

这点很重要。

如果代码里提前写死:

每次都先查日志,再查监控,再查数据库

那更像 Workflow。

如果是模型自己判断:

当前问题不需要查数据库,只需要查知识库
当前问题必须查日志,否则无法判断
当前信息不足,需要继续调用监控工具

那才更像 Agent。


五、ReAct 什么时候算结束?

ReAct 模式不是无限循环,它一定要有结束条件。

今天我对“什么时候结束”有了更清楚的理解。

一般来说,ReAct 可以在几种情况下结束:

1. 已经拿到足够信息

如果 Agent 已经通过工具和推理获得了足够信息,就可以停止行动,输出最终答案。

Observation 已经足够支持结论
→ Final Answer

比如已经查到了错误日志,也确认了异常原因,就不需要继续查。


2. 工具调用没有继续价值

如果继续调用工具也不会产生新的有效信息,就应该停止。

例如:

日志为空
监控无异常
知识库没有相关内容

这时 Agent 应该告诉用户当前能确认什么、不能确认什么,而不是一直调用工具。


3. 达到最大轮数或安全限制

实际工程中,一般会设置最大循环次数。

比如:

最多推理 5 轮
最多调用工具 3 次
最长执行 60 秒

这是为了防止 Agent 陷入死循环。

因为大模型并不天然知道什么时候必须停下来,所以工程上必须加限制。


4. 用户目标已经完成

如果用户的问题已经被解决,就应该结束。

比如用户只是问:

这个接口报错是什么意思?

那 Agent 查到错误原因并解释清楚以后,就可以结束了,不需要继续生成新的排查计划。

所以 ReAct 的结束不是固定某一步,而是看:

目标是否完成
信息是否足够
继续行动是否还有价值
是否触发工程限制

六、Plan-and-Execute:先规划,再执行

除了 ReAct,今天还学习了另一个重要模式:Plan-and-Execute。

这个模式可以理解为:

先让 Agent 制定计划,再按照计划执行。

它的流程大致是:

用户目标
  ↓
Planner 生成任务计划
  ↓
Executor 按步骤执行
  ↓
汇总结果
  ↓
返回答案

比如用户说:

帮我分析线上服务为什么最近频繁报警

Planner 可能会先拆成几个步骤:

1. 查询最近告警记录
2. 分析告警集中在哪些服务
3. 查询相关服务日志
4. 查看监控指标是否异常
5. 总结可能原因和处理建议

然后 Executor 再一步一步执行。

和 ReAct 相比,Plan-and-Execute 更适合复杂任务。

ReAct 更像是:

边走边想

Plan-and-Execute 更像是:

先想清楚路线,再开始行动

七、Plan-and-Execute 不是一定执行到底

一开始我以为 Plan-and-Execute 是先生成一个计划,然后一直执行到底。

但后来发现,这种理解不完整。

更合理的 Agent 设计里,Plan-and-Execute 往往会结合 动态重规划

也就是:

先制定计划
  ↓
执行一部分
  ↓
观察执行结果
  ↓
发现计划不合理
  ↓
重新调整计划

这就是 Plan-Execute-Replan。

比如原计划是:

1. 查告警
2. 查日志
3. 查数据库
4. 生成结论

但是执行到第 2 步时发现:

日志里显示是第三方接口超时

那后面继续查数据库可能就没意义了。

这时候 Agent 应该调整计划:

新的计划:
1. 查询第三方接口调用日志
2. 查看超时时间分布
3. 判断是否是外部依赖异常
4. 给出降级或重试建议

这就是动态重规划的价值。

它让 Agent 不只是机械执行计划,而是可以根据中间结果修正方向。


八、ReAct 和 Plan-and-Execute 的区别

可以这样对比:

模式 核心特点 适合场景
ReAct 边思考边行动 不确定性较强、需要多轮工具调用的问题
Plan-and-Execute 先规划再执行 目标复杂、步骤较多的问题
Plan-Execute-Replan 执行中动态调整计划 复杂排查、运维诊断、多阶段任务

ReAct 的灵活性更强,但可能比较发散。

Plan-and-Execute 的结构更清晰,但如果计划错了,后面可能越走越偏。

所以动态重规划很重要,它相当于给 Plan-and-Execute 增加了反馈能力。

可以总结成一句话:

ReAct 强调“即时推理”,Plan-and-Execute 强调“任务规划”,Replan 强调“根据结果修正方向”。


九、Agent 常见推理模式总结

今天也顺便梳理了一下 Agent 中常见的推理模式。

1. ReAct 模式

核心是:

Thought → Action → Observation → Thought → Final Answer

适合需要工具调用和连续推理的问题。


2. Plan-and-Execute 模式

核心是:

Plan → Execute → Result

适合复杂任务拆解,比如运维排障、报告生成、代码分析等。


3. Plan-Execute-Replan 模式

核心是:

Plan → Execute → Observe → Replan → Execute

它比普通 Plan-and-Execute 更智能,因为它可以根据执行结果调整计划。


4. Reflection 模式

Reflection 可以理解为“自我反思”。

Agent 生成结果以后,会再检查一遍:

回答是否完整?
有没有逻辑漏洞?
有没有遗漏用户目标?
有没有编造信息?

这个模式适合提高答案质量,也适合代码生成、文档生成、复杂问答。


5. Multi-Agent 协作模式

多 Agent 不是简单多调用几个工具,而是把不同职责拆给不同 Agent。

比如:

Planner Agent:负责制定计划
Executor Agent:负责执行工具
Reviewer Agent:负责检查结果
Supervisor Agent:负责调度整体流程

这比单 Agent 更结构化,也更适合复杂系统。

但它的难点也更高,比如:

Agent 之间怎么传递状态?
谁来决定下一步?
结果冲突时听谁的?
如何避免循环调用?

所以多 Agent 不是越多越好,而是要看任务复杂度是否真的需要拆分。


十、我对 Agent 的阶段性理解

今天学习完以后,我对 Agent 有了一个更清晰的判断标准。

不是用了大模型就叫 Agent。

不是接了工具就叫 Agent。

不是写了一个自动化流程就叫 Agent。

真正的 Agent 至少应该具备下面几种能力:

1. 能理解用户目标
2. 能拆解任务
3. 能判断下一步做什么
4. 能选择是否调用工具
5. 能观察工具结果
6. 能根据结果继续推理
7. 能判断任务是否完成
8. 能在必要时调整计划

如果一个系统只是固定执行一套流程,那它更像 Workflow。

如果一个系统能根据目标动态决策,那它才更像 Agent。


总结

今天主要围绕 Agent 的推理模式进行了学习,重点理解了 Workflow、ReAct、Plan-and-Execute 和动态重规划之间的区别。

Workflow:流程固定,适合稳定业务自动化
ReAct:边推理边行动,适合不确定任务
Plan-and-Execute:先规划再执行,适合复杂任务
Plan-Execute-Replan:执行中根据结果调整计划,更接近真实 Agent
Multi-Agent:多个 Agent 按职责协作,适合更复杂的系统

更多推荐