AI Agent 的核心组件有哪些?感知、决策、执行、记忆各自的作用是什么?
参考答案
一个完整的 AI Agent 通常由四个核心组件构成:感知、决策、执行、记忆。
感知模块负责接收和理解外部信息。对大多数 Agent 来说,输入主要是用户的自然语言指令,但也可以是图片、文件内容、API 返回的结构化数据等。它的核心任务是把原始输入转成 Agent 内部能处理的格式。
决策模块是 Agent 的大脑,通常由大语言模型来承担。它负责理解当前任务、分析已有信息、制定执行计划、决定下一步该做什么。比如用户说”帮我分析这份销售报表”,决策模块会判断出:先读文件,再提取关键数据,然后做分析,最后生成报告。整个任务拆解和步骤编排都靠它。
执行模块负责把决策转成实际行动。最典型的就是工具调用,跑代码、查数据库、调外部 API、读写文件,都是执行模块的活。它拿到决策模块的指令后去调对应的工具,然后把执行结果返回给决策模块,驱动下一轮推理。
记忆模块让 Agent 能记住历史信息。短期记忆就是当前对话的上下文,记录着这次任务已经做了什么、拿到了什么结果。长期记忆则把重要信息持久化存下来,下次对话还能用。没有记忆的 Agent 每一步都像失忆了一样,效率很低。
扩展知识
四个组件的协作循环
这四个组件不是各干各的,而是形成一个紧密的循环来驱动任务推进。
拿一个具体场景来看:用户问”帮我查一下北京今天的天气,如果超过 35 度就提醒我带伞”。
感知模块先接收这段话,解析出两个意图:查天气、条件判断。
决策模块拿到之后判断第一步得调天气 API,执行模块去调 API 拿到结果”北京 37 度,午后有雷阵雨”,结果通过感知模块回到决策模块。
决策模块一看超过 35 度了,再加上有雨,直接生成提醒。整个过程中,记忆模块记录了每一步的操作和结果,如果用户后续追问”刚才查的温度是多少”,Agent 能直接从记忆里捞出来。
决策模块是能力天花板
四个组件里,决策模块最关键,直接决定了 Agent 能干多复杂的事。目前主流做法就是拿大模型当决策引擎,模型推理能力越强,Agent 表现越好。旗舰级大模型做出来的 Agent 效果比 7B 小模型强出一大截,复杂任务的完成率能差 3-5 倍。
决策不光是”想清楚做什么”,还包括”知道什么时候停”。一个好的 Agent 要能判断任务是不是已经完成了,或者当前情况超出了自己的能力范围需要向用户求助。
很多 Agent 翻车都是因为决策模块”不知道自己不行”,硬着头皮往下跑,越跑越离谱。
记忆模块的两层设计
记忆一般分成短期记忆和长期记忆两层:
短期记忆就是当前会话的上下文窗口,所有对话内容、工具调用记录、中间结果全放在里面,随着对话推进不断增长。问题是大模型的上下文窗口有长度限制,主流旗舰模型一般在 128K~200K token 之间,超了就得做截断或摘要,否则老信息就丢了。
长期记忆是把跨会话的重要信息存到外部存储里,最常见的方案是向量数据库。比如用 Pinecone、Milvus 把用户偏好、历史任务结果做 embedding 存起来,下次新会话开始的时候检索相关记忆塞进上下文。OpenAI 的 ChatGPT 内置的 Memory 功能就是这个思路,它会自动提取对话中的关键信息存下来,后续对话自动加载。
还有一种叫工作记忆,介于短期和长期之间,用来存当前任务的结构化状态。比如一个项目管理 Agent,工作记忆里会维护”当前有哪些待办、每个任务的进度、阻塞关系”这类信息,不是原始对话文本,而是经过整理的结构化数据。
感知模块的多模态扩展
早期的 Agent 感知模块只能处理文本,现在随着多模态大模型的成熟,感知能力在快速扩展。主流旗舰模型已经能处理图片、音频甚至视频,这意味着 Agent 的输入不再局限于”用户打字”。
实际应用中比较有价值的方向:屏幕感知类 Agent 能直接看到电脑屏幕内容,像 Anthropic 的 Computer Use 功能,Agent 通过截图来理解当前界面状态,然后操作鼠标键盘完成任务。还有文档处理类 Agent,直接把 PDF、Excel 的内容”看”进去,不用先做格式转换。
执行模块的工具生态
执行模块的能力取决于它能调用多少工具。目前工具接入有几种主流方案:
1)OpenAI 的 Function Calling / Tool Use,在 API 层面定义工具的 JSON Schema,模型自己决定什么时候调、传什么参数。
2)Anthropic 在 2024 年底发布的 MCP 协议,定义了一套统一的工具接入标准,类似于 USB 接口,任何工具只要实现 MCP 协议就能被 Agent 调用,不用针对每个模型单独适配。
3)框架层面的工具集成,LangChain 内置了 100 多个常用工具的封装,搜索、数据库、文件操作、代码执行基本都覆盖了。
工具越多 Agent 能干的事越多,但也不是越多越好。工具太多模型反而容易选错,实际项目中一般控制在 10-20 个核心工具,按任务类型做分组。
面试官追问
提问:短期记忆塞满了怎么办?上下文窗口不够用的时候有什么解决方案?
回答:常用的有三种策略。第一种是滑动窗口,只保留最近 N 轮对话,老的直接丢掉,简单粗暴但会丢信息。第二种是摘要压缩,每隔一段让模型把之前的对话压缩成一段摘要,用摘要替代原文。第三种是检索式记忆,所有历史都存到向量库里,每轮对话开始前根据当前问题检索最相关的几条历史塞进上下文。实际项目中一般摘要和检索配合用,效果最好。
提问:如果决策模块选错了工具,或者工具调用失败了,Agent 怎么处理?
回答:好的 Agent 框架都有错误恢复机制。工具调用失败后,执行模块会把错误信息返回给决策模块,模型看到报错后重新规划,可能换一个工具或者调整参数再试。比如查数据库 SQL 报语法错误,模型看到错误信息后修正 SQL 再执行一遍。通常会设一个最大重试次数,比如 3 次,超过就放弃这条路换别的方案。选错工具也类似,模型会从工具返回的结果里发现不对劲,然后在下一轮决策中纠正。不过模型纠错能力也有限,复杂场景下还是需要人工设定兜底逻辑。
提问:多个 Agent 协作的时候,它们的记忆是怎么共享的?
回答:多 Agent 记忆共享一般有两种模式。一种是共享黑板,所有 Agent 往同一个公共存储里读写,类似多人协作的文档。CrewAI 默认就是这个模式,所有 Agent 共享一个上下文。另一种是消息传递,Agent 之间通过结构化消息通信,每个 Agent 有自己独立的记忆空间,只有通过消息才能获取别人的信息。AutoGen 走的是这条路,Agent 之间的对话记录就是消息传递的载体。共享黑板简单但容易信息爆炸,消息传递隔离性好但通信开销大,得根据具体场景选。