Khi các kỹ sư lần đầu tiên sử dụng container để chạy AI agent, họ đang giải quyết sai vấn đề.
Container cho bạn isolation: mỗi agent có filesystem, network namespace, và process space riêng. Điều đó thực sự hữu ích. Nhưng container được xây dựng cho workload stateless, ngắn hạn — spin up, làm việc, tear down. Chúng giả định rằng state quan trọng sống ở nơi khác: trong database, trong object storage, trong queue. Bản thân container là disposable.
AI agent phá vỡ giả định đó. Một agent chạy dài tích lũy hàng giờ context: filesystem phản ánh hàng chục thao tác, các process chạy nền, file được tạo giữa chừng, tool call hoàn thành một nửa. Khi container chết, toàn bộ state đó chết cùng nó. Và trong hạ tầng AI agent, container chết thường xuyên — hardware failure, OOM kill, preemption, scheduled maintenance. Câu hỏi không phải là liệu sandbox của bạn có chết không. Mà là liệu bạn có thể sống sót khi nó chết không.
Đây là vấn đề Perplexity đã giải quyết khi họ xây dựng SPACE — Sandboxed Platform for Agentic Code Execution — để làm nền tảng cho Perplexity Computer. Họ ship trong 10 tuần. Khi launch, nó xử lý 1.25M sandbox creations và 11.9M reconnects. Median sandbox creation latency giảm từ 185ms xuống 60ms; P90 giảm từ 447ms xuống 89ms.
Đây là cách họ làm và ý nghĩa cho các team đang xây dựng hạ tầng AI agent production.
Insight Cốt Lõi: Session Không Phải Sandbox
Tư duy container truyền thống gộp session và sandbox thành một thứ. SPACE tách chúng ra.
Sandbox là môi trường thực thi ephemeral. Đó là một Firecracker microVM với 2 vCPU, 8GB RAM, kernel riêng, và filesystem riêng. Nó thực hiện tính toán. Nó có thể chết.
Session là lớp wrapper logic quanh công việc đang diễn ra của người dùng. Nó tồn tại qua các lần sandbox chết. Nó lưu trữ metadata cho phép bất kỳ node nào trong cluster tái tạo một sandbox hoạt động từ checkpoint gần nhất. Đây là thứ người dùng thực sự quan tâm: “Tôi đã bắt đầu task hai tiếng trước, đây là trạng thái hiện tại.”
Insight nghe có vẻ đơn giản. Phần triển khai mới thú vị.
Lớp Hardware: Firecracker Thay Vì Docker
Perplexity chọn Firecracker microVM thay vì Docker container. Lý do quan trọng cho quyết định kiến trúc của riêng bạn.
Docker container chia sẻ host kernel. Điều này nhanh, nhưng có nghĩa là một container bị xâm phạm có thể thoát ra host thông qua các lỗ hổng kernel. Đối với một platform chạy code tùy ý từ AI agent trên hàng triệu session, blast radius đó là không thể chấp nhận.
Firecracker cho mỗi sandbox kernel Linux riêng, chạy bên trong KVM virtual machine. Nó sử dụng seccomp filter để hạn chế lời gọi host kernel và namespace để cách ly thêm. VM boundary có nghĩa là một cuộc tấn công container escape phải vượt qua hardware virtualization, không chỉ kiểm tra quyền kernel.
Đánh đổi là thời gian startup. Docker container có thể start trong millisecond; Firecracker VM mất lâu hơn. Perplexity giải quyết điều này bằng snapshot pre-loading và pool VM được pre-warm, đây là một phần lý do họ đạt được median creation latency 60ms.
Storage: btrfs Copy-on-Write
Lựa chọn filesystem là chìa khóa để checkpoint-and-fork trở nên thực tế.
SPACE sử dụng btrfs với ngữ nghĩa copy-on-write (CoW). Khi bạn tạo btrfs snapshot, nó không copy bất kỳ dữ liệu nào — nó chỉ ghi lại tập hợp các data block hiện tạo nên filesystem. Write mới tạo ra block mới; snapshot tiếp tục tham chiếu đến block gốc. Một snapshot đại diện cho hàng giờ state agent tích lũy mất millisecond để tạo, vì tạo snapshot là thao tác metadata, không phải data copy.
Điều này cho phép ba thao tác quan trọng:
Checkpoint: Mỗi ~1 phút, hệ thống tạo btrfs snapshot của filesystem của mỗi sandbox đang hoạt động. Full VM checkpoint (nắm bắt in-flight process state bao gồm memory và CPU register) xảy ra ít thường xuyên hơn. Kết hợp cả hai cho phép bạn phục hồi sandbox đến điểm thực thi gần đây, không chỉ filesystem state của nó.
Fork: Từ bất kỳ checkpoint nào, bạn có thể materialize nhiều sandbox độc lập đồng thời. Mỗi sandbox được fork bắt đầu từ cùng checkpoint nhưng phân kỳ khi các thao tác viết block mới. Chi phí của fork là chi phí khởi động VM mới, không phải chi phí copy gigabyte filesystem state.
Resume: Khi sandbox chết và session được resume trên bất kỳ node nào, control plane đọc checkpoint gần nhất từ btrfs volume local của node, materialize sandbox mới, và người dùng kết nối lại. Từ góc độ người dùng, session tiếp tục từ nơi nó dừng lại.
Kiến Trúc Ba Lớp
┌─────────────────────────────────────┐
│ Stateless Control Plane │ ← bất kỳ node nào có thể xử lý bất kỳ session nào
│ (session metadata, routing, auth) │
└────────────────┬────────────────────┘
│
┌────────────────▼────────────────────┐
│ Node-Local Services │ ← co-located với VM
│ btrfs storage │ Credential GW │
│ Networking │ VM lifecycle │
└────────────────┬────────────────────┘
│
┌────────────────▼────────────────────┐
│ Firecracker VM + space daemon │ ← ephemeral sandbox
│ (sole comms path) │
└─────────────────────────────────────┘
Control plane được thiết kế stateless. Bất kỳ node nào có thể tái tạo state của bất kỳ session nào từ checkpoint metadata. Điều này làm cho horizontal scaling đơn giản và loại bỏ single point of failure.
Space daemon chạy bên trong mọi VM và là đường giao tiếp duy nhất giữa control plane và sandbox. Lệnh chạy vào, kết quả chạy ra, tất cả qua daemon này. Lựa chọn thiết kế này đơn giản hóa đáng kể trust model: control plane không cần trust nội dung của sandbox, chỉ cần trust daemon interface.
Bảo Mật Credential: Inject Tại Network Layer
Đây là một trong những quyết định thiết kế thanh lịch nhất trong SPACE, và liên quan trực tiếp đến các sự cố cybersecurity được thảo luận trong bài viết trước của chúng tôi.
Credential — API key, OAuth token, cloud IAM credential — không bao giờ được lưu trữ bên trong sandbox VM. Thay vào đó, credential gateway chặn mọi network request outbound từ sandbox và inject credential phù hợp tại lớp egress.
Hậu quả: ngay cả việc exfiltration toàn bộ filesystem từ một sandbox bị xâm phạm cũng không thu được credential. Kẻ tấn công trích xuất toàn bộ VM state nhận được code, dữ liệu, và kết quả trung gian — nhưng không có secret. Secret sống bên ngoài VM boundary, được inject tạm thời tại network layer.
Điều này cũng có nghĩa là credential rotation xảy ra tại gateway mà không cần restart hay cấu hình lại sandbox. Và có nghĩa là logic credential injection tương tự hoạt động đồng nhất trên các forked sandbox — không cần gắn nhãn mỗi fork với đúng tập secret.
Forking Cho Phép: Parallel Exploration
Fork primitive mạnh hơn vẻ ngoài của nó, vì nó cho phép một pattern mà ngược lại rất tốn kém: parallel exploration của decision tree của AI agent.
Hãy xem xét một agent cần thực thi một deployment. Ở bước N, nó có hai chiến lược khả thi. Thường thì bạn chọn một, thực thi, và hy vọng. Với fork:
- Checkpoint tại bước N
- Fork hai sandbox từ checkpoint
- Thực thi chiến lược A trong sandbox A, chiến lược B trong sandbox B
- Đánh giá cái nào thành công
- Resume session từ checkpoint của sandbox thành công
Đây là A/B testing ở cấp agent execution. Bạn không chọn giữa các chiến lược upfront — bạn chạy cả hai và giữ cái thắng. Đối với các agent operation có rủi ro cao, pattern này thay đổi đáng kể phép tính rủi ro.
Ở cấp platform, fork cũng cho phép parallel retry cho các thao tác flaky mà không mất context trước đó. Nếu API call của agent thất bại, bạn có thể retry từ checkpoint mà không phải replay toàn bộ công việc trước đó.
Hiệu Suất: Con Số Thực
Khi launch:
- 1.25M sandbox creations
- 11.9M reconnects (session sống sót qua sandbox death)
- Median creation: 185ms → 60ms (cải thiện 3x)
- P90 creation: 447ms → 89ms (cải thiện 5x)
Cải thiện P90 quan trọng hơn median. P90 latency là những gì người dùng trải nghiệm trong những ngày hardware tệ, trong traffic spike, khi VM pool lạnh. Cải thiện P90 5x có nghĩa là những trải nghiệm tệ nhất được cải thiện đáng kể, không chỉ average.
Ý Nghĩa Cho Kiến Trúc Của Bạn
Không phải mọi team đều cần build SPACE. Nhưng các nguyên tắc kiến trúc có thể áp dụng cho bất kỳ team nào xây dựng hạ tầng AI agent:
1. Thiết kế cho session persistence, không phải sandbox durability. Sandbox của bạn sẽ chết. Thiết kế hệ thống để session state sống sót qua sandbox death. Điều này có nghĩa là externalize state một cách tích cực — những gì trong sandbox mà bạn không thể tái tạo từ checkpoint?
2. Chọn storage với snapshot semantics. btrfs, ZFS, hoặc block-level snapshot tại cloud storage layer đều cho bạn CoW. Nếu storage backend agent của bạn không thể snapshot rẻ, bạn không thể checkpoint rẻ.
3. Đặt secret bên ngoài execution boundary. Pattern credential gateway có thể áp dụng ở mức hạ tầng thấp hơn nhiều so với SPACE. Ngay cả với Docker container đơn giản, bạn có thể inject credential qua container network thay vì qua environment variable hoặc mounted secret file.
4. Tách control plane khỏi execution. Stateless control plane scale horizontally và sống sót qua node failure. Nếu control plane của bạn biết về VM qua địa chỉ IP thay vì session ID, nó sẽ khó vận hành.
5. Build reconnect, không phải restart. Sự khác biệt: restart cho bạn sandbox mới. Reconnect cho bạn sandbox bạn đã có. Reconnect yêu cầu checkpointing; restart không yêu cầu gì. 11.9M reconnects khi launch gợi ý người dùng kỳ vọng session continuity — build theo kỳ vọng đó.
Song Song Với AI Safety
Có một đường thẳng giữa kiến trúc SPACE và các sự cố AI sandbox escape trong disclosure ngày 30/7 của Anthropic. Credential gateway của SPACE — inject secret tại network layer, không bao giờ lưu chúng bên trong VM — chính xác là loại phòng thủ ở cấp cơ sở hạ tầng sẽ hạn chế blast radius của các sự cố Opus 4.7 và Mythos 5.
Nếu môi trường đánh giá Irregular đã inject credential tại network layer thay vì cung cấp chúng bên trong sandbox, việc credential extraction sẽ không thể thực hiện được ngay cả sau khi model phát hiện ra internet thực. Model có thể đọc network, nhưng credential không bao giờ ở trong network packet — nó được inject bởi gateway nằm bên ngoài môi trường thực thi.
Đây là framing đúng đắn cho AI agent security: giả định sandbox sẽ bị xâm phạm. Thiết kế phần còn lại của stack để sự xâm phạm có hậu quả giới hạn.
Kết Luận
SPACE là một case study trong việc xây dựng hạ tầng coi trọng agent state. Các bước đi quan trọng — tách session/sandbox, CoW checkpoint, credential gateway, stateless control plane — đều là phản ứng với cùng một insight: AI agent tích lũy state quan trọng, và hạ tầng bỏ qua state đó khiến mọi failure trở thành thảm họa.
Timeline build 10 tuần cho 1.25M sandbox khi launch gợi ý các pattern này không phải là nghiên cứu kỳ lạ — chúng có thể sản xuất bởi một engineering team tập trung với nền tảng kiến trúc đúng đắn. Nếu bạn đang xây dựng hạ tầng AI agent, đây là những nền tảng đáng thiết lập đúng trước.
Thuận Lương là Tech Lead với 15+ năm kinh nghiệm về .NET, cloud architecture, và AI systems. Anh viết về những bài học từ việc xây dựng các hệ thống production thực tế.