微软开源 NVX:给Agent用的超轻量SandBox,Windows 和 Linux 都能跑

机智流 2026-10-04 10:07
微软开源 NVX:给Agent用的超轻量SandBox,Windows 和 Linux 都能跑图1

微软在 GitHub 上公开了一个新项目 NVX:一个超轻量的虚拟机沙盒,专门用来跑不可信的代码,比如智能体自己写的代码。

项目地址:https://github.com/microsoft/nvx

最早注意到它的,是一位研究微软虚拟化技术的博主。他 10 月 2 日发帖,直接引用了项目介绍,一天多就有 3.1 万次浏览、500 多次收藏。

微软开源 NVX:给Agent用的超轻量SandBox,Windows 和 Linux 都能跑图2

Arthur Khudyaev @gerhart_x,北京时间 10 月 2 日 17:15

帖子翻译过来是:NVX 是一个超轻量的微型虚拟机沙盒,用硬件强制隔离来运行不可信的工作负载。它基于 OpenVMM 构建,里面跑的是 Linux。看起来它支持 Windows 的虚拟机监控程序平台 WHP,以及 Linux 上的 MSHV。

需要说明的是:这个项目在微软官方的 GitHub 账号下,代码是真的。但截至 10 月 3 日上午,我们没找到微软发的博客或公告,版本号也只是 0.1.0。所以它更像是悄悄公开的早期项目,还没有正式官宣。

先认识一下几位主角

Arthur Khudyaev:网名 Gerhart,X 上 3000 多关注。简介写着「我的爱好是研究 Hyper-V」,Hyper-V 就是微软自家的虚拟化技术。他经常第一时间挖出微软虚拟化相关的新东西。

NVX 的开发团队:按项目说明,NVX 由微软研究院系统研究组和 Azure 研究院系统组联合开发,基础是一个叫 Nanvix 的研究项目。

OpenVMM:微软开源的虚拟机管理程序,用 Rust 写的,可以跨平台运行。NVX 就是在它上面搭起来的。准确说,NVX 用的是放在 nanvix 账号下的一个 OpenVMM 分支,改动还在陆续合回官方版。

NVX 是干什么的

说白了,就是给智能体一台临时的小电脑。

智能体经常要跑自己写的代码。这些代码没人审过,可能有 bug,也可能被人利用。直接放在电脑上跑,风险很大。

常见的做法是放进容器里跑。但容器和主机共用一个系统内核,隔离没那么彻底。NVX 的做法是直接开一台虚拟机,靠 CPU 的硬件虚拟化功能把它和主机隔开。里面的代码就算出了问题,也很难碰到外面。

它的特点有这几个:

• 很轻:不模拟完整的电脑,没有固件,只开放一小组固定的设备

• 跨平台:Linux 上支持 KVM 和 MSHV,Windows 上支持 WHP,同一个系统镜像到处都能跑

• 能存快照:可以把一台运行中的虚拟机存下来,之后在新进程里秒恢复

• 系统可选:里面可以跑 Alpine 或 Ubuntu

• 开源:MIT 协议,装好 Python 3.10 以上,3 条命令就能跑起来

到底有多快

仓库里放了持续集成的测速数据。我们取了 10 月 2 日最新一次提交的结果:

微软开源 NVX:给Agent用的超轻量SandBox,Windows 和 Linux 都能跑图3

数据来自 NVX 仓库,测试机为云上虚拟机,单位为毫秒

简单解读一下:

• 从零启动一台虚拟机,Linux 上大约 0.2 到 0.3 秒,Windows 上大约 0.4 秒

• 从快照恢复更快,Linux 上最快 30 毫秒,Windows 上大约 0.1 秒

• 冷启动时,OpenVMM 进程的内存峰值大约 75 MiB

要注意,这些是在云上的虚拟机里测的,不是物理机。换到物理机上,数字可能还会更好看。

翻了一遍源码

这次我们把 NVX 的仓库,连同它依赖的 OpenVMM 代码,都拉下来读了一遍。先看整体结构:

• NVX 仓库本身:大部分是 Python 写的工具脚本,负责构建、启动、测速和打包,大约 4.7 万行,其中约 4 成是测试。另有约 2100 行 C 写的虚拟机内部小工具,外加一份 Linux 内核配置和 4 个内核补丁

• 真正的虚拟机代码在 OpenVMM 里:NVX 用的不是微软官方版,而是放在 nanvix 账号下的一个分支(fork,也就是在别人代码的基础上另起一条线来改)。和分叉点相比,这个分支一共加了大约 5.9 万行代码,几乎都是 Rust

• 加得最多的是虚拟设备:virtio 是虚拟机里通用的一套「虚拟硬件」接口,这部分加了约 1.7 万行;启动入口和命令行约 1.1 万行;快照相关的工具约 7000 行

• 打算合回官方:仓库里有份文档,把这些改动拆成 165 个提交、27 个合并请求,规划怎么一步步合回微软官方的 OpenVMM

身世也能从代码里看出一点:仓库的说明文件写着,原来的 nanvix/nvx 仓库已经归档。看起来,NVX 是从 Nanvix 团队的仓库搬到微软官方账号下的。

再看隔离。智能体的代码其实被关在好几层盒子里:

微软开源 NVX:给Agent用的超轻量SandBox,Windows 和 Linux 都能跑图4

根据 NVX 源码和设计文档整理

几个值得一提的细节:

• 设备是白名单:虚拟机里只有中断控制器、时钟、几个端口和 8 个固定的 virtio 插槽。串口、PCI 总线、固件统统没有

• 网络不直通:流量交给一个叫 Consomme 的内置 NAT 处理。NAT 就是网络地址转换,相当于一台小路由器。它可以只放行指定的 IP 和端口,最多 256 条放行规则、256 条禁止规则,外面主动连进来的一律拒绝

• 共享目录由主机把关:文档里的例子是把代码目录挂进虚拟机,同时禁止读取 .git/credentials 这个存密码的文件。检查在主机这边做,虚拟机里绕不过去

• 虚拟机里也不信任代码:沙盒模式下,智能体的程序跑在独立的命名空间里。命名空间可以理解为「隔间」,程序只看得到自己的文件和进程。它还会被切成普通用户身份,清空所有 Linux 特权

• 内核删得很干净:虚拟机里的 Linux 6.18 不能加载内核模块,也关掉了 PCI、ACPI、USB 和 IPv6,能被攻击的地方更少

开发者怎么用?目前主要靠命令行。官方文档给了一个完整流程:

• sandbox provision:准备沙盒,指定只读的系统层和一块可写盘

• sandbox start:启动虚拟机

• sandbox exec:在里面跑命令,比如用 python3 跑一个脚本

• sandbox stop 和 deprovision:停机、清理

OpenVMM 本身还有一套 ttrpc 管理接口。ttrpc 是一种轻量的远程调用协议,智能体框架可以用它直接创建、等待和关闭虚拟机。

快照为什么这么快

快照,就是给一台正在运行的虚拟机「拍张照」存下来。下次直接从照片接着跑,省掉开机的时间。

一份快照有 4 个文件:清单 manifest.bin、处理器和设备状态 state.bin、内存 memory.bin,以及可选的可写盘 scratch.img。

恢复时,NVX 并不会把整个 memory.bin 读进内存,而是用下面这段代码把它「映射」进来:

微软开源 NVX:给Agent用的超轻量SandBox,Windows 和 Linux 都能跑图5

NVX 所用 OpenVMM 分支中的 support/sparse_mmap/src/unix/copy_on_write.rs

关键是 MAP_PRIVATE 这个参数,意思是「写时复制」:

• 虚拟机读内存时,系统按需从文件里取,用到哪一页才读哪一页

• 虚拟机要改某一页时,系统才悄悄复制一份私有的,原文件一个字节都不动

• 所以同一份快照,可以同时恢复出很多台虚拟机,彼此互不影响

Windows 上思路一样,用的是对应的 PAGE_WRITECOPY。恢复的入口在 openvmm_entry/src/snapshot_restore/prepare.rs,注释写得很直白:从打开的文件句柄创建一份私有映射。

还有两个很巧的设计:

• 快照由虚拟机自己发起:虚拟机里的 nvx-snapshot 脚本先冻结程序、冻结磁盘,再往 0x605 号端口写一个字节。源码注释写着,拍照成功的话,原来那台虚拟机在这次写入返回之前就被结束了。效果有点像程序里的 fork:写入之后的代码,只会在每一台恢复出来的副本里运行

• 恢复后重新播种随机数:如果 100 台虚拟机都从同一张快照恢复,它们的随机数状态会一模一样,生成的密钥也可能撞车。所以 NVX 每次恢复都会塞进 64 字节新的随机数和一个新的机器编号,让每台副本各自重新播种

文档里定的目标,是把恢复做到大约 10 毫秒。现在测到的是 30 到 116 毫秒,还有一段距离。

一个有意思的细节:让 AI 来攻击它

NVX 有一套「对抗测试」:让 GitHub Copilot 扮演攻击者,挑选各种手段去试探沙盒能不能被突破。

但 AI 的权限被管得很死。它只能从一份事先定好的测试清单里选编号,不能自己写命令、改路径或者判定结果。是否突破,由独立的程序来判断。

源码里一共定义了 3 组、24 个测试用例,分别针对虚拟机本身、快照和沙盒里的程序,放在 scripts/nvx_tools/adversarial_cases 目录的 3 个 JSON 文件里。用 AI 去攻击给 AI 用的沙盒,这个思路挺巧。

微软的沙盒不止这一个

最近一年,微软在智能体沙盒上铺了好几条线:

• Hyperlight:超轻量的微型虚拟机,已经是微软智能体框架里官方文档写明的代码执行后端

• MXC:微软执行容器,用一套配置统一管理多种沙盒,从进程级隔离到完整虚拟机都有,目前还是早期预览

• Azure Container Apps Sandboxes:Azure 上托管的沙盒服务,已经正式可用

• NVX:这次新公开的跨平台微型虚拟机沙盒

对比一下行业:E2B 这类沙盒公司常用的是亚马逊开源的 Firecracker,只能跑在 Linux 上。NVX 最大的不同,是 Windows 上也能原生跑。对微软来说,这意味着以后在 Windows 电脑上,也可能给智能体开一台本地的隔离小电脑。

还差什么

项目文档写得很坦白,目前还有不少限制:

• 只支持 x86-64,处理器只能选 1、2、4 或 8 个

• 不支持嵌套虚拟化,快照也不能跨平台恢复

• 还不能直接跑标准容器镜像(OCI 格式),也没有公开的沙盒快照流程

• 命令行里的沙盒命令,还不能自动管理检查点和恢复

• 文档的待办清单里还有 Azure Files 挂载、计费指标、多租户隔离等,看起来是在为云上的生产环境做准备

所以现在它更像一块底层积木,离直接拿来用还有距离。

一句话总结

智能体越来越能干,「给它一台安全的电脑」就成了刚需。微软这次悄悄公开的 NVX,把硬件级隔离做得更轻,还第一次照顾到了 Windows。正式版什么时候来、会不会接进 Windows 和 Azure,值得继续关注。

相关链接

• NVX 项目地址:https://github.com/microsoft/nvx

• 设计文档:https://github.com/microsoft/nvx/blob/dev/doc/design.md

• 测速说明:https://github.com/microsoft/nvx/blob/dev/doc/benchmarks.md

• 测速原始数据:https://github.com/microsoft/nvx/tree/dev/data

• OpenVMM 项目地址:https://github.com/microsoft/openvmm

• 快照设计文档:https://github.com/microsoft/nvx/blob/dev/doc/design/snapshot-and-restore.md

• 设备和网络规格:https://github.com/microsoft/nvx/blob/dev/doc/design/machine-and-device-abi.md

• 使用说明:https://github.com/microsoft/nvx/blob/dev/doc/run.md

• 虚拟机内的快照脚本:https://github.com/microsoft/nvx/blob/dev/guest/common/nvx-snapshot

• 内核配置:https://github.com/microsoft/nvx/blob/dev/kernel/config-microvm

• Copilot 攻击测试用例:https://github.com/microsoft/nvx/tree/dev/scripts/nvx_tools/adversarial_cases

• 合回官方 OpenVMM 的规划:https://github.com/microsoft/nvx/blob/dev/doc/openvmm-upstream-roadmap.md

• NVX 所用的 OpenVMM 分支:https://github.com/nanvix/openvmm

• 写时复制映射代码:https://github.com/nanvix/openvmm/blob/2728f33ea9a44d2d0fb956d9f01768ae2100fb62/support/sparse_mmap/src/unix/copy_on_write.rs

• 快照恢复入口代码:https://github.com/nanvix/openvmm/blob/2728f33ea9a44d2d0fb956d9f01768ae2100fb62/openvmm/openvmm_entry/src/snapshot_restore/prepare.rs

关于科技区角:国内科技展会垂直内容策划服务商,提供从论坛内容全案策划、会展市场化IP打造到精准专业观众一站式邀约服务,以产业内容吸引高质量B端人群,打通展会从议题设计、演讲嘉宾邀约、宣传预热、精准邀观到供需对接全链路。
声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。
开源
more
小米凌晨搞大事!MiMo-V2.6开源模型发布,超越 Kimi K3、GLM-5.3,而且不涨价
一套Harness打通前后台:蚂蚁清华开源9B模型Realtime-Venus,让AI办事对话异步并行
黄仁勋驳斥AI末日论:警惕恐慌阻碍产业落地,能源与开源成关键变量
聚焦心脏健康:大型儿童医院将开源 NVIDIA AI 技术用于心脏疾病诊疗
Meta开源Muse硬件接口:从“聊天机器人”到“具身智能”的野心跃迁
开源王座易主?小米罗福莉发新模型:工程难度超DeepSeek-R1
淘宝TaoMate-H3开源:三步生成「分钟级」音视频连续创作
罗福莉带小米登顶全球开源榜首!大规模RL立功,斩杀Grok 4.7
小米MiMo-V2.6发布:罗福莉的“去标签化”突围与RL开源新范式
DeepSeek开源昇腾适配组件,国产算力生态再获关键拼图
Copyright © 2025-成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号