如果由你实现一个 Agent,整体架构及主要组件如何设计?

考查重点:模型决策、执行与状态恢复。入口建任务ID,上下文/状态供模型决策,执行器校验调用工具,反馈循环与独立验收,持久化支撑恢复

本题目录

参考答案

核心回答

我会围绕一次任务的执行链路,把 Agent 拆成五类职责:

  1. 任务入口与会话管理:接收用户目标,建立任务标识,管理必要的输入、取消和进度返回。
  2. 上下文与状态管理:组织当前目标、已确认条件、相关历史和知识,保存执行进度及工具结果;长期记忆按需要加入。
  3. 模型决策与任务编排:模型判断下一步或生成计划,编排器控制依赖、分支、循环和退出条件。
  4. 工具执行与结果反馈:登记工具及参数结构,校验调用与权限,执行 API、检索或文件操作,再把真实结果交回决策循环。
  5. 验证、交付与运行保障:检查结果是否满足任务,生成最终回答或文件,并记录错误、耗时和调用轨迹,支持必要的重试与恢复。

主链路是:请求进入 → 组装上下文 → 模型提出动作 → 程序执行 → 写回状态与结果 → 继续决策或交付。最小 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 入口:对照三个自定义业务专家、主文件工具、检查点和流式执行,查看这些组件如何连接成实际任务链路。

参考资料

相关面经

54 篇

长鑫存储

Agent 开发工程师
查看原面经 →
从架构上来讲 agent 有几层

百度

AI智能体算法
一面、二面、三面
查看原面经 →
介绍下项目,如何设计从数据接入到结论生成的整体架构?

钛松科技

后端开发工程师
查看原面经 →
AI Agent 的具体架构是什么?

阿里巴巴

Agent 开发工程师
一面
查看原面经 →
说一下一个用户发起一个对话时,底层执行的链路。

DeepSeek

AI Agent开发岗
社招一面
查看原面经 →
你的 Agent 整体架构是分几层的?——每一层的职责是什么?层与层之间的接口是怎么设计的?为什么这么设计?如果换一种分层方式会有什么不同?
展开剩余 49 篇面经

水滴公司

AI全栈工程师
校招秋招一面
查看原面经 →
假如现在要基于大模型做一个 Agent,让你来设计,你认为都需要设计哪些方面?

快手

AI全栈开发
实习一面、二面
查看原面经 →
Agent怎么做的, Loop 在这里是什么

字节跳动

Agent
日常实习一面
查看原面经 →
先让讲整体流程
single-agent 怎么构建

海康威视

Agent开发
秋招一面
查看原面经 →
1 实习 agent 包含哪些功能,架构怎么设计的?用了哪些技术栈 or 框架?

中科曙光

AI Agent
查看原面经 →
构建一个Agent分几个模块。

腾讯

后端开发工程师
实习一面
查看原面经 →
你简历中提到一个转人工的 Agent 案例。如果要搭建一个 Agent,需要重点考虑哪些问题?需要做哪些事情?

水滴

测试开发
校招一面
查看原面经 →
你这个agent项目如果让你重新设计,你会如何去控制输入、模型的选择、包括这个上下文以及工具调用呢?

字节跳动、米哈游、哔哩哔哩、百度、美团、智驾新程、CVTE

面经合集
查看原面经 →
你怎么理解 Agent 的设计?

金蝶

Agent 开发工程师
校招一面
查看原面经 →
项目追问
说一下这个Agent怎么设计的?

东方财富

前端开发
秋招一面
查看原面经 →
问agent的流程和设计是怎么做的

滴滴

测试开发工程师
一面
查看原面经 →
如果要你做一个agent,架构是怎么样的,包含哪些东西

腾讯

大模型算法
一面
查看原面经 →
简述主流AI Agent的核心组成架构与经典框架,并分析LangGraph架构在落地应用中的短板与局限性。

美团

AI 全栈开发工程师
秋招
查看原面经 →
如果我要自己实现一个agent会怎么做

百度

后端开发工程师
校招秋招二面
查看原面经 →
16 怎么开发自己的agent?主要时间花在哪里?

百度

大模型研发工程师
校招秋招二面
查看原面经 →
在没有 Coding Agent 的情况下,只用 LLM API 怎么搭建起来一整套 Agent 应用?没有 Codex、Claude Code、ChatGPT 网页版,只有模型 API 和 VS Code。

小红书

Agent 开发
实习一面
查看原面经 →
在Agent开发过程中,使用了哪些技术框架?整体代码架构是如何设计的?

影石创新

AI Agent
实习一面
查看原面经 →
如果让你从零开始设计一个 Agent 系统,你认为需要包含哪些关键模块?

字节跳动

Agent 开发实习生
实习一面
查看原面经 →
说一下模块和模块的依赖关系?这些模块是怎么做的?

滴滴

国际化后端开发
社招一面、二面、三面
查看原面经 →
如何写一个agent

公司未注明

后端开发
查看原面经 →
如果让你基于Java重构轻量Agent框架,你会怎么设计整体架构?

字节跳动

AI 应用开发
一面
查看原面经 →
如果让你设计一个Agent要考虑哪些模块?(太开放了,答得一坨)

理想

AI 解决方案岗(职能类)
一面、二面
查看原面经 →
一面:结合简历问了我关于 rag的流程,agent 的理解,以及如何搭建一个 agent 系统 (业务相关)还有就是怎么做 benchmark。

公司未注明

前端开发
查看原面经 →
agent怎么封装的

腾讯元宝

面经合集社招
查看原面经 →
能讲讲你的架构是什么?
agent的架构过程是什么?

公司未注明

后端开发
查看原面经 →
决策解释智能体架构是什么,数据流

数字马力

AI 研发实习生
实习
查看原面经 →
有几个agent,怎么做的, 具体的流程是什么,

地纬智能

AI 开发工程师
校招春招
查看原面经 →
都是和 Agent 与实际工程相结合的题目,需要回答垂直领域 Agent 的设计思路。

字节跳动

后端开发
实习一面
查看原面经 →
整个LangGraph多智能体项目的流程,先后经过了哪些节点

腾讯 WXG

Agent
社招面委会
查看原面经 →
架构图为什么要这样分层

字节跳动

多模态算法实习生
实习一面
查看原面经 →
一个完整的 Agent 包含哪几个核心模块?

曹操出行

算法工程师
一面、二面
查看原面经 →
agent组件的相关技术

腾讯云智

后端开发
二面
查看原面经 →
AI Agent 的核心要素有哪些?

百度

多模态 LLM 算法实习生
日常实习二面
查看原面经 →
agent原理

字节跳动

AI Infra 实习生
实习一面
查看原面经 →
对agent的理解

京东

Agent 开发实习生
实习暑期二面
查看原面经 →
介绍一下 AI 智能体的 workflow 以及 RAG 知识库是怎么设计的?

携程

Agent 开发
社招
查看原面经 →
如果设计一个大型 Agent系统,整体架构你会怎么分层设计?

阿里巴巴

AI Agent 开发
一面
查看原面经 →
Agent 的架构设计?

阿里巴巴

AI 应用研发
实习一面
查看原面经 →
一个Agent系统应该有哪些模块

虾皮

AI 开发实习生
日常实习二面
查看原面经 →
Agent结构包含哪些部分?

八斗科技

Java 开发实习生
实习
查看原面经 →
智能体Ai的开发流程

快手

Java 开发
二面
查看原面经 →
再讲项目Agent模块组成,同样很健谈,面试官会真的细问,确定项目是你自己做的

阿里巴巴

AI Agent 开发
一面
查看原面经 →
详细讲讲你设计的 Agent 是如何实现的?在“推理-行动”循环中,如何设计来纠正逻辑塌缩或无效工具调用?

公司未注明

面经合集
查看原面经 →
1️⃣项目架构怎么设计?Agent 系统怎么拆分?Planner / Tool / Memory 怎么分层?

字节跳动

AI 开发
一面
查看原面经 →
一个完整的agent智能体架构一般包括哪些部分?

搜狐畅游

AI 算法实习生
实习一面
查看原面经 →
对 Agent 设计有什么了解,Agent 是怎么回事、怎么做开发、有哪些类型?

中兴通讯

大模型算法
一面
查看原面经 →
讲讲你对Agent的理解

余杭机器人

大模型算法
校招一面
查看原面经 →
你对Agent有什么了解,做过的场景是什么

上海人工智能实验室

Agent 算法
二面
查看原面经 →
Agent搭建用了什么模块/包

涂鸦智能

大模型算法实习生
实习一面
查看原面经 →
Agent了不了解

收录题集

5 个来源,共6 份题集

AI 项目复盘与自测

Guide · JavaGuide · 1 条原题

查看题集 →

Agent 面试题

卡码笔记 · 个人整理 · 1 条原题

查看题集 →

强化学习与对齐

Firefly · llm_interview_note · 1 条原题

查看题集 →

架构选型:ReAct、Plan-and-Execute 与 ToT 怎么选

Onefly · zero2Agent · 1 条原题

查看题集 →

Harness 设计速查

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →
展开剩余 1 份题集

相关题目

4 题