字面意思之外
很多人第一次听到 Agent,会把它理解成:
Agent 就是 AI 自己会干活。
这个理解没有错,但它只说到了表面。
真正重要的问题是:
Agent 和普通 AI 对话,到底差别在哪里?
差别不一定在模型本身,而在运行结构。
普通聊天是"一问一答"。Agent 是"循环推进"。它不是只回答你一句话,而是会围绕目标不断判断下一步、调用工具、观察结果,再决定要不要继续。
这就是 Agent 的核心。
普通对话:一次输入,一次输出
先看普通对话:
你:帮我写一封邮件。
LLM:好的,这是邮件内容......
到这里就结束了。
一条 prompt 进去,一条 response 出来。模型完成了一次生成,但它不会主动检查邮件有没有发出去,也不会继续追问收件人是谁、要不要保存草稿、是否需要改语气。
这种模式更像是问答机器:你问一次,它答一次。输出结束,任务也就结束。
这不是说 Chatbot 没用,而是它的默认结构比较简单。它擅长回答、解释、改写、生成文本,但复杂任务往往需要人类不断补充指令。
Agent:一个持续运转的任务循环
Agent 不一样。
它不是只生成一次答案,而是拥有一个持续运转的循环结构:
markdown
你给它一个目标
│
▼
它拆解任务
│
▼
判断下一步该做什么
│
▼
调用工具并拿到结果
│
▼
根据结果继续判断
│
▼
直到任务完成,或触发终止条件
这个循环通常会持续到以下情况之一:
- 任务已经完成
- 达到最大循环次数
- Token 或上下文长度不够了
- 多轮结果重复,疑似陷入循环
- 模型判断当前任务无法继续完成
- 系统或用户主动中断
所以,Agent 的关键不是"模型突然有了意识",而是系统给了模型一个可以持续行动的结构。
ReAct 循环:Agent 的经典工作框架
很多 Agent 都可以用一个经典框架来理解:ReAct。
ReAct 是 Reason + Act 的组合,实际运行时通常会表现为三步:
Reason:思考,我现在该做什么?
Act:行动,调用工具或执行某个操作。
Observe:观察,工具返回了什么结果?
然后再回到 Reason,进入下一轮。
erlang
Reason → Act → Observe → Reason → Act → Observe → ...
这就是 ReAct 循环。
需要注意的是,ReAct 不是 LangChain 这种开发库。它更像是一种 Agent 的工作范式。你可以用 Python 手写,也可以用 JavaScript 实现,也可以通过 LangChain、LlamaIndex、AutoGen、OpenAI Agents SDK 等框架组织起来。
框架不同,工程细节不同,但核心思想很接近:
让模型在"思考、行动、观察"的循环里,逐步推进一个复杂任务。
一个真实例子:分析竞品并写报告
假设你给 Agent 一个任务:
帮我分析竞品,写一份报告。
普通 Chatbot 可能直接根据已有知识写一篇泛泛的报告。
Agent 的做法会更像这样。
第一轮
| 阶段 | Agent 做什么 |
|---|---|
| Reason | 需要先确定竞品范围,至少查三家公司。 |
| Act | 调用搜索工具,搜索华为、小米、OPPO 的近期产品与市场动态。 |
| Observe | 拿到产品发布、营销动作、渠道变化等信息。 |
第二轮
| 阶段 | Agent 做什么 |
|---|---|
| Reason | 只有新闻还不够,缺少财务和市场数据。 |
| Act | 调用财经 API,或读取官网财报、行业报告。 |
| Observe | 得到营收、增长率、出货量、市场份额等数字。 |
第三轮
| 阶段 | Agent 做什么 |
|---|---|
| Reason | 数据已经有了,但还缺少用户口碑和产品对比。 |
| Act | 搜索测评网站、社区讨论、应用商店评论。 |
| Observe | 发现用户关注价格、影像、续航、系统体验等维度。 |
最后一轮
| 阶段 | Agent 做什么 |
|---|---|
| Reason | 信息足够,可以开始组织报告。 |
| Act | 生成报告结构,写入 report.md,补充引用来源。 |
| Observe | 检查报告是否覆盖目标、数据、结论和建议。 |
每一轮都在自觉推进,不需要人类中途告诉它"下一步去查财报""再找用户评价""现在写成报告"。
这就是 Agent 和普通 Chatbot 的根本区别:Agent 会在循环中自己决定下一步。
最核心的动作:Tool Use
Agent 真正能"干活",靠的是 Tool Use。

LLM 本身不会真的打开浏览器、查询数据库、读写文件、调用接口。它做的是判断:
我现在需要哪个工具?
应该传什么参数?
工具结果是否足够?
下一步还要不要继续?
工具才是真正执行动作的部分。
比如搜索工具、数据库查询工具、代码执行工具、文件读写工具、浏览器控制工具、邮件发送工具,本质上都是系统暴露给 Agent 的外部函数。
可以这样对比:
| 普通代码 | Agent Tool Use | |
|---|---|---|
| 谁决定调哪个工具 | 程序员写死 | LLM 根据任务判断 |
| 参数从哪来 | 程序员提前定义 | LLM 根据上下文生成 |
| 调几次 | 通常固定 | 循环中动态决定 |
| 什么时候停 | 代码逻辑决定 | 任务状态、限制条件和模型判断共同决定 |
所以,Agent 并不是 LLM "自己长出了手脚"。更准确地说:
Agent 是 LLM 加上工具调用能力,再加上一个持续推进任务的循环结构。
Agent 的"自主性"从哪里来?
很多人会觉得 Agent 很神奇,因为它看起来像是在自己安排工作。
但从工程角度看,这种自主性主要来自三件事:
-
目标
用户给它一个明确任务,比如"写一份竞品分析报告"。
-
状态
系统记录它已经做了什么、拿到了哪些结果、还缺什么。
-
循环
每一轮都让模型根据当前状态判断下一步。
有了这三件事,模型就不再只是回答一句话,而是在不断更新任务状态。
这也是为什么 Agent 很适合复杂任务,比如:
- 搜索资料并整理成报告
- 阅读代码仓库并修改 bug
- 自动生成测试、运行测试、根据报错继续修复
- 查询数据库并生成分析结论
- 操作浏览器完成表单、下单、信息录入等流程
这些任务的共同点是:它们不是一步能做完的。中间会出现新信息、新错误、新判断,需要模型不断调整路径。
ReAct 在面试中怎么说?
如果面试官问:
Agent 的工作原理是什么?
可以这样回答:
Agent 的核心通常可以理解为 ReAct 循环,也就是 Reason、Act、Observe 的循环。LLM 接到任务后,先根据当前目标和上下文判断下一步该做什么;然后调用外部工具执行动作;拿到工具结果后再观察结果是否满足要求,并决定继续还是结束。这个循环让 Agent 能够自主推进复杂任务,而不是只完成一次问答。
这段回答里有几个关键词:
- ReAct 循环
- Reason、Act、Observe
- Tool Use
- 自主推进复杂任务
- 终止条件
比单纯背一句"Agent 是能自主完成任务的 AI"更有含金量。
但也别把 Agent 神化
Agent 很强,但它不是万能的。
因为 Agent 的每一步判断仍然来自 LLM,而 LLM 可能会:
- 选错工具
- 传错参数
- 误解工具返回结果
- 在信息不足时过早下结论
- 陷入重复循环
- 把"看起来完成了"误判成"真的完成了"
所以一个可靠的 Agent 系统,通常还需要工程上的保护:
- 明确的工具 schema
- 最大循环次数
- 错误重试机制
- 关键步骤校验
- 日志和可观测性
- 人工确认高风险动作
越是能真实影响外部世界的 Agent,越不能只靠模型自由发挥。
总结
| Chatbot | Agent | |
|---|---|---|
| 交互模式 | 一问一答 | 循环推进 |
| 任务复杂度 | 简单单步 | 复杂多步 |
| 工具调用 | 可有可无 | 通常是核心能力 |
| 决策方式 | 人告诉它每一步 | 模型根据状态判断下一步 |
| 终止条件 | 一次输出结束 | 完成、失败、超限或人工中断 |
Agent 不神秘。
它可以简单理解成:
一个带工具、带状态、带循环的 LLM。
ReAct 则是理解 Agent 最经典的入口:
想一想 → 做一步 → 看结果 → 再想一想
理解了这个循环,就理解了大多数 Agent 的基本工作方式。