Airlock:把 AI 智能体放进虚拟机沙箱并记录实际运行过程
Show HN: I built Airlock, to sandbox your AI agent and know what it's doing
作者发布 Airlock,用 macOS 虚拟机把 AI 智能体与真实项目隔离,智能体只能接触项目副本,改动以 diff 形式逐文件确认后才应用,并可撤销。Airlock 从虚拟机操作系统内部监控进程,能看到智能体脚本实际调用的命令、访问的文件和连接的服务器,非代码托管或包注册表类目标会被标记,也可锁定允许的域名列表。
没人会读第四十个提示
终端里的智能体拥有与你相同的权限。它可以删除项目之外的文件、读取你的 SSH 密钥,或者执行别人埋在某个依赖项 README 里的指令。审批提示本意是拦截这些操作,但到第四十个时,你连看都不看就直接点了同意。而且它们只能看到智能体输入的命令,看不到构建脚本随后做了什么。
所以 Airlock 关掉了这些提示,把智能体移到一个只能触碰你项目副本的地方。你的真实文件夹从不与它共享,它也够不到你 Mac 上的其他任何东西。
未经你许可,任何东西都进不了你的项目
智能体完成后,你会收到它改动的每个文件的 diff。勾选你想要的那些,它们就会被应用到你的项目。之后改变主意还可以撤销。构建脚本、git 钩子、CI 配置以及智能体自身的设置都会被标记出来,因为它们之后会在你的 Mac 上运行,而智能体的代码正是借此逃逸的。
看清实际运行了什么
Airlock 从虚拟机操作系统内部进行监视,因此它能看到每一个进程,而不只是智能体输入的命令。如果智能体写了一个调用 curl 的脚本,你就能看到那个 curl。它触碰过的文件和连接过的服务器会实时出现在同一条时间线上。任何不是代码托管、包注册表之类的东西都会被标记,你还可以把会话锁定在你选定的主机列表上。
你不会察觉到虚拟机的存在
在项目文件夹里输入 airlock run claude,Claude Code 就会像平常一样在你的终端中打开,带着你的 CLAUDE.md、技能和记忆。airlock run codex 对 Codex 也是如此。它几秒内就能启动,项目所需的语言会自动安装,开发服务器会像平常一样在你 Mac 的浏览器中打开。它看不到你的本地网络,所以你的路由器和 NAS 都够不到。
Xcode,无需第二个 Xcode
Xcode 项目会获得一台 macOS 虚拟机,它借用你已有的 Xcode,因此无需再下载和更新第二份副本。在 ios 文件夹里带有 Xcode 项目的 React Native 应用也能获得一台。Apple 允许同时运行两台 macOS 虚拟机,这就是上限。
已经在用 Docker Sandboxes?
Docker Sandboxes 也会把智能体放进虚拟机,并可以给它们一份你项目的克隆,而不是真实项目。它没有的是:在任何东西进入你的项目之前进行逐文件审查、实际运行内容的记录,以及使用你 Xcode 的 macOS 会话。
它阻止不了什么
Airlock 只是把智能体关起来,并不能让它变得可信。除非你锁定会话,否则会话可以访问公共主机,所以你项目副本里的任何东西都可能被发送到某处。模型请求照常发往 Anthropic 或 OpenAI。如果智能体能访问某个服务,它在那里做的事就是真实的,而且发生在你审查任何东西之前。你应用的代码仍然是代码:像读同事的代码一样去读它。
你需要什么
一台搭载 Apple 芯片、运行 macOS 26 或更高版本的 Mac。Claude Code 需要 Claude 订阅,Codex 需要 ChatGPT 账户。
来源:Hacker News · airlock.sorrel.systems