Agent 四要素——模型 / 工具 / 记忆 / 评估
- 能说清四要素各自在 Agent 里承担什么职责
- 知道每个要素在真实系统里的常见形态,以及缺失后的典型故障
- 用四要素框架拆解一个"查资料写报告"的完整案例
- 记住拆解口诀,看到陌生 Agent 能在一分钟内完成初步分析
任何 Agent,不管它用什么框架、跑什么任务,都能拆成四要素:模型、工具、记忆、评估。 这不是某家公司规定的,是现有 Agent 系统共同遵守的底层结构——掌握这把刀,看到一个新 Agent 你就知道该往哪里问问题。
这一节给你这把刀。
为什么要有"四要素"框架
看 Agent 的介绍,你很容易迷进细节:这个用了 LangGraph,那个接了 RAG,另一个说自己会"自主规划"……术语满天飞,很难看出门道。
框架的价值就是穿透细节,直接问:大脑在哪?手脚是什么?记了什么?怎么判断完没完?
这四个问题,对应四个要素。回答完,你对这个 Agent 的理解就足够深了。
而且这个框架是实用的。你要调试一个跑偏的 Agent,先问"评估逻辑对不对"比瞎改提示词有效得多;你要给 Agent 加新功能,先问"加的东西是工具还是记忆",就知道改哪一层。
四要素逐个讲
① 模型——大脑,负责决策
作用:接受输入,推理出下一步该做什么。
模型是 Agent 里唯一"会想"的部分。它读取任务描述、历史记录、工具清单,然后做决定:是直接回答,还是调某个工具,还是再想一步。
在真实 Agent 里,模型通常是一个大语言模型(LLM)的 API 调用。每一轮循环都会发一次请求,把当前状态(消息历史 + 可用工具列表)打包进去,拿回来一个决策。
模型收到:[任务, 历史对话, 工具清单]
模型输出:调用工具 X,参数是 {…} ← 或者:直接给出最终答案
缺了会怎样: 没有模型就不是 Agent,而是普通的脚本——流程写死,遇到没覆盖的情况就卡死或乱跑。
一个常见的误区:觉得"换个更强的模型就能解决一切"。模型只是大脑,大脑再聪明,工具坏了还是干不了活;记忆缺失,每步都从零开始还是会犯同样的错。
② 工具——手脚,与外界交互
作用:让 Agent 能对外部世界产生真实影响或获取真实信息。
纯粹的语言模型是封闭的——它只知道训练数据里的东西,不能实时查价格、不能发邮件、不能读你的文件。工具打开了这扇门。
工具的形态可以非常多样:
| 工具类型 | 举例 |
|---|---|
| 信息检索 | 搜索引擎、数据库查询、读文件 |
| 计算执行 | 代码解释器、计算器、数据分析 |
| 系统操作 | 发邮件、写文件、调用内部 API |
| 感知采集 | 读传感器数据、截图、解析图片 |
从代码角度看,工具通常有三个部分:名字、描述(告诉模型什么情况该用)、参数 schema(告诉模型传什么参数)。模型读描述来决策,实际执行的代码它看不到。
缺了会怎样: Agent 退化成纯聊天机器人,只能给意见、不能干活。问它"帮我把这封邮件发给 Tom",它只能说"好的,你去发吧"——因为它根本没有"发邮件"这只手。
③ 记忆——笔记本,跨步 / 跨会话记事
作用:让 Agent 不用每步都从零开始,能积累上下文、前情提要、学到的东西。
记忆是四要素里最容易被忽视、也最容易出事的一个。一个没有记忆的 Agent,就像每隔五分钟就失忆一次的员工——你刚告诉它"客户不喜欢邮件,改微信",下一条任务它又发邮件了。
记忆有几个层次:
会话内记忆(短期):当前任务里的消息历史,通常就是传给模型的 messages 列表。Agent 每一步都在追加新内容进去,所以模型能看到整个推理过程。这一层几乎所有 Agent 都有。
跨会话记忆(长期):把重要信息持久化存到数据库,下次启动时拿回来。比如"这个用户偏好简洁回答"、"这个任务上次做到第三步了"。这一层需要主动设计,很多玩具级 Agent 没有。
检索增强(知识库):不把所有知识塞进上下文(那会超长),而是需要的时候从向量数据库里取最相关的片段。这算是一种特殊的外部记忆。
记忆层示意:
┌────────────────────────────────┐
│ 当前会话:messages 列表(短期) │ ← 每步都在写
├────────────────────────────────┤
│ 持久存储:数据库 / 文件(长期) │ ← 跨次读写
├────────────────────────────────┤
│ 知识库:向量检索(外部记忆) │ ← 按需召回
└────────────────────────────────┘
缺了会怎样: 最轻的问题是每次任务都要重新交代背景,效率极低。严重一点,Agent 会在一个多步任务里"忘记自己已经做过了什么",重复执行,或者前后矛盾——这在自动化流程里是真实的灾难。
④ 评估——复盘,判断是否完成 / 走偏怎么办
作用:告诉 Agent"这步做完了吗""整个任务完成了吗""有没有走偏",据此决定继续、回退还是收工。
这是四要素里最容易被低估的一个。很多人觉得"模型够聪明,它自己会知道什么时候做完了"——但实际上,如果没有明确的评估机制,Agent 要么过早停下(任务没做完就说做完了),要么死循环(一直觉得没做好,不停重试)。
评估可以有几种形式:
模型自评:模型自己判断"stop_reason"——end_turn 意味着它认为任务完成,tool_use 意味着还要继续。这是最基本的评估,几乎免费,但依赖模型的判断力,有时不可靠。
硬规则 + 计数器:限定最大轮次、超时时间、工具调用次数上限。这是防止失控循环的安全网,不能省。
验证函数:对工具返回的结果做程序性检查。比如"应该生成一个 JSON 文件,检查文件确实存在且格式正确"——这种机械检查比让模型"感觉一下"可靠得多。
人工节点(Human-in-the-loop):在关键步骤要求人确认后再继续。适合高风险操作,比如"确认后再发这封邮件给 1000 个客户"。
缺了会怎样: 轻则任务跑不完、或跑过头;重则无限循环烧 API 额度,或在错误的路上越走越偏,等你发现已经做了一堆没用的事。
用四要素拆一个例子:"查资料写报告" Agent
这是一个典型的场景:给 Agent 一个题目,它自动搜集资料、整理要点、输出一篇报告。
用四要素一一对应:
模型(大脑) 每一步推理都在这里发生:先搜什么关键词?搜回来的资料哪些有用?要点怎么组织成报告结构?下一步是继续搜还是可以开始写了?这些决策全是模型在做。
工具(手脚) 这个 Agent 至少需要三只手脚:
web_search(query)— 用来搜资料read_page(url)— 点开链接读正文write_file(filename, content)— 把报告写到文件里
没有这三个工具,它只能凭训练数据里的旧知识"编"一篇,而不是真的查了资料。
记忆(笔记本)
短期记忆:这轮任务的消息历史,包括它搜了哪些关键词、读了哪些页面、整理了哪些要点——这些全在 messages 列表里,让它不会重复搜同一个关键词,也能在写报告时回顾前面找到的信息。
长期记忆(如果有的话):用户偏好("我喜欢报告带摘要放最前面")、之前做过的类似报告(避免重复工作)。
评估(复盘) 报告完成的判断不能全靠"模型感觉一下"。一个稳健的评估逻辑应该是:
- 模型给出
end_turn且包含完整的报告文本 → 初步完成 - 程序检查
write_file有没有成功执行、文件确实存在 → 确认落地 - 如果循环超过 20 轮还没完成 → 触发超时保护,输出当前进度后退出
这三层加在一起,才算一个可信的评估机制。
四要素拆解口诀
看到一个陌生 Agent,按这四句话问:
大脑在哪里: 哪个模型在做决策,推理逻辑是什么?
手脚有几只: 有哪些工具,每个工具干什么活?
笔记本有几层: 当前会话记什么、跨次记什么、知识库有没有?
复盘怎么做: 怎么判断完没完,走偏了怎么退出?
四句问完,这个 Agent 的结构基本透明。你会知道它能干什么、为什么会出某个问题、要改哪里。
四要素如何协作:一次循环的伪代码
下面这段不是可运行的代码,是结构示意——帮你看清一个 Agent 循环里四要素各自在哪:
# 一轮 Agent 循环
while 任务未完成:
# ── 记忆层:准备输入 ──────────────────────
上下文 = 从记忆里取出 [历史对话, 相关笔记, 知识片段]
# ── 模型层:决策 ─────────────────────────
决策 = 模型.推理(任务描述, 上下文, 可用工具列表)
# 决策可能是:调某个工具 OR 直接给出答案
if 决策 == "调工具":
# ── 工具层:执行 ─────────────────────
结果 = 工具集[决策.工具名](决策.参数)
# ── 记忆层:记录这一步 ───────────────
记忆.追加(工具调用记录, 工具返回结果)
elif 决策 == "给答案":
# ── 评估层:验证 ─────────────────────
if 评估函数(决策.答案) == 通过:
return 决策.答案 # 任务完成,收工
else:
记忆.追加("上次答案不合格,原因是…")
# 继续下一轮
# ── 评估层:防止失控 ─────────────────────
if 循环次数 > 最大轮次上限:
return 当前最好结果 + "超时保护触发"
四个注释区域,对应四要素。真实框架(LangGraph、AutoGen、Claude Agent SDK 等)的实现细节各不同,但这个骨架基本一致。想看真实可跑的代码版本,可以去 用 Claude Agent SDK 写出你的第一个 Agent(2.3 节),那里有完整的 Python 示例。
一个增量认知:评估不等于"模型自评"
很多人搭出第一个 Agent,默认"模型说完了就完了",评估这个要素就被跳过了。
但模型的 end_turn 只是模型的主观判断,它有时会过早收工(觉得差不多了),有时会陷入强迫症(总觉得还能再好一点)。程序性的验证——检查文件是否存在、输出格式是否正确、关键字段有没有缺失——才是可信的评估。
这不是说模型判断没价值,而是说最可靠的评估往往是双保险:模型说完了 + 程序验证通过,才能真正收工。
常见问题
Q:四要素之间的边界有时很模糊,比如 RAG 检索到底是工具还是记忆?
两种说法都有道理。把 RAG 归进"工具",是因为它的执行是由模型主动决策触发的;归进"记忆",是因为它的本质功能是给 Agent 提供外部知识。实际上,框架本身比分类更重要——你能说清它的作用、它缺了会怎样,就够了。分类只是辅助理解的工具,不必纠结。
Q:一个简单的 Chatbot 也有这四要素吗?
有三个半。模型有(就是在调 LLM API),工具有时候有(比如加了搜索功能),记忆通常只有短期的(当前对话),评估基本没有——Chatbot 只要模型给了回复就算完成。Agent 的核心进化就在"评估"这个要素上:它会主动判断任务有没有真正完成,而不是等用户来告诉它。
Q:记忆层太大会影响性能吗?
会。把整个历史塞进上下文,一是有长度上限,二是 token 越多推理越慢、费用越高。处理这个问题的常见方法是:滚动截断(只保留最近 N 轮)、摘要压缩(把早期历史压成一段摘要)、向量检索(按需取相关片段,不全量塞进去)。这几种策略的取舍,后续记忆专题节里会细讲。
Q:四要素和"ReAct 框架""Chain of Thought"是什么关系?
ReAct(Reasoning + Acting)、Chain of Thought 这些是模型层的思维方式——决定模型怎么推理、怎么拆解问题。四要素是 Agent 系统的架构框架——描述整个系统的组成。两者是不同层次的东西,可以组合使用:比如一个用 ReAct 思维方式的模型,配上工具、记忆、评估,就构成一个完整的 Agent。想深入了解这些思维框架,可以看 ReAct / Plan-Execute / Reflexion——三种思维行动模式(1.5 节)。
小结
四要素是一把通用的拆解刀:
- 模型(大脑):做决策,推理下一步
- 工具(手脚):与外部世界交互,产生真实影响
- 记忆(笔记本):积累上下文,不从零开始
- 评估(复盘):判断完没完,防止失控
拿到任何一个 Agent,四句话问下去——大脑在哪、手脚有几只、笔记本有几层、复盘怎么做——基本就能看穿它的骨架。
四要素的概念有了,下一步可以去看 AI Agent 是什么(1.1 节)复习 Agent 的完整定义,或者直接跳到 用 Claude Agent SDK 写你的第一个 Agent(2.3 节),亲手把四要素在代码里找出来。也可以去 AI Agent 智能体阶梯 看完整的学习路线。
更多概念可以查阅术语表:AI Agent、子代理(subagent)。
👉 看看 AI 数字员工落地指南,或了解 数字员工搭建实战课。需要为企业落地方案,欢迎找我们聊 企业服务。