何时沿用开源 Agent 框架,何时选择自行封装或从零开发?
未标记
考查重点:框架适配度与自研维护成本。框架已有能力和扩展点匹配就复用;业务差异集中则局部封装,核心控制模型不匹配且能承担维护才自研
本题目录
参考答案
核心回答
我会先看业务需要哪些执行能力、框架的控制方式是否匹配,以及团队长期维护的总成本。沿用框架、自行封装和从零开发可以按模块组合,不必给整个系统只选一种。
- 沿用开源框架:需要的模型接入、工具循环、状态流转、子任务调度等能力已有合适实现,扩展点也能接入业务,就优先复用。收益是少维护通用执行机制;代价是学习抽象、跟踪版本和处理兼容性。
- 局部自行封装:公司数据接口、身份权限、指标口径、结果事件等具有业务特性,可以在框架外围或扩展点实现。这样既保留成熟能力,也能控制关键业务行为。
- 直接用 SDK 或从零开发:流程简单且固定时,直接调用模型和工具可能更清楚;如果现有框架的状态、调度或部署方式持续不符合核心需求,也可以自建相应部分,但要评估谁负责状态恢复、重试、取消和后续维护。
例如研搜助手可以复用 DeepAgents 的主从调度,业务代码自己接入 Tavily、MySQL、RAGFlow,管理会话目录和前端进度。是否继续沿用这层框架,应通过实际任务质量、延迟、失败恢复和升级成本判断,而不是只看框架热度或 Demo 代码量。
展开说明
1. 先确定需要复用的是哪一层
模型 SDK 解决的是向模型发请求、接收响应等问题;Agent 框架可能进一步封装工具调用循环、状态和中间件;运行时还可能提供检查点、流式事件和中断恢复。不同项目提供的能力范围不同,不能把“用了一个框架”直接等同于“全部工程问题已经解决”。
如果业务只是“填充模板、调用模型、解析结果”,普通代码或较薄的封装就能表达清楚。若任务需要多轮工具反馈、分支、暂停和恢复,复用合适的 Agent 或工作流运行时更有价值。高层封装不合适时,也可以只使用它的模型适配、工具定义或底层状态图,而不是立即替换整个技术栈。
2. 框架能力与业务职责要有清楚边界
以研搜项目为参考例子,DeepAgents 负责把主智能体、专家子智能体和工具组织起来,底层使用 LangGraph 执行。网络搜索、数据库查询和 RAGFlow 接口仍由项目工具实现;会话目录、上传文件处理、结果文件和 WebSocket 进度也由应用代码接起来。
框架能调用数据库工具,并不代表它已经知道公司的数据权限和指标口径;框架支持检查点,也不代表当前项目已经具备重启恢复。该参考实现使用 InMemorySaver,若需要持久恢复,还要选择相应存储并处理业务操作的重复执行。这些边界应按实际配置和代码核对。
适合自行封装的通常是稳定的业务接口和契约。例如对上提供统一的“查询业务数据”接口,在内部管理鉴权、SQL 校验、超时和返回格式;框架节点调用这个接口。这样业务约束有明确实现位置,更换编排框架时也不必重写整套数据访问逻辑。
3. 什么时候值得自建执行部分
一种情况是需求本来很小:工具少、流程短、不需要持久化或复杂委派,直接用 SDK 和普通函数便于理解和调试。但即使没有框架,也要处理工具参数、错误反馈和循环停止条件。
另一种情况是核心执行语义不匹配。例如公司已有统一任务调度和状态系统,而框架强制维护另一套难以对接的生命周期,导致取消、恢复和状态归属经常冲突。应先验证适配层或扩展点能否解决;如果需要持续修改框架内部、承担大量绕行代码,自建受影响的执行层可能更合适。
自建的范围也可以很小:只替换调度、上下文组装或工具执行器,继续复用模型 SDK 和通用组件。只有当这些分层组合仍无法满足核心需求、且团队能维护完整执行链路时,才考虑更大范围的从零开发。
4. 用同一条业务链路评估维护成本
做选型验证时,可以选一条有代表性的真实任务,比较框架方案和薄封装方案:完成目标需要哪些适配,模型与工具的输入输出能否追踪,失败后能否按预期重试、取消和恢复,已有身份与部署体系能否接入。
结果质量、延迟、Token 和工具调用费用要一起看。框架本身可能主要增加本地抽象开销,也可能因为默认提示词、中间件、规划或子代理策略改变模型调用和上下文消耗;具体成本应通过运行轨迹确认,不能笼统说“框架一定慢”或“自研一定省钱”。
长期还要看升级影响:锁定依赖后能否回放同一批样例,工具消息格式或状态结构变化会影响哪些模块,旧任务和产物能否继续读取。自行封装一个稳定的业务接口有助于收拢变化,但不必为了隐藏所有框架类型,再写一层与框架接口完全相同的包装。
常见追问
已经用了框架,哪些工作可以体现自己的实现?
具体说明实现了哪项业务能力及其输入输出。例如把业务数据库接成工具,处理鉴权、查询约束和结果结构;或者把任务事件接到前端,支持进度、取消和结果下载。框架提供的执行机制与业务实现分别说明,就能把技术边界讲清楚。
框架不支持某个能力,是改源码还是自己写?
先确认是否已有公开扩展点,可以用自定义工具、节点、中间件或适配器接入。若需要修改核心代码,再比较上游贡献、维护补丁和替换局部组件的成本。关键是改动范围、兼容性和后续负责人明确,而不是默认修改源码或重写全部。
从零写出的代码更少,是否说明更适合生产?
不一定。代码量少可能是业务确实简单,也可能省略了持久化、限额、异常处理或观测。应比较满足同一需求后的实现与运维成本;同样,框架带有很多功能,也不代表这些功能都应该启用。
对应教程
- LangGraph 概述与快速入门:查看图与状态适合的流程,以及何时普通代码、线性链或较高层 Agent 已经够用。
- DeepAgents 基础与核心概念:对照 LangChain、LangGraph、DeepAgents 的分层,理解可以复用到哪一层,以及更高层封装解决什么任务。
- 深度研搜配套源码:主智能体组装与执行:查看框架提供的主从组织方式,以及项目自己实现的文件工具、会话上下文与事件交接。
参考资料
- 国内:JavaGuide:AI 应用架构设计:借鉴业务编排、模型接入和工具运行时的职责划分,说明正文中复用框架之后仍需自行封装的业务接口与权限规则。
- 国内:Datawhale:第六章 框架开发实践:依据框架对主循环、工具、状态与观测的封装,说明正文中复用能减少的重复工作及图式编排的适用条件。
- 国内:WeThinkIn:企业级 Agent 平台与产品落地高频考点:采用工具生态、部署、长任务与团队维护能力等选型条件,组织正文中框架与薄封装方案的验证维度。
- 国外:LangChain:Deep Agents overview:依据 Harness、LangChain 组件与 LangGraph 运行时的层次关系,解释正文中高层框架与自定义工具、底层工作流如何组合。
- 国外:Anthropic:Building effective agents:借鉴框架抽象与基础组件的取舍,说明正文中从简单方案逐步增加复杂度的选择;文中历史工具清单不作为当前选型排名。
相关面经
25 篇东方财富
AI 应用开发工程师使用框架与自行搭建 Workflow 相比,各有什么优缺点?
顺丰科技
AI 开发工程师为什么选择直接根据业务逻辑实现,而不是使用现成的Agent框架?
阳光保险
AI 应用研发工程师开发Agent项目有用到什么框架吗还是纯手搓?
滴滴
企业级算法实习生为什么业务中没有用现成框架?
小红书
展开剩余 20 篇面经
字节跳动
后端开发工程师(AI 大模型开发平台)手写 Agent Loop、使用图编排框架、使用更完整的 Agent SDK 或 Harness,各有什么取舍?
字节跳动
AI 应用工程师为什么项目不用 Claude Code?
中兴通讯
AI 算法工程师使用成熟 Agent 工具,还是自己开发?
阿里巴巴
AI 全栈开发工程师你用的 AI 整架式是什么?Spring AI 吗?(追问)Spring AI 的工具调用和 MCP 的注册你都用过?
快手
AI 全栈开发工程师(音视频)科大讯飞
Java 开发工程师你为什么不用现有框架呢
虾皮
Agent 开发工程师项目为什么没有使用 LangChain?
百度
Agent 应用开发工程师不直接使用开源Agent框架,选择自行封装的原因?
哔哩哔哩(B站)
Agent 应用开发工程师你更喜欢在已有的Agent基础上开发,还是从0开发?
百度
AI 应用开发工程师为什么选LangChain?
阿里巴巴
AI 应用算法工程师是否使用过LangChain等框架?
极兔
大模型-用过哪些框架?说说场景体验
小红书
AI 全栈开发工程师选择LangGraph框架是否完全取决于业务场景?
网易
AI 应用开发工程师LangChain编排AI工作流,对比原生调用和自研引擎的选型原因、优缺点及瓶颈。
腾讯
大模型算法工程师熟悉哪些 Agent 框架
阿里巴巴
后端开发工程师(AI)Java的动态代理有几种方式?Agent框架?
阿里巴巴
AI 应用开发工程师有用智能体框架什么吗,还是代码控制
美团
大模型应用算法工程师langchain框架和agent在设计理念上有什么区别?在什么场景你会选择哪一种?
阿里巴巴
AI 应用开发工程师腾讯
大模型算法工程师熟悉哪些 Agent 框架







