2026年9月23日 1 分钟阅读

Brig 完全指南:用 MicroVM 给 AI 编码 Agent 一道真正的边界

tinyash 0 条评论

AI 编码 Agent 最大的风险,不是它偶尔写错一行代码,而是它能把“写错”扩大成一次真实的系统操作:读到不该读的目录、改坏工作区,或者把能看到的凭据发送出去。Brig 的思路很直接:把 Agent 放进本机 MicroVM,只把明确指定的项目目录挂进去,任务结束后还可以把整个沙箱删除。

Brig 是一个 Go 编写的命令行工具,目前处于 0.1.0-rc 系列,采用 Apache-2.0 许可证。它不是把 Agent 包在一个共享宿主机内核的普通进程或容器里,而是通过 macOS 的 Virtualization Framework,或 Linux 的 nerdctl、containerd 与 urunc shim,启动独立的客体内核。

它到底隔离了什么?

默认情况下,Agent 能访问自己的 guest home、运行命令时指定的项目,以及你显式交付给它的凭据;其他宿主机目录、钥匙串、SSH Agent 和宿主机的 Secret Manager 不会自动暴露。项目挂载是读写的,因此隔离不等于“项目不会被改动”,而是把可被改动的范围缩小到你选择的目录。

| 场景 | 传统直接运行 | Brig MicroVM |

| — | — | — |

| Agent 访问宿主机其他目录 | 容易因进程权限或环境变量扩大范围 | 默认不挂载 |

| 宿主机密钥与 SSH Agent | 可能被继承或读取 | 不自动提供 |

| 项目文件 | 直接读写 | 仍然读写,但边界明确 |

| 网络 | 通常沿用宿主机网络 | 可选 shared、isolated 或 offline |

| 清理实验环境 | 需要手动回滚 | 可停止并删除沙箱 |

安装与第一次运行

macOS Apple Silicon 可以通过 Homebrew 安装:

brew tap brig-sh/brig
brew trust brig-sh/brig
brew install --cask brig

Linux 需要自行准备 nerdctl、containerd 和 urunc。官方安装脚本只安装 brigbrigdcosign,不会替你安装这些运行时依赖。安装后先检查环境:

brig version
brig doctor

把一个测试项目交给 Claude Code:

mkdir -p ~/code/demo
brig run claude ~/code/demo

第一次运行会下载 guest image 和启动所需的 boot assets,因此通常会比后续启动慢。Agent 在沙箱里看到的工作目录是 /work/demo,而不是宿主机的原始路径。

三个最实用的工作流

1. 让 Agent 在临时分支里做大改动

你可以为同一个 Agent 创建彼此独立的 session。claudeclaude@refactor 使用不同的沙箱与 guest home,适合把重构、升级依赖等高风险任务拆开:

brig run claude@refactor ~/code/demo
brig info claude@refactor

brig info 会在不启动 Agent 的情况下打印执行 envelope,包括隔离方式、网络、镜像和凭据名称。先看 envelope,再允许 Agent 工作,比只看一条“启动成功”消息更可靠。

2. 完成后保留状态,或彻底清理

brig stop claude
brig rm claude

stop 只停止沙箱并保留状态;rm 会移除沙箱。两者都不会删除 guest home 对应的主机目录,也不会删除项目目录。换句话说,删除运行环境和删除代码是两件事,可以分别控制。

3. 对网络敏感的任务使用 offline 或 isolated

最简单的断网方式是:

brig run claude ~/code/demo --network offline

Agent 仍能运行,也能读写挂载的项目,但没有出站网络。需要联网、又不想让所有沙箱共享同一网络时,可以使用:

brig run claude ~/code/demo --network isolated

要注意平台限制:macOS 的 isolated 需要 hvi 后端;Linux 可以由 nerdctl 为每个沙箱创建独立网络。出站策略目前只在 macOS 的 hvi 后端上强制执行,Linux 运行时会拒绝启动无法执行的策略,而不是假装策略已经生效。

凭据不是“自动安全”的

Brig 不会在 brig run 路径上读取宿主机钥匙串或任意凭据文件。可以先在自己的存储中导入,再把特定凭据交给 profile:

brig secret import claude-code
brig run claude-code

文件交付能避免凭据出现在 /proc//environ,但 Agent 依然可以使用它。尤其是 Claude Code 的刷新令牌,一旦交付给 guest,长时间运行的 Agent 可能持续刷新访问令牌。因此,MicroVM 解决的是“凭据在哪里可见”的边界问题,不代表交付后的凭据失去了权限。

Linux 上一个容易忽略的降级选项

Linux 默认使用 urunc 启动 MicroVM;如果显式设置下面的变量,则会切换到普通 runc 容器:

BRIG_CONTAINERD_RUNTIME=runc brig run claude

这会共享宿主机内核,边界弱于 MicroVM。使用前应通过 brig info claude 检查 ISOLATION 行,确认本次运行究竟是 microVM 还是 container,不要只依据配置文件推测。

适合谁?

如果 Agent 只在一次性示例仓库中运行,普通容器或权限较低的系统用户可能已经够用。Brig 更适合需要本地执行、又不希望 Agent 看见整台机器的开发者:例如让 Agent 批量重构真实项目、测试不熟悉的依赖升级、运行可能执行任意命令的自动化流程,或在多个独立 session 中并行验证方案。

它仍是预发布项目,平台支持和命令稳定性应以官方 stability 文档为准;网络策略也不是所有后端都能强制执行。正确的使用方式不是把 Brig 当成“绝对安全开关”,而是把它当成一层可检查、可销毁、范围明确的执行边界。

相关链接

发表评论

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