简介:本教程系统拆解 Agent Infra 的定义与五大核心组件:执行环境、上下文、工具、安全、模型接入,讲清它们与传统基础设施的本质区别,并给出从环境隔离、记忆管理、工具标准化、权限管控到成本核算的完整搭建步骤、验证方法与常见问题排查思路,帮助开发者把 Agent 从 demo 稳定推进生产环境。
过去一年,大量 Agent 项目从 demo 走向生产环境,很多团队发现一个反直觉的事实:卡住落地的往往不是模型能力本身。模型评测分数一年比一年高,但一到线上,代码没有安全的地方运行、上下文塞不下、工具接不进、权限管不住、账单算不清,这些问题会集中爆发。它们的共同点是:都不是模型层的问题,而是基础设施层的问题。
本教程的目标是帮助读者完成三件事:
适合的读者:正在或计划将 Agent 部署到生产环境的后端开发者、平台与运维工程师、负责技术选型的技术负责人,以及需要评估 Agent 项目投入的企业用户。
本教程适用于以下三类典型场景:
动手前,建议确认以下几项准备到位:
本教程采用的定义可以写成一行等式:
Agent Infra = Environment + Context + Tools + Security + LLM
五个词对应五个组件,可以用一个直观类比来理解:Environment 是工作间,Context 是记忆,Tools 是手脚,Security 是围栏,LLM 是电力。五件东西合起来,就是让一个 Agent 在生产环境真正干活所需的全部底座。
有人会问:容器、数据库、API 网关、安全组、模型服务,这些云上早就有,哪一个是新的?问得对,单拎出来确实都不新,真正变的是组合方式与设计目标。
传统 Infra 服务的是“确定的程序”:执行路径在上线前由开发者写死——先调哪个接口、读哪张表、失败怎么重试,全部固定。基础设施只需要保证这条路跑得稳、跑得快、跑得便宜:容量可以预估,接口有严格契约,出错模式无非是崩溃、超时、5xx。
Agent Infra 服务的是“不确定的 Agent”:执行路径在运行时由模型现场决定——下一步调哪个工具、要不要读文件、走哪条分支都是临时判断,同一个任务跑两次,中间步骤可能完全不同。路径不确定会衍生出一连串新要求:
用一张对照表来理解差异:
| 维度 | 传统 Infra | Agent Infra |
|---|---|---|
| 服务对象 | 确定的程序 | 不确定的 Agent |
| 执行路径 | 开发者写死 | 模型运行时决定 |
| 错误模式 | 崩溃、超时、5xx | 幻觉、错误工具调用、危险操作 |
| 容量规划 | 可预估 | 随任务复杂度波动 |
| 成本结构 | 计算、存储、网络 | 以上全部 + token 持续消耗 |
| 核心目标 | 稳定运行 | 安全、有记忆、算得清账 |
理解了这张表,后面五个组件的设计逻辑就都能对上号。
建议按 Environment → Tools → Security → Context → LLM 的依赖顺序推进,评估阶段也可并行开展。
做什么:为 Agent 动态生成的代码与命令提供隔离、可复现、用完即毁的沙箱运行空间。
为什么这么做:传统程序上线前经过完整测试,而 Agent 每次执行都可能生成从未出现过的代码。直接跑在宿主机上,一次错误的文件删除或网络请求就可能造成不可逆损失,隔离是第一原则。
具体做法:
示意配置(通用 YAML,仅表达字段含义):
sandbox:image: agent-runtime-base:v2 # 预置依赖的基础镜像lifecycle: per-task # 每任务一个实例,结束即销毁limits:cpu: "2"memory: "2Gi"max_execution_time: 300s # 超时强制终止filesystem:read_only: true # 根文件系统只读mounts:- /workspace # 唯一可写目录network:default: denyallowlist:- internal-service-a # 白名单示意
注意:销毁策略要按业务区分。纯计算任务用完即毁;需要跨轮次保留中间产物的任务,应先把产物写入对象存储再销毁实例。
做什么:设计短期记忆与长期记忆分离、按需注入的上下文管理体系。
为什么这么做:模型上下文窗口是有限资源,塞满了成本会飙升、关键信息会被稀释,长任务跨会话的信息还会丢失。上下文管理的本质是“在预算内让 Agent 记住该记的”。
具体做法:
示意伪代码:
def build_context(session, task, budget_tokens):parts = [system_prompt(), task.description] # 必保留recalled = memory_store.search(query=task.description, top_k=3) # 只取最相关的少量条目parts.append(summarize(recalled)) # 检索结果先摘要再注入parts.append(summarize(session.recent_turns())) # 历史轮次压缩return fit_to_budget(parts, budget_tokens) # 超预算再逐级裁剪
注意:摘要压缩有信息损耗,关键决策与关键数值建议结构化存储,不要依赖摘要传递。
做什么:把内部系统与外部能力封装成统一描述格式的工具,通过注册中心统一管理。
为什么这么做:Agent 在运行时动态选择并调用工具,如果每个工具的参数格式、返回结构、错误码各不相同,模型调用出错率会显著上升。工具层的核心是“统一契约”。
具体做法:
示意描述(通用 JSON,仅表达结构含义):
{"tool_name": "query_order","description": "按订单号查询订单状态与物流信息","parameters": {"type": "object","properties": {"order_id": { "type": "string", "description": "订单唯一编号" }},"required": ["order_id"]},"returns": { "type": "object", "description": "包含状态码与订单字段的结构化结果" },"permissions": ["read:order"],"timeout_seconds": 10,"idempotent": true}
注意:返回内容要做长度限制。把超大结果原样塞回上下文,会直接击穿步骤二精心设计的 token 预算。
做什么:建立事前约束、事中拦截、事后审计的三层防护体系。
为什么这么做:传统程序的权限边界在代码评审时就确定了,而 Agent 的行为是运行时自主决策的,必须在基础设施层面兜底。
具体做法:
示意伪代码:
def guard(action):perm = permission_map.get(action.tool)if perm == "readonly":return allow(action)if perm == "write" and action.scope in allowed_scope:return allow(action, audit=True)if action.risk_level == "high": # 高危操作return require_human_confirm(action)return deny(action)
注意:审计日志要与业务日志分离存储、独立授权,避免被同一账号篡改或删除。
做什么:在 Agent 与模型服务之间建立统一接入层,承担路由、计量、限流与降级。
为什么这么做:模型是持续消耗 token 的“电力”,没有统一接入层,成本算不清、模型没法平滑切换、突发流量会击穿配额。
具体做法:
五大组件搭建完成后,用四组检查确认整体是否达标:
问题一:上下文频繁溢出或关键信息丢失。
原因:历史轮次无差别拼接、工具返回过长、检索结果注入过多。排查:在上下文构造层打印每次组装后的 token 构成,定位占大头的部分,针对性做压缩、截断或减少检索条数。
问题二:工具调用失败率偏高。
原因:工具描述含糊、参数结构与实际实现不符、超时设置过短。排查:统计失败调用的错误码分布,优先核对工具描述与参数结构是否和真实实现一致,再逐步调整超时观察。
问题三:沙箱执行偶发卡死或资源耗尽。
原因:任务超时未强制终止、内存限额缺失、依赖在运行时才安装。排查:确认限额配置生效;将依赖固化进基础镜像;验证超时强杀机制可用。
问题四:账单与预期偏差大。
原因:重试风暴、长上下文反复重发、摘要策略失效导致上下文越滚越长。排查:从网关按任务维度拉取 token 明细,找出消耗最高的任务,逐个分析调用链。
问题五:同一任务两次执行结果差异大。
这是 Agent 路径不确定的固有特性,基础设施的目标不是消除差异,而是让每次执行都安全、可审计、可复盘。排查思路:完整保留执行轨迹日志;差异大到影响业务时,通过收紧工具权限、细化任务分解来收敛行为空间。
回到最初的问题:为什么模型越来越强,落地却越来越难?因为 Agent 把“执行路径不确定”带进了系统,而传统为确定程序设计的基础设施无法直接承接。Agent Infra 用五个组件回应五个新问题:Environment 隔离现生成的代码,Context 管理有限的记忆,Tools 标准化动态调用,Security 约束自主行为,LLM 把模型变成可计量、可管理的资源。
后续可以继续深入的方向包括:多 Agent 协作时的环境编排与资源共享、上下文管理的量化评测方法、以及 token 与算力综合建模的成本治理体系。建议先在内部小范围跑通本教程的五步路径,再逐步扩大任务范围与权限开放程度,稳步把 Agent 从 demo 推进生产环境。