Anthropic Managed Agents: 将大脑与双手解耦

TL;DR

Anthropic 推出了 Managed Agents,这是一种托管服务,旨在通过将推理引擎(“大脑”)与执行环境(“双手”)以及会话日志解耦,来运行长程代理(long-horizon agents)。这种架构可以防止基础设施故障破坏代理状态,并允许系统随着模型能力的提升而演进,而无需重新设计整个代理框架。

Managed Agents 的架构

Managed Agents 将 AI 代理的核心组件虚拟化为三个独立的接口,以确保其中一个组件的实现可以在不影响其他组件的情况下进行更换:

  • The Session: 代理运行期间发生的每个事件的仅追加日志。
  • The Harness: 调用模型并将工具调用路由到适当基础设施的编排循环。
  • The Sandbox: 模型运行代码并编辑文件的执行环境。

通过将这些组件视为虚拟化抽象而非单一的耦合单元,Anthropic 确保了即使在底层模型和硬件发生变化时,系统仍能保持稳定。

将“大脑”与“双手”解耦

此前,Anthropic 将所有代理组件都放在单个容器中。这造成了“宠物”基础设施问题,即单个容器故障会导致整个会话丢失,并且由于用户数据和系统日志位于同一位置,使得调试变得困难。

向“牲畜”基础设施转型

为了解决这个问题,Anthropic 将 harness(大脑)与 sandbox(双手)以及 session log 解耦。这种转变带来了几个关键优势:

  • 对 Sandbox 故障的弹性: harness 现在将 sandbox 调用为一种工具 (execute(name, input) → string)。如果 sandbox 发生故障,harness 会捕获错误并可以使用标准配方重新初始化一个新的容器 (provision({resources}))。
  • Harness 恢复: 由于 session log 是外部的,harness 现在是无状态的。如果 harness 崩溃,可以通过 wake(sessionId) 重启一个新的 harness,通过 getSession(id) 获取事件日志,并从最后一次记录的事件开始恢复。
  • 增强的安全性: 通过将大脑与双手分离,凭据(token)被排除在运行不受信任的模型生成代码的 sandbox 之外。对于 Git 操作,token 在初始化期间被接入本地 git remote;对于自定义工具,OAuth token 存储在安全的 vault 中并通过专用代理访问,从而确保 harness 和 sandbox 永远不会处理原始凭据。

管理长程上下文

长程任务通常会超过模型的上下文窗口。虽然压缩(摘要)和修剪(移除旧 token)等技术很常见,但它们涉及关于丢弃哪些内容的不可逆决策。

Managed Agents 将 session log 视为一个存在于模型上下文窗口之外的持久化上下文对象。getEvents() 接口允许模型以编程方式查询事件流,选择位置切片或回溯到特定时刻以重新获得上下文。这实现了上下文的持久化存储(session)与上下文的主动管理(harness)的分离,允许 harness 应用上下文工程或 prompt caching 策略,而不会丢失原始数据。

性能与可扩展性提升

将大脑与双手解耦带来了延迟和灵活性的显著提升:

降低延迟 (TTFT)

在耦合设计中,每个会话都需要在推理开始之前配置一个容器,无论是否实际需要 sandbox。通过将 harness 移出容器,推理可以在编排层从 session log 中提取事件后立即开始。这带来了以下结果:

  • p50 首个 Token 生成时间 (TTFT): 下降了约 60%。
  • p95 TTFT: 下降了超过 90%。

支持“多个大脑,多个双手”

解耦的架构允许单个大脑同时与多个执行环境(双手)进行交互。由于每个“手”都被视为一种工具 (execute(name, input) → string),harness 对 sandbox 是容器、移动设备还是模拟器都是不可知的。这种灵活性还允许大脑之间互相传递“双手”,从而实现更复杂的多代理协作。

Sources

相关

  • Dispatch
  • 项目
  • Dispatch
  • Dispatch
  • Dispatch