1. 背景

在多代理协作(如 Codex、Claude Code)场景中,项目级指令文件用于约束代码风格、目录规范、测试要求和协作流程。常见文件名是 AGENTS.md 与 CLAUDE.md。

2. 两个文件的定位

  • AGENTS.md:Codex 生态常见的项目指令文件名。
  • CLAUDE.md:Claude Code 常见的项目指令文件名。

两者本质上都属于“项目运行/协作说明”,只是不同工具默认识别的文件名不同。

3. 关键原则

  • 单一真源:建议只维护一份完整内容,避免双文件长期手工同步。
  • 防止空壳抢优先级:若工具优先读取 AGENTS.md,空壳 AGENTS.md 可能导致完整规则失效。
  • 明确加载顺序:在工具配置中声明 fallback 文件名,避免依赖隐式行为。

4. 本仓库当前实践

  • 完整规则保存在仓库根目录 CLAUDE.md。
  • 根目录不再保留空壳 AGENTS.md。
  • Codex 使用 project_doc_fallback_filenames 回退读取 CLAUDE.md。

当前实测(codex-cli 0.114.0)中,project_doc_fallback_filenames 放在 ~/.codex/config.toml 顶层可生效。

5. 推荐配置示例(Codex)

model = "gpt-5.3-codex"
project_doc_fallback_filenames = ["CLAUDE.md"]

说明:

  • 将该键放在 config.toml 顶层。
  • 项目级 [projects."..."] 段仍用于 trust_level 等项目属性。

6. 验证是否生效

  1. 确认仓库根目录不存在空壳 AGENTS.md。
  2. 新开 Codex 会话执行一次最小命令。
  3. 检查会话日志中是否出现 CLAUDE.md 里的关键句。

示例命令:

env -u CODEX_THREAD_ID -u CODEX_CI -u CODEX_SANDBOX_NETWORK_DISABLED \
  codex exec -C /mnt/datas/mmzyc/v10repos/hsmm-v10 "请只回复: TEST_OK"
SESSION_FILE=$(ls -t ~/.codex/sessions/*/*/*/rollout-*.jsonl | head -n1)
rg -n "项目结构与模块组织|make generate-init|clusterCodeGenerate|Repository Guidelines" "$SESSION_FILE"

若命中 CLAUDE.md 中的特征内容,即可判定 Codex 已通过 fallback 正确加载。

7. 常见误区

  • 误区 1:保留空壳 AGENTS.md 并期望自动跳转到 CLAUDE.md。
  • 误区 2:修改配置后不重开会话直接验证。
  • 误区 3:在继承了旧线程环境变量的会话中做加载验证,导致结果被污染。