一个客户需求,捅穿了 Anthropic 整套 Agent 架构

简介: Anthropic推出Claude Managed Agents,提出“脑手分离”架构:将Agent的“大脑”(Harness)、“手”(Sandbox)与“会话”(Session)解耦为独立组件。此举解决模型升级导致框架失效、私有云接入困难、安全凭据泄露等痛点,提升稳定性、安全性与性能(TTFT中位数降60%),并实现基础设施与模型能力的独立演进。

太长摘要版:

Anthropic 把 Agent 的"大脑"(harness)、"手"(sandbox)、"会话"(session)从一个容器里拆开来分别管理。

这件事的起因是两个痛点:一是每次模型升级,针对旧模型打的补丁就可能会失效,Agent框架要推倒重来;二是客户要接入自己的私有云,但旧架构因“大脑和手”耦合部署的假设被硬编码了,根本做不到。

拆开之后,容器挂了换一个、大脑挂了接着跑、凭据从物理上就不会出现在代码执行环境里。性能也跟着提升:任务启动延迟中位数降了 60%,最差情况降了 90%。

其中的设计是Anthropic 只锁定了三个组件的接口,对接口背后跑什么实现不做任何假设。就像操作系统的 read() 命令,七十年代读磁盘、今天读 SSD,上层程序一行代码不用改。



01

先说一个工程师的尴尬处境

去年Anthropic的工程团队发现了一个有意思的问题。他们给Claude Sonnet 4.5 配了一套"agent框架"(现在流行叫“harness”,可以理解为了让AI自动干活的一套脚手架),其中有个设计:当Claude的上下文窗口快撑满的时候,系统会自动帮它"清空重来"一次,避免它因为记忆太满而慌乱收工。

这个设计是有效的。Sonnet在快撑满的时候确实会有上下文焦虑,会提前结束任务,加了这个机制之后好多了。

后来他们把同一套框架套在Claude Opus 4.5 上,发现……Opus 4.5 基本没有这个毛病。那个"清空重来"的机制成了多余的负担——每次都在做一件根本不需要做的事。

e2d7f32278ea4a68aec8beebca414dfc.png

图:同一个harness设计在不同模型中效果说明

这事听起来是个好事,模型进化了嘛。但工程师的感受完全不同:为Sonnet 4.5专门打的补丁,就这么白费了。而且下一代模型出来,又得重新审视一遍框架里哪些假设已经过时了。

这就是Anthropic做 Claude Managed Agents 之前面临的真实困境,也是他们把整个架构推倒重来的直接原因。

02

别让容器变成要精心照料的“宠物”

在Managed Agents之前,Anthropic内部的agent是怎么跑的?简单说:把所有东西塞进一个容器里,AI的"大脑"(调用模型、决策逻辑)、AI的"手"(执行代码、操作文件)、AI做过什么的"会话"(会话事件日志),全在一起。

这个方案的好处是简单,文件操作是直接的系统调用,没有什么服务之间互相等待的问题。

问题是,这台容器活下去就成了整个系统的命根子。容器挂了,任务就没了。或者容器卡住了,工程师想进去排查,却发现容器里还存着用户数据——不能随便进,进了就是安全问题。

Anthropic 把这个由来已久的基础设施问题比喻叫"宠物问题"——你养了一只猫,它生病了你得守着它喂药;而不是养了一群牛,一头牛病了你直接换一头。

eb287e409d114a70a9316cecd53ae07f.png

图:旧架构中容器组成与管理说明

当你的容器变成了宠物,整个系统的稳定性就得靠精心照料来维持,这在规模化的时候是不可持续的。

但真正让他们决心动手的,不只是因为稳定性问题,还因为一个客户提了个看似简单的需求。

03

一个需求捅穿了整个架构

有客户需求希望把Claude接入自己公司的私有云网络(VPC)使用其中的资源。

问题来了:因为旧架构中agent框架(harness)和执行容器(sandbox)在一起,"你的资源得跑在我容器旁边"这个部署方式的假设被硬编码了。在旧架构上要实现需求,客户要么把自己的网络跟Anthropic的网络打通(成本高、安全风险大),要么自己把Anthropic的框架部署到自己的环境里(又变成客户的运维负担)。

25fbef67cb7f41a4b6f13a1503b0f2ce.png

图:旧架构中两个方法都无法合理满足客户需求

一个原本只是"部署方式"的内部假设,变成了锁死扩展性的障碍。所以他们做了一个决定:把harness和sandbox分离开。

04

把Agent各组件拆开来跑

新的架构里,agent被拆成了几个分开的组件。

62d4fe7768314eae93c63d080730975f.png

图:Agent拆分

“大脑"(harness,调用Claude决策的框架)不再住在容器里。它通过一个极其简单的接口调用"手":execute(name, input) → string 。大脑不关心手是什么,是容器、是手机、是某个模拟器,都一样。

“手”(sandbox容器)变成了牲畜,不是宠物了。容器挂了?大脑收到一个工具调用错误,把情况告诉Claude,Claude决定要不要重试,不重试则重开一个容器就好。没有什么需要精心照料的对象了。

“会话”(session log)搬到了两者之外,单独持久化存储。大脑挂了也不要紧,重启一个新的大脑,把session ID丢给它,它找回事件日志接着干。

918fbb1f97164748978849aa003bfee4.png

图:新Harness通过会话Id获取任务执行记录后继续执行刚才中断的任务

这个拆解,完美解决了前面提到的客户需求。 既然大脑不再和容器绑定,当客户要求"让Claude在我的私有云里干活"时,Anthropic只需要把作为"手"的沙箱容器部署在客户的VPC里,或者直接通过接口调用客户自己的工具。作为"大脑"的harness依然留在Anthropic的云端,通过标准的工具调用接口远程指挥这双"手"。客户不需要打通对等网络,也不需要自己运维复杂的agent框架,安全和扩展性同时得到了满足。

a37b53b64cdd44d6b3dc1004127f06cd.png

图:新架构满足客户接入自己VPC资源的需求

不仅如此,光是这一个架构调整,还让一个关键性能指标大幅改善:从接受任务到开始输出第一个字的等待时间(TTFT),中位数降了约60%,最差情况(p95)降了90%以上。换句话说,原本可能要等十几秒才能开始出活,现在可能只需要一两秒——这是用户感知最直接的那种快。

原因很简单:以前每个任务都得先把容器启好才能开始,哪怕这个任务根本用不到容器。现在容器按需开,大脑一启动就能直接出活。

但这只是性能层面的收益。真正有意思的,是"会话"这个东西本身被重新定义了,以及解耦之后才能解决的那个更深的问题。

05

凭据不能和代码住在一起

在耦合的旧设计里,Claude生成的代码和系统凭据(各种token、密钥)住在同一个容器里。这意味着什么?一旦发生提示词注入攻击(prompt injection),攻击者只需要让Claude读一下自己的环境变量,就能拿走所有凭据。拿到凭据之后,攻击者可以用这些token开启新的、不受限制的agent会话,让它去干任何事。

有人会说:那就收窄权限,限制Claude能做什么。但这个思路有个根本缺陷——它假设了Claude的能力是有上限的。而Claude正在变得越来越聪明,你今天认为"Claude用有限token做不到"的事,明天它可能就做到了。

Anthropic的解法是结构性的:让凭据从物理上就不可能出现在代码执行的沙箱里。

具体怎么做的?两种模式。一种是"初始化时注入":比如Git仓库的访问token,只在容器初始化时用来克隆仓库、写进本地git配置,之后容器内的代码执行push和pull,但永远接触不到token本身。

另一种是"vault代理":自定义工具的OAuth token存在容器外的安全保险库里,Claude调用工具时走一个专用代理,代理去保险库取凭据、完成调用,整个过程Claude和harness都不知道凭据长什么样。

4a158ab4994c49edbd6d2b0e4a65b127.png

图:凭据与沙箱隔离的两种模式

这不是在限制Claude能做什么,而是从架构上保证了某些东西Claude根本就看不见。

06

会话日志不是聊天记录

还有一个容易被忽略的细节,值得单独讲。AI的记忆有上限。任务跑得够长,早晚会撑满。传统处理方式无非是压缩、裁剪、让AI自己写个总结然后清掉原文——都是不可逆的操作,删了就找不回来了。而且没人知道后续的步骤到底需要哪些上下文,删错了就出错。

Managed Agents的session log不一样。它是一条持久化的事件流,存在大脑和容器之外的独立地方。大脑可以随时调用getEvents()来"查档案"——想从哪里开始读就从哪里开始读,想重看某个关键步骤之前发生了什么,直接定位过去。

这相当于把AI的"记忆"从脑子里挪到了档案室。脑子里装的是当前工作的内容,档案室保存的是完整历史,两者分开管理。

44f45dfae98d4a61995a9ae1c09f6c81.png

图:会话处理方式对比

更关键的是:怎么把档案室里的内容整理后送进AI脑子,这个逻辑完全交给harness来决定。Anthropic不对这部分做任何假设,因为他们也不知道未来的模型需要什么样的上下文整理方式。

这就引出了整套设计里最难被看见的那层东西。

07

为一个还不存在的程序写代码

操作系统为什么能活几十年?因为它虚拟化的是接口,不是具体的实现。read()这个命令,在七十年代读的是磁盘包,今天读的是SSD,但上层的程序不需要改一行代码。抽象活得比硬件更长。

Managed Agents做的是同一件事,只不过虚拟化的对象变成了agent的组件:会话(session)、执行框架(harness)、沙箱(sandbox)。

Anthropic对这三个接口的抽象有明确的立场——大脑需要能操作状态,需要能调用计算资源,需要能扩展到多个大脑和多只手——但对接口背后跑的具体实现,没有任何固执。

所以Claude Code可以是一种harness,专门针对某类任务的定制框架也可以是一种harness,未来出现的某种今天完全没法想象的执行方式,只要接口对得上,也能插进来。

8c7b5ed28ca34d4bbe6cc34c4b2c2068.png

图:新架构设计与OS设计中read()命令类比

回头看最开始那个Sonnet的"焦虑补丁":在这套架构下,补丁过时了很简单,换harness就行,不影响session,不影响sandbox,更不影响下一个接进来的模型。

这不是在解决今天的问题,而是在给 Agent 还不知道长什么样的未来留门。

结语

回头想想,这套架构解决的其实是一个挺朴素的问题:怎么让今天写的东西,明天还能用。

大多数工程问题的解法都是加逻辑、打补丁、往框架里塞假设。Anthropic这次的思路反过来——把假设从框架里拆出去,只留接口。结果是每次模型升级,不再是一次推倒重来,而是换个harness插进来接着跑。

这个思路对正在构建Agent的我们同样适用:今天你为模型局限性写的每一行补丁代码,都是有可能过时的。与其把对当前模型能力的假设硬编码进系统,不如想清楚哪些是接口、哪些是实现——把假设关进实现里,让接口保持干净。


参考资料

[1] Anthropic Engineering:Managed Agents

https://www.anthropic.com/engineering/managed-agents

[2] Claude Blog:Introducing Claude managed agents

https://claude.com/blog/claude-managed-agents

[3] Claude Platform Docs:Managed Agents Overview

https://platform.claude.com/docs/en/managed-agents/overview


目录
相关文章
|
2月前
|
JSON IDE API
从源码看 Qwen Code 的设计思路
Qwen Code 是基于AI Agent的智能编程助手,采用模块化分层架构。其核心为可循环执行的Agent对话机制,协调用户输入、大模型推理与工具调用,支持Plan/Default/Auto-edit/YOLO四种执行模式,并集成子智能体、MCP协议及会话管理等服务。本文将从源码角度来解析其设计思路。
527 7
|
28天前
|
机器学习/深度学习 存储 人工智能
还在手写Skill?hermes-agent 让 Agent 自己进化能力
Hermes-agent 是 GitHub 23k+ Star 的开源项目,突破传统 Agent 依赖人工编写Aegnt Skill 的瓶颈,首创“自我进化”机制:通过失败→反思→自动生成技能→持续优化的闭环,让 Agent 在实践中自主构建、更新技能库,持续自我改进。
2460 8
|
22天前
|
人工智能 安全 Unix
担忧打破网络攻防平衡,Anthropic决定“雪藏”最强模型Mythos
4月7日,Anthropic受限发布最强模型Claude Mythos Preview,其自主发现零日漏洞(如OpenBSD中潜伏27年的漏洞)与构建攻击链能力远超现有工具。因风险极高,Anthropic决策未公开模型,而是启动“Glasswing”计划,仅向AWS、苹果、谷歌等12家科技巨头及40余家关键基础设施机构开放,以优先强化全球网络安全防御体系。
216 0
|
2月前
|
存储 人工智能 机器人
你养的龙虾,怎么才能越用越聪明?
通过三本说明书立人设、建记忆系统告别金鱼脑、开启“心跳”主动服务、积累技能复利、接入生态学本领、组建多智能体团队——龙虾的能力上限,就是你想象力的边界。
715 2
|
13天前
|
人工智能 程序员 测试技术
从玩具到生产力:用真实项目讲透 AI Agent 的 Harness Engineering
这篇文章不讲 Prompt 技巧,也不推销某个 Skill,只想说清两件事——在企业工程环境里,如何把大模型 Harness(约束与治理)成一个能持续参与交付的协作者;以及大模型时代,程序员为什么正在从“亲手写代码的人”迁移成“定义目标、控节奏、做验收的人”。(文章内容基于作者个人技术实践与独立思考,旨在分享经验,仅代表个人观点。)
从玩具到生产力:用真实项目讲透 AI Agent 的 Harness Engineering
|
29天前
|
人工智能 测试技术 开发工具
Anthropic 的 Harness 工程架构演进
本文分享Anthropic的Harness工程实践:从双Agent解决“一次做太多”与“过早完成”,到三Agent(Planner/Generator/Evaluator)引入独立评估与上下文重置根治自我偏差和上下文焦虑,最终随模型能力提升动态裁撤冗余设计。核心结论:模型边界持续外推,Harness工程是当前决定Agent实际效果的关键变量。
422 0
|
15天前
|
人工智能 监控 Kubernetes
hermes + ollama 本地模型实践分享
想把 AI 跑在自己的电脑上?其实没那么难。本文介绍如何用 Ollama 配合 hermes-agent,只需一条命令,就能在本地启动。数据全程不离开自己的硬盘,断网也能用。通过 Java 和 k8s 日志案例,展示了 hermes-agent 自动创建并改进技能的全过程,一行代码都不用写。
755 0
hermes + ollama 本地模型实践分享
|
27天前
|
人工智能 API Go
Qoder 工程实践:Harness Engineering 指南
Harness 是一套面向 AI Agent 的工程化框架,通过将架构约束、规范文档和自动化验证(如依赖层级检查、质量规则)编码进代码仓库,为 Agent 构建“操作系统”。它以 AGENTS.md 为入口,用预验证替代盲目编码,以子代理分工、模型分级调度和交叉 Review 保障质量,并支持自我进化——从失败中学习、沉淀记忆、编译确定性脚本。让 Agent 不靠“记住”,而靠“看见”与“验证”可靠工作。
Qoder 工程实践:Harness Engineering 指南
|
3月前
|
人工智能 前端开发 安全
一文讲解与Agent前端发展相关的几个阶段和协议
本文梳理了Agent前端协议从“胶水代码”到标准化的演进历程。解析了MCP、MCPApps、A2A、AG-UI及A2UI在能力、协作、通信与呈现架构中的核心作用。通过深度集成,前端正实现AI能力的富交互呈现,推动人机交互走向“可见、可控、可信”。
560 4