<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Architecture on Lucas Ma 的博客</title>
    <link>https://blog.lucasma.cc/tags/architecture/</link>
    <description>Recent content in Architecture on Lucas Ma 的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <copyright>2026 Lucas Ma</copyright>
    <lastBuildDate>Wed, 06 May 2026 22:00:00 +0800</lastBuildDate>
    <atom:link href="https://blog.lucasma.cc/tags/architecture/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Anthropic 如何设计 Managed Agents：用「脑手分离」架构解锁长时 agent 可靠性</title>
      <link>https://blog.lucasma.cc/posts/scaling-managed-agents-decoupling-brain-from-hands/</link>
      <pubDate>Wed, 06 May 2026 22:00:00 +0800</pubDate>
      <guid>https://blog.lucasma.cc/posts/scaling-managed-agents-decoupling-brain-from-hands/</guid>
      <description>&lt;p&gt;在构建 AI Agent 时，你是否遇到过这些问题：容器崩溃导致 Session 丢失、无法连接客户私有网络、长时间任务后期模型行为失控？&lt;/p&gt;
&lt;p&gt;Anthropic 最近发布的工程博客系统性地介绍了他们如何解决这些问题。核心方案只有一个：&lt;strong&gt;把「大脑」（Claude + harness）和「手」（Sandbox + Tools）彻底解耦&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;本文将深入解析这个架构的设计思路、实现细节，以及它如何让 Agent 系统从「宠物」变成「牛群」。&lt;/p&gt;
&lt;h2 id=&#34;为什么需要脑手分离&#34;&gt;为什么需要「脑手分离」？&lt;/h2&gt;
&lt;p&gt;在介绍具体架构之前，我们需要理解问题的来龙去脉。&lt;/p&gt;
&lt;h3 id=&#34;传统架构一切耦合在一个容器里&#34;&gt;传统架构：一切耦合在一个容器里&lt;/h3&gt;
&lt;p&gt;早期的 Managed Agents 采用紧耦合设计，Session、Harness 和 Sandbox 三者共享同一个执行环境。这种设计的优点是：&lt;strong&gt;文件编辑是直接 syscall，没有跨服务边界的性能损耗&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;但随之而来的问题是——&lt;strong&gt;你养了一只「宠物」&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这里的「宠物 vs 牛群」是基础设施领域的经典比喻：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;宠物（Pet）&lt;/strong&gt;：有名字、需要精心维护、不能丢失&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;牛群（Cattle）&lt;/strong&gt;：无差别对待、可替换、丢失后直接启动新的&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;当容器成为那只宠物，任何故障都意味着 Session 丢失。更糟糕的是，你的调试窗口只有一个——WebSocket 事件流，但它无法告诉你问题出在 Harness 本身、网络丢包，还是容器本身离线。&lt;/p&gt;
&lt;h3 id=&#34;第二个问题harness-假设了一切都在本地&#34;&gt;第二个问题：Harness 假设了一切都在本地&lt;/h3&gt;
&lt;p&gt;当客户要求连接到自己私有的 VPC（Virtual Private Cloud）时，紧耦合设计遇到了硬墙：Harness 假设所有资源都在它旁边。要么客户把自己的网络和 Anthropic 的网络 peering，要么让客户在自己的环境里跑 Harness——这已经超出了服务本身的设计边界。&lt;/p&gt;
&lt;h2 id=&#34;核心架构三个抽象解耦一切&#34;&gt;核心架构：三个抽象解耦一切&lt;/h2&gt;
&lt;p&gt;Anthropic 的解决方案是把 Agent 的三个核心组件虚拟化成通用接口：&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;graph TB
    subgraph &amp;#34;Session（持久化上下文）&amp;#34;
        S[Session Log&amp;lt;br/&amp;gt;append-only event stream]
    end
    
    subgraph &amp;#34;Harness（Agent 循环）&amp;#34;
        H[Harness&amp;lt;br/&amp;gt;Claude 调用 + 路由]
    end
    
    subgraph &amp;#34;Sandbox（执行环境）&amp;#34;
        SB[Sandbox&amp;lt;br/&amp;gt;代码执行 / 文件编辑]
    end
    
    subgraph &amp;#34;外部工具&amp;#34;
        MCP[MCP Server]
        VA[Vault&amp;lt;br/&amp;gt;OAuth 等凭证]
    end
    
    H --&amp;gt;|execute(name, input) → string| SB
    H --&amp;gt;|emitEvent / getEvents| S
    H -.-&amp;gt;|MCP 代理| MCP
    MCP -.-&amp;gt;|凭证获取| VA
    
    S --&amp;gt;|wake(sessionId)| H
    SB -.-&amp;gt;|execute 返回| H
&lt;/pre&gt;

&lt;h3 id=&#34;1-sessionagent-的外部记忆&#34;&gt;1. Session：Agent 的外部记忆&lt;/h3&gt;
&lt;p&gt;Session 是** Append-only 的事件日志**，解决了长时任务超出模型 Context Window 的问题。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
