DiscoBox:为 AI 编程代理打造的一次性沙箱环境
DiscoBox 让 Claude Code、Codex、OpenCode 等编程代理在独立沙箱中运行,每个沙箱拥有源码…
DiscoBox 是一款专为 AI 编程代理设计的一次性沙箱工具,目前已支持 Claude Code、Codex 与 OpenCode 等主流终端代理。它让每个代理会话运行在独立环境中,互不干扰,开发者的本地工作区始终保持干净。
核心思路:每个代理一个独立沙箱
传统做法让多个 AI 代理共用同一份本地代码库时,往往会出现文件冲突、分支抢占、端口与数据库资源争用等问题。DiscoBox 的解法非常直接:每个代理克隆出一份独立的源码副本,各自拥有独立的 git 仓库、服务和 Docker 实例。开发者可以在同一仓库上并行启动 bug 修复、新功能开发甚至可丢弃的实验,同时继续在自己的 checkout 中工作。
基于 Git 的同步机制
DiscoBox 没有引入额外的同步层,依赖原生 git 完成代码流转:
- 沙箱从开发者本地仓库(指定 commit)克隆出一份副本,工作树中的未提交改动会被询问后带入。沙箱内的 origin 是只读的,代理无法直接推回开发者机器。
- 代理在沙箱内完成提交后,开发者可以执行
discobox apply把这些提交以 cherry-pick 方式合并回本地当前分支,保留原 commit 的作者、消息与边界。 - 也可以直接在沙箱内执行
git push并通过gh发起 Pull Request,提交方式与本地开发完全一致。 - 沙箱之间彼此不可见,它们的工作统一汇聚到开发者的本地仓库;一旦某个沙箱的结果被 apply,其他沙箱可通过
git fetch && git rebase拿到这部分改动继续构建。
冲突解决也发生在沙箱内:代理在沙箱里处理完毕后,开发者再 apply 重新 base 后的结果,合并压力始终留在沙箱一侧。
接入方式与编辑器支持
- 终端与 SSH:内置 TUI 界面,
discobox shell即可进入;创建沙箱时自动同步 SSH 配置,ssh $DISCOBOX_ID或按沙箱名直接连接均可使用。 - 编辑器与工具:提供
discobox tools vscode、discobox tools zed等命令在沙箱工作目录中打开对应编辑器;也支持通过.discobox/tools中的 YAML 或 front-matter 脚本声明自定义工具。任何支持 SSH 远程协议的编辑器都可直连。 - 桌面与浏览器:可通过 VNC 或 noVNC 加端口转发访问沙箱的图形桌面与浏览器,便于需要 GUI 的代理任务。
- 工具链:
direnv会自动加载项目声明的环境,包括 Nix 或 mise 配置。 - 自动化:CLI 与 OpenAPI 接口支持脚本化创建沙箱、授权凭证与回收结果。
安装与运行
DiscoBox 目前仍在积极开发中,支持 macOS、Linux 与 Windows。
- macOS / Linux(Homebrew):
brew install discobox-ai/tap/discobox - macOS / Linux(一键脚本):
curl -sSfL https://discobox.ai | sh - Windows(PowerShell):
irm https://discobox.ai/install.ps1 | iex
安装完成后,在仓库根目录下执行 discobox 即可打开启动器创建沙箱;代理完成提交后回到原仓库执行 discobox apply 即可把改动合并回来。
隔离与凭证管理
DiscoBox 同时使用虚拟机与容器进行隔离,代理可以在沙箱内自由安装软件包与运行命令而无需审批。其凭证机制设计为:开发者把 Git 托管平台 token 以 secret 形式传入,或由代理请求授权后由人工授予,沙箱内只持有占位符,避免长期凭证泄露风险。
对于运行在远端机器上的沙箱,客户端会在开发者保持连接时把新提交推入沙箱,需要时也可通过 discobox push 主动同步,确保远端沙箱始终基于最新代码工作。
