
yolobox v0.19.4
让你的AI全力出击。你的家目录保持在家。
██╗ ██╗ ██████╗ ██╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗
╚██╗ ██╔╝██╔═══██╗██║ ██╔═══██╗██╔══██╗██╔═══██╗╚██╗██╔╝
╚████╔╝ ██║ ██║██║ ██║ ██║██████╔╝██║ ██║ ╚███╔╝
╚██╔╝ ██║ ██║██║ ██║ ██║██╔══██╗██║ ██║ ██╔██╗
██║ ╚██████╔╝███████╗╚██████╔╝██████╔╝╚██████╔╝██╔╝ ██╗
╚═╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
让你的 AI 尽情放飞。你的主目录安然无恙。
文档:yolobox.dev
更新日志:CHANGELOG.md
在“yolo 模式”下运行 Claude Code、Codex、Kimi Code、Gemini、Antigravity、OpenCode、Copilot、Pi 或任何 AI 编码代理,而不会毁掉你的主目录。
问题所在
当你允许 AI 编码代理无需请求许可即可运行命令时,它们会变得极其强大。但只需一次被误解的提示词,再来一个 rm -rf ~,你就得从备份中恢复了(想得美,说得好像你有备份一样,哈哈)。
解决方案
yolobox 会在容器内运行你的 AI 代理,其中:
- 你的项目目录会挂载到其真实路径,例如
/Users/you/project - 代理在容器内拥有完整权限和 sudo
- 除非你明确选择启用,否则你的主目录不会被挂载
- 持久化卷会在多次运行之间保留工具、配置和会话
- Claude、Codex 和 Kimi Code 内置了 yolobox 指引,因此它们能够理解自己所运行的沙箱环境
AI 可以在沙箱内彻底放飞。而你真正的主目录?不可触碰。
快速开始
# Install via Homebrew
brew install finbarr/tap/yolobox
# Or install via script
curl -fsSL https://raw.githubusercontent.com/finbarr/yolobox/master/install.sh | bash
然后在任意项目中:
cd /path/to/your/project
yolobox claude # Let it rip
其他 AI 快捷方式用法相同:
yolobox codex
yolobox gemini
yolobox kimi
yolobox agy
yolobox antigravity
yolobox opencode
yolobox copilot
yolobox pi
设置 default_harness = "codex" 可让直接运行 yolobox 时启动 Codex。当你想要手动 shell 时,使用 yolobox shell;当你想要在沙箱中运行单条命令时,使用 yolobox run <cmd...>。
里面有什么?
基础镜像自带 AI CLI、Codex 和 Claude ACP 适配器、Node.js、Python、Go、Bun、构建工具、Git、GitHub CLI、ripgrep、fd、fzf、jq、vim、RTK,以及常见的实用工具。
还需要别的?代理有 sudo。
在 yolobox 内,受支持的 AI CLI 会被包装以跳过权限提示。没有确认,没有护栏。只有纯粹未经过滤的 AI,正如自然所愿。
对于 ACP 客户端或编辑器,使用 yolobox run codex-acp 或 yolobox run claude-agent-acp 作为其 stdio 代理命令。这些适配器捆绑了兼容的引擎,并使用客户端的权限模式;yolobox 的 CLI YOLO 包装器和 --no-yolo 不会控制它们。现有的配置同步和身份验证选项仍然适用。启动示例见 ACP 客户端。
完整的工具列表、YOLO 模式包装器表、RTK 说明、npm 包新鲜度策略以及捆绑 CLI 升级行为,见里面有什么。
项目自定义
如果某个项目需要额外的工具或环境变量,可以添加一个小型项目配置,而不是 fork 整个基础镜像:
# .yolobox.toml
env = ["CODEX_HOME=/home/yolo/.codex-account"]
[customize]
packages = ["default-jdk", "maven"]
然后正常运行:
yolobox run mvn --version
项目级自定义还可以在基础镜像之上叠加一个 Dockerfile 片段。首次运行会构建一个派生镜像;之后的运行会复用它,直到基础镜像或自定义输入发生变化。
环境变量值请使用容器路径,因为它们会被直接传递给 yolobox 内的进程。env 值会原样传递给运行时;其中的任何内容都不会被解释。
若要在同一名称下向沙箱提供与宿主机不同的值——例如用只读令牌代替你的真实令牌——可以用 env_from_host(或 --env-from-host KEY=HOST_VAR)为其设置别名:
# .yolobox.toml
env_from_host = ["GH_TOKEN=YOLOBOX_READONLY_GH_TOKEN"]
该别名拥有该变量:它会抑制同一键的自动透传和 --gh-token,并且如果宿主机变量未设置,yolobox 会拒绝启动,因此它所替换的令牌绝不会意外泄漏进来。
项目环境设置见配置,包安装、Dockerfile 片段、重建行为、升级行为以及完全自定义镜像见项目级自定义。
常见工作流
yolobox setup # Configure global defaults
yolobox config # Show resolved config for this project
yolobox claude --docker --gh-token # Give the agent Docker and GitHub access
yolobox claude --claude-config --no-claude-auth # Share config, keep the box login independent
yolobox codex --rtk # Enable RTK command-output compression
yolobox run --no-network make test # Run one command with no network
yolobox fork --name bruno codex # Give an agent its own project copy
yolobox upgrade # Update binary and pull the latest image
yolobox update-agents # Update AI CLIs and ACP adapters in the persistent box
--claude-config 会增量同步持久的 Claude 设置,并以读写方式实时挂载宿主机的 ~/.claude/projects,以便会话恢复历史保持最新。--no-claude-auth 会保持沙箱登录独立,但不会使该项目历史挂载变为只读。
自动 RTK 设置会保持遥测禁用,除非你在沙箱内通过 rtk telemetry enable 以交互方式选择启用。
详细参考有意放在文档站点中:
理念:这是 AI 的盒子,不是你的
yolobox 是为 AI 代理设计的,不是为人类设计的。你启动 AI,然后让它工作。
代理在容器内拥有 sudo。如果它需要编译器、数据库、包或框架,它可以自行安装。命名卷会在会话之间保留这些设置,因此你不必把 README 变成上百行的包矩阵。把它指向你的项目,然后让它开火。
安全模型
yolobox 是防意外,而不是什么神奇的防容器逃逸定理。
它有助于保护你的主目录、SSH 密钥、dotfiles、无关项目以及大多数宿主机文件系统状态,免受粗心的破坏性命令影响。它不保护你挂载的项目目录、你明确转发的机密、你明确桥接的宿主机操作,也不保护宿主机内核免受运行时逃逸漏洞影响。
若要更严格的沙箱,可以组合使用如下标志:
yolobox claude --no-network --no-env-passthrough --readonly-project --exclude ".env*" --exclude "secrets/**"
如果你担心的是恶意代码而不是粗心代码,请使用更强的隔离,例如 rootless Podman 或虚拟机。完整的威胁模型和加固选项见安全模型。
开发
make build
make test
make lint
make image
贡献者工作流、文档站点命令、版本管理和发布规则见贡献。
许可证
MIT