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 實驗或臨時環境提供了一個快速、封閉、不礙事的方案。