2026年7月11日 2 分钟阅读

AI 编码 Agent 在宿主机上裸奔?Code Airlock 用一次性 MicroVM 让它自由又安全

tinyash 0 条评论

“让它尽情发挥吧,它知道该怎么做。”

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

整个流程背后的机制是:

  1. Docker Sandboxes 创建一个带有 --clone 标志的 MicroVM,宿主机仓库以只读方式挂载进去
  2. Sandbox 内部自动 clone 了一份仓库副本,Agent 在这份副本上操作
  3. Agent 所有修改都在副本中提交(Git commit)
  4. 你从宿主机 fetch 沙箱分支,diff 查看差异,确认无误后 merge
  5. 沙箱可以被 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 自身的权限模型,而是在它下面再垫一层防弹衣

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。