從 fork 到 microVM 的沙盒設計
From fork() to Fleet: Designing an Agent Sandbox Cloud — Abhishek Bhardwaj, OpenAI

OpenAI 的 Abhishek Bhardwaj 從 Linux 基本原理出發,比較 fork、container、gVisor 與 microVM 的隔離強度,再談磁碟快照與跨節點排程,說明 agent 沙盒雲怎麼蓋。
這場講了什麼
- 沙盒為什麼是必需品:Abhishek 說,模型要能執行程式才答得準數學與程式這類有可驗證獎勵的問題,訓練端與產品端都得有地方跑這些不可信的程式碼。研究端重吞吐量,產品端重延遲,兩邊都要可靠與安全。
- 三種隔離方式的天花板:fork 加 exec 最快但最不安全;container 靠 namespace 與 cgroup 隔離資源,仍共用 host kernel;gVisor 把系統呼叫攔到 user space,攻擊鏈變成兩步,但最後還是可能走到 host kernel。
- microVM 是 Abhishek 的建議:硬體虛擬化讓攻擊者就算在 guest 裡拿到 ring 0,host 仍受保護。代價是切換效能、記憶體回收較慢、GPU 共享困難。Abhishek 勸新創「從一開始就用 microVM」。
- 持久化讓長任務撐得住:沒有磁碟的電腦每次關機工作就沒了。定期 checkpoint 可以在節點故障時搬到別的節點接著跑,也能讓 harness 做 Monte Carlo 式的探索與回溯。
- 磁碟快照的做法:用增量快照只存差異;明確存檔靠 copy-on-write 與 FIEMAP 找出變動的區塊,持續存檔則用 NBD 加上分層快取,寫回物件儲存。
- 規模化靠控制平面與快照路由:多個 cluster 分佈各區域,由控制平面選 cluster、排程器選節點;低延遲建立可用暖機池、記憶體快照或兩者混合,還能把請求導到已有最多快照層的節點。
影片從哪一段開始看19 段
- 00:13自我介紹與主題Abhishek 在 OpenAI 的 RL 與 agent 基礎設施團隊,這場從基本原理談沙盒與沙盒雲的設計。
- 01:36模型為什麼要執行程式模型答不好 strawberry 這類問題,給它執行程式碼的能力後,有可驗證獎勵的領域都能靠訓練迴圈爬升。
- 03:51產品端與沙盒的定義產品端少了訓練迴圈,但 harness 一樣要在某處執行程式碼,所以需要沙盒擋住攻擊與跨使用者的資料外洩。
- 05:30OpenClaw 與雲端 agentagent 在筆電上跑,是對二十年雲端運算的打臉;Abhishek 認為未來是在雲端跑持續、長時間的 agent。
- 06:38研究與產品的不同需求研究端要吞吐量與大量 rollout,產品端要低延遲,兩邊都要可靠與安全;這場聚焦 runtime、持久化、編排三根支柱。
- 09:12Linux 怎麼執行程式說明 thread、系統呼叫與 ring 0 / ring 3,以及兩種攻擊面:拿到 root,或跑 kernel 層級的漏洞。
- 10:53最簡單的做法:fork 加 exec每次工具呼叫 fork 一個行程,效能最好,但直接面對 kernel,也可能被 while 迴圈拖垮整個節點。
- 11:56container 與 seccompnamespace 隔離資源、cgroup 限制用量,但行程仍是 host 上的原生行程;seccomp 要事先猜系統呼叫,回饋迴圈很差。
- 16:24gVisor系統呼叫由 user space 的 Sentry 處理,攻擊鏈拉長成兩步,但底下仍是 host kernel;現在的模型會讀 bug report、串接漏洞,兩步還是走得到。
- 18:55硬體虛擬化與 VMMguest kernel 跑在獨立的處理器情境,在 guest 拿到 ring 0 也碰不到 host,代價是切換時的效能損耗。VMM(如 QEMU)呼叫 /dev/kvm 建立 guest,裝置走 VirtIO 半虛擬化。
- 23:13Rust VMM 與 microVM2023 年冒出一批新的 VMM,用 Rust 寫、記憶體安全,裝置可以各自關進 jail;「micro」指的是 VMM 本身小、開機快。啟動時 harness fork 一個 Cloud Hypervisor 行程,經 Unix domain socket 呼叫 create 與 start。
- 27:14microVM 的取捨隔離好、攻擊鏈長,但有效能開銷,記憶體要靠 balloon driver 被動回收,GPU 共享也不容易。
- 29:40為什麼需要磁碟持久化沒有磁碟的電腦做出來的簡報與 repo 會隨節點故障而消失,浪費使用者的工作與 GPU token。
- 31:40持久化的三個用途故障後在別的節點還原、升級或 A/B 測試時搬遷,以及讓 harness checkpoint 後做 Monte Carlo 式的回溯探索。
- 33:47快照系統的需求要增量、便宜、快速,還原也要快;存檔分兩種:一直自動存,或由 harness 明確呼叫 save。
- 35:59Linux 儲存與區塊快照磁碟是 block device、檔案系統把檔案對應到區塊,給 microVM 區塊裝置比給檔案系統效率高得多。
- 38:32明確存檔與持續存檔明確存檔靠 copy-on-write 的可寫層與 FIEMAP 找出變動區塊,可先回傳再背景上傳;持續存檔用 NBD 加分層快取。
- 41:16跨節點與跨區域編排節點組成 cluster、散佈在各區域,控制平面選 cluster,cluster 內的排程器選節點,避開故障節點。
- 42:35低延遲建立與快照路由暖機池、記憶體快照即時啟動,或兩者混合;還原時排程器把請求導向已有最多快照層的節點。
值得記的話4 句
system tricks can cover performance issues, but they cannot hide security breaches.
系統上的技巧可以彌補效能問題,卻藏不住資安破口28:36Just please use micro VMs from the start.
請從一開始就用 microVM。這是 Abhishek 對新創與創辦人的建議29:24persistence actually helps reliability and scale.
持久化其實有助於可靠性與規模31:40I think storage is the next unlock here.
我認為儲存是下一個突破口40:59
名詞與人物12 個
- sandbox
- 讓 harness 替模型安全執行工具呼叫與程式碼的環境,可在筆電或雲端
- rollout
- 同一個任務的一次嘗試,例如對「3 加 3」產生的一個答案
- namespace / cgroup
- container 的兩個基礎:前者隔離資源視野,後者限制 CPU 與記憶體用量
- seccomp
- 過濾 container 能呼叫的系統呼叫與參數,以縮小 kernel 的攻擊面
- gVisor
- 把系統呼叫攔下、在 user space 實作 Linux API 的沙盒,由 Sentry 與 Gopher 組成
- microVM
- 以輕量 VMM 啟動的虛擬機,靠硬體虛擬化隔離,體積小、開機快
- VMM / KVM
- VMM 是管理 guest 的軟體(如 QEMU),透過 /dev/kvm 呼叫 Linux 的虛擬化 API
- crosvm
- 第一個 Rust 寫的 VMM,Abhishek 在 Google 時的團隊為了在 Chromebook 上跑 Linux 虛擬機而寫,後來被 Firecracker fork
- Firecracker / Cloud Hypervisor
- 兩個 Rust 系的 VMM,前者用在 Amazon 的 Lambda 等無伺服器負載
- VirtIO
- guest 驅動與 host 之間較有效率的半虛擬化溝通方式
- copy-on-write
- 先零成本複製基底映像,寫入時才改動區塊,快照時用 FIEMAP 取出變動範圍
- NBD
- 讓沙盒內看到區塊裝置,背後是分層快取並寫回物件儲存的網路區塊裝置
提到但沒有展開
- GPU 存取:VirtIO GPU 只提供較高層的圖形函式庫存取,直接存取要靠 VFIO,但一次只能給一個沙盒用。
- Abhishek 說做沙盒的人都會走過「七個階段」:什麼都試過,最後還是想要一台完整、安全的 Linux 機器,也就是 VM。
- 持續存檔不選 NFS,是因為它效能不夠、也不符合 POSIX,而模型最擅長的就是 POSIX 這類標準環境。
同一站:AI Agents15 場
- 從 fork 到 microVM 的沙盒設計你在這裡
- 背景執行的 computer use 三件套016 · Francesco Bonacci(Cua) · 17 分
- Loops 到底是炒作還是真能用023 · Dex Horthy, Geoff Huntley, Ian Livingstone & Greg Pstrucha · 60 分
- 每個 harness 終將長成 claw028 · Sam Bhagwat(Mastra) · 16 分
- 把執行層獨立出來,換模型不用重寫032 · Dan Farrelly(CTO, Inngest) · 19 分
- 長時程 agent 的四個設計主題033 · Lance Martin(Anthropic) · 25 分
- 讓 agent 看見你所見的畫面034 · Antje Barth(Amazon AGI Lab) · 22 分
- 把 Codex 養成一整個團隊038 · Jason Liu(OpenAI Codex) · 75 分
- agent 走進群組與眼鏡061 · Sai Krishna Rallabandi · 19 分
- agent 出事,多半是 harness 的錯063 · Vinoth Govindarajan(OpenAI) · 18 分
- 把 AI agent 接進事件溯源的詐欺偵測066 · Divakar Kumar(FlyersSoft) · 22 分
- 給每個人自己改的個人應用平台086 · Kenton Varda(Cloudflare) · 19 分
- 用 CCA 考試當 agent 工程的地圖091 · Frank Coyle(UC Berkeley) · 20 分
- 讓背景 agent 接手營運雜務094 · Justin Smith(Resolve AI) · 25 分
- Codex 內部怎麼運作098 · Dominik Kundel(OpenAI) · 21 分