微软推出 Microsoft Execution Container (MXC),这是一套用于在 Windows、Linux 和 macOS 上安全运行不受信任代码(如模型输出、插件及工具)的沙盒执行系统。MXC 以 SDK 依赖形式嵌入应用,通过统一的隔离模型和类型化接口,提供从操作系统原生进程沙箱到完整虚拟机的多种隔离后端。

核心特性与架构

MXC 支持跨平台部署,并根据宿主环境自动匹配最佳隔离后端:

  • Windows: 默认使用 processcontainer,可选 windows_sandbox、wslc 及实验性的 microvm、hyperlight 等。
  • Linux: 默认使用 bubblewrap,支持 lxc、microvm 和 hyperlight。
  • macOS: 默认使用 seatbelt。

系统基于 JSON 配置版本化的容器创建请求与安全策略,支持细粒度的文件系统(读写/只读/禁止)、网络(代理/出站控制)及 UI(剪贴板/图形界面)访问控制。MXC 具备状态感知的生命周期管理能力,涵盖配置、启动、执行、停止及销毁全流程。

开发者集成与使用

开发者可通过包管理器直接安装 Rust、.NET 或 Node.js SDK,无需克隆代码仓库。Node 和 .NET 包内含原生运行时资产,而 Rust crate 则将 SDK、引擎及选定后端编译至应用中。此外,MXC 提供平台特定的执行器二进制文件(如 wxc-exec.exe),支持通过 JSON 请求进行非 SDK 模式的测试与执行。

以 Node.js 为例,开发者可快速启动一个网络默认拒绝的容器化任务:

import { spawn, type ContainerRequest } from '@microsoft/mxc-sdk/v1';

const request: ContainerRequest = {
  command: 'node -e "console.log(\'hello from container\')"',
  network: { egress: { default: 'deny' } },
  timeoutMs: 30_000,
};

const child = await spawn(request);

调试、审计与遥测

为解决沙盒环境下的访问权限问题,MXC 提供两种诊断模式:

  • 调试模式: 通过 --debug 参数获取详细的诊断输出。
  • 审计模式: 使用 --audit 参数可暂时关闭沙盒保护,记录工作负载的实际访问需求并生成策略工件。注意: 此模式严禁用于运行不受信任的代码。

在隐私方面,官方构建版本包含可选的诊断遥测功能。该功能默认关闭,仅在用户明确同意、管理策略允许且应用在请求中启用时才会发送数据。本地开源构建不包含指向微软的遥测路由,且在非 Windows 平台上无效。

构建与贡献

若需开发 MXC 或使用独立执行器,可从源代码构建。构建环境需满足以下条件:

  • Rust 工具链(版本固定为 1.93)
  • Node.js 24 或更高版本及 npm
  • 对应后端所需的平台工具链

项目遵循标准的开源贡献流程,详细 API 参考、容器生命周期说明及后端指南均托管于代码仓库的 docs/ 目录下。