AI agent 沙箱指南

在 Mac 上运行 AI agent,又不把整台 Mac 交给它

简短的答案:给 agent 一台虚拟机,而不是你的用户账号。启动前先打快照,对不信任的任务克隆一份一次性副本,任务用不到网络时就把网络切断。本指南对比 Apple Silicon 上的各种隔离方式,并演示如何借助 Kyvenza 内置的 MCP server 完成这套工作流。

每种隔离方式实际保护了什么

你自己的用户账号:没有隔离

以你的身份执行 shell 命令的 agent,拥有你拥有的一切:Keychain、SSH 密钥、浏览器会话、云服务凭据,以及你能读取的每一个文件。一条错误命令或一次提示词注入,影响范围和你本人一样大。

第二个 macOS 用户:文件分开,系统共用

单独的账号能把你的主目录和 Keychain 挡在外面,但它仍是同一个操作系统、同一个内核。它能防意外,却不太能防一个被授予管理员权限的 agent。

容器:适合 Linux 工具,但有前提

Mac 上的容器运行在一台 Linux 虚拟机里,共享它的内核。它适合无界面的 Linux 工具,但挂载的本机文件夹或 Docker socket 会给 agent 留下一条回到外面的路,而且容器跑不了 macOS 或 Windows 应用。

虚拟机:由 hypervisor 强制执行的边界

客体是一个独立的操作系统。除非你主动共享,它看不到本机文件;出现错误操作后,快照可以把整台机器回滚。对一台 Mac 上的编码 agent 来说,这是最合适的折中。

专用机器:最强,但要多一台设备

备用的 Mac mini 提供物理隔离,但要花钱、要配置,还多一台设备要维护。虚拟机在你已有的 Mac 上就能获得大部分隔离效果。

用 Kyvenza 虚拟机与 Docker 容器跑 agent 的对比

容器适合很多 agent 任务,创建也很快。当 agent 需要完整桌面、macOS 或 Windows 客体,或者需要更强的边界时,两者的差别才真正显现。

功能KyvenzaDocker container
客体操作系统Linux ARM、macOS ARM 或 Windows 11 ARM仅 Linux
隔离边界由 hypervisor 强制执行的独立操作系统一台 Docker 虚拟机内共享的 Linux 内核
错误操作后回滚恢复快照;通过 MCP 时,agent 启动虚拟机前会自动打一份重建容器并恢复各个卷
一次性副本clone_vm:写时复制,约一秒出现支持,新容器启动很快
完全没有网络隔离网络;在 Linux 上,客体代理仍能执行命令和截屏支持,使用无网络设置
查看屏幕在完整桌面客体上使用 screenshot 工具只有终端,除非再加一个桌面
最适合需要真实桌面或 macOS 的 agent,以及不受信任的安装程序无界面的 Linux 工具和 CI

Kyvenza 目前支持什么

一份简短、坦诚的清单,下载之前先心里有数。

目前已支持

  • Apple Silicon Mac(M1, M2, M3, M4, M5)
  • Windows 11 on ARM(自带 Microsoft 镜像与许可证)
  • Ubuntu ARM(LTS 版本)
  • Debian ARM
  • Fedora ARM
  • macOS 14 Sonoma 或更高版本作为本机系统
  • 原生 Apple Virtualization framework 后端

暂不支持

  • Windows 客体 OS 的 GPU / 3D 加速
  • Windows 客体 OS 的麦克风输入与 USB 直通
  • x86 / Intel 客体操作系统
  • 嵌套虚拟化(在虚拟机里再运行虚拟机)
  • GPU 直通

我们把目前还做不到的也列出来,方便你提前规划。

使用步骤

01

准备一台干净的基础虚拟机

在 Kyvenza 里创建一台 Linux 或 macOS 客体,装好 agent 需要的工具,然后关机。这就是你的已知良好基础。不要在里面放任何个人凭据。

02

打开 MCP server,连接你的 agent

在「设置」的「自动化」里打开服务,复制端点,其中已带有你这台 Mac 的令牌。在 Claude Code 里,连接只需一条命令:claude mcp add --transport http kyvenza http://127.0.0.1:59800/mcp/YOUR-TOKEN。任何接受 URL 的 MCP 客户端都可以使用。

03

克隆、运行、读取结果、删除

启用破坏性工具后,agent 会把基础虚拟机克隆成沙箱,在里面运行安装程序或脚本,读取输出,然后删除这份克隆。克隆是写时复制的,删除的内容会进入废纸篓。对不能回连外部的代码,请先把虚拟机设为隔离网络。

常见问题

在你的主账号上不安全。能以你的身份执行 shell 命令的 agent 可以读取你的 Keychain、SSH 密钥和浏览器会话,所以一条错误命令或一次提示词注入,影响范围和你本人一样大。请把它放进一台不含你任何凭据的虚拟机里运行,并在启动前先打快照。