Skip to main content

Agent Infra

前置:写过一个能跑起来的聊天机器人或 Agent。不需要懂运维,也不需要用过任何一个下面提到的产品。

一、一个客服机器人上线的第一周

假设你做了一个客服机器人。本地跑通了:用户提问,它调模型,需要的时候查一下订单系统,然后回答。这时候你手上就是一个文件、几百行代码,跑得挺好。

然后你把它放到公司内网,让二十个同事试用。一周之内会依次发生这些事:

上线第一周,二十个同事��试用周一供应商挂了十分钟想切另一家,接口对不上周二有人问工资表它真的去查了周三说它昨天答错了日志只有「调用成功」周四财务问哪个部门花的账单只有一个总数周五报表跑了四十分钟重启,从头再来下周一「我上次就说过我在上海」这件事该由哪个专题管网关安全可观测性可观测性持久化执行记忆
周三和周四落在同一个专题上,不是巧合 —— 「事后说得清发生过什么」和「事后算得清花了多少钱」用的是同一份记录。剩下两个专题(执行沙箱、训练环境)第一周撞不到:前者要等你开始执行模型生成的代码,后者根本不在线上链路上。

这六件事有一个共同点:没有一件属于「客服机器人」这个业务本身。 如果你接着再做一个报销助手、一个代码审查机器人,它们会原样再撞一遍,一件都不会少。

既然每个 Agent 都要重做一遍,那就干脆把它们从业务里抽出来,做成一层所有 Agent 共用的东西。这一层就是本板块说的 Agent Infra,共七个专题、55 篇。上面六件事分别对应其中六个专题,第七个(训练环境)晚一点再说。

二、这一层和上下两层怎么分

站内一共三个板块。它们不是三个话题,而是同一条链路上的三段 —— 从你写的业务代码,一直到显卡:

越往右越靠近硬件,越往左越靠近业务Agent 应用Agent 怎么写出来框架选型 · 编排范式产品源码拆解Agent Infra 本板块Agent 怎么在生产上跑得住网关 · 安全 · 可观测性持久化执行 · 沙箱 · 记忆AI Infra模型怎么跑得快CUDA · PagedAttentionPD 分离同一个现象「一次请求变慢了」,三个板块给出的排查方向完全不同 —— 判断归属的标准是:换一家模型供应商之后这个问题还在不在,以及它跟 Agent 的推理过程有没有关系。
中间这一层的共同特征是:与 Agent 的业务逻辑无关,更换模型供应商或编排框架之后它依然存在。

分界线不好背,但很好试。同一个现象 ——「用户说这次回答变慢了」—— 三个板块给出的排查方向完全不同:

如果慢的原因是那这是哪一层的事
模型本身吐字就慢了:显卡上挤着太多请求,轮到你这条的时候一个字一个字往外蹦AI Infra
模型不慢,但这一个问题被你的程序拆成了七八次模型调用,一次一次串着来Agent 应用
模型不慢,调用次数也没变,但请求先在队列里排了两秒,或者被发给了一台刚刚才恢复的机器Agent Infra

三者的差别可以浓缩成一次试探:把模型供应商换成另一家,问题还在不在?

还在,而且跟「机器人怎么想问题」也没关系 —— 那它就属于 Agent Infra。换完就好了,说明卡在模型那一侧,属于 AI Infra;换了没用、但把编排流程改一改就好了,属于 Agent 应用。

三、七个专题分别管什么

七个专题不在同一个时间尺度上。前五个都发生在「用户按下回车到看到回答」这几秒之内,后两个则要跨过这几秒 —— 一个跨到进程重启之后,一个跨到下一次会话:

请求链路(毫秒到秒)Agent 应用网关模型 / 工具安全每一跳的准入与授权可观测性每一跳的记录与计费执行沙箱工具真跑起来时的隔离边界不在请求链路上(分钟到天)持久化执行存进度:进程没了,任务还在记忆存结论:任务没了,学到的还在网关处在链路中心:安全策略的主要执行点在它上面,可观测数据的主要产生点也在它上面。
下半条的两个专题都不在请求链路上,时间尺度比上半条大三到六个数量级。两者的分工是一句话:持久化执行存的是「跑到第几步」,记忆存的是「学到了什么」——前者随任务结束而失效,后者恰恰是任务结束后才开始有价值。

网关在这张图的中心位置,不是因为它最重要,而是因为流量都从它身上过 —— 想拦住一个请求,最方便的地方是它;想记下一个请求花了多少钱,最准的地方也是它。所以「安全」和「可观测性」这两个专题里,有相当篇幅是在讲网关上该做什么。

把开头那六件事对回去,就是这样:

第一周撞上的事它属于一句话说这个专题在干什么
供应商挂了想自动换一家,但接口不一样网关让业务代码只写模型名,换谁、怎么换、挂了切给谁,全交给中间这一层
没人判断「问这句话的人有没有资格问」安全在请求真正打出去之前,判断这个人、这个工具、这段内容能不能过
出了错想复盘,日志里只有「调用成功」可观测性把一次执行拆成一棵可以逐步展开的树,事后能看到它每一步在做什么
财务问哪个部门花了多少钱可观测性同一份记录顺带解决计费归属
跑了四十分钟的任务,重启后从头再来持久化执行每跑完一步就把进度存下来,进程没了,任务还能从断点接着走
用户说「我上次就说过我在上海」记忆把值得记的事实从对话里挑出来存好,下次会话再取回来
(上面没提到)模型生成的代码要真跑起来执行沙箱给不可信的代码一个跑得动、但跑不出去的地方
(上面没提到)要用强化学习训练 Agent训练环境大批量供给可重置、可打分的环境,这是训练侧的事,不在线上链路上
专题篇数读完能回答的问题
Agent 网关11换一家模型供应商要不要改业务代码,一家挂了怎么自动切,多个团队共用账号怎么分配额度和算钱,这一层自己要多花多少毫秒
Agent 安全9别人在网页里塞一句话就能指挥你的 Agent,这怎么防;从网上装来的一个工具会不会偷东西;密钥放在哪儿才不会被模型顺走
Agent 可观测性8一次执行该记下哪些东西才够复盘,怎么记才不用改遍业务代码,记下来的东西里有用户手机号怎么办,钱到底算在谁头上
Agent 持久化执行6长任务跑到一半进程没了怎么接着跑,恢复的时候怎么保证已经发出去的邮件不会再发一遍
Agent 执行沙箱6模型写的代码敢不敢直接执行,容器够不够,一个沙箱冷启动要多久才不影响体验
Agent 训练环境6要用强化学习训练 Agent,怎么同时开出成千上万个能重置、能打分的环境,为什么线上那套沙箱不能直接拿来用
Agent 记忆9什么该记什么不该记,用户改了口以前的记录怎么办,取的时候怎么只取相关的那几条,什么情况下根本不该上这一层

四、按你现在遇到的问题查

左边一列是你可能正卡在的地方,不是术语:

你现在的处境从这里开始读
完全没接触过这一层,想先弄明白它到底是什么网关 01 - 网关是什么
调用经常失败或超时,想让它自己切到备用的网关 03 - 路由与容错
几个团队共用一个账号,说不清谁花了多少,也拦不住谁把额度用光网关 04 - 多租户与配额可观测性 06 - 成本归因
很多人问的其实是同一个问题,不想每次都真去调一次模型网关 06 - 缓存
大客户抱怨吐字慢,想给他们留一条更快的通道网关 07 - Token 速率与 QoS
要接一堆外部工具,还想控制哪个 Agent 能用哪个工具网关 05 - MCP 网关安全 04 - 防线在哪一层
想装一个别人写的工具,但不确定它安不安全安全 03 - 工具投毒与 Rug Pull
线上答错了一次,想复盘却查不出当时发生了什么可观测性 01 - Agent 的 Trace 长什么样
长任务跑到一半断了,只能从头再来持久化执行 01 - 为什么需要
要执行模型写出来的代码,不敢直接在自己机器上跑执行沙箱 01 - 为什么需要沙箱05 - 选型与落地
要用强化学习训练 Agent,需要成批开出可重置的环境训练环境 01 - 为什么不是运行时沙箱02 - AgentENV 拆解
助手记不住用户上次说过的话记忆 01 - 记忆与上下文的边界02 - 写入路径
用户改了口,助手还在用旧信息记忆 03 - 冲突、遗忘与时间
要挑一个现成的记忆库,或者怀疑记忆里被人塞了假事实记忆 06 - 开源实现横评07 - 失败模式与评测
在自建和买托管产品之间犹豫网关 08 - 云厂商怎么做09 - 国外托管网关

如果以上都不是你现在的处境,那就按开头那一周的顺序读:从 网关 01 开始,它从五行调用代码出发,一个需求一个需求地加,最后长出一个网关来。