你的AI员工正被关在盒子里干活,容器一崩,连工资单都跟着陪葬。这不是科幻,是你明天就要面对的生产事故。
Anthropic的工程师发现,自家AI跑长周期任务时总在关键时刻掉链子。研究一轮才发现,问题不在AI智商,而在于他们把AI的大脑和双手绑在了同一台服务器上。容器崩了,会话没了;会话没了,AI干到一半的活全没了。怎么解耦大脑和双手,让AI能像真正的员工一样,脑子和手脚各干各的,互不拖后腿,成了这次技术调整的核心。结果他们搞出的这套托管Agent设计,顺便把启动延迟砍掉了六成。
从拼乐高到养电子宠物
AI Agent这东西,说白了就是给大模型装上一双能干活的手。模型负责想,Agent负责做。可怎么把这双手装得稳当、装得聪明,还能随时换零件,这个问题比想象中麻烦得多。
最开始这帮工程师走了条捷径。他们把AI的思考回路、记忆存储、执行环境,一股脑全塞进一个容器里。容器就是一个轻量级的虚拟电脑,里面跑着Agent需要的所有东西。这么做的好处特别明显,文件修改直接走系统调用,省掉了一大堆网络通信的麻烦。不用设计各种服务之间的接口,代码写起来又快又爽。
但没过多久他们就发现,自己不是在搭系统,是在养宠物。科技圈有个老比喻,叫宠物和牛羊。宠物是有名字的、你亲手照料的东西,死了一个你心疼半天。牛羊是批量生产的,死一头换一头,完全不影响大局。他们的容器,不幸成了那只宠物。容器一挂,里面的会话就没了;容器卡住不动,工程师得手把手把它救回来。
救的过程更让人崩溃。容器卡住了,你只能通过WebSocket事件流往里看,就像隔着毛玻璃看屋里发生了什么。是Agent的循环逻辑出了bug,是网络丢包,还是容器本身宕机了,你根本分不清。想搞清楚,工程师得直接进容器里开个命令行调试。但容器里还放着用户的数据,这么干等于没有隐私可言。
这套紧耦合的设计还埋了个更大的雷。Agent运行的代码和用户的敏感凭证挤在同一个屋子里,任何一段AI生成的代码出了安全问题,攻击者就能直接偷走钥匙。你不能说AI不会干坏事,模型越来越聪明,你不能赌它每次都能防住。
一只容器挂了,全部陪葬
紧耦合带来的第一个大问题,是失败传染。容器是整个系统的核心,它一挂,所有东西一起完蛋。会话没了,Agent正在干的活没了,连日志都只能看到断点之前的。
工程师们被逼着写一堆奇葩的恢复逻辑。Agent干活干到一半,眼看上下文窗口快满了,它就焦虑,提前把任务收尾。这毛病被叫做上下文焦虑。他们在Harness里加了上下文重置的逻辑,Harness就是控制Agent循环的大脑。但换了个更强的模型一跑,这毛病自己没了,重置逻辑反而成了累赘。
这种打补丁的方式治标不治本。每次模型升级,旧的假设就过期一次。这背后有个更深的哲学问题,你怎么为一个还没想出来的程序设计系统?几十年前的操作系统就遇到过。它们把硬件抽象成进程、文件这类通用概念,1970年代的磁盘和现代的固态硬盘,对read()命令来说没区别。接口稳定了,底层的实现随便换。
但他们一开始的设计,把大脑、双手、记忆全焊死在一起了。任何一部分出问题,整个系统都得跟着停摆。这跟把公司所有部门塞进一间办公室没区别,销售部打电话吵到研发部写代码,财务部算账算到一半被拉去修空调。
你的AI超能力被封印在盒子里
紧耦合还带来了第二个问题:客户想把AI连到自己的虚拟私有云里,就变得特别费劲。虚拟私有云可以理解成客户自己在云上圈的一块私密地盘,外部网络访问不了。因为Agent的大脑和双手绑在同一个容器里,容器假设所有工具都在自己身边。客户想用自己的环境,要么把两边的网络打通,要么把整个Agent系统搬到客户那边去。
这个限制直接封印了AI的扩展能力。真正的智能助理应该能调用任何地方的资源,公司的数据库、Git仓库、内部API,都能随手拿来用。但当时的架构,AI的手伸不出那个容器。
更麻烦的是,紧耦合让整个系统没法水平扩展。每个Agent实例都必须带一个完整的容器。想启动一个新的Agent会话,就得先把整个容器准备好,克隆代码库、启动进程、从服务器拉取历史事件,全套流程走完才能开始推理。这段时间叫时间到首令牌,用户点击开始到AI吐出第一个字的等待时长。这是用户最能直接感受到的延迟。
哪怕这个会话根本用不到容器里的工具,比如用户只是让AI回答一个简单问题,系统照样得把整套环境跑一遍。就像你去快餐店点一杯可乐,店员非得先把整个后厨的炉子全点着,再给你倒饮料。这个浪费在规模化的时候被无限放大。
把日志从黑匣子变成录像带
解耦的第一步,是认清会话和上下文窗口是两回事。上下文窗口就是AI一次性能记住的信息量上限。长周期任务往往远超这个上限,AI干着干着就把开头忘了。
以前的做法是压缩:把AI记住的东西压缩成摘要,或者用记忆工具把上下文写进文件里。但问题是,摘要是不可逆的。你永远不知道未来哪个细节会被用到。压缩错了,AI后续的决策就歪了。而且压缩的逻辑也是写死在Harness里的,换了新模型,压缩策略可能就过时了。
他们最终的决定是,把会话变成一个独立的、只追加的日志(事件溯源日志)。所有发生的事情,AI的思考、工具调用、返回结果,全部按顺序写进这个日志里。日志本身和AI的大脑、双手全部分开存放。这个日志是持久的,容器崩了、Harness崩了,日志还在。
Harness通过一个叫getEvents()的接口来读取日志。它可以按位置截取一段事件流,从上次停下的地方继续读,或者在关键时刻往回翻几页看看前因后果。这就把上下文管理从存储里分离出来了。会话负责持久化存储,Harness负责怎么组织、怎么压缩、怎么优化缓存命中率。模型升级了,只需要换Harness的策略,会话的日志不用动。
这个分离带来的好处特别直观。以前Harness挂了,会话跟着丢。现在Harness可以随时重启,启动时用wake(sessionId)唤醒,调getSession(id)拿回完整的事件日志,从最后一个事件接着干。Harness自己也变成了牛羊,死一头换一头,不影响大局。
省掉的60%是等待的60%
把大脑和双手解耦之后,最直接的收益是启动延迟的暴跌。以前每个会话都得先拉起整个容器,再把环境初始化一遍,然后才能开始推理。拆开之后,大脑和双手变成了按需连接的关系。
新架构里,双手变成了一堆可以被调用的工具。大脑通过execute(name, input) -> string这个接口来调用它们。名字和参数传进去,返回一个字符串结果。大脑一开始根本不需要知道手在哪里,甚至不需要知道手存不存在。
会话启动的时候,大脑可以先从会话日志里拉取历史事件,直接开始推理。只有当AI确实需要动手干活了,比如要运行代码、编辑文件、访问Git仓库,它才会调用execute来触发容器的初始化。一个从头到尾只需要动脑子的问答会话,完全不用等容器启动。
数据很诚实。采用了这套架构之后,p50的时间到首令牌下降了大约60%,p95更是掉了超过90%。p50就是百分之五十的请求落在这个时间以内,p95是百分之九十五。这意味着最慢的那批用户,也几乎不用再干等着了。
规模化的问题也迎刃而解了。因为Harness变成了无状态的,启动一个Harness就是起一个轻量级进程的事。想扩展更多大脑,随便开几个Harness就行。它们共享同一个会话日志层,互不干扰。每个大脑只在需要的时候去抓一只手来用,用完就放回去。
一个容器就是一只手
解耦之后,双手的概念被彻底泛化了。每一个执行环境,不管是一个Docker容器、一台虚拟机、还是一个任意外部服务,都被统一抽象成一个工具。工具的定义就是execute(name, input) -> string,一个名字加输入,返回一个字符串。
这行接口定义的价值在于,Harness完全不需要知道背后是什么。它只管调用。Git仓库的操作被封装成工具,克隆、推送、拉取,AI只需要调用对应名称,不需要处理访问令牌。令牌在容器初始化的时候就被注入到本地的Git remote配置里了,AI生成的代码永远接触不到令牌本身。
自定义工具也走同样的路径。他们支持MCP协议,OAuth令牌存到一个安全的保险库里。AI调用工具的时候,请求先过一个代理,代理根据会话关联的令牌从保险库里取出凭证,再调用外部服务。Harness从头到尾不知道任何凭证的存在。
安全边界因此被彻底重构了。以前AI生成的代码和凭证住一个屋,现在凭证要么和资源绑在一起初始化时注入,要么锁在保险库里走代理访问。AI再聪明,也拿不到它看不见的东西。以前那个让AI别读环境变量的假设,现在不需要了。结构上就不给它这个机会。
关键是,这种泛化让双手可以互相传递。一个大脑调用了某个工具,干完活之后,可以把工具的状态或者结果直接交给另一个大脑。在紧耦合时代,这是不可能的,工具和容器绑死了。现在每个手就是一个可调用的函数,谁都可以调用,谁都可以交接。
写死在代码里的假设会过期
回看整个调整过程,核心矛盾就一句话:写死在代码里的假设,一定会过期。每个Harness都编码了一堆关于AI能力的假设。这些假设在模型弱的时候是对的,模型变强了就变成累赘,甚至变成隐患。
上下文焦虑就是典型。旧模型怕上下文窗口爆了,提前收工,所以他们写了上下文重置。新模型没这毛病了,重置反而增加了不必要的计算开销和延迟。问题不在于这个补丁写得好不好,而在于把补丁写死在了架构里。每次模型升级,你都得重新审视这些假设。
Managed Agents的策略是,承认自己没法预测未来的模型需要什么样的Harness。所以他们只做一件事,把接口定稳。会话就是只追加的日志,工具就是execute(name, input) -> string,Harness就是无状态的循环。这三条接口定下来之后,里面怎么实现、怎么优化、怎么随着模型升级而演进,都是可替换的。
这就像当年的操作系统。进程和文件这两个抽象,足够通用,撑了几十年。今天的应用程序和1970年代的应用程序,用的还是同一套系统调用。底下的硬件换了一茬又一茬,接口没动。他们给Agent系统做的,就是同样的事。
所以下次你看着AI在长周期任务里磨洋工,别急着怪模型笨。去看看它的手是不是被绑在了一个破盒子里,盒子的墙上写满了三年前的过期假设。拆掉那面墙,让手能自由伸出去,脑子能随便换,会话能永久存。你的AI员工可能比你想象中能打得多。
总结来说,给AI装手不难,难的是让手能随便换、脑子能随时重启、记忆永不丢失。把这三样东西焊死在一起,你养的是宠物;把它们拆开,你养的才是牛羊。而牛羊,才配得上规模化。
原文期刊:Anthropic Engineering Blog / 发表日期:2026年4月8日 / 原文标题:Scaling Managed Agents: Decoupling the brain from the hands / 作者单位背景:Anthropic工程团队