主题
高频面试题
AI Agent 的核心组件有哪些?感知、决策、执行、记忆各自的作用是什么?
这道题看起来是在背概念,实际是在看你能不能把 Agent 拆成能落地的模块,并说清每一块到底负责什么、容易在哪里出问题。
面试官角度分析,想考什么
AI Agent 的核心组件有哪些?
考你能否把 Agent 从“一个大模型”拆成感知、决策、执行、记忆,而不是只背四个名词。它们各自负责什么,怎么协作?
考职责边界和闭环意识:感知吃输入、决策选下一步、执行真正行动、记忆沉淀状态;四者不是静态分层,而是“观察结果再决策”的循环。这些组件的工程边界在哪?
考落地意识:决策不等于 LLM 可以无限做主,runtime 要管权限、校验和停止;记忆要分短期、工作和长期;工具也不是越多越强。
可直接抄走的 30 秒参考答案
text
我理解 AI Agent 不是“一个大模型加几个工具”就完事了,核心要有感知、决策、执行和记忆四块。感知负责看懂用户输入、文件、网页和工具返回;决策负责判断下一步该问人、调工具还是给答案;执行负责真正调用 API、查库、跑代码这些动作;记忆负责记录目标、进度、结果和可复用经验。它们不是静态分层,而是一个闭环:看见信息,决定动作,执行拿结果,再把结果写回状态,直到任务完成或触发停止条件。面试回答详解,知其所以然
回答这道题时,不要只背“感知、决策、执行、记忆”四个词。更好的讲法是:Agent 是一个围绕目标运转的闭环系统,四个组件各管一段,但最终都要服务“把任务往前推”。
1. 感知:把外部输入变成 Agent 能处理的上下文
感知模块负责接收和理解外部信息。最常见的输入是用户自然语言,比如“帮我分析这个日志为什么报错”;也可以是文件、网页、图片、音频、数据库结果、API 返回值、屏幕截图或工具执行后的 observation。
它的核心产物不是“回复”,而是可供后续决策使用的上下文:
text
原始输入 -> 解析意图 / 抽取约束 / 识别环境状态 -> 可决策上下文在文本 Agent 里,感知常表现为 prompt、RAG、文档解析和工具结果解析;在多模态或桌面 Agent 里,感知还包括图像理解、屏幕状态识别、UI 元素定位等。感知做不好,后面的决策会建立在错误上下文上。
2. 决策:根据目标和状态决定下一步怎么走
决策模块是 Agent 的“大脑”,通常由 LLM 承担 planner 或 policy 的角色。它要理解用户目标、拆解任务、选择下一步动作、决定是否调用工具、判断证据是否足够,并在任务完成、失败或需要用户确认时停止。
一个典型决策链路是:
text
目标 + 当前状态 + 可用工具 + 历史结果 -> 下一步动作 / 继续 / 停止 / 转人工但面试里一定要补一句:决策模块不应该拥有无限权力。LLM 可以提出动作,runtime 要负责权限校验、参数校验、最大步数、人工确认、回滚策略和 trace 记录。成熟 Agent 不是“模型想干什么就干什么”,而是“模型在工程边界内做动态决策”。
3. 执行:把决策变成真实动作,并返回结果
执行模块负责把决策转成可运行的动作。最常见的是工具调用,比如搜索、读写文件、执行代码、查数据库、调用业务 API、创建工单、发送通知等。
执行模块至少要处理三件事:
- 工具匹配:判断模型选择的工具是否存在、当前状态下是否允许调用。
- 参数执行:校验参数 schema,处理鉴权、超时、重试、幂等和错误返回。
- 结果回传:把工具结果整理成 observation,让决策模块能继续判断。
工具调用让 Agent 能影响外部世界,也带来风险。读操作可能泄露信息,写操作可能产生副作用,代码执行可能有安全问题,业务 API 可能需要审批。所以执行模块不是“帮模型跑函数”这么简单,它也是权限和可靠性的关键边界。
4. 记忆:保存当前任务状态和可复用经验
记忆模块让 Agent 不至于每一步都从零开始。它既包括当前任务中的短期上下文,也包括结构化任务状态和跨会话长期记忆。
- 短期记忆:通常是当前上下文窗口里的对话、工具调用和中间结果,适合支撑一次连续任务。
- 工作记忆:是当前任务的结构化状态,比如已完成步骤、待办、阻塞点、已确认约束和停止条件。
- 长期记忆:跨会话保存用户偏好、历史经验、项目知识或常用事实,通常需要检索、版本、证据和权限控制。
- 经验记忆:保存过往任务轨迹、失败原因和修复策略,帮助 Agent 在相似任务中少走弯路。
这里要避免一个常见误区:把所有历史都塞进 prompt 不等于记忆设计。好的记忆需要决定写什么、怎么组织、什么时候检索、冲突如何处理、过期信息如何遗忘,以及敏感信息能不能长期保存。
5. 四个组件形成的是闭环,不是静态分层
这四个组件真正协作起来,才构成 Agent 的任务推进能力:
text
感知输入
-> 决策下一步
-> 执行工具或动作
-> 感知执行结果
-> 更新记忆和状态
-> 再次决策,直到完成或停止所以这道题的高分答案应该强调“闭环”。感知提供环境信息,决策选择行动,执行改变环境或获取新信息,记忆沉淀状态和经验;下一轮决策再基于新的 observation 和 memory 继续推进。
6. 生产落地时,还需要 runtime 把组件串起来
感知、决策、执行、记忆是能力视角;工程落地还需要 Agent runtime 或 harness 把它们管起来。比如 OpenAI Agents SDK 会管理工具循环、handoff、session、trace、guardrail 和 approval;Anthropic 也强调 agentic system 的基础是带 retrieval、tools、memory 增强的 LLM,并提醒不要一开始就堆复杂框架。
面试里可以这样收束:组件拆得清楚只是第一步,更关键的是知道每个组件的失败模式。感知会误读输入,决策会选错路径,执行会调错工具或越权,记忆会污染上下文。生产级 Agent 要靠 schema、权限、trace、评估、重试、回滚和人工确认,把这些风险压住。
面试官追问3个问题
追问一:短期记忆塞满了怎么办?上下文窗口不够用时怎么处理?
- 考察点:是否知道上下文窗口不是无限记忆,以及 memory 需要工程设计。
- 回答方向:可以用滑动窗口保留最近信息,用摘要压缩保留历史脉络,用检索式记忆召回相关历史,用结构化 state 保存关键任务状态。实际项目里通常组合使用,不会简单把所有历史都塞进 prompt。
追问二:如果决策模块选错工具,或者工具调用失败,Agent 怎么恢复?
- 考察点:是否理解 tool error 需要进入下一轮 observation,而不是被吞掉。
- 回答方向:执行模块要返回结构化错误,包括错误码、失败原因、可重试性和部分结果;决策模块基于错误重新规划,可能调整参数、换工具、缩小任务或询问用户。外层还要有最大重试次数、超时、幂等和人工兜底。
追问三:多个 Agent 协作时,记忆怎么共享?
- 考察点:是否知道共享上下文会带来信息污染和协作成本。
- 回答方向:常见有共享黑板和消息传递两种。共享黑板让多个 Agent 读写同一状态,简单但容易膨胀和冲突;消息传递让每个 Agent 保持独立记忆,通过结构化消息同步关键结果,隔离性更好但通信成本更高。复杂系统还会区分公共任务状态、私有工作区和最终产物。
扩展知识
四个组件和经典 Agent 三段式的关系
经典 AI Agent 常被描述为:感知环境、做出决策、采取行动。LLM Agent 继承了这个框架,但因为大模型上下文有限、任务经常跨多轮、多工具、多会话,所以“记忆”在工程上变成了单独的一层。
text
经典 Agent:Perception -> Decision -> Action
LLM Agent:Perception -> Decision -> Action -> Memory / State -> Next Decision所以如果面试官问“为什么要单独讲记忆”,可以回答:因为 LLM 本身是无状态调用,Agent 要持续推进任务,就必须把任务状态、工具结果、用户偏好和历史经验外置管理。
感知不只是用户输入,也包括工具 observation
很多人会把感知理解成“听懂用户说什么”,这只讲了一半。Agent 在每一轮工具调用之后,都要重新感知工具返回的 observation:搜索结果是否可信、SQL 是否报错、代码测试是否通过、API 返回是否命中权限限制。
对工具结果的理解能力,直接影响 Agent 是否能自我纠错。比如执行 SQL 报错后,好的 Agent 会读懂错误类型,修改查询或换工具;差的 Agent 会忽略错误,继续生成看似合理的结论。
决策模块的能力天花板和工程边界
决策模块通常决定了 Agent 的复杂任务上限。模型越强,越能处理长链路规划、工具选择、异常恢复和多约束权衡。但模型能力强不代表可以放任它自由执行。
生产里一般会把决策权拆开:
- 模型决定:下一步候选动作、需要的信息、可能的工具。
- Runtime 决定:动作是否允许、参数是否合法、是否需要人工确认。
- Verifier 决定:结果是否满足任务目标,是否可以停止。
这种拆法能让 Agent 保持灵活性,同时把高风险动作关进确定性边界里。
记忆模块的常见设计方式
记忆可以按生命周期分层:
- 短期记忆:当前上下文窗口,速度快,但受 token 限制。
- 工作记忆:当前任务的结构化 state,适合恢复、暂停、调试和验证。
- 长期记忆:跨会话持久化信息,常结合数据库、向量检索或专门的 memory service。
- 反思记忆:把失败经验、用户纠正和任务轨迹整理成后续可用的经验。
当上下文窗口不够时,常见策略包括滑动窗口、摘要压缩、检索式记忆和结构化 state 外置。真正难的不是“存下来”,而是选择性写入、选择性读取,以及避免错误记忆污染后续任务。
工具生态让执行模块从函数调用走向能力网络
早期执行模块常是 Function Calling:应用定义工具 schema,模型选择函数和参数,应用层执行后把结果返回。现在更成熟的 Agent 系统会把工具接入、权限、资源、提示词和执行环境统一管理,比如通过 MCP 连接外部工具,通过 Agent SDK 或 runtime 管理工具循环、trace 和 approval。
工具越多,Agent 的能力范围越大,但工具太多也会造成 tool confusion。实际项目里更推荐按任务动态给工具白名单,让 Agent 只看到当前阶段真正需要的工具。