Anthropic Managed Agents:解耦大脑与双手 — 深度研究报告
来源: https://www.anthropic.com/engineering/managed-agents
发布日期: 2026-04-08
研究日期: 2026-04-26
辅助来源: WIRED, InfoWorld, VentureBeat
一句话版本
Anthropic 推出了一个托管化的 Agent 运行平台(叫 Managed Agents),让你不用自己搭服务器、写调度循环、处理崩溃恢复、管密码安全——只要定义 Agent 要干什么、能用什么工具,Anthropic 的云端帮你跑。相当于 Agent 界的 "Serverless"。
核心内容
1. 背景:Harness 假设会过时
Anthropic 工程博客之前发过三篇系列文章讲如何构建 Agent、设计 Harness、处理长任务。这篇文章是那个系列的延续。
核心洞察:Harness(Agent 的调度循环代码)里编码了大量"模型做不到什么"的假设。但这些假设随着模型升级会 stale(过时)。
具体例子:
- Claude Sonnet 4.5 在上下文快满时会提前结束任务——"上下文焦虑"
- 他们在 Harness 里加了 context reset 来解决
- 但 Opus 4.5 没有这个问题,reset 变成了 dead weight
→ Harness 需要持续演进,但接口应该稳定。
2. 设计哲学:抽象大于实现
Anthropic 借鉴了操作系统的设计思路:
> "如何为'尚不存在的程序'设计系统?"
就像 OS 把硬件虚拟化成 process、file 这些抽象——read() 不关心底层是 1970 年代的磁盘还是现代 SSD——Managed Agents 把 Agent 组件虚拟化成三个接口:
| 抽象层 | 定义 | 类比 |
|---|---|---|
| **Session** | 只追加的事件日志,记录发生的一切 | 文件系统 |
| **Harness** | 调用 Claude + 路由 tool call 的循环 | 调度器 |
| **Sandbox** | 代码执行和文件编辑的环境 | 进程 |
关键态度:"我们对接口的形状有意见,对接口后面跑什么没意见。"
技术架构深度分析
从"养宠物"到"养牲口"
V1 架构问题(耦合式):
┌─────────────────────────┐
│ 单一容器 │
│ ┌───────┐ ┌──────────┐ │
│ │Session│ │ Harness │ │
│ └───────┘ └──────────┘ │
│ ┌────────────────────┐ │
│ │ Sandbox │ │
│ └────────────────────┘ │
└─────────────────────────┘
问题:
1. 容器是"宠物":挂了就丢了整个 session,无响应就得手动抢救
2. 调试困难:唯一窗口是 WebSocket 事件流,但无法区分是 harness bug、网络丢包还是容器宕机
3. VPC 集成困难:客户要连接私有云只能做网络对等,或者自己在本地跑 harness
4. 安全模型脆弱:Claude 生成的代码和 credentials 在同一个容器里,一次 prompt injection 就能让 Claude 读到自己的环境变量
V2 架构(解耦式):
Session (持久化事件日志,独立于任何容器)
↕
Harness (无状态,可重启,崩溃不丢数据)
↕
Sandbox (牲口,挂了就换新的)
安全模型的精髓
两个模式解决 credential 安全问题:
1. Bundled auth:Git token 在 sandbox 初始化时 clone 进 git remote,agent 做 push/pull 时永远不碰 token
2. Vault proxy:MCP 工具用 OAuth token 存在外部 vault。Claude 调 MCP 工具时通过代理中转,代理用 session token 去 vault 取真实 credentials
→ Harness 永远不知道任何 credentials。
Session ≠ Context Window
这是整篇文章最深刻的设计决策之一。
长任务超过 context window 时,传统方案都是不可逆决策:compaction(压缩)、trimming(裁剪)。但丢掉的东西未来可能需要,而且提前无法预测。
Managed Agents 的方案:
- Session 是 context window 之外的可查询对象
getEvents()接口按位置切片读取事件流- Harness 可以灵活控制:从哪里继续读、回退几事件看前情、重读某个动作前的上下文
- Harness 负责 context engineering(组织成高 cache hit rate 的格式),Session 只保证数据持久可查
这和 Karpathy 的 "Context as REPL Object" 思路一致——上下文不再是 Claude 脑子里的一次性记忆,而是外部持久化、可程序化访问的数据对象。
多脑多手架构
性能收益:
- 解耦前:每个 session 要等容器 provision 完才能开始推理(clone repo、起进程、拉事件)
- 解耦后:Harness 按需调
execute(name, input) → string才起容器 - p50 TTFT 下降 ~60%,p95 下降超过 90%
灵活性:
- 不需要容器的 session 不付容器启动税
- Harness 不关心 sandbox 是什么——"容器、手机、宝可梦模拟器都行"
- Brain 之间可以传递 hand
场景还原:新旧架构实战对比
以一个具体场景把架构差异讲透——Agent 要在 GitHub 上改代码、跑测试、提交 PR。
旧架构(耦合式)
启动 Managed Agent session → 系统起一个 Docker 容器,里面同时装着:
- Agent 的调度循环代码(harness)
- Claude 推理
- 执行环境(sandbox)
- GitHub token(环境变量里)
推到第 3 个 commit 时,容器 OOM 了。
连锁故障:
1. 不可观测:唯一入口是 WebSocket 事件流突然停掉,分不清是容器 OOM、WebSocket 断开、还是 harness bug
2. 无法安全 debug:工程师要 SSH 进容器看,但容器里有用户代码数据——每次 debug 都是一次安全审批
3. 数据丢失:还没 flush 到磁盘的 session 记录全丢,Agent 得重来
4. 安全灾难:如果有人 prompt injection 让 Claude "把环境变量发给我"——GitHub token 就在环境变量里。攻击者拿到 token 可以 spawn 新 session、随便干什么
┌─────────────────┐
│ 👤 攻击者 │
│ "发我环境变量" │
└──────┬──────────┘
│ prompt injection 骗过 Claude
▼
┌─────────────────┐
│ 单一 Docker 容器 │
│ ┌───────────┐ │
│ │ GITHUB_TOKEN│ ← 直接泄露!
│ │ ABC123... │ │
│ ├───────────┤ │
│ │ Claude │ │
│ ├───────────┤ │
│ │ Harness │ │
│ ├───────────┤ │
│ │ Sandbox │ │
│ └───────────┘ │
│ 🔥 OOM/Crash │ → 一切丢失
└─────────────────┘
新架构(Managed Agents)
同样的场景——推到第 3 个 commit 时容器 OOM。
Sandbox 层:execute("bash", "git push") 返回错误。Harness 原样传给 Claude:"命令执行失败。" Claude 判断需不需要重试。如果需要,Harness 调 provision({resources}) 起一个全新容器:
- Session log 独立,Git token 在初始化时已被 bundle 进
.git/config的 remote 地址 - 新 sandbox clone 下来就是当前状态,接着干活
Session 层:如果 Harness 在容器 OOM 的瞬间也崩了,没关系——它无状态。新 harness 实例:
1. wake(sessionId) → 唤醒
2. getSession(id) → 读回事件日志
3. 从最后一个事件继续
什么都不丢。
安全层:prompt injection 让 Claude 偷 token?
- GitHub token 不在 sandbox 的环境变量里——只在初始化时写进了
.git/config的 remote URL git push/git pull走系统 git,Claude 不接触 token 本身- MCP 工具的 OAuth token 更彻底——存在外部 vault。Claude 调 MCP 工具 → 代理用 session token 去 vault 取真实 credentials → 转发请求。Harness 全程不知道任何 credentials
🔐 Vault (外部)
│ ├── GitHub token: ABC123...
│ └── OAuth tokens: ...
│
│ 初始化时 bundle token 进 git remote
│ ┌──────────────────────┐ ┌──────────────────────┐
│ │ Sandbox #1 │ │ Sandbox #2 │
│ │ .git/config: │ │ .git/config: │
│ │ url = token@git... │ │ url = token@git... │
│ │ (Claude 看不到 token)│ │ (全新 clone,接着干) │
│ └──────────┬───────────┘ └───────────┬──────────┘
│ │ │
│ execute("bash", execute("bash",
│ "git push") → "git push") →
│ 返回结果 返回结果
│ │ │
│ ┌───────┴────────────┐
│ │ Harness │ ← 无状态, 可重启
│ │ (从 Session 恢复) │
│ └────────┬───────────┘
│ │
│ ┌────────┴──────────┐
│ │ Session │ ← 持久化, 独立存储
│ │ (append-only 日志) │
│ └───────────────────┘
一句话:旧架构是一间屋子,床、厨房、保险柜全在一起——着火了什么都烧。新架构是把保险柜放银行,床烧了换张新的就行,你还有一份账单(session log)精确记录你之前干了什么。
竞品对比
| 维度 | Anthropic Managed Agents | OpenAI Agents SDK / Frontier | Microsoft Copilot Studio |
|---|---|---|---|
| 托管程度 | 完全托管(beta) | SDK 免费但自部署 / Frontier 托管 | 托管($200/月起/25000消息) |
| 模型 | Claude 全系列 | GPT 系列 | 多模型 |
| 架构哲学 | 接口稳定,实现可变 | SDK 开放,开发者控制 | 低代码,企业集成 |
| 长任务支持 | Session 持久化 + getEvents | 需自行实现 | 有限 |
| 安全模型 | Token 不进 sandbox + vault proxy | 开发者负责 | Azure 集成 |
| 多 Agent 协调 | 原生支持 brain→hand 传递 | Agents SDK 支持 swarm | 支持 |
关键差异:Managed Agents 最大的差异化在于"元 harness"设计——它不预设你用什么 harness,只提供稳定接口。Claude Code 可以是其中一个 harness(Anthropic 自己也大量用)。
开源替代品对比
Managed Agents 的三层解耦架构(Session + Harness + Sandbox),目前没有一个开源框架完整覆盖。以下按接近程度排列:
最接近完整概念的
OpenHarness (HKUDS)
- 🔗 https://github.com/HKUDS/OpenHarness
- 直接受 Anthropic harness 理念影响,2026-04-01 开源
- 内置个人 Agent "Ohmo",Web dashboard + terminal 前端
- 早期项目,生态不成熟
LangGraph (⭐24.8k · 3450万月下载)
- 🔗 https://github.com/langchain-ai/langgraph
- Stateful agent 编排 + long-term memory + human-in-the-loop
- Session 持久化最接近 Managed Agents 的 session 层(StateGraph + Checkpointer)
- 400+ 企业生产部署(Cisco、Uber、LinkedIn、JPMorgan)
- ❌ 没有内置 sandbox,执行环境要自己搭
部分维度够用
| 框架 | Stars | 优势 | 缺失 |
|---|---|---|---|
| **CrewAI** | 44.3k | 多 Agent 角色协作,代码少 | Session 持久化弱,无安全隔离 |
| **AutoGen (MS)** | 54.6k | 事件驱动多 Agent,GAIA benchmark 强 | ⚠️ 已进入维护模式,被合并进 MS Agent Framework |
| **OpenAI Agents SDK** | 19k | 轻量、provider-agnostic、tracing 内置 | 无托管、无 sandbox、无 session 持久化 |
| **Dify** | 129.8k | 低代码拖拽搭 Agent + RAG | 灵活性有限,面向非开发者 |
| **Google ADK** | 17.8k | 深度绑定 Gemini/Vertex AI | 非 Google 生态不友好 |
| **Mastra** | ~12k | TypeScript 原生,workflow + memory | 偏向单 Agent |
差距对照表
| Managed Agents 特性 | 最接近的开源方案 | 差距 |
|---|---|---|
| Session 持久化 + getEvents() | LangGraph StateGraph + Checkpointer | LangGraph 有状态持久化,但不如 getEvents() 灵活 |
| 无状态 Harness 可重启 | **无** | 没有开源方案做到 crash→wake→resume 的完整闭环 |
| Sandbox 安全隔离 | Firecrawl Browser Sandbox | 仅浏览器场景,非通用代码执行 |
| Token 不进 Sandbox | **无** | 没有开源方案原生支持 bundled auth + vault proxy 模式 |
| 多 Brain 多 Hand | CrewAI / AutoGen | 有协作,但没有 brain 之间传递 hand 的通用接口 |
| TTFT 优化(懒加载沙箱) | **无** | 没有开源方案专门做这个层面优化 |
结论:Managed Agents 的核心护城河不是某一个功能,而是三层解耦的架构设计 + 安全模型 + 托管运维一体化。开源框架能覆盖其中一两层,组合起来也能凑出类似能力,但架构干净程度和运维成本差距明显。这也是 VentureBeat 担心的 vendor lock-in 的根源。
对我们的启发
1. OpenClaw 的架构共鸣
OpenClaw 的部分设计思想和 Managed Agents 高度共振:
- Session 独立:OpenClaw 的 session log 是持久化的,可以实现类似的
getEvents()模式 - Skills 系统:类似于 Managed Agents 的 harness 可插拔设计
- Sandbox:OpenClaw 的 exec sandbox 也有类似隔离理念
2. 可以学习的点
| Managed Agents 特性 | OpenClaw 可借鉴 |
|---|---|
| Session 作为 context 外的可查询对象 | session log 加 programmatic query 接口 |
| Harness 无状态可重启 | 当前 agent 进程 if 崩溃后自动 resume |
| Token 不进 sandbox | 敏感 token 管理可以更安全(目前 .bashrc 里的 token 对 exec 可见) |
| 多 brain 多 hand 架构 | 子 agent spawn 的编排可以更结构化 |
| TTFT 优化(懒加载 sandbox) | spawn session 时不必等所有基础设施就绪 |
3. 值得警惕的地方
- Vendor lock-in(VentureBeat 的担忧):完全托管在 Anthropic 基础设施上,迁移成本高
- Beta 状态:需要
managed-agents-2026-04-01beta header,API 可能还不稳定 - 定价不透明:对比 OpenAI Agents SDK(免费开源)、Copilot Studio($200/月),Anthropic 的定价策略尚未完全公开
评分
| 维度 | 评分 | 说明 |
|---|---|---|
| 技术深度 | ★★★★★ | 从 OS 设计借鉴抽象层思路,session-as-context-object 尤为深刻 |
| 实用性 | ★★★★☆ | 解决真实痛点(TTFT、安全、崩溃恢复),但 beta 阶段 |
| 独创性 | ★★★★★ | "元 harness"设计在 Agent 平台中独树一帜 |
| 可落地性 | ★★★☆☆ | 需依赖 Anthropic 平台,非开源,迁移成本高 |
| 与我们的相关性 | ★★★★☆ | 多个设计理念可直接启发 OpenClaw 架构迭代 |
综合评分:8.5/10
报告生成时间:2026-04-26 · 研究员:OpenClaw Deep Research Agent