Sandbox-bwrap-Nix:面向AI代理和实验的轻量级沙箱
一个结合 bubblewrap 和 Nix 的最小化沙箱,无需守护进程、无需镜像拉取、无需 root 权限,即可在不到一秒内为 AI 代理和实验提供隔离环境。
如果你在本地运行 AI 编程工具,一定担心代理误操作导致文件丢失。传统容器如 Docker 和 Podman 需要守护进程、镜像管理和 root 权限,启动慢且重量级。sandbox-bwrap-nix 提供了一个更简单的解决方案。
sandbox-bwrap-nix 是一个极简沙箱,结合 bubblewrap 和 Nix,为命令运行、AI 代理和实验提供隔离环境。它能在不到一秒内启动,无需守护进程、镜像拉取或 root 权限。只需运行一个脚本,即可进入一个干净、隔离的 shell。它适用于任何安装了 bubblewrap 并启用 flake 的 Nix Linux 机器。
工作原理很简单:项目由一个 shell 脚本调用 bwrap,挂载宿主机的 /nix/store 为只读,为沙箱创建独立的 /tmp、/home 和进程命名空间。宿主文件系统对沙箱不可见。然后脚本在沙箱内运行 nix develop,激活包含 git、bun、uv、gnumake 和 opencode 等工具的开发 shell。
适用场景包括:运行 AI 编程代理(如 OpenCode),代理可以操作代码库但无法访问真实主目录;实验 Nix 特性,不会污染宿主机环境;运行不可信脚本,沙箱有网络访问但无法触碰宿主文件。
隔离分为三层:目录隔离(仅暴露指定路径,主目录被替换为可重置的 sandbox-home);进程隔离(使用独立 PID 命名空间,防止代理干扰其他进程);环境隔离(启动时清空环境变量,从零建立干净环境)。
不过,它不是完整的容器,没有镜像管理、层缓存或注册表,共享宿主网络和内核。它比 Docker 更轻量,但仅限 Linux 且需要 Nix。
使用方法:克隆仓库并运行 start-sandbox.sh。可以设置别名便于调用。进入沙箱后,可以像普通用户一样安装 Nix 包,运行 opencode,编辑文件。所有操作都不会影响真实系统。
sandbox-home 预配置了 .bashrc(带 git 分支提示和别名)、nix.conf(启用 flake)以及 opencode 配置。开发 shell 包含 nix、git、bun、uv、opencode、gnumake、micro、less 和 bashInteractive。可通过编辑 flake.nix 添加更多工具。
与普通 nix develop 相比,sandbox-bwrap-nix 限制了代理对文件系统的访问。与 Docker 相比,它更简单快速,但可移植性较差。项目结构小巧:start-sandbox.sh、flake.nix、flake.lock 和 sandbox-home 目录。
sandbox-bwrap-nix 解决了特定问题,为 AI 编码代理、Nix 实验或临时环境提供了一个快速、封闭、不碍事的方案。