如何在Dev Container中使用Pilot Shell:沙箱隔离部署完整教程
【免费下载链接】pilot-shellHow real engineers run Claude Code and Codex: spec-driven planning, enforced TDD, persistent memory, and quality enforcement on all levels. Make your agents production-ready.项目地址: https://gitcode.com/GitHub_Trending/cl/pilot-shell
Pilot Shell是帮助工程师用规范化流程驾驭 Claude Code 与 Codex 的 AI 编程外壳:spec 驱动规划、强制 TDD、持久化记忆与全流程质量门禁。把它装进Dev Container做沙箱隔离部署,是团队保证环境一致、又安全处理不可信代码的首选方式——本教程带你 5 步完成,开箱即用。
为什么要在 Dev Container 中部署 Pilot Shell?
直接在宿主机上跑 AI Agent,有两个常见痛点:
- 环境漂移:同事 A 装的是 Node 20,你装的是 Node 22,Agent 的行为可能完全不同;
- 隔离不足:处理开源项目或客户代码时,Agent 生成的命令、依赖都直接落在你的系统上。
而 Dev Container 提供的正是可复现的沙箱:所有依赖锁在容器里,配置文件版本化管理。Pilot Shell 官方就提供了开箱即用的 .devcontainer 配置,并且安装器会自动识别容器环境,跳过 Homebrew 等系统级依赖,避免在容器里做无意义的系统配置。
💡 对团队来说,这还意味着"一个配置 = 所有人的环境":Hooks、Rules、MCP 服务器、持久记忆、Console 仪表盘全部在容器内一致运行。
一键安装步骤:3 步在 Dev Container 中跑起 Pilot Shell
第 1 步:获取 .devcontainer 配置
先克隆 Pilot Shell 仓库,然后把项目内置的.devcontainer目录复制到你自己的项目根目录:
git clone https://gitcode.com/GitHub_Trending/cl/pilot-shell cp -r pilot-shell/.devcontainer /path/to/your-project/你的项目里只需要 3 个文件:
- .devcontainer/devcontainer.json —— 容器主配置,定义了语言版本、VS Code 插件、端口转发和持久化挂载;
- .devcontainer/Dockerfile —— 基础镜像与系统依赖;
- .devcontainer/devcontainer-lock.json —— 依赖锁文件,保证团队构建一致。
第 2 步:用 Dev Containers 打开项目
在 VS Code 中执行Dev Containers: Reopen in Container(或右键项目文件夹选择相同命令)。首次构建后,容器会自动装好:
| 组件 | 版本 | 用途 |
|---|---|---|
| Python | 3.12 | Pilot 安装器与 Hooks 运行 |
| Node.js | 22 + nvm/pnpm | Console 前端与 Agent 运行时 |
| uv | latest | 现代 Python 包管理 |
| Go | latest + golangci-lint | 多语言质量门禁 |
| Claude Code | 官方 feature | 在容器内直接使用 |
| fish / zsh / fzf / ripgrep | — | 开发体验增强 |
第 3 步:等待自动安装完成
注意 devcontainer.json 里的postCreateCommand——容器构建完成后会自动执行官方安装脚本,即仓库根目录的 install.sh 所对应的 8 步安装流程。你什么都不用敲,等终端输出成功提示即可。
之后在容器内运行claude或codex,Pilot Shell 自动加载,/spec、/fix、/investigate等全部工作流直接可用。
沙箱隔离深度解析:预装依赖如何让 /sandbox 开箱即用
这是本教程最关键的部分:Pilot Shell 的 Dockerfile 专门为沙箱做了预配置。
预装的沙箱工具链
Dockerfile 基于mcr.microsoft.com/devcontainers/base:trixie,除了常见的 build 工具与 git、jq、chromium 外,还预装了 4 个关键工具:
bubblewrap—— Linux 下 Claude Code/sandbox命令的隔离基础;socat+iptables+ipset—— 沙箱网络转发与流量管控。
意味着你在容器里对 Claude Code 执行/sandbox时,无需任何额外配置即可生效——这正是"处理不可信代码"时最想要的纵深防御:容器隔离一层,沙箱再隔离一层。
端口转发:在宿主机浏览器里打开 Console
devcontainer.json 中配置了:
forwardPorts: [41777]—— Pilot Console 的本地 Web 仪表盘端口;portsAttributes中标注Pilot Console,端口面板一眼可辨。
容器启动后,宿主机访问http://localhost:41777即可打开仪表盘:会话列表、记忆库、规范状态、用量统计、设置全部可视化管理。
⚠️ 如果
41777与本地其他服务冲突,可在 Console 的Settings → Console → Worker Port中修改端口,然后重启 Agent 会话即可。
卷挂载:持久化你的 Claude 配置
容器默认是"用完即弃"的,但 devcontainer.json 通过命名卷解决了这个问题:
source=claude-code-config-${devcontainerId},target=/root/.claude,type=volume/root/.claude被挂载到持久卷上——即使重建容器,登录凭证、记忆与会话历史都不会丢。
按项目定制 Dev Container:最快配置方法
官方配置覆盖了多数场景,但按需调整更省心:
- 改基础镜像:编辑 Dockerfile 第 1 行的
FROM,换成你团队的标准镜像(保留 bubblewrap 等 4 个沙箱依赖即可); - 增删 VS Code 插件:修改
devcontainer.json的customizations.vscode.extensions列表; - 增删语言工具链:
features字段中每项都可独立开关,比如纯 Web 项目可以删掉 Go; - 改工作区路径:
workspaceFolder默认挂载在/workspaces/<项目名>,多项目并行互不干扰。
完整的安装原理(8 步流程、回滚机制、容器自动检测逻辑)可参阅 docs/docusaurus/docs/getting-started/installation.md 中的 Dev Container 章节,以及安装器源码 installer/steps/prerequisites.py。
常见问题(FAQ)
Q:容器里还需要单独安装 Claude Code 吗?不需要。官方配置已通过claude-codefeature 与 VS Code 插件内置安装器,容器构建时自动完成。
Q:重建容器后 Pilot Shell 要重装吗?配置与登录态在持久卷里,但建议养成习惯:删除重建容器后跑一次安装脚本即可幂等重装,2 分钟内完成。
Q:Codex 用户能用吗?可以。把 VS Code 插件换成 Codex 对应扩展,或在容器内安装 Codex CLI,安装器会自动检测到并安装 Codex 侧资产(skills、review agents、config 合并)。
总结
| 能力 | 状态 |
|---|---|
| 环境一致性 | ✅ 依赖版本锁定在 devcontainer.json |
| 沙箱隔离 | ✅ /sandbox 工具链预装,开箱即用 |
| 数据持久化 | ✅ /root/.claude 命名卷挂载 |
| 可视化监控 | ✅ 端口 41777 转发至宿主机 |
| 自动安装 | ✅ postCreateCommand 零操作 |
现在,用Reopen in Container打开你的项目,享受一个"干净、一致、带沙箱"的 Pilot Shell 工作环境吧 🚀
【免费下载链接】pilot-shellHow real engineers run Claude Code and Codex: spec-driven planning, enforced TDD, persistent memory, and quality enforcement on all levels. Make your agents production-ready.项目地址: https://gitcode.com/GitHub_Trending/cl/pilot-shell
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考