Codex
Codex CLI 的 AGENTS.md 编写指南
解释 Codex CLI 中 AGENTS.md 的作用、层级、适合写入的规则和常见误区。
简短答案
AGENTS.md 是给 Codex 读取的项目说明文件。它可以告诉 Codex 这个仓库的结构、命令、测试方式、代码风格、提交规范和协作约定。
它适合写长期稳定的项目规则,不适合写一次性任务。一次性需求应留在当前对话里。
适合写什么
- 项目如何安装依赖、启动和测试
- 常用检查命令
- 代码风格和命名约定
- 哪些目录不要随意修改
- 提交前必须做什么
- 团队偏好的沟通和输出格式
不适合写什么
- API Key、token、密码或私有凭证
- 临时任务说明
- 过长的产品背景故事
- 与仓库无关的通用提示词
- 已经过期的命令和路径
作用范围与优先级
Codex 在每次运行开始时建立初始指令链,启动目录会影响加载范围:
- 先读取
CODEX_HOME下的全局规则,该目录默认为~/.codex;优先采用非空的AGENTS.override.md,否则读取AGENTS.md。 - 再从项目根目录(通常是 Git 根目录)逐级检查到当前工作目录。找不到项目根目录时,项目规则只检查当前目录。
- 项目中的每个目录最多采用一个非空文件,顺序为
AGENTS.override.md、AGENTS.md,然后是project_doc_fallback_filenames中配置的名称。
发生冲突时,指令链中靠后、范围更具体的规则优先;不冲突的上层规则继续适用。同目录的 override 文件替代该目录的普通文件,不会清空所有上层规则。
目录示例
~/.codex/AGENTS.mdrepo/AGENTS.mdrepo/services/payments/AGENTS.override.mdrepo/services/payments/AGENTS.mdrepo/services/search/AGENTS.md假设全局规则要求运行 npm test,仓库规则要求 lint,而 payments 的 override 将测试命令改为 make test-payments。从 repo/services/payments 启动时,Codex 会加载全局文件、仓库文件和 payments 的 override,保留 lint 要求,使用 payments 测试命令,并跳过该目录的普通文件。旁边 search 目录的规则不在这条启动加载链中。
推荐结构
下面的模板保持简短即可,请把命令替换为仓库里真实存在的命令。每条规则应说明何时适用,以及如何检查结果。
# Project instructions
## Build and test- Run `npm test` before finishing behavior changes.- Run `npm run lint` after editing TypeScript files.
## Style- Keep diffs small and focused.- Match existing component patterns.
## Safety- Do not edit files outside this repository.- Do not commit secrets.规则未生效或冲突时怎么检查
修改规则后,从目标目录启动新会话,让 Codex 列出已加载的规则来源和适用命令:
codex -C /path/to/repo/services/payments "List the instruction files you loaded and the test command that applies here. Do not edit files."- 检查工作目录和
CODEX_HOME。从仓库根目录启动,不会预加载所有子目录的规则。 - 检查文件名是否准确、内容是否为空,以及同级是否存在
AGENTS.override.md。使用备用文件名时,需将其加入project_doc_fallback_filenames。 - 长指令被截断时,检查
project_doc_max_bytes。删除重复说明,并把关键规则放在前面。 - 出现冲突时,确认两条规则分别来自哪个文件、适用于哪个目录。在相关目录写清局部例外,避免到处复制相互矛盾的规则。指令文件不会改变沙箱权限。
常见误区
- 把
AGENTS.md写成很长的万能 prompt。 - 写入密钥或内部凭证。
- 忘记随着项目命令变化更新它。
- 把
AGENTS.md和用户级config.toml混在一起。 - 以为写了规则就不需要审查 diff 和测试。
关于 BetterToken
如果团队通过 BetterToken 统一模型出口,AGENTS.md 仍然很重要。API 层解决模型请求和用量记录;AGENTS.md 解决项目上下文和执行规范。
两者配合使用,才能同时减少配置混乱和项目协作成本。
Related docs
- Codex CLI 是什么?
- 如何配置 Codex CLI 的 config.toml?
- Codex CLI sandbox 和 approval mode 是什么?
- Claude Code 中的 CLAUDE.md 是什么?

