ARCHIVE74 FULL123 ENTRIES4 CHANNELSSYNC 2026-10-31

DOC VIEWER · 原文排版保留 · 2026-10-31 快照正文区为浅色

OpenAI Codex 橙皮书·第四篇·AGENTS.md


上一篇讲了第一个项目跑通 + CLI 深度使用,重点是 Auto-review 怎么改审批心智、Windows Full Access 为什么绝对不要开。这篇开始进入这本书的核心实践之一:AGENTS.md。一份好的 AGENTS.md 能让 Codex 从「空降新人」变成「了解项目规矩的老手」。

Codex 不是工具是系统: 5 种形态 + 10 分钟上手 ❘ Codex 完整实战手册 v2.0.1 拆给你看: 花叔第 8 本橙皮书

一、AGENTS.md 是什么

如果你读过花叔的 Claude Code 橙皮书,一定记得 CLAUDE.md 那一章。在 Claude Code 的世界里 CLAUDE.md 是最重要的文件,是 AI 的「宪法」。

插图 4.1

AGENTS.md 在 Codex 中扮演的角色完全一样。名字不同逻辑相通:你把项目的构建命令、代码规范、常见陷阱写在一个文件里,AI 每次启动时先读它,然后带着这些背景知识开始干活。没有它 Codex 就是蒙着眼写代码,有了它一进来就知道规矩。

Codex 每次启动时会自动读取 AGENTS.md。这是你和 AI 之间关于「怎么干活」的契约。

二、Codex 怎么找到你的 AGENTS.md

这部分是技术细节但很重要。Codex 的发现机制比你想象的要复杂一些,不是「放个文件在根目录就行了」那么简单。

插图 4.2

Codex 在每次运行开始时构建指令链。发现顺序如下:

全局级:在 Codex 主目录(默认是 ~/.codex,可通过 CODEX_HOME 环境变量修改)中,先找 AGENTS.override.md,找不到再找 AGENTS.md。这一层只取一个文件。

项目级:从项目根目录(通常是 Git 仓库根目录)开始,逐级向下走到当前工作目录。每个目录中依次检查 AGENTS.override.md、AGENTS.md、以及 project_doc_fallback_filenames 中配置的备选文件名。每个目录层级最多取一个文件。

合并:所有找到的文件按从根到当前目录的顺序拼接。越靠近当前目录的文件优先级越高,因为它们出现在合并后内容的后面,会覆盖前面的指令。

Codex 会跳过空文件,合并后的总大小上限默认是 32KB(由 project_doc_max_bytes 配置项控制)。超出限制时,后面的文件会被跳过,不再加入指令链。

花叔的经验:32KB 听起来很大,但如果你在多个嵌套目录都放了 AGENTS.md,很容易撞到上限。建议把核心规则集中在根目录文件里,子目录文件只写该目录特有的内容。

三、override 机制:临时覆盖不删原文件

注意到了吗?每一层都优先找 AGENTS.override.md。

插图 4.3

这个设计很聪明。场景是这样的:你的团队维护了一份 AGENTS.md 并 check 进了 git 大家共享。但你个人有些不同的偏好,比如你喜欢用 pnpm 而团队规范用 npm。这时候你不需要修改团队文件,只要在同一目录放一个 AGENTS.override.md,它会直接替代同级的 AGENTS.md。

把 override 文件加到 .gitignore 里,团队的基础规范不受影响,个人偏好也保住了。同样的逻辑也适用于全局级:~/.codex/AGENTS.override.md 会临时替代 ~/.codex/AGENTS.md,删掉 override 文件就恢复原来的全局设置。适合做短期实验。

四、/init:快速生成初始 AGENTS.md

不想从零开始写?在 Codex 里输入 /init 命令,它会分析你的项目结构,自动生成一份初始的 AGENTS.md。

插图 4.4

生成的内容通常包括:项目使用的语言和框架、检测到的构建和测试命令、目录结构概述。它不完美,但给了一个起点。你在此基础上增删修改,比从空白文件开始快得多。

五、该写什么、不该写什么

判断标准跟 Claude Code 的 CLAUDE.md 完全一致:AI 自己能从代码里推断出来的不要写,AI 猜不到的必须写。

该写的:构建测试 lint 命令;与默认不同的代码风格偏好;项目架构决策和技术选型;开发环境的坑和特殊配置;PR 要求和代码审查标准;什么叫「完成」的定义;约束和禁止事项(带替代方案)。

不该写的:「这是一个 Python 项目」(AI 看文件就知道);语言标准规范(AI 已经掌握);详细 API 文档(给路径别全文粘贴);频繁变化的信息(每次都得改的不适合放这里);文件逐一描述(AI 会自己看文件树);「写整洁代码」「遵循最佳实践」这种废话;所有人都知道的常识。

六、一个实际的 AGENTS.md 示例

看一个项目级 AGENTS.md 示例(不到 200 字):

# MyProject

## 仓库结构

- src/ 主代码

- tests/ 测试文件

- scripts/ 构建和部署脚本

## 开发命令

- 安装依赖:pnpm install

- 跑测试:pnpm test(所有测试必须通过再提 PR)

- Lint 检查:pnpm lint

- 构建:pnpm build

## 工程规范

- 使用 TypeScript strict 模式

- 组件用函数式,不用 class

- 新增 API 接口必须写单元测试

- commit message 遵循 Conventional Commits 格式

## PR 要求

- 标题清晰描述改动内容

- 修改了用户可见行为时必须更新文档

- CI 通过后才能合并

## 禁止

- 不要直接修改 generated/ 目录下的文件(它们是自动生成的)

- 不要在代码中硬编码 API 密钥,用环境变量

- 不要跳过 lint 检查

不到 200 字。但每一行都在帮 Codex 避免犯错。「什么叫完成」写清楚了(CI 通过+文档更新),「禁止」项带着原因(generated 目录是自动生成的),这些是 Codex 自己读代码推断不出来的信息。

七、Fallback 文件名怎么配

如果你的项目已经有一个叫 TEAM_GUIDE.md 或者 .agents.md 的文件充当开发规范,不想再多一个 AGENTS.md,可以配置 fallback 文件名:

# ~/.codex/config.toml

project_doc_fallback_filenames = ["TEAM_GUIDE.md", ".agents.md"]

project_doc_max_bytes = 65536

配置后 Codex 在每个目录中的检查顺序变成:AGENTS.override.md → AGENTS.md → TEAM_GUIDE.md → .agents.md。不在列表里的文件名会被忽略。上面的配置还顺便把合并大小上限调到了 64KB,适合规则特别多的大型项目。

八、和 Claude Code 的 CLAUDE.md 对比

如果你同时用 Claude Code 和 Codex,这张对比表会有用:

Codex AGENTS.md 在全局配置用 ~/.codex/AGENTS.md,项目配置在仓库根目录。子目录支持 ✅ 逐级向下查找。override 机制 ✅ AGENTS.override.md。Fallback 文件名 ✅ 可配置。大小限制默认 32KB 可调。引用其他文件不支持 @ 语法。快速生成 /init 命令。

Claude Code CLAUDE.md 在全局配置用 ~/.claude/CLAUDE.md,项目配置在仓库根目录。子目录支持 ✅ 逐级向上+向下查找。override 机制 ❌ 无此机制。Fallback 文件名 ❌ 只认 CLAUDE.md。大小限制无明确限制(但过长影响性能)。引用其他文件支持 @ 语法导入。快速生成 /init 命令。

核心思路一样细节上各有取舍。Codex 的 override 机制对团队协作更友好,Claude Code 的 @ 语法在大型项目中组织规则更灵活。

更广一点的趋势:SKILL.md 已经成了跨 Agent 的事实标准,Codex、Claude Code、Cursor、Gemini CLI 共用同一种格式,第三方 skill marketplace 上的 1600+ skills 都按这一套结构组织。你写一个 skill 不再绑死某个工具,今天给 Codex 用、明天复制到 Claude Code 也能跑。AGENTS.md 和 CLAUDE.md 还是各属各家,但 skill 这层的协议已经统一了。

九、验证你的 AGENTS.md 被读到了

写完 AGENTS.md 后怎么确认 Codex 确实读到了?

从项目根目录验证:codex --ask-for-approval never "Summarize the current instructions."

验证子目录的 override 是否生效:codex --cd services/payments --ask-for-approval never "Show which instruction files are active."

查看日志确认加载了哪些文件:cat ~/.codex/log/codex-tui.log

Codex 每次运行都会重建指令链,不存在缓存。如果指令看起来不对,重启 Codex 即可。

十、常见问题排查

Codex 没加载任何指令:确认你在预期的仓库目录中,codex status 检查 workspace root。确认文件非空。

加载了错误的指令:检查目录树上层是否有 AGENTS.override.md,重命名或删除 override 文件。

Fallback 文件名不生效:确认 config.toml 中拼写正确,然后重启 Codex。

指令被截断:提高 project_doc_max_bytes,或把长规则拆分到子目录。

花叔的经验:AGENTS.md 不要写太长,短而准比长而全有用。他自己的写作项目 CLAUDE.md 经过大半年的迭代,核心规则文件控制在 8KB 以内。AGENTS.md 也应该如此。每条规则都应该对应一个真实踩过的坑,而不是提前想象的「万一需要」。从你和 Codex 协作中真正出过问题的地方开始写,一条一条攒,这份文件自然会长成你需要的样子。

下一篇开始拆 §06-08:桌面 App 五件套 + Cloud 异步开发 + Skills / MCP / Automations / /goal 四大扩展能力。这是 Codex 区别于传统 AI 编程工具的高级能力集合,做跨天长任务、自动化工作流、知识工作者场景都在这一篇。

原文信息:Codex 橙皮书 v2.0.1 §05,作者花叔,GitHub alchaincyf/codex-orange-book,CC BY-NC-SA 4.0 协议。

下一篇: 书名解读+5 ❘ 第5篇-AppCloud扩展。下篇看点: AGENTS.md 项目骨架 + 协作规则。

六六爸比(本文作者, 85 后科技 IT 爱好者), 本文首发于公众号「丁卯生人」。

← 全部文章 · 微信原文 ↗