如果由你实现一个 Agent,整体架构及主要组件如何设计?
未标记
考查重点:模型决策、执行与状态恢复。入口建任务ID,上下文/状态供模型决策,执行器校验调用工具,反馈循环与独立验收,持久化支撑恢复
本题目录
参考答案
核心回答
我会围绕一次任务的执行链路,把 Agent 拆成五类职责:
- 任务入口与会话管理:接收用户目标,建立任务标识,管理必要的输入、取消和进度返回。
- 上下文与状态管理:组织当前目标、已确认条件、相关历史和知识,保存执行进度及工具结果;长期记忆按需要加入。
- 模型决策与任务编排:模型判断下一步或生成计划,编排器控制依赖、分支、循环和退出条件。
- 工具执行与结果反馈:登记工具及参数结构,校验调用与权限,执行 API、检索或文件操作,再把真实结果交回决策循环。
- 验证、交付与运行保障:检查结果是否满足任务,生成最终回答或文件,并记录错误、耗时和调用轨迹,支持必要的重试与恢复。
主链路是:请求进入 → 组装上下文 → 模型提出动作 → 程序执行 → 写回状态与结果 → 继续决策或交付。最小 Agent 可以从模型、工具、状态和运行循环做起,规划、长期记忆和多 Agent 按业务需要扩展。
展开说明
1. 组件之间要交付明确的数据
任务入口把原始请求、可信用户身份和任务范围交给运行时,运行时建立当前任务状态。状态可保存用户目标、确认参数、计划、已完成步骤、结果引用和预算;上下文管理组件再从中选取当前决策需要的信息。
模型适配层负责调用模型并解析输出,返回的动作可以是调用工具、请求补充输入或完成回答。任务编排层决定这些动作如何进入合法路径,哪些分支需要等待依赖、哪些错误可以重试,以及何时停止。模型能力和流程控制可以由不同组件提供,也可以封装在同一个运行时中。
工具注册表提供名称、用途和参数 Schema,执行器根据模型提案找到实现,完成参数、身份和资源范围校验后调用。工具结果应有可识别的状态、数据或产物引用和错误信息;执行器把它们与原调用关联,再交给上下文与状态组件。这样模型下一轮看到的是实际反馈,而不只是自己提出的计划。
2. 用一次研搜报告请求串起来
以企业研搜参考架构为例,用户要求“分析上月某商品销量,结合内部资料和公开行业信息生成报告”。入口先接收问题和附件,明确商品、时间范围及交付形式,再进入主 Agent。
主 Agent 判断需要哪些信息:数据库专家取得内部结构化数据,知识库专家查询私有文档,网络专家搜索公开资料。各专家使用自己的工具完成子任务,结果回到主 Agent 汇总;主 Agent 的文件工具用于读取上传材料、写 Markdown 和转换 PDF。
实现时要让每次委派说明目标、输入范围和期望结果,汇总阶段检查时间与口径是否一致、是否缺少关键依据。需要补查就继续循环,已经满足交付要求就输出文件和说明。生成报告与查询数据是不同职责,工具成功也要经过业务验收才能算任务完成。
3. 参考实现中,各技术分别承担什么
研搜后端使用 Python,FastAPI 接收任务请求并启动后台执行,WebSocket 传递进度事件。Deep Agents 组织主 Agent、三个自定义业务专家及工具,LangChain 提供模型和工具接口,LangGraph 运行时支撑状态执行与流式过程。
业务能力通过工具接入:数据库查询、Tavily 网络搜索、RAGFlow 助手调用和文件处理分别取得或交付不同类型的信息。会话标识关联运行上下文与产物目录;当前检查点使用 InMemorySaver 保存同一进程内的上下文,跨进程恢复可进一步采用持久化后端和任务接管逻辑。
这些职责可以在一个后端中实现。若以后需要独立发布或扩缩容,再按实际服务边界拆分;组件名称本身不要求每层都成为单独服务。
4. 记忆、知识库和验证放在哪里
当前任务状态保存“这次正在做什么、已做了什么”;长期记忆保存需要跨任务复用的用户偏好或经验;知识库提供可检索的业务资料。上下文管理把相关信息选择性地送给模型,它们不必合成一份无限增长的聊天记录。
验证既可以出现在工具返回之后,也可以出现在最终交付之前。参数和字段格式适合用程序检查,数据口径、引用和业务验收按任务设计规则或评测。模型自评可以提供辅助意见,不能替代必要的实际证据。
运行保障贯穿这些组件:任务和调用标识用于追踪,预算限制循环,可靠检查点保存进度,写操作通过幂等与回执核对处理重试。职责明确后,框架可以承担一部分通用能力,业务工具和验收标准仍需应用实现。
常见追问
Planner、Executor 和 Memory 必须独立吗?
不必。简单任务可以由同一个模型逐步决策,运行时负责执行工具并更新状态;较长任务再增加显式计划。Memory 也可以先只保留当前会话状态,出现跨任务复用需求后再引入长期存储。是否拆组件,应看职责、复用与维护需求。
开源框架和自己封装怎样分工?
可以复用模型接口、工具调用、循环、状态和检查点,在外面封装业务身份、任务契约、工具适配和验收。需要更精确的控制时,局部自定义节点或中间件即可;架构设计不要求从零重写全部框架能力。
多 Agent 应该加在哪一层?
通常由编排层将独立子任务委派给具有相应工具和上下文的专家,再归并其结果。主干仍是任务输入、执行反馈和验收,增加 Agent 后还需明确交接契约、结果归属与失败处理。简单工具调用可以继续保留在单 Agent 内。
对应教程
- Agent 智能体:阅读模型、工具、状态与运行循环,理解决策和执行怎样分工,再逐步加入规划与记忆等能力。
- 研搜配套源码:主 Agent 入口:对照三个自定义业务专家、主文件工具、检查点和流式执行,查看这些组件如何连接成实际任务链路。
参考资料
- 国内:JavaGuide:AI Agent 基础:参考模型调用、工具调用和上下文组织的分工,说明最小 Agent 怎样形成反馈循环。
- 国内:zero2Agent:Agent 执行循环与状态:依据动作校验、工具执行、结果检查与状态更新,说明正文中组件间需要交付的信息。
- 国内:WeThinkIn:编排与 Agent Runtime:对照状态、节点、控制流和运行时职责,解释规划、权限、预算及恢复怎样与业务步骤连接。
- 国外:Anthropic:Building effective agents:参考简单可组合的构建方式,按实际任务增加复杂度,避免预先堆齐所有模块。
- 国外:LangChain:Deep Agents 概览:采用执行环境、上下文、委派与运行时的职责划分,说明正文中框架如何承接具体业务工具。
相关面经
26 篇长鑫存储
Agent 开发工程师从架构上来讲 agent 有几层
百度
AI智能体算法介绍下项目,如何设计从数据接入到结论生成的整体架构?
钛松科技
后端开发工程师AI Agent 的具体架构是什么?
阿里巴巴
Agent 开发工程师说一下一个用户发起一个对话时,底层执行的链路。
DeepSeek
AI Agent开发岗你的 Agent 整体架构是分几层的?——每一层的职责是什么?层与层之间的接口是怎么设计的?为什么这么设计?如果换一种分层方式会有什么不同?
展开剩余 21 篇面经
水滴公司
AI全栈工程师假如现在要基于大模型做一个 Agent,让你来设计,你认为都需要设计哪些方面?
快手
AI全栈开发Agent怎么做的, Loop 在这里是什么
字节跳动
Agent海康威视
Agent开发1 实习 agent 包含哪些功能,架构怎么设计的?用了哪些技术栈 or 框架?
中科曙光
AI Agent构建一个Agent分几个模块。
腾讯
后端开发工程师你简历中提到一个转人工的 Agent 案例。如果要搭建一个 Agent,需要重点考虑哪些问题?需要做哪些事情?
金蝶
Agent 开发工程师说一下这个Agent怎么设计的?
滴滴
测试开发工程师如果要你做一个agent,架构是怎么样的,包含哪些东西
美团
AI 全栈开发工程师如果我要自己实现一个agent会怎么做
小红书
Agent 开发在Agent开发过程中,使用了哪些技术框架?整体代码架构是如何设计的?
影石创新
AI Agent如果让你从零开始设计一个 Agent 系统,你认为需要包含哪些关键模块?
字节跳动
Agent 开发实习生说一下模块和模块的依赖关系?这些模块是怎么做的?
滴滴
国际化后端开发如何写一个agent
公司未注明
后端开发如果让你基于Java重构轻量Agent框架,你会怎么设计整体架构?
字节跳动
AI 应用开发如果让你设计一个Agent要考虑哪些模块?(太开放了,答得一坨)
理想
AI 解决方案岗(职能类)一面:结合简历问了我关于 rag的流程,agent 的理解,以及如何搭建一个 agent 系统 (业务相关)还有就是怎么做 benchmark。
公司未注明
前端开发agent怎么封装的
腾讯元宝
腾讯 WXG
Agent架构图为什么要这样分层
携程
Agent 开发如果设计一个大型 Agent系统,整体架构你会怎么分层设计?
公司未注明
1️⃣项目架构怎么设计?Agent 系统怎么拆分?Planner / Tool / Memory 怎么分层?









