module1
20 分钟

codex.yaml 项目管理

学习进度

当前模块0/6 课
总进度0/36 课
学习时长0 分钟

学习目标

  • 理解 codex.yaml 的作用与配置层级
  • 配置项目级与全局级 codex.yaml
  • 设定编码标准、技术栈、命名规范等自定义指令
  • 管理多项目时保持配置一致性和差异

005 codex.yaml 项目管理

用 codex.yaml 统一团队编码标准,让 Codex 精准适配你的每个项目。

学习目标

完成本课程后,你将能够:

一、什么是 codex.yaml

`codex.yaml` 是 Codex CLI 的项目配置文件,功能类似于 Claude Code 的 CLAUDE.md 文件或 Cursor 的 `.cursorrules`。它告诉 Codex:

  • 这个项目是什么技术栈
  • 遵循什么编码规范
  • 使用什么默认模型
  • 有哪些自定义指令

Codex 启动时会**自动读取**当前目录及父级目录中的 `codex.yaml`,并据此调整行为。

二、配置层级与优先级

Codex 支持三级配置,优先级从高到低:

1. 项目级 codex.yaml       (最高优先级)
2. 父目录级 codex.yaml      (中优先级,向上查找)
3. 全局级 ~/.codex/codex.yaml (最低优先级,兜底配置)

配置加载逻辑

当你在 `/home/user/projects/my-app/src/components/` 目录下启动 Codex,它会依次查找:

  1. `./codex.yaml`(当前目录)
  1. `../codex.yaml`(父目录,项目根目录)
  1. `../../codex.yaml`(继续向上,直到文件系统根)
  1. `~/.codex/codex.yaml`(全局兜底)

就近的配置会**覆盖**远处配置中的同名字段。

三、完整配置示例

项目级 codex.yaml(推荐配置)

# ============================================================
# codex.yaml — 项目级配置
# 位置:项目根目录
# ============================================================

# —— 基础设置 ——
model: o4-mini                # 默认模型:GPT-4o | o4-mini
language: zh-CN               # 交互语言:zh-CN | en-US

# —— 项目信息 ——
project:
  name: trustcargo-platform
  type: web                   # web | cli | library | mobile | desktop
  framework: next.js          # 主框架名称
  version: "14.2"
  language: typescript
  package_manager: pnpm       # npm | yarn | pnpm | bun

# —— 编码风格 ——
style:
  indent: 2                   # 缩进空格数
  quotes: single              # single | double
  semi: true                  # 是否使用分号
  trailing_comma: es5         # none | es5 | all
  max_line_length: 100

# —— 命名规范 ——
naming:
  files: kebab-case           # kebab-case | camelCase | PascalCase | snake_case
  components: PascalCase
  functions: camelCase
  constants: UPPER_SNAKE_CASE
  types: PascalCase

# —— 技术栈约束 ——
constraints:
  no_any_type: true           # 禁止使用 TypeScript any 类型
  prefer_async_await: true    # 优先使用 async/await
  require_error_handling: true # 必须处理异常
  max_function_lines: 80      # 单个函数最大行数
  max_file_lines: 400         # 单个文件最大行数

# —— 自定义指令 ——
instructions: |
  你是一名熟悉跨境物流业务的全栈工程师。

  本项目使用以下技术栈:
  - 前端:Next.js 14 + TypeScript + Tailwind CSS + Zustand
  - 后端:Next.js API Routes + Prisma ORM + PostgreSQL
  - 测试:Vitest + Playwright
  - 部署:Vercel + Docker

  编码时请遵循以下规则:
  1. 所有 API 路由使用 Server Components 优先策略
  2. 数据库查询使用 Prisma,不要写原始 SQL
  3. 组件拆分粒度:每个组件只做一件事
  4. 优先复用 src/components/ui/ 下的已有组件
  5. 修改数据库 schema 后必须生成新的 migration
  6. 金额单位统一为"分"(避免浮点数精度问题)

# —— MCP 服务器 ——
mcp:
  enabled: true
  servers:
    - name: database
      command: npx
      args: ["-y", "@codex/mcp-server-postgres"]
      env:
        DATABASE_URL: "${DATABASE_URL}"

# —— Hooks ——
hooks:
  pre_commit:
    - command: "pnpm lint"
      description: "提交前运行 lint"
    - command: "pnpm typecheck"
      description: "提交前检查类型"

全局级配置(~/.codex/codex.yaml)

# 全局默认配置,应用于所有项目
model: o4-mini
language: zh-CN

style:
  indent: 2
  quotes: single
  semi: true

# 全局约束(可被项目级覆盖)
constraints:
  no_any_type: true
  prefer_async_await: true

四、自定义指令最佳实践

`instructions` 字段是 codex.yaml 中最强大的部分。它相当于给 Codex 写了一份"入职手册"。

应该写什么

类别示例内容
业务领域知识"支付状态包括:pending, paid, refunded, partial_refund"
架构决策"API 路由统一返回 { code, data, message } 格式"
命名约定"React Hook 必须以 use 开头,事件处理器以 handle 开头"
禁止事项"不要引入超过 50KB 的 npm 包"
文件组织"API 路由文件放 src/app/api/,业务逻辑放 src/services/"
测试规范"每个 service 函数必须有对应的 .test.ts 文件"

指令编写技巧

  1. **具体,不用抽象**:不说"写出好代码",而是"每个函数必须有 JSDoc 注释"
  1. **可验证**:每条规则 Codex 都应该能自行检查
  1. **按优先级排序**:最重要的规则放在前面
  1. **迭代更新**:每次发现 Codex 犯了重复错误,就加一条规则

五、多项目管理

策略一:全局兜底 + 项目覆盖

~/.codex/codex.yaml           ← 通用规则(缩进、分号、禁止 any)
~/projects/project-a/codex.yaml ← 项目 A 特有规则(Vue 生态、Element Plus)
~/projects/project-b/codex.yaml ← 项目 B 特有规则(React 生态、Ant Design)

策略二:Monorepo 场景

~/monorepo/codex.yaml              ← 大仓通用规则
~/monorepo/apps/web/codex.yaml     ← Web 应用特有规则
~/monorepo/apps/mobile/codex.yaml  ← 移动端特有规则
~/monorepo/packages/shared/codex.yaml ← 共享包特有规则

策略三:模板复用

# 创建项目模板
mkdir -p ~/templates/codex

# 为不同类型项目准备模板
~/templates/codex/nextjs.yaml      # Next.js 项目模板
~/templates/codex/express.yaml     # Express 项目模板
~/templates/codex/cli.yaml         # CLI 工具模板

# 新建项目时复制
cp ~/templates/codex/nextjs.yaml ./codex.yaml

六、本课总结

**核心要点:**

  • codex.yaml 是 Codex 的"项目入职手册",启动时自动读取
  • 三级配置:项目级 > 父目录级 > 全局级,就近覆盖
  • `instructions` 字段是配置灵魂——将团队规范写成可执行规则
  • 多项目用"全局兜底 + 项目覆盖"策略管理
  • 每次发现 Codex 重复犯同一个错误,就更新 codex.yaml

**下一步:** 最后一课将进入实战,用 Codex 从零搭建一个 Next.js 项目开发环境,并完成第一个编码任务。

上一课
下一课