尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Agentic AI Infra 实战:从零搭建生产级智能体基础设施

Agentic AI Infra 实战:从零搭建生产级智能体基础设施 1. 从模型竞赛到智能体落地Agentic AI Infra 到底在解决什么问题过去两年大家聊得最多的是模型本身——参数规模、上下文长度、推理成本。但真正把 AI 用起来的人会发现模型能力再强如果没有一套稳定的基础设施去承载它的行动能力那它永远只能停留在对话框里。Agentic AI Infra 这个词拆开看就是三层意思Agentic 指的是智能体具备自主规划、工具调用、记忆管理和多步执行的能力AI 指的是底层由大模型驱动Infra 则是支撑这一切运转的工程底座。我在实际做 Agent 项目时最深的感受是Demo 跑通只要一天但要让它在生产环境里稳定跑一个月需要的基础设施工作量是 Demo 的几十倍。模型调用只是冰山一角水面下藏着的是会话状态管理、工具注册与发现、执行链路追踪、失败重试与降级、记忆的读写与淘汰、多智能体之间的通信协议、安全边界控制等等。这些东西没有一个统一的 Infra 层去抽象每个项目都要重复造轮子而且造出来的轮子质量参差不齐。云栖 2026 这个议题把 Agentic AI Infra 单独拎出来讲说明行业已经意识到智能体的创新瓶颈正在从模型够不够聪明转移到基础设施够不够扎实。PAI人工智能平台这类平台级产品在这个阶段的价值就是把这些共性能力沉淀下来让做 Agent 的人不用从零开始搭地基。你可以把它理解成以前盖房子要自己烧砖、自己搅拌水泥现在平台把预制件做好了你只需要关注户型设计和装修风格。这篇文章适合三类人看一是正在做 Agent 开发但被工程问题折磨的工程师二是想了解 AI Infra 到底包含哪些模块的技术管理者三是对 Agent 感兴趣但还没动手、想先搞清楚全貌的学习者。我会从实际项目经验出发把 Agentic AI Infra 的核心模块、选型逻辑、踩坑点和实操建议都讲清楚。2. Agentic AI Infra 的五大核心模块拆解2.1 执行引擎Agent 的中枢神经是怎么运转的执行引擎是整个 Agent 系统的心脏。它负责接收用户输入决定下一步做什么调用相应的工具或模型然后根据返回结果决定是继续还是结束。听起来简单但实际实现时要处理的问题非常多。最基础的执行模式是 ReActReasoning Acting循环思考、行动、观察、再思考。我手写过 ReAct Agent核心逻辑就是一个 while 循环每轮让模型输出思考和行动指令解析指令后执行对应工具把结果拼回上下文再进入下一轮。但生产级的执行引擎要考虑的东西远不止这些。第一个问题是循环终止条件。模型有时候会陷入死循环反复调用同一个工具却得不到有用结果。你需要设置最大轮次限制、重复动作检测、以及基于语义的是否已达成目标判断。我见过一个案例Agent 在查天气时因为 API 返回格式不符合预期连续调用了十几次同一个接口最后把 token 额度耗光了。后来我们加了相同工具相同参数连续调用超过两次就强制中断并返回错误的规则才解决这个问题。第二个问题是执行状态的持久化。Agent 执行到一半服务重启了怎么办用户等了 30 秒还没结果想刷新页面怎么办这要求执行引擎把每一步的状态都存下来支持断点续跑和状态查询。常见的做法是用一个状态机来管理每个步骤有明确的 statuspending、running、completed、failed状态变更时写入数据库或 Redis。第三个问题是超时与降级。不是所有工具都能在预期时间内返回。你需要给每个工具调用设置独立的超时时间超时后要么重试、要么走降级逻辑、要么直接告诉模型这个工具暂时不可用请尝试其他方案。这里有个经验超时时间不要设成固定值要根据工具的历史响应时间动态调整比如取 P95 响应时间再加 50% 的余量。2.2 工具层让 Agent 真正能做事的关键工具是 Agent 与外部世界交互的桥梁。没有工具Agent 只能聊天有了工具它才能查数据库、调 API、发邮件、操作文件。但工具层的设计有很多讲究。首先是工具的注册与发现机制。在小型项目里工具就是代码里写死的几个函数。但当工具数量增长到几十个甚至上百个时你需要一套注册机制每个工具声明自己的名称、描述、参数 schema、权限要求然后由一个注册中心统一管理。模型在决定调用哪个工具时看到的就是这些描述信息。描述写得好不好直接影响模型的工具选择准确率。我踩过一个坑有两个工具的功能很相似一个叫search_docs一个叫query_knowledge_base描述也写得很接近。结果模型经常选错该用搜索的时候用了知识库查询返回的结果完全不相关。后来我把它们的描述改得更有区分度明确写了search_docs 用于全文模糊搜索适合关键词不明确的场景query_knowledge_base 用于精确匹配已知条目的结构化查询准确率立刻上去了。其次是工具的权限与安全。不是所有工具都应该对所有 Agent 开放。一个客服 Agent 不应该有删除数据库记录的权限。你需要一套权限模型把工具按敏感级别分类Agent 按角色分配权限。执行引擎在调用工具前要检查权限调用后要记录审计日志。第三是工具的错误处理。工具调用失败是常态不是异常。网络超时、参数格式错误、下游服务不可用这些都会发生。关键是要把错误信息以模型能理解的方式返回而不是直接抛一个 stack trace。比如参数 start_date 格式错误期望 YYYY-MM-DD实际收到 2026/01/01这样的错误信息模型看到后能自己修正参数重试。2.3 记忆系统短期、长期与永久记忆的工程实现Agent 的记忆系统是区分玩具和产品的重要标志。没有记忆的 Agent每次对话都是重新开始有记忆的 Agent才能积累经验、记住用户偏好、保持对话连贯性。记忆通常分三层。短期记忆就是当前会话的上下文窗口存的是最近几轮对话和工具调用结果。这部分直接放在 prompt 里实现最简单但受限于上下文长度。长期记忆是跨会话的比如用户上周问过什么问题、偏好什么回答风格。这部分通常存在向量数据库里需要时通过语义检索召回。永久记忆是那些确定不会变的事实比如用户的姓名、账号 ID、所属部门这些可以直接存在关系型数据库里每次对话开始时注入。实现记忆系统时最大的挑战不是存储而是召回策略。向量检索看起来很美但实际用起来经常召回不相关的内容。我的经验是不要只依赖向量相似度要结合时间衰减、重要性评分、访问频率等多个因子做综合排序。另外召回的内容不要一股脑全塞进 prompt要做截断和摘要否则会把上下文窗口撑爆。还有一个容易被忽略的点是记忆的淘汰与更新。用户换了工作之前的公司信息就应该失效。用户明确说以后不要用这种方式回答我这个偏好就要覆盖掉旧的。你需要一套记忆生命周期管理机制支持过期、覆盖、软删除等操作。2.4 编排层多 Agent 协作的调度逻辑单个 Agent 能做的事有限复杂任务往往需要多个 Agent 协作。比如一个帮我策划一场活动的任务可能需要一个负责搜集信息的 Agent、一个负责预算计算的 Agent、一个负责文案撰写的 Agent它们之间要有明确的分工和交接。编排层的核心是任务分解与分配。常见模式有两种一种是中心化编排有一个管理者 Agent负责拆解任务、分配给工作者 Agent、收集结果并汇总另一种是去中心化编排Agent 之间通过消息传递直接协作。中心化模式更容易控制和调试去中心化模式更灵活但容易出现三个和尚没水喝的情况。我在实际项目里更倾向于中心化编排原因是可观测性好。每个子任务的执行状态、耗时、结果都能在编排层看到出问题容易定位。去中心化模式下Agent 之间的交互链路可能非常复杂排查问题像大海捞针。编排层还要处理并发与依赖。有些子任务可以并行执行有些必须串行。你需要一个 DAG有向无环图来管理任务依赖关系支持并行分支的合并和超时控制。2.5 可观测性Agent 跑在黑盒里是最大的噩梦Agent 系统最让人头疼的地方是不可解释。用户问了一个问题Agent 转了五圈调了八个工具最后给了一个错误答案。你根本不知道是哪一步出了问题。可观测性建设包括三个层面日志、追踪、指标。日志要记录每一次模型调用、工具调用、状态变更的详细信息。追踪要把一次完整的 Agent 执行串成一条 trace每个 span 对应一个步骤能看到父子关系和耗时。指标要统计成功率、平均轮次、工具调用分布、token 消耗等。我强烈建议在项目初期就把可观测性做起来不要等到出问题了才补。因为 Agent 的 bug 往往难以复现没有详细的执行记录你根本不知道从何查起。我们团队的做法是每个 Agent 执行都生成一个唯一的 trace_id所有相关日志都带上这个 ID排查时一键拉出完整链路。3. 从零搭建 Agent 基础设施的实操路径3.1 环境准备与依赖选型动手之前先把技术栈定下来。以下是我在实际项目中验证过的一套组合适合中小规模团队快速起步。组件推荐选型选型理由模型接入统一网关层屏蔽不同模型 API 差异方便切换和降级执行引擎自研轻量状态机逻辑可控不依赖重型框架工具注册声明式配置 动态加载新增工具不改核心代码短期记忆Redis读写快支持过期策略长期记忆向量数据库语义检索能力强编排DAG 调度器依赖关系清晰支持并行可观测结构化日志 链路追踪排查问题的基础设施环境准备阶段最容易忽略的是模型网关。很多团队直接在每个 Agent 里写模型调用代码结果后来想换模型、想加限流、想统计 token 消耗时发现要改几十个地方。正确的做法是在最前面加一层网关所有模型调用都走网关网关负责鉴权、限流、路由、重试、日志。3.2 最小可用 Agent 的搭建步骤先跑通一个最简单的 Agent再逐步加功能。以下是我建议的搭建顺序。第一步定义工具接口。每个工具是一个函数接收结构化参数返回结构化结果。用 JSON Schema 描述参数这样模型能理解怎么调用。# 工具定义示例 tool_definition { name: get_weather, description: 查询指定城市的当前天气, parameters: { type: object, properties: { city: {type: string, description: 城市名称}, unit: {type: string, enum: [celsius, fahrenheit]} }, required: [city] } }第二步实现 ReAct 循环。核心逻辑是把工具定义和用户输入一起发给模型模型返回行动指令解析后执行工具把结果拼回上下文继续下一轮直到模型返回最终答案或达到最大轮次。第三步加状态持久化。每轮循环结束后把当前状态写入 Rediskey 是 session_id。这样服务重启后能从上次的状态继续。第四步加基础可观测。每次模型调用和工具调用都打一条结构化日志包含 trace_id、step、耗时、输入输出摘要。3.3 工具接入的标准化流程工具接入是 Agent 开发中最高频的工作。标准化流程能大幅提升效率。定义工具契约明确输入输出格式、错误码、超时时间。实现工具函数处理参数校验、业务逻辑、异常捕获。注册到工具中心填写名称、描述、参数 schema、权限标签。编写测试用例覆盖正常路径、参数错误、下游超时等场景。灰度上线先对内部 Agent 开放观察调用成功率和耗时。这里有个经验工具的描述文本要反复打磨。它是模型选择工具的唯一依据。好的描述应该包含这个工具做什么、什么时候用、什么时候不用、参数怎么填。我通常会写一个反例在描述里比如不要用这个工具查询实时数据实时数据请用 xxx 工具。3.4 记忆模块的落地细节记忆模块的落地要从数据模型开始。短期记忆用 Redis List 存储每个元素是一轮对话。长期记忆用向量库存储每条记忆是一个向量加元数据。永久记忆用关系型数据库存储结构化的键值对。写入策略上短期记忆每轮对话后自动追加设置 TTL 比如 24 小时。长期记忆在会话结束时触发提取把值得记住的信息抽出来存进去。永久记忆在用户首次交互时写入后续更新。读取策略上每次新会话开始时先加载永久记忆再根据当前输入检索长期记忆最后拼接短期记忆。注意控制总长度超过阈值时优先保留最近的和最相关的。4. 生产环境踩过的坑与应对策略4.1 模型输出格式不稳定导致的解析失败这是最常见的问题。你要求模型输出 JSON它有时候输出 markdown 代码块包裹的 JSON有时候在 JSON 前后加解释文字有时候字段名拼错。解析失败后整个执行链路就断了。应对策略分三层。第一层是prompt 约束明确要求只输出 JSON不要有任何其他文字并给出格式示例。第二层是解析容错用正则提取 JSON 部分尝试修复常见格式问题。第三层是失败重试解析失败时把错误信息返回给模型让它重新输出。我实测下来三层都加上之后解析成功率能从 85% 提升到 99% 以上。但要注意重试次数不要超过两次否则会陷入无限循环。4.2 工具调用超时引发的连锁反应一个工具超时如果没有处理好会导致整个 Agent 卡住。更糟糕的是如果多个 Agent 共享同一个下游服务一个慢查询可能拖垮所有 Agent。应对策略是超时隔离 熔断降级。每个工具调用设置独立超时超时后立即返回错误不要让 Agent 干等。同时用熔断器监控下游服务的错误率超过阈值时直接拒绝请求给下游恢复的时间。还有一个技巧是异步化。对于耗时较长的工具不要同步等待而是返回一个 task_id让 Agent 先去做别的事过一会儿再来查结果。这需要执行引擎支持异步任务的状态管理。4.3 上下文膨胀与 token 成本失控Agent 跑着跑着上下文越来越长token 消耗飙升。一个复杂任务跑下来可能消耗几十万 token成本高得吓人。控制上下文膨胀有几个手段。摘要压缩把早期的对话和工具结果用模型摘要成简短文本替换掉原始内容。滑动窗口只保留最近 N 轮更早的丢弃或存入长期记忆。结果截断工具返回的长文本只保留关键部分比如搜索结果只留标题和摘要不留全文。我通常会设置一个 token 预算比如单次执行不超过 5 万 token接近预算时触发压缩或提前结束。这个预算要根据业务场景调整客服场景可以低一些研究分析场景可以高一些。4.4 多 Agent 协作中的死锁与活锁多 Agent 协作时如果任务分配不当会出现两个 Agent 互相等待对方结果的情况这就是死锁。活锁则是 Agent 们反复交换信息但始终达不成一致。避免死锁的关键是明确依赖方向。任务 DAG 必须是有向无环的不允许循环依赖。如果业务上确实需要双向交互要引入一个协调者来打破循环。避免活锁的关键是设置协商轮次上限。Agent 之间讨论超过 N 轮还没结论就强制由协调者拍板。另外要给每个 Agent 设置明确的退出条件让它知道什么时候该停止。5. Agent 安全与评测上线前必须做的功课5.1 提示注入与工具滥用的防护Agent 的安全边界比普通应用更复杂因为它能执行动作。一个被恶意提示注入的 Agent可能被诱导调用敏感工具、泄露系统提示词、或者执行破坏性操作。防护措施包括输入过滤检测并拦截包含可疑指令的用户输入工具白名单Agent 只能调用被授权的工具敏感操作二次确认删除、修改、发送类操作需要人工确认或额外的鉴权输出审查检查 Agent 的回复是否包含敏感信息。我特别想强调系统提示词的保护。很多人把 API key、内部规则写在系统提示词里这是非常危险的。一旦被注入攻击套出来后果严重。正确的做法是敏感信息不放在提示词里而是放在工具的后端实现里Agent 只能通过工具间接使用。5.2 Agent 评测体系的搭建Agent 好不好用不能靠感觉要靠数据。评测体系要覆盖几个维度任务完成率给定一批测试任务看 Agent 能正确完成多少平均轮次完成一个任务平均需要多少步越少越好工具调用准确率该调的工具调了没有不该调的调了没有响应时间从用户输入到最终输出的耗时成本每次执行的 token 消耗和工具调用费用。评测集的建设是个持续过程。初期可以手工构造几十个典型场景上线后从真实日志里采样不断补充边界 case。每次修改 prompt、换模型、加工具都要跑一遍评测集对比指标变化。5.3 灰度发布与回滚机制Agent 的行为受 prompt、模型、工具多个因素影响任何改动都可能引入回归。所以上线必须灰度。灰度策略可以是按用户分流比如先对 5% 的用户开放新版本观察指标。也可以是按场景分流先在低风险场景试用。灰度期间要密切监控成功率、错误率、用户反馈一旦发现异常立即回滚。回滚机制要提前准备好。prompt 和配置要版本化管理回滚时一键切换到旧版本。模型也要支持快速切换不能绑死在某一个模型上。6. 我对 Agentic AI Infra 后续演进的一些观察做了一段时间 Agent 项目我越来越觉得 Infra 的价值被低估了。大家都在关注模型能力又提升了多少但真正决定 Agent 能不能落地的是那些不起眼的工程细节状态管理做得好不好、错误处理全不全、可观测性够不够、安全边界清不清晰。PAI 这类平台把 Agentic AI Infra 作为重点方向我觉得方向是对的。未来 Agent 开发会像现在的 Web 开发一样有成熟的框架、标准的协议、丰富的组件库。开发者不需要关心底层的调度、存储、通信只需要关注业务逻辑和用户体验。但现阶段Infra 还在快速演进中没有形成事实标准。我的建议是不要过度依赖某一个框架把核心逻辑掌握在自己手里。框架可以换但你对 Agent 执行流程的理解、对工具设计的经验、对记忆管理的认知这些是带得走的。另外Agent 的评测和安全会越来越重要。现在很多团队还在先跑起来再说的阶段但一旦 Agent 开始执行真实操作安全和质量就是绕不过去的坎。早点把评测体系和安全防护建起来后面会省很多事。最后分享一个小心得Agent 开发中日志和追踪的投入永远不亏。我见过太多团队在出问题后花几天时间排查就是因为当初没打好日志。多花一天把可观测性做好后面能省下一周的火葬场时间。这个账怎么算都划算。
返回列表