让 AI Agent 安全执行不可信代码:microsandbox 用硬件级隔离填补 Docker 和 VM 之间的空白
当你的 AI Agent 要执行一段不可信代码,你会怎么做?
扔进 Docker 容器?容器共享宿主机内核,内核漏洞(参考 CVE-2022-0847 “Dirty Pipe”)一旦被利用,攻击者就能从容器里翻到宿主机的环境变量和密钥。
开一台完整虚拟机?启动要好几秒,资源开销大,而且根本没法集成进应用程序的代码逻辑里。
这就是 microsandbox 试图填补的空白——一个本地优先的 microVM 运行时,给 AI Agent 配备”自己的电脑”,硬件级隔离、毫秒级启动、直接嵌进你的应用。
什么是 microsandbox
superradcompany/microsandbox 是一个开源的 microVM 沙箱运行时,基于 libkrun(KVM / Apple Silicon Hypervisor.framework)构建,核心设计目标只有一个:让不可信代码在本地虚拟机里跑起来,同时做到硬件级隔离和毫秒级启动。
7,460 Star,396 Fork,Apache License 2.0,当前版本 v0.6.8(2026 年 8 月持续活跃)。
它不是云服务,而是你项目里的一个依赖库。调用 Sandbox::builder().create() 就会 fork 一个子进程,这个子进程就是一个完整的微型虚拟机,里面跑着标准 OCI 镜像(python、debian、ubuntu……)。子进程退出,资源自动回收,没有常驻守护进程,没有 root 权限要求。
它的核心解决什么问题
痛点一:Docker 够安全吗?
容器共享内核,这是容器逃逸风险的根源。无论 namespace 和 cgroups 隔离做得多好,一旦宿主机内核有漏洞,攻击者就可以穿透这层隔离。AI Agent 执行用户提交的代码片段,这种场景用容器其实是在冒险。
痛点二:完整 VM 太重
QEMU/KVM 虚拟机提供了真正的硬件隔离,但启动要数秒,而且每个 VM 都要跑一个完整操作系统,资源开销巨大。AI Agent 需要频繁创建和销毁临时执行环境,这种场景下完整 VM 完全不现实。
痛点三:秘密怎么管
AI Agent 通常需要 API 密钥这类敏感信息。传统方案是把密钥作为环境变量传进容器——但这些变量对容器内所有进程完全可见。如果 Guest 内核被攻破,攻击者在 Guest 内存里能翻到所有秘密。
microsandbox 怎么做的
硬件级隔离 + 毫秒级启动
microVM 不同于容器:每个沙箱都有独立的客户机内核,不像容器那样共享宿主机内核。底层利用 Intel VT-x / AMD-V 或 ARM EL2 硬件虚拟化扩展,Guest 无法直接访问宿主机内核内存,提供了与完整 VM 同等级别的安全边界。
启动速度的关键在于精简:使用经过高度裁剪的微型 Linux 内核,跳过完整的 init/systemd 启动流程,直接挂载根文件系统并启动目标进程。官方宣称低于 100 毫秒启动,实测数据也有中文社区作者记录在 200ms 左右。对于需要频繁创建临时执行环境的 AI Agent 场景,这种”即用即抛”的轻量 VM 非常契合。
无守护进程架构
Docker 采用 Client/Server 模式,需要常驻的 dockerd 守护进程,拥有很高权限,是全局单点故障源。microsandbox 则反过来:SDK 调用 Sandbox::create() 时直接 fork 一个子进程来运行 microVM,这个子进程以非特权用户身份运行,沙箱停止就退出。没有常驻进程,没有全局状态,部署就是加一个依赖。
优势很明显:攻击面小(没有高权限守护进程)、编程模型自然(同步进程内调用,而不是 IPC)、资源清理彻底。
秘密占位符机制
这是我认为最有意思的设计细节。创建沙箱时通过 SDK 传入 API 密钥,但这些秘密永远不会进入 Guest 的内存地址空间。Microsandbox 运行时在宿主机侧保管真实值,当 Guest 内进程尝试读取特定环境变量时,宿主机拦截请求并动态替换占位符后返回。Guest 内进程只感知到一个普通环境变量,完全不知道背后有拦截替换机制。
换句话说,即使 Guest 内核被完全攻破,攻击者在 Guest 内存里也找不到真实密钥——因为它们根本不在那里。
SDK 与生态:多语言支持
microsandbox 提供了多语言 SDK:
- Rust:
cargo add microsandbox - Python:
uv add microsandbox或pip install microsandbox - TypeScript:
npm i microsandbox - Go:
go get github.com/superradcompany/microsandbox/sdk/go - Ruby: 也有支持
一个最小示例(Rust):
let sandbox = Sandbox::builder("my-sandbox")
.image("python")
.cpus(1)
.memory(512)
.create()
.await?;
let output = sandbox
.exec("python", ["-c", "print('Hello from a microVM!')"])
.await?;
println!("{}", output.stdout()?);
sandbox.stop().await?;
对 AI Agent 生态的集成也很完善:
- Agent Skills:给 Claude Code、Cursor、Codex、Gemini CLI 等安装 microsandbox 使用技能,一行命令:
npx skills add superradcompany/skills - MCP Server:提供结构化工具调用,支持 MCP 兼容的 Agent 通过 stdio 直接连接
适合谁 / 不适合谁
适合的场景:
- AI Agent 需要执行用户提交的代码片段,且代码来源不可信
- 需要安全隔离的网络访问控制(限定可访问的域名和端口)
- CI 环境里运行第三方插件或脚本
- 本地跑爬虫、自动化脚本,不想让它碰系统文件
- 需要在应用内嵌入临时执行环境(如低代码平台、数据处理工具)
不适合的场景:
- 需要完整 Linux 系统环境(完整的 systemd、多个服务进程)——microVM 设计上是单进程的精简内核
- 对 Windows 宿主机的支持还在完善(目前 Windows 通过
irm | iex安装,体验不如 macOS/Linux) - 对启动速度要求极高的实时交易场景(100ms 对某些高频场景仍然太慢)
怎么跑起来
一行命令装好 CLI:
# macOS / Linux
curl -fsSL https://install.microsandbox.dev | sh
# 或者通过包管理器
brew install superradcompany/tap/microsandbox
npm i -g microsandbox
cargo install microsandbox
然后:
# 直接跑一条命令
npx microsandbox run debian -- python3 -c "print('Hello')"
# 创建命名沙箱
msb create --name myapp python
msb exec myapp -- python -c "import this"
msb stop myapp
Rust 应用集成(现有 Cargo 项目):
cargo add microsandbox
小结
microsandbox 填补了一个很实在的工程空白:硬件级隔离的安全性 + 毫秒级启动的速度 + 嵌入式 SDK 的集成便利,三者同时满足。它不追求替代 Docker(Docker 在镜像生态和标准化上仍有巨大优势),而是在”Docker 太危险、VM 太重”这个夹缝里,给出了一个精确的解决方案。
如果你的 AI Agent 或应用需要跑不可信代码,microsandbox 值得认真考虑。特别是它的秘密占位符机制,在密钥安全这个点上做得很巧妙——这不是花拳绣腿,是真正从架构上杜绝了秘密泄露的可能。
下一步建议:
- 在本地跑通官方 Quick Start(
npx microsandbox run debian),感受一下启动速度和资源占用 - 尝试用 TypeScript/Python SDK 在你的 AI Agent 项目里集成一个沙箱,执行一个简单的用户代码片段
- 如果你在用 Claude Code,运行
npx skills add superradcompany/skills,感受 Agent 直接调用 microVM 的体验
评论区
登录后可评论。