AI 编码 Agent 在宿主机上裸奔?Code Airlock 用一次性 MicroVM 让它自由又安全
“让它尽情发挥吧,它知道该怎么做。”
AI 编码 Agent(Claude Code、Codex、OpenCode)最强大的地方在于,它们能直接执行命令、装依赖、跑测试、修改文件。你一句 claude code -p "修复构建",Agent 就开始撸袖子干活了。
但问题来了——Agent 要装包就得联网,要跑测试就得访问文件系统,要修改代码就得有写权限。你给了它自由,同时也给了它破坏环境的能力。 一个被注入恶意指令的 Agent,或者一个写错正则的 Agent,删家目录只需要一条命令。
常见的做法是用权限规则来约束 Agent:Codex 的 approval 机制、Claude Code 的 permission 模式、OpenCode 的 deny 规则。但这些是进程内部的策略围栏——Agent 一旦拿到执行权限,就没有第二道防线了。
今天介绍的 Code Airlock,用一种更彻底的方式解决这个矛盾:把 Agent 关进一次性 MicroVM 里,让它在隔离环境里自由发挥,改完的东西以 Git commit 的形式回来给你审查。
问题:Agent 的自由与安全不可兼得
AI 编码 Agent 的效率瓶颈往往不在代码能力,而在交互摩擦。每执行一步都要问你”可以吗?”,Agent 就退化成慢速的自动补全工具。
但你真的敢让 Agent 在宿主机上裸奔吗?
| 你想让 Agent 做的事 | 对应的风险 |
|:—|:—|
| 安装 npm/pip 依赖 | 恶意包注入供应链攻击 |
| 修改代码文件 | 误删或覆盖重要文件 |
| 运行测试脚本 | 测试中执行了危险命令 |
| 读写配置文件 | 凭据泄露或配置篡改 |
| 连接 API | 数据外泄 |
Code Airlock 的思路是:不在 Agent 的权限模型层面加约束,而是在 Agent 下面加一层隔离边界。 Agent 在一台一次性 MicroVM 里自由运行,宿主机的文件系统是只读挂载的,Agent 改完的东西通过 Git 分支拉回来审查。
Code Airlock 是什么
Code Airlock 是一个轻量 CLI 工具,包装了 Docker Sandboxes(Docker 的 MicroVM 方案),为 AI 编码 Agent 提供开箱即用的隔离沙箱环境。
安装方式:
npm install -g code-airlock
或者用一键安装脚本:
curl -fsSL https://raw.githubusercontent.com/Trivo25/code-airlock/main/install.sh | sh
安装后先做一次环境检查:
code-airlock doctor
这个命令会检查 Docker Sandboxes 是否安装、KVM 虚拟化是否开启、sbx CLI 是否已登录。大部分问题都能通过 code-airlock setup 的引导安装解决。
核心工作流:隔离执行 + Git 审查
Code Airlock 的工作流非常简洁,核心就五个命令:
code-airlock run "给 users 接口添加分页并运行测试" code-airlock fetch code-airlock diff code-airlock review code-airlock merge
整个流程背后的机制是:
- Docker Sandboxes 创建一个带有
--clone标志的 MicroVM,宿主机仓库以只读方式挂载进去 - Sandbox 内部自动 clone 了一份仓库副本,Agent 在这份副本上操作
- Agent 所有修改都在副本中提交(Git commit)
- 你从宿主机
fetch沙箱分支,diff查看差异,确认无误后merge - 沙箱可以被
rm销毁,一切痕迹消失
关键安全边界:Agent 在 MicroVM 里即使被注入恶意指令,能破坏的也只是沙箱内部的克隆副本,宿主机的原始仓库纹丝不动。
多 Agent 支持
Code Airlock 支持主流的 AI 编码 Agent,通过 --agent 参数切换:
code-airlock --agent claude up code-airlock --agent codex up code-airlock --agent opencode up
也支持通过环境变量或配置文件指定默认 Agent:
AGENT=codex
每种 Agent 的认证方式略有不同:
| Agent | 认证方式 |
|:—|:—|
| Claude Code | 沙箱内 /login,或 sbx secret set -g anthropic |
| Codex | sbx secret set -g openai --oauth,或设置 OPENAI_API_KEY |
| OpenCode | 按使用的 Provider 配置(OpenAI/Anthropic/Google 等) |
认证凭据通过 Docker Sandboxes 的 Secret Manager 注入,Agent 本身不接触宿主机上的凭据文件。
网络策略:从宽松到封锁
Code Airlock 默认使用 Docker Sandboxes 的 balanced 网络策略。对于需要更严格控制的场景,提供了 lockdown 模式:
code-airlock up code-airlock lockdown
lockdown 将全局网络策略设为 deny-all,然后只放行预设的 allowlist(默认包含 Anthropic API、OpenAI API、GitHub、npm registry)。你也可以通过 sandbox.conf 自定义:
ALLOW=api.anthropic.com,*.anthropic.com,github.com,*.github.com,registry.npmjs.org
想查看当前哪些主机被允许或阻止,运行:
code-airlock net
配置种子化:把 Agent 技能带进沙箱
默认情况下,MicroVM 里是一个干净的 Agent 环境——没有你宿主机上积累的技能(skills)、自定义指令(CLAUDE.md)、子代理(subagents)。Code Airlock 的 --seed-config 参数可以把这些配置复制进沙箱:
code-airlock --seed-config up
它会复制每种 Agent 的常用配置目录:
| Agent | 复制的路径 |
|:—|:—|
| Claude Code | ~/.claude/CLAUDE.md, ~/.claude/commands/, ~/.claude/skills/ |
| Codex | ~/.codex/AGENTS.md, ~/.codex/skills/, ~/.codex/prompts/ |
| OpenCode | ~/.config/opencode/AGENTS.md, ~/.config/opencode/skills/ |
注意:凭据文件、历史记录、缓存和高频日志不会被复制,认证始终通过 Secret Manager 进行。
远程 / 无人值守运行
对于在远程服务器上运行 Agent 的场景,Code Airlock 支持 tmux 模式:
code-airlock --tmux up code-airlock attach code-airlock --tmux-detached up
这样你就可以在 SSH 断开后让 Agent 继续干活,完事后再连回来审查结果。
完整的命令参考
| 命令 | 作用 |
|:—|:—|
| up [-- agent-args] | 创建并启动 MicroVM 沙箱 |
| run " | 启动沙箱并直接给 Agent 指派任务(非交互模式) |
| setup | 引导安装缺失的依赖 |
| doctor | 检查 sbx、KVM、Git 等环境状态 |
| status | 查看当前仓库的沙箱和 tmux 状态 |
| attach | 连接到 Code Airlock 的 tmux 会话 |
| init | 在目标仓库创建 AGENTS.md 启动文件 |
| shell | 在运行的沙箱中打开 Shell |
| fetch | 把沙箱提交拉取到本地仓库 |
| diff [base] | 查看沙箱分支的差异 |
| review [base] | 打开可视化 diff 工具审查 |
| merge [base] | 合并沙箱分支到目标分支 |
| pr [base] [branch] | 推送沙箱分支并创建 Pull Request |
| lockdown | 设置全局 deny-all 策略并应用 allowlist |
| unlock | 重置 Docker Sandboxes 网络策略 |
| stop | 停止沙箱但保留 VM 和提交 |
| rm | 删除沙箱(含提交提醒) |
与裸用 Docker Sandboxes 的区别
你可能想问:直接用 sbx 不就行了吗?是的,Code Airlock 本身就是一个薄封装,不是替代品。
用 sbx 直接操作适合需要完全控制沙箱生命周期的场景;而 Code Airlock 帮你把 AI 编码 Agent 的常用流程 事先接好了:
- 默认 clone 模式(宿主机只读)
- 每仓库独立的稳定沙箱命名
- 一键启动 Agent
fetch/diff/review/merge的审查流水线- 网络策略的 lock/unlock 快捷命令
- 多 Agent 配置的种子化同步
把安全边界下移到 MicroVM 层,让 Agent 在隔离环境里自由发挥——这不是要取代 Agent 自身的权限模型,而是在它下面再垫一层防弹衣。