Anthropic Agent 演进(四):Managed Agent Runtime——Session、Harness 与 Sandbox
文章目录
前几代 Harness 关注的是模型怎样持续工作、怎样提高质量。走向托管服务后,问题变成了系统工程:Session 如何持久化?Harness 崩溃后怎样恢复?Sandbox 如何替换?怎样连接客户自己的 VPC?凭据如何不暴露给模型生成的代码?
Anthropic Managed Agents 的核心答案是:把 Brain、Hands 和 Session 解耦为稳定接口。
系列导航:(一)从 Workflow 到 Agent · (二)Context Reset 与 Structured Handoff · (三)Planner–Generator–Evaluator · (四)Managed Agent Runtime
1. Agent Runtime 的四个组件
Managed Agent 可以拆成四部分:
- Session:关于任务发生过什么的只追加事件日志;
- Harness:调用模型、组织 Context、路由 Tool Call 的 Agent Loop;
- Sandbox:运行命令、编辑文件和执行不可信代码的环境;
- Tools / Resources:MCP、外部服务和业务能力。

这四者的生命周期不应该绑死。Session 需要持久,Harness 和 Sandbox 则应该可以失败、重启和替换。
2. 为什么“一切放进一个容器”会失败?
最直接的实现是让 Session、Harness 和 Sandbox 共处一个容器。文件操作简单,也没有服务边界,但容器很快变成一只不能丢失的 “Pet”:
- 容器死亡会带走 Session;
- 无响应时必须进入包含用户数据的容器排障;
- Harness 假定资源和代码都与自己同处一地;
- 客户自有 VPC 或自托管执行环境很难接入;
- 生成代码与凭据共处,扩大 Prompt Injection 的影响范围。
真正可扩展的系统应该把容器当作 “Cattle”:坏了就替换,而不是抢救。
3. Decouple the Brain from the Hands
Anthropic 把 Claude + Harness 视为 Brain,把 Sandbox 与工具视为 Hands,把事件日志视为独立 Session:
- Harness 通过统一的
execute(name, input) → string调用执行环境; - Sandbox 失败时,Harness 把错误作为工具结果交给模型,并可重新 Provision;
- Harness 失败时,新实例通过
wake(sessionId)和 Session Log 恢复; - Session 持续接收事件,因此不依赖某个 Harness 进程存活。
这种解耦同时带来扩展性和性能收益:不需要 Sandbox 的 Session 可以直接开始推理;只有第一次调用执行工具时才 Provision 环境。Anthropic 报告该结构使 p50 Time-to-First-Token 约降低 60%,p95 降低超过 90%。
4. Session 不等于 Context Window
这是整套架构最关键的概念:
Session 是可恢复的完整事件历史;Context Window 是某一次模型调用选择看到的有限视图。
Compaction、Trimming 和 Memory 都在决定“下一次 Context 保留什么”,而这种选择可能不可逆。如果原始事件只存在于 Context 中,被压缩或删除后就无法重新检查。
Managed Agents 把完整事件流持久化在 Session 中,再由 Harness 调用 getEvents() 选择切片、重放附近事件或做新的 Context Engineering。于是:
- Session 负责可恢复性;
- Harness 负责上下文策略;
- Context Window 只负责当前推理。
Memory Store 也可以看作持久状态的一种,但它不是完整事件日志的替代品。Memory 保存 Agent 主动提炼的知识;Session 保留未来可能重新解释的原始事实。
5. 安全边界:凭据不能进入 Sandbox
如果生成代码与访问令牌处在同一个环境中,Prompt Injection 只需要诱导 Agent 读取环境变量。结构性修复不是“要求模型不要读”,而是让凭据在物理架构上不可达:
- 仓库令牌仅在初始化时绑定到特定资源;
- OAuth Token 存在 Sandbox 外部的 Vault;
- MCP 调用经过专用 Proxy,由 Proxy 取凭据并访问外部服务;
- Harness 和生成代码都不直接看到凭据。
能力提升会让依赖“模型应该不会做什么”的安全假设越来越脆弱,因此权限必须落到系统边界上。
6. 与 Codex Agents API 架构对照
OpenAI Agents API 也把托管 Harness 与执行环境分开,并根据任务需要提供三种 Environment 模式。
6.1 No Environment
只使用 Function Tools 或远程 MCP,不需要文件和 Shell 时,可以不创建 Sandbox。

6.2 OpenAI-hosted Environment
需要运行代码、编辑文件或生成 Artifact 时,由 OpenAI 管理 Sandbox。应用负责发任务和处理事件,Harness 直接把内置工具调用路由到托管环境。

6.3 Self-hosted Environment
应用创建 Session 后获得 environment_id 与 remote_url,自行启动 VM、容器或 Kubernetes Pod,并让 Executor 主动连接。Harness 仍在云端管理 Agent Loop,Shell 和文件工具则在客户环境中执行。

这个模式与 “Brain / Hands 分离”高度相似:Application 管理计算资源和生命周期,Agents API 管理 Session 与 Harness,Executor 负责在 Sandbox 内完成命令并回传结果。
7. 两套架构的共同方向
| 关注点 | Anthropic Managed Agents | OpenAI Agents API / Codex |
|---|---|---|
| 持久任务状态 | Session Event Log | Session + Event Stream |
| Agent Loop | Managed Harness | Managed Codex Harness |
| 执行环境 | 可替换 Sandbox | None / Hosted / Self-hosted |
| 外部工具 | MCP Proxy / Resources | Function Tools / MCP |
| 恢复 | 从 Session 重建 Harness | 订阅事件并重连 Executor |
| 安全 | 凭据在 Sandbox 外 | Harness、Application 与 Sandbox 分工 |
它们共同说明:Agent Runtime 正在从“一个模型加一组工具”演进成类似操作系统的抽象层。稳定接口负责隔离变化,模型、Harness 策略和执行基础设施可以独立升级。
8. 这条演进路径真正改变了什么?
回顾整个系列:
- Workflow → Agent:把动态决策交给模型;
- Context Reset + Handoff:把长期状态移到模型之外;
- Generator + Evaluator:把自我评价变成外部验证;
- Managed Runtime:把 Session、Harness、Sandbox 解耦成可恢复服务。
模型能力增强不会让 Harness 消失,而会改变 Harness 的职责。过期脚手架应被删除,但状态、验证、安全和恢复这些系统问题不会因为模型更聪明而自动消失。
参考资料
文章作者 zhengxz
上次更新 2026-09-12