Agent 平台正在重新发明操作系统:美团 CatPaw 架构深读

逐段拆解美团 CatPaw Managed Agents 的"脑手分离"架构,把每个组件映射回它的操作系统祖先:Session 恢复是进程切换,上下文压缩是虚拟内存,Sandbox Gateway 是调度器,模型路由网关是硬件抽象层。结合 ReAct、MemGPT、AIOS、Firecracker、CaMeL 等论文,解释为什么相同的资源约束必然长出相同的架构形状——以及这个类比在哪里失效。

读工业级 Agent 平台的架构文档,最容易掉进的坑是把它读成功能清单:弹性扩缩、安全隔离、智能路由……每个词都认识,合上文档什么也没记住。这篇换一种读法:拿美团 CatPaw Managed Agents 的架构文档逐段过一遍,你会发现它的每一个组件,几乎都能在操作系统教科书里找到直系祖先。这不是巧合,也不是致敬——是相同的资源约束,逼出了相同的架构形状。

一句话主线

Agent 平台正在重演操作系统的历史:昂贵而串行的计算资源(LLM 推理)、缓慢而危险的执行环境(工具与沙箱)、不可信的负载(提示词与数据)——这三个约束与 1960 年代逼出分时操作系统的约束同构,所以解法也必然同构。

这不只是我的修辞。学术界已经把话挑明了:MemGPT 的论文标题就叫《Towards LLMs as Operating Systems》,AIOS 干脆造了一个”Agent 操作系统内核”,把调度、上下文管理、内存管理、访问控制全部下沉进去。CatPaw 的价值在于:它是这套思路在千万级用户规模的工业现场长出来的样子——论文管蓝图,它管施工。

带着一张对照表往下读,每一节讲一对”CatPaw 组件 ↔ OS 祖先”:

CatPaw 组件操作系统祖先论文/系统支撑
脑手分离(Agent Loop / Sandbox)计算与 I/O 分离ReAct
Session 管理进程控制块 + 上下文切换AIOS
上下文压缩与动态上下文虚拟内存 + 按需调页MemGPT
Sandbox(MicroVM)用户态隔离 + 硬件虚拟化Firecracker
Sandbox Gateway进程调度器 + 挂起/恢复Firecracker/Serverless
三层镜像分层文件系统OverlayFS/容器镜像
多 Agent 协作多进程模型 + 异构调度AutoGen
三层安全保护环 + 能力安全CaMeL
模型路由网关硬件抽象层(HAL/VFS)

先摆约束:为什么 1965 和 2025 面对的是同一道题

操作系统不是谁的天才发明,是被三个约束逼出来的:CPU 贵(一台大型机一小时的钱够雇工程师一个月),所以不能让它闲着等 I/O;外设慢(读卡机、磁带比 CPU 慢几个数量级),所以计算和 I/O 必须重叠;程序不可信(学生的作业会把机器搞挂),所以必须隔离。分时、调度、虚拟内存、保护环,全是这三个约束的推论。

现在把主语换掉:LLM 推理贵(GPU 集群按 token 计费,且推理本质串行);工具执行慢且危险(跑一个终端命令、爬一个网页,耗时不可控,还可能 rm -rf);负载不可信(用户输入、网页内容、检索结果都可能藏着提示词注入)。三个约束一一对应。所以接下来看到的每一个”发明”,你都可以预判它为什么存在。

脑手分离:把 CPU 从外设里拔出来

CatPaw 架构的第一刀,是把 Agent 拆成两半:

  • Agent Loop(脑):理解意图、规划步骤、决定调用什么工具——纯粹的推理,不碰真实世界
  • Sandbox(手):跑代码、读写文件、执行终端命令——纯粹的执行,不做决策

两者通过标准化协议通信,独立升级、独立扩缩。

flowchart LR
    subgraph brain ["Agent Loop(脑 ≈ CPU)"]
        A[理解上下文] --> B[思考下一步] --> C[发起工具调用]
    end
    subgraph hands ["Sandbox(手 ≈ 外设)"]
        D[MicroVM 执行<br/>代码/文件/终端]
    end
    C -- 标准化协议<br/>≈ 系统调用 --> D
    D -- tool_result<br/>≈ 中断/DMA 完成 --> A

这就是计算与 I/O 分离。CPU 从不亲自搬磁盘数据——它发起请求,DMA 去搬,搬完了用中断通知它。Agent Loop 也从不亲自跑命令——它发起 tool_use,Sandbox 去跑,跑完了用 tool_result 事件回来推它一把。

分离一刀下去,红利立刻兑现,而且和 OS 当年的红利一模一样:

  • 各自扩缩:CatPaw 文档给的数字是 Agent Loop 支持分布式千万级扩容,Sandbox 池按需扩展、闲时回收——正如 CPU 核数和磁盘数量从不需要 1:1 配比。
  • 启动解耦:会话状态与执行环境解耦后,首次会话加载从约 15 秒降到最低约 2 秒——因为”开机”不再等”外设自检”,沙箱在真正需要执行时才拉起。
  • 故障隔离:代码跑崩了只损失一个 Sandbox,Agent Loop 无感——外设烧了不该烧掉 CPU。

而循环本身——理解上下文 → 思考 → 调用工具 → 等结果 → 继续思考——是标准的 ReAct 范式(Yao et al., 2022,推理与行动交错,行动结果回灌推理)。CatPaw 的工程化在于:这个 loop 不固定在任何一台机器上,全异步、事件流驱动,在分布式节点间流转。而”loop 可以流转”这件事,直接逼出了下一个组件。

Session 管理:进程控制块的转世

进程被调度器暂停、迁移到另一个核、再恢复执行——程序自己毫无感知。靠的是进程控制块(PCB):寄存器、程序计数器、打开的文件描述符,全部快照在案,恢复时原样装回。

CatPaw 的 Agent Loop 在分布式节点间流转,面对同一道题:无论落到哪个节点,Agent 必须”记得”之前发生过什么。它的 PCB 叫 Session

  • 事件是中断user_messagetool_usetool_result 驱动 loop 运转——CPU 也从不主动”轮询世界”,它响应中断。
  • 消息是内存镜像:system/user/assistant/tool 各类 messages 按 sessionId 入库;任何节点接手时,找回历史、追加新消息、发起下一次模型请求,loop 原地满血复活。

这套”计算单元无状态化 + 状态外置可恢复”的设计,正是 AIOS 论文里 Agent 内核的核心服务之一(context management:支持 agent 执行的快照与恢复)。工业上的动机也和 OS 一致:只有把状态从计算节点上剥离,才能做到任意节点故障不丢会话、负载随便迁移——1960 年代这叫分时系统的健壮性,今天这叫云原生。

上下文管理:虚拟内存,逐字重演

这是全文对照最工整的一节。先看 CatPaw 做了什么:

  1. 上下文组装:每个 turn 从云端加载会话数据,按 system prompt / context prompt / user-tool prompt 三段模板拼装完整消息列表。
  2. 自动压缩:Token 使用率达到窗口阈值时,自动把历史对话生成结构化摘要;system prompt、rules、skills 描述永远不压缩
  3. 动态上下文:压缩前的完整 transcript、过大的工具结果、历史图片,以文件形式存进沙箱,在上下文尾部只留一个文件引用,引导模型用 tailgrep 自己去”回忆”。

现在换 OS 的语言把这三条重说一遍:

  1. 上下文窗口是物理内存——稀缺、昂贵、直接可寻址。
  2. 压缩摘要是换出(swap out)——冷数据挪出主存,留下压缩后的影子;而”system prompt 永不压缩”就是内存锁定(pinned pages)——内核代码不许被换出,换出了系统就没了人格。
  3. 文件化 + grep 回忆是按需调页(demand paging)——数据不在主存没关系,留一个地址,访问时触发”缺页中断”,从磁盘把那一页调回来。模型执行 grep 的那一刻,就是在处理自己的缺页。

这不是我硬凑的类比,是 MemGPT 论文的原始设计:把上下文窗口当作受限内存资源,仿照 OS 的分层存储(主存/磁盘)建立记忆层级,让 LLM 通过函数调用自己决定什么调入、什么逐出——论文标题《Towards LLMs as Operating Systems》说的就是这件事。CatPaw 把这套蓝图落成了默认能力,而且做了一个务实的取舍:MemGPT 让模型用专门函数管理记忆,CatPaw 直接复用沙箱里现成的 tail/grep——既然手已经有了,就不必再发明假肢。

(“摘要放不下的记忆去哪了”这个问题再往深挖,就进入 RAG 与 Agent 记忆的地界,那是另一篇的主线。)

Sandbox:五十年隔离技术的一次收束

“手”这一侧,CatPaw 给每个会话一个完整的操作系统级运行环境,底层是 MicroVM——这条技术路线值得单独讲一段历史。

隔离不可信代码,OS 走了五十年:进程边界(太弱,共享内核)→ 容器(还是共享内核,逃逸不断)→ 虚拟机(够硬,但启动分钟级、内存 GB 级)。僵局被 AWS 的 Firecracker(NSDI ‘20)打破:为 serverless 场景特制的轻量虚拟机监视器,每个 MicroVM 是一个普通 Linux 进程,砍掉传统 VM 的全部历史包袱,硬件级隔离 + 百毫秒级启动 + 极低内存开销同时成立。Lambda 用它跑不可信函数,Agent 平台用它跑不可信 Agent——负载换了,约束没换。

CatPaw 的 Sandbox 承担的职责清单——代码执行、工具隔离执行、Skill 加载、文件系统操作、MCP Server 运行时——用 OS 语言压缩就是一句话:沙箱工具(read_file、run_terminal_cmd、grep……)是这个”用户态”暴露给”脑”的系统调用表。

更精彩的是 Sandbox Gateway,它是这套系统里的调度器:

  • 预热池秒级分配 ↔ 进程池:fork 太慢就预先 fork 好
  • 闲时自动暂停、不计费 ↔ 挂起(suspend):阻塞等待的进程不占 CPU 时间片
  • 下次工具调用透明恢复 ↔ 唤醒(resume):从等待队列放回就绪队列,程序无感知

“Agent 进入思考阶段时暂停 Sandbox”这条策略尤其漂亮:脑在忙的时候手不计费,手在忙的时候脑可以去服务别的会话——这就是分时系统”CPU 与 I/O 重叠”的原始智慧,只是资源单价从大型机机时换成了 GPU token 和 MicroVM 内存。

配套的两个存储设计同样有直系祖先:三层镜像(Base 月级 / App 周级 / Service 实时)是分层文件系统——变更频率决定分层,所有实例共享基座,正是容器镜像 OverlayFS 的玩法;自研文件系统(数据全在 S3、POSIX 透明兼容、惰性按需加载、挂载关系决定可见性)则是网络文件系统 + 按需调页 + mount 命名空间的三合一。

多 Agent 协作:进程模型与异构调度

单个 Agent 搞不定复杂任务时,CatPaw 给了四种协作模式。前两种是经典并发模型的转世:

  • Coordinator 协调者:理解需求、拆分任务、派发给多个 Worker 并行执行——fork-join / master-worker,MapReduce 一代人的肌肉记忆。
  • Agent Team:Team Lead 把控方向,Teammate 各有完整工具能力、可直接沟通、共享任务列表和团队记忆——共享内存的多线程模型,连”共享可变状态”这个特征都原样保留。

这条路线的学术源头是 AutoGen(Microsoft, 2023):把复杂任务建模为多个可对话 Agent 的协作,用自然语言和代码编排交互模式。

后两种更有意思,OS 教科书里对应的章节晚得多——异构调度

  • Plan with SOTA:flash 级小模型执行前,先自动切到 SOTA 大模型做规划,再把 Plan 交给小模型执行。
  • Advisor:给 flash 模型配一个 advisor 工具,卡住时向 SOTA 模型请教;SOTA 基于完整上下文给判断,但不碰任何工具。

这就是 ARM big.LITTLE:性能核负责关键路径,能效核负责跑量,调度器决定什么活给谁。目标函数完全一致——在成本约束下最大化有效吞吐。大模型 token 贵如性能核功耗,能省则省;但方案设计这种”关键路径”上省错了地方,返工比省下的更贵。

安全:唯一没有现成答案的一层

前面每一节,OS 都提前五十年给出了答案。安全这一节不同——类比在这里断裂,而断裂处正是整个领域最前沿的开放问题。

先看 CatPaw 的三层防御:①身份认证(人↔容器↔Token 三方绑定、AI 流量染色、凭证集中托管——凭证不进 LLM、不进业务进程环境变量);②执行安全(五点拦截链覆盖提示词注入路径、送 LLM 前自动脱敏 PII、Skill 全量扫描);③可观测可追溯(全链路 Trace、运行时远程阻断、完整行为链审计)。

表面看是保护环 + 最小权限 + 审计日志,OS 安全的标准三件套。但注意一个根本差异:OS 的安全模型建立在”内核可信”之上——只要把不可信代码关进用户态,可信内核就能兜底。而 Agent 平台的”CPU”(LLM)本身就是不可信的:一段藏在网页里的提示词就可能劫持它的决策。用 OS 的语言说,这相当于数据能篡改 CPU 的微码——冯诺依曼架构”代码与数据同存”的老病,OS 用 NX 位、W^X 花了几十年治好,而 LLM 的上下文窗口里,指令和数据至今混在同一条流里,没有硬件位可以标记”这一段只许读不许执行”。

所以 CatPaw 那条”凭证不进 LLM”格外值得注意——它不是普通的密钥管理洁癖,而是承认了”脑”不可信之后的架构结论:能力(capability)绝不经过不可信组件之手。这条思路的学术旗手是 Google DeepMind 的 CaMeL(《Defeating Prompt Injections by Design》):从可信的用户请求中显式抽取控制流与数据流,用自定义解释器强制执行安全策略,让不可信数据从设计上无法影响程序走向——不指望把模型训练得百毒不侵,而是在架构层让毒无处可下。防御从”改造脑”转向”约束脑的手脚”,这和 CatPaw 把所有执行关进 Sandbox、把凭证挡在 LLM 之外,是同一个哲学。

模型路由网关:硬件抽象层

最后一块拼图。CatPaw 接入多家模型供应商,路由网关作为统一接入层屏蔽差异:Agent 发一次调用,网关完成模型选择、流量调度、容错重试、全链路监控。路由流水线是”条件匹配 → 定向规则 → 会话粘连 → 动态策略 → 权重分流 → 降级备选 → 多模态兜底”。

OS 祖先:硬件抽象层(HAL)与 VFS。应用调 read() 不需要知道底下是 SSD 还是 NFS;Agent 调模型不需要知道底下是哪家供应商、什么协议。连细节都对得上——“会话粘连”就是 CPU 亲和性(同一进程尽量调度回同一个核,为了缓存局部性;同一会话尽量路由到同一模型,为了行为一致性),“降级备选”就是存储栈的 failover。

类比的边界:三处必须诚实的失配

把类比推到底之前,先说清它在哪里失效——否则这篇就成了修辞游戏。

一:调度单位不可抢占。 OS 的时间片可以随时掐断,Agent 的调度单位是一次模型请求 + 一次工具调用,中途没有安全的抢占点。一个跑偏的长任务,调度器只能等或杀,不能”暂停并修正”。

二:“CPU”不确定。 OS 调度器可以假设指令执行是正确的,Agent 平台不能假设推理是正确的——同样的输入可能给出不同的(甚至幻觉的)决策。这就是为什么 CatPaw 的可观测层做到了”异常行为主动检测 + 运行时远程阻断”:OS 监控的是资源使用,Agent 平台还得监控决策本身

三:没有可信计算基。 上一节说透了:OS 安全的地基(可信内核)在 Agent 世界不存在。所以 Agent 平台的安全模型更接近零信任网络而非传统 OS——每一层都假设上一层可能已被攻破。

这三处失配不是类比的失败,恰恰是它的价值所在:对得上的部分告诉你去哪抄答案,对不上的部分告诉你创新必须发生在哪。

收官:一个可复用的读文档姿势

回到开头的问题:怎么读工业级 Agent 平台的架构文档?这篇给出的方法是——每看到一个组件,先问它是操作系统的哪个部件转世。Session 是 PCB,压缩是 swap,Gateway 是调度器,路由是 HAL;能对上的,用五十年的 OS 直觉白嫖它的设计动机和演化方向;对不上的(不可抢占、不确定、无可信基),那就是这个领域真正的新问题。

这个姿势还附赠预测能力。OS 史接下来的章节我们都读过,不妨押几注:多租户资源配额(cgroups 转世)、Agent 行为的 strace/perf 级观测工具、以及最重要的——接口标准化的 POSIX 时刻。MCP 已经在扮演”设备驱动接口标准”的角色,而 CatPaw 们各自的沙箱协议、会话协议迟早也会走向收敛。到那一天,“Agent 平台”就会像今天的操作系统一样,从每家一套的私有奇观,变成无人谈论的基础设施——基础设施的最高荣誉,就是被忘记。

参考来源

一手文档:

arXiv 论文:

系统论文: