OpenAI 工程师推演:agent 沙箱终点都是 microVM,少走两年弯路
From fork() to Fleet: Designing an Agent Sandbox Cloud — Abhishek Bhardwaj, OpenAI · Abhishek Bhardwaj
全片 44 分钟·真正值得盯屏约 20 分钟·3 个必看点
- 0:12 – 5:37略
沙箱的源头:训练循环本身就要跑代码
从强化学习的可验证奖励讲起:模型给出响应后,由外层程序代它执行代码,判分器判定对错再反向更新权重。训练出的工具调用能力,产品侧必须有同样的执行环境接住。
沙箱不是产品期才冒出来的需求,它在训练那一刻就已经存在了——训练和产品两侧是对称的。
配的是一张训练循环的流程示意,扫一眼看清箭头方向即可,讲解本身足够自足。▶ 跳到 0:12讲者 · Abhishek Bhardwaj - 5:41 – 12:00听
研究要吞吐、产品要延迟,以及最土的做法
拆开两侧诉求:研究侧海量并行、优化吞吐,产品侧慢一秒就流失用户、优化延迟;可靠性和安全两侧都不能让。然后给出最朴素的方案——直接 fork+exec 跑代码。
别把安全当单一目标:真正要防的是两件事——拿到 root,和在内核态执行代码,后者后果是灾难性的。
整段以口头论证为主,中间只有一张列攻击面的清单页,不看画面不影响理解。▶ 跳到 5:41讲者 · Abhishek Bhardwaj - 12:03 – 18:13看
容器与 gVisor 好在哪、又差在哪
容器拆成两个内核原语:命名空间做隔离、cgroups 限资源,正好治住『死循环狂 fork 拖垮整台机器』的邻居噪音。但内核仍是共享的,一次内核漏洞就穿透;gVisor 把内核接口搬到用户态,仍能靠两步链式利用摸到宿主内核。
共享内核就是共享命运;而新一代模型正越来越擅长把多个漏洞串成一条链。
讲者明确指着屏幕说『在这张图里你能看到』,随后 gVisor 的用户态内核与文件系统代理也是画出来的分层结构,跳过画面会丢掉整段论证的骨架。▶ 跳到 12:03讲者 · Abhishek Bhardwaj - 18:18 – 23:09略
硬件虚拟化:虚拟机里当 root 也伤不到宿主
CPU 层面给出保证:虚拟机的内核跑在受限模式下的最高特权级,宿主内核和管理程序跑在另一套模式里,前者的最高权限只对虚拟机内部有效。再往下讲虚拟机管理程序其实只是个用户态程序,靠内核暴露的接口干活。
这是唯一能兑现『不可信代码拿到内核态执行权、宿主依然安全』的方案——全片的论点落点。
特权层级那张对照图值得停下来看清(也是本片必看之一),但后半段讲设备访问怎么退出到宿主时,听讲解已经够了。▶ 跳到 18:18讲者 · Abhishek Bhardwaj - 23:13 – 30:15看
microVM 的兴起与它的三笔代价
2023 年起 Rust 写的一批虚拟机管理程序取代了积弊已久的老方案,内存安全加上逐个设备上锁构成双重防线;『micro』说的是自身足迹小、启动快。代价也说得很直白:模式切换开销、内存只能被动回收、显卡直通没法多租户共享。
用起来它归根到底就是一组 API——起个进程、建、启动,没有想象中神秘。
这段把方案落到了具体的接口调用与参数上(内核、根文件系统、CPU、内存怎么传进去),屏幕上是能照着抄的东西。▶ 跳到 23:13讲者 · Abhishek Bhardwaj - 30:15 – 38:34听
持久化:从怕丢任务到主动分叉探索
任务正在变长变复杂(讲者自己跑 Codex 的纪录是三天),agent 也会从笔记本搬回云端常驻。有了检查点与恢复,任务能扛住基础设施故障;更进一步,外层程序可以存档后并行探几条解法再回溯。随后回到第一性原理讲磁盘:文件系统把文件映射到逻辑块,只打包变过的块就够了。
快照的真正价值不是灾备,是让多天任务变成一棵可回溯的搜索树。
前半段是纯粹的动机论述;后半段关于块映射的推演,讲者是一层层口头推下来的,边做别的事听也跟得上。▶ 跳到 30:15讲者 · Abhishek Bhardwaj - 38:41 – 44:14看
落到工程:增量快照、自建块存储、按血缘调度
给出可照做的实现路线:写时复制层加上查询变更块的接口,异步上传增量。常驻持久化不建议走网络文件系统,而是在对象存储上自建全局分层缓存、以块设备形式挂给沙箱。最后是低延迟创建的三条路和调度策略。
调度器按各节点已缓存了多少所需快照层来打分路由——快照和编排联动,才换得来快速创建。
这一段的两张架构图(缓存链路、按快照血缘打分的节点选择)信息密度最高,也是最难靠听复原的部分。▶ 跳到 38:41讲者 · Abhishek Bhardwaj