Codex: Codex CLI Skills、沙箱与示例
最后更新:2026-08-31
CLI 是 Codex 最灵活的使用方式,本节深入 CLI 环境下的 Skills、沙箱配置与实用示例。
📋 前置知识:了解 Codex CLI 基本操作
1. 你将学到
- CLI Skills 管理
- 沙箱安全详解
- 实用示例集
- CLI 提示词技巧
2. CLI Skills 管理
(1) 列出可用 Skills
BASH
codex --list-skills
(2) 使用 Skill
BASH
# 指定 Skill 执行任务
codex --skill code-review "审查 src/auth.ts"
# 组合使用
codex --skill security --sandbox readonly "扫描安全漏洞"
(3) 自定义 Skill 位置
BASH
# 指定 Skills 目录
codex --skills-dir ./my-skills "添加登录功能"
(4) Skill 文件格式
MARKDOWN
<!-- .codex/skills/api-endpoint.md -->
# API Endpoint Generator
## 角色
FastAPI 端点开发专家
## 规则
- 使用 Pydantic 模型
- 包含错误处理
- 添加 Swagger 文档
- 编写 pytest 测试
## 工作流
1. 定义请求/响应模型
2. 实现端点逻辑
3. 添加错误处理
4. 编写测试
5. 确保 pytest 通过
3. 沙箱安全详解
(1) 沙箱实现方式
| 方式 | 说明 | 安全级别 |
|---|---|---|
| Docker | 容器隔离 | 最高 |
| chroot | 目录隔离 | 中等 |
| 进程级 | 权限限制 | 基础 |
(2) Docker 沙箱配置
TOML
[sandbox]
type = "docker"
image = "codex-sandbox:latest"
memory = "2g"
cpus = 2
timeout = 600
# 挂载卷
volumes = [
"./src:/workspace/src",
"./tests:/workspace/tests",
]
# 环境变量
env = { "NODE_ENV" = "test" }
(3) 沙箱权限矩阵
| 操作 | readonly | workspace-write | full-access |
|---|---|---|---|
| 读取文件 | ✅ | ✅ | ✅ |
| 写入工作区 | ❌ | ✅ | ✅ |
| 写入系统 | ❌ | ❌ | ✅ |
| 执行命令 | ❌ | ⚠️ 确认 | ✅ |
| 网络访问 | ❌ | ❌ | ✅ |
▶ 示例 1: Alice 的安全配置
TOML
# Alice 的沙箱配置
[sandbox]
type = "docker"
memory = "4g"
cpus = 4
# 允许的操作
allowed_commands = [
"npm test",
"npm run lint",
"git status",
"git diff",
"tsc --noEmit",
]
# 禁止的操作
blocked_commands = [
"rm -rf /",
"sudo",
"curl * | sh",
]
# 资源限制
max_file_size = "10MB"
max_execution_time = 300
4. 实用示例集
(1) 项目初始化
BASH
codex "初始化 Next.js 14 项目:TypeScript + Tailwind + ESLint + Prettier,创建标准目录结构"
(2) Bug 修复
BASH
# 从错误日志修复
cat error.log | codex --full-auto "分析错误日志,定位根因,修复代码"
# 从 Issue 修复
codex "修复 Issue #42:用户注册后收不到验证邮件"
(3) 测试生成
BASH
# 为所有源文件生成测试
codex --full-auto "为 src/ 下所有 .ts 文件生成对应的 .test.ts,使用 vitest"
# 补充测试覆盖
codex "检查测试覆盖率,为低于 80% 的文件补充测试"
(4) 代码重构
BASH
# 框架迁移
codex "将所有 Class 组件重构为函数式组件 + Hooks"
# API 迁移
codex "将 REST API 调用迁移为 tRPC,保持功能一致"
(5) 文档生成
BASH
# API 文档
codex "为所有 API 端点生成 OpenAPI/Swagger 文档"
# README
codex "根据项目结构和代码,生成 README.md"
▶ 示例 2: Bob 的一天
BASH
# 早上:拉代码 + 修复 lint
git pull
codex --full-auto "修复所有 lint 错误"
# 上午:新功能
codex "添加用户头像上传功能,支持裁剪和压缩"
# 下午:Bug 修复
codex "修复支付超时问题,添加重试机制"
# 傍晚:测试
codex "为今天的变更补充集成测试"
# 晚上:文档
codex "更新 API 文档和 CHANGELOG"
5. CLI 提示词技巧
(1) 精确文件引用
BASH
# 好的做法
codex "修改 src/auth/login.ts,添加 2FA 支持"
# 差的做法
codex "给登录加个功能"
(2) 包含验证
BASH
codex "优化数据库查询性能,确保 npm test 通过,对比优化前后的执行时间"
(3) 分步执行
BASH
# 复杂任务分步
codex "第一步:创建 Order 模型。完成后输出模型定义,我确认后继续第二步。"
(4) 引用参考
BASH
codex "创建 UserProfile 组件,参考 src/components/UserCard.tsx 的样式风格"
❓ 常见问题
Q CLI 的 Skills 和 App 的 Skills 一样吗?
A 格式一样,但 CLI 需要通过
--skill 参数指定,App 可以通过界面选择。Q 沙箱会影响性能吗?
A Docker 沙箱有一定启动开销(约 2-5 秒),但运行时性能差异不大。进程级沙箱几乎无开销。
Q CLI 能同时运行多个任务吗?
A 可以开多个终端窗口,每个运行一个 Codex 实例。建议使用 Worktrees 避免文件冲突。
Q 如何查看 CLI 的详细执行日志?
A 使用
--verbose 参数或 --log-file 指定日志文件。Q CLI 的非交互模式能处理确认请求吗?
A 需要
--approval-policy approve 或 --full-auto。否则非交互模式会卡住等待确认。📖 小节
- CLI Skills:
--skill指定,--list-skills查看 - 沙箱:Docker 最安全,进程级最轻量
- 实用示例:初始化 / Bug 修复 / 测试 / 重构 / 文档
- 提示词:精确引用 + 包含验证 + 分步执行
📝 作业
- 基础题(难度⭐):用 CLI Skills 完成一次代码审查。
- 进阶题(难度⭐⭐):配置 Docker 沙箱,在沙箱中执行任务。
- 挑战题(难度⭐⭐⭐):编写一个 CLI 自动化脚本,覆盖日常开发的所有 Codex 任务。