你有没有过这种体验:Claude Code 吭哧吭哧干到一半,突然弹个框问你"Do you want to proceed?",你点完 Yes 刚喝口水,它又弹一个。一个任务下来,打断你七八次,活没干完,水倒是多喝了两杯。
给完整权限吧?想想 rm -rf / 的都市传说,手就抖。不给吧?这工具基本没法用。
这个困境说白了就一句话:你既想让 AI 放手干活,又怕它把你家拆了。
今天聊一个开源项目叫 Code Container,用 Docker 容器解决了这个问题。装上之后,Claude Code、Codex、OpenCode 随便你怎么折腾,rm -rf 随便跑。反正炸的是容器,你本机毫发无伤。
那个让人崩溃的下午
先说个真实场景。作者 Kevin 有一次分析一个 monorepo,计划是 Claude Code 看后端,他看前端,两人并行干活,效率拉满。
并行持续了大概 5 秒。
“Do you want to proceed?” — 点 Yes。 “Do you want to proceed?” — 再点 Yes。 “Do you want to proceed?” — 咬着牙点 Yes。
五分钟后他发现:自己不是在编程,是在当 AI 的前台保安——唯一的职责就是不断点头说"进去吧进去吧"。人在这头等着 AI 返回结果,AI 在那头等着人点确认按钮。互相等,双输。
这就好比你在厨房让助手切菜,他每切一刀都要回头看你一眼,问"这一刀行不行?"——你是让他切还是不让他切?
三条路,你选哪条?
面对这个困境,市面上的解法就三种:
| 方案 | 做法 | 后果 |
|---|---|---|
| 方案 A:全程保姆式 | 每次弹窗都手动确认 | 人被绑死,效率极低 |
| 方案 B:直接裸奔 | --dangerously-skip-permissions | 快是快了,但一颗 rm -rf 教做人 |
| 方案 C:容器隔离 | Docker 里随便跑,炸了重建 | 又快又安全 |
方案 A 是折磨自己,方案 B 是赌命。而方案 C,就是 Code Container 做的事。
Code Container 是什么?
一句话概括:把你的项目目录挂载进 Docker 容器,让 AI 编程工具在里面裸奔,宿主机不受影响。
它的原理简单到让人拍大腿——既然你怕 AI 删东西,那就让它删嘛,反正删的是容器里的。最坏情况?删了容器重建一个,也就一秒的事。
# 一行命令安装
npm install -g @aerovato/container
# 初始化(首次运行,5 分钟搞定)
container init
# 然后随便进一个项目
cd /path/to/your/project
container
# 进去了,随便造
整个项目就是一坨 shell 脚本加一个 Dockerfile,全部开源。核心逻辑不到 300 行。
它是怎么运作的
当你执行 container 时,背后做了这几件事:
- 创建或恢复容器:容器名是
container-{项目名}-{路径哈希},每个项目一个独立容器,互不干扰 - 挂载项目目录:你的项目挂到容器的
/root/{项目名},代码直接可用 - 挂载 AI 工具配置:
.codex、.config/opencode、.claude等配置文件自动挂进去,对话历史、工具链配置全保留 - 只读挂载敏感文件:SSH key 和 Git 配置以只读方式挂载,commit、push 该咋用咋用
- 退出自动停容器:exit 之后容器自动停止,下次进来一切照旧
┌─────────────────────────────────────────┐
│ 你的宿主机 │
│ ┌───────────────────────────────────┐ │
│ │ Docker 容器 │ │
│ │ /root/your-project ← 挂载项目 │ │
│ │ ~/.claude ← 挂载配置 │ │
│ │ ~/.ssh ← 只读挂载 │ │
│ │ │ │
│ │ AI 在这里裸奔 │ │
│ │ rm -rf / ← 炸的是容器,关你屁事 │ │
│ └───────────────────────────────────┘ │
│ 你的本机毫发无伤 │
└─────────────────────────────────────────┘
启动速度方面,第一次创建容器大概一秒,后续恢复基本瞬间完成。Kevin 说他现在每天用,从来没觉得有等待时间。
实战:怎么用?
假设你有一个 Rust 项目叫 my-crate,想用 OpenCode 重构某个模块。
第一步:安装并初始化
npm install -g @aerovato/container
container init
初始化过程会引导你选择运行时(Docker 或 Podman)、配置基础镜像、选择要安装的工具包。全程交互式,跟着提示走就行。
第二步:进项目开干
cd ~/projects/my-crate
container
进去之后,你会发现:
- 项目代码就在
/root/my-crate下 - Git 配置和你本机一模一样,可以直接 commit
- OpenCode / Codex / Claude Code 全都装好了,直接敲命令启动
- 而且——不用再等权限确认了,直接给完整权限,让它放手干
第三步:多容器并行
这个特性我个人觉得最实用。你可以同时开两个终端:
# 终端 1:让 Claude Code 重构后端
cd ~/projects/my-monorepo/backend
container
# 进去直接 claude,把活扔给它
# 终端 2:你在这头写前端
# 各干各的,互不打断
同一个项目甚至可以起多个容器实例,一个干重构、一个跑测试、一个写文档。每个都是独立沙箱,随便折腾。
什么场景最适用?
场景一:接手的屎山代码
新接手的项目,AI 一上来就要大改。你敢让它直接改?反正我不敢。扔容器里,改坏了就坏了,看看它到底能改成啥样。
场景二:多 AI 工具并行
上午用 Claude Code 写业务逻辑,下午用 Codex 处理复杂架构,晚上用 OpenCode 做代码审查。三个工具共享同一套配置和对话历史,不用切来切去重新配置。
场景三:实验性项目
想试试让 AI 从头做一个项目?新建一个目录,container 进去,让它随便搞。不满意就 docker rm 重来,零成本试错。
定制化:让容器更顺手
Code Container 完全开源,你想怎么改就怎么改。把仓库 clone 下来,告诉你的 AI 助手你想要什么:
git clone https://github.com/aerovato/container
# 然后随便让 Claude Code 帮你改
一些常见的定制:
# 在容器里装 Rust 和 Go 工具链
# 把基础镜像换成 Alpine Linux(体积更小)
# 把 ~/.vimrc 挂进容器
# 加个自动安装项目依赖的钩子
文档很全,喂给 AI 助手它就能看懂并帮你改。
最后的建议
这个工具的思路简单到让人想问"为什么没人早点做"。就一个容器,几行 shell 脚本,解决了 AI 编程工具最烦人的一个问题。
我自己用了一段时间后的感受是:一旦你体验过让 AI 在容器里裸奔的感觉,你就再也回不去手动确认的日子了。 那种"随便跑,出不了事"的安心感,和"不用管它,我干我的"的自由感,比想象中爽得多。
当然,容器不是万能的。它解决的是文件系统层面的安全问题——AI 删文件、写脏数据这些事。但是对于AI 调用外部 API、访问网络这些,你还是得留个心眼。不过话说回来,有容器这层隔离在,至少你把最坏情况的破坏半径锁死在了容器内部。
FAQ
Q:这和直接在本地跑有什么区别?
最大区别是安全感。本地跑你永远提心吊胆,容器里跑你心态完全不一样——“炸了?重建呗。“这种心态差异直接决定了你愿不愿意让 AI 放手干活。Claude Code 自己的权限系统 设计得并不差,但加上容器这层物理隔离,相当于上了双保险。
Q:容器的性能损耗大吗?
几乎没有。文件读写走的是 bind mount,和本地差不多。网络栈复用宿主机。启动和销毁都在一秒内完成。
Q:多个容器之间能共享配置吗?
可以。.claude、.codex 等配置目录是共享挂载的,你在项目 A 里调好的 skill,项目 B 里直接用,对话历史也互通。
Q:Git 操作正常吗?
完全正常。SSH key 和 .gitconfig 以只读方式从宿主机挂载进去,commit、push、pull 跟本地一模一样。
Q:Windows 能跑吗?
目前主要支持 Linux 和 macOS。Windows 可以通过 WSL2 的 Docker 来跑,体验稍差一点但也能用。
Q:和 cc-codex-portal 之类的在线服务比起来怎么样?
这是两种不同的思路。Code Container 解决的是本地 AI 编程工具的权限和隔离问题;在线服务(比如梦兽编程的 AI 编程助手 )解决的是模型接入和成本问题——你不用自己折腾 API key、不用担心额度上限。两者并不冲突,甚至可以搭配使用:用在线服务获取模型能力,用容器保护本地环境。
聊了这么多容器隔离,说白了就是想让 AI 干活更顺手。如果你也在折腾 AI 编程工具,关注「全栈之巅-梦兽编程」公众号,每周分享 AI 编程实战经验和最新工具。
也欢迎了解 梦兽编程 AI 编程助手服务 ,一站式接入 Claude、Codex、GPT 等模型,不用折腾 API,不用操心额度,开箱即用。

