跳到正文
Hacker News· simonmaddox·· 6 天前AI 评分60

Airlock:把 AI 智能体放进虚拟机沙箱并记录实际运行过程

Show HN: I built Airlock, to sandbox your AI agent and know what it's doing

AI 导读

作者发布 Airlock,用 macOS 虚拟机把 AI 智能体与真实项目隔离,智能体只能接触项目副本,改动以 diff 形式逐文件确认后才应用,并可撤销。Airlock 从虚拟机操作系统内部监控进程,能看到智能体脚本实际调用的命令、访问的文件和连接的服务器,非代码托管或包注册表类目标会被标记,也可锁定允许的域名列表。

正文 · AI 翻译

没人会读第四十个提示

终端里的智能体拥有与你相同的权限。它可以删除项目之外的文件、读取你的 SSH 密钥,或者执行别人埋在某个依赖项 README 里的指令。审批提示本意是拦截这些操作,但到第四十个时,你连看都不看就直接点了同意。而且它们只能看到智能体输入的命令,看不到构建脚本随后做了什么。

所以 Airlock 关掉了这些提示,把智能体移到一个只能触碰你项目副本的地方。你的真实文件夹从不与它共享,它也够不到你 Mac 上的其他任何东西。

未经你许可,任何东西都进不了你的项目

智能体完成后,你会收到它改动的每个文件的 diff。勾选你想要的那些,它们就会被应用到你的项目。之后改变主意还可以撤销。构建脚本、git 钩子、CI 配置以及智能体自身的设置都会被标记出来,因为它们之后会在你的 Mac 上运行,而智能体的代码正是借此逃逸的。

Airlock's Changes view: the agent's changed files, with package.json and a planted .husky/pre-commit flagged and the hook left unticked, and the diff of src/tides.js with lines removed and added.

看清实际运行了什么

Airlock 从虚拟机操作系统内部进行监视,因此它能看到每一个进程,而不只是智能体输入的命令。如果智能体写了一个调用 curl 的脚本,你就能看到那个 curl。它触碰过的文件和连接过的服务器会实时出现在同一条时间线上。任何不是代码托管、包注册表之类的东西都会被标记,你还可以把会话锁定在你选定的主机列表上。

Airlock's timeline for a session: the agent's background work, the commands it ran, the files it edited, and an npm install with its connections to the npm registry.

你不会察觉到虚拟机的存在

在项目文件夹里输入 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