AGENTS.md 是 Codex 每次工作前都会自动读取的项目指令文件,类似写给 AI 的 README。最常见的写法是:全局个人习惯放 ~/.codex/AGENTS.md,项目规则放仓库根目录 AGENTS.md,子目录规则按目录层级追加。本文先回答 AGENTS.md 应该写什么、放哪里、会不会每次加载,再说明发现机制、配置示例、fallback 文件名和常见排错。
Codex AGENTS.md 完整指南
Codex 在每次启动时(TUI 每次启动一次会话)读取 AGENTS.md 文件,构建一个指令链,在开始任何工作之前先加载这些指导。
如果你从搜索结果进来,先看这张表:
最小可用模板
# AGENTS.md
## 项目约定
- 使用 bun 安装依赖,不要改用 npm 或 pnpm
- 修改文档后运行 `bun run docs:build`
- 不要读取或提交 `.env`、凭证文件、生成目录
## 工作方式
- 开始前先确认需求边界
- 每次只改和当前任务直接相关的文件
- 完成前说明验证命令和结果
这个模板只写 Codex 每次开工前必须知道的约定。更多背景、设计文档、长篇 API 说明,应放在普通文档里,需要时再让 Codex 读取。
| 你想问的问题 | 简短答案 | 继续阅读 |
|---|---|---|
| AGENTS.md 是什么 | 写给 Codex 的项目规则文件 | Codex 如何发现 AGENTS.md |
| 应该写什么 | 写工作约定、验证命令、风险边界,不要塞长篇文档 | AGENTS.md 应该写什么 |
放项目根目录还是 .codex/ |
项目共享规则通常放仓库根目录,全局个人规则放 ~/.codex/ |
创建全局指导 |
| Codex 会每次加载吗 | 新会话会重新构建指令链;长对话里的体感问题通常不是文件没读,而是上下文变长后注意力分散 | 验证配置 |
| 对话多了感觉 Codex 失智怎么办 | 缩短 AGENTS.md、重开聚焦会话、把规则拆到子目录 | AGENTS.md 写多长合适 |
| 多个 Codex 同时干一个项目怎么写规则 | 在 AGENTS.md 里写任务边界、分支/worktree 约束和禁止覆盖他人改动 | 多任务协作规则 |
| 权限配置在哪里写 | 权限不靠 AGENTS.md,主要看 Codex 配置 | 相关配置入口 |
| 和 CLAUDE.md / GEMINI.md 有什么区别 | 都是 AI 项目规则文件,但加载位置和工具不同 | 横向对比 |
Codex 如何发现 AGENTS.md
Codex 按以下优先级顺序构建指令链:
-
全局级:读取
~/.codex/(除非设置了CODEX_HOME环境变量)目录下的AGENTS.override.md,如果不存在则读取AGENTS.md。同一层级只用第一个非空文件。 -
项目级:从项目根目录(通常是 Git 根目录)开始,逐层向下走到当前工作目录。每个目录里依次检查
AGENTS.override.md、AGENTS.md,以及project_doc_fallback_filenames里配置的 fallback 文件名。每个目录最多包含一个文件。 -
合并顺序:从根目录向下拼接文件,用空行分隔。靠近当前工作目录的文件出现在后面,优先级更高(因为它们在组合 Prompt 里位置靠后)。
大小限制:Codex 跳过空文件,组合大小达到 project_doc_max_bytes(默认 32 KiB)后停止加载。超过限制时可以提高阈值或把指令分散到子目录里。
AGENTS.md 应该写什么
AGENTS.md 不是越长越好。它应该写 Codex 做事前必须知道的规则,而不是把所有项目文档复制进去。
适合写进去的内容:
- 项目使用的包管理器、测试命令、构建命令。
- 修改代码后必须执行的验证步骤。
- 不能触碰的目录、密钥、生成文件或外部系统。
- 团队约定的代码风格和提交前检查。
- 特定子目录的例外规则,例如后端、前端、脚本目录各自的验证命令。
不适合写进去的内容:
- 大段产品背景、历史会议纪要、完整 API 文档。
- 会频繁变化的临时任务列表。
- 密钥、账号、Token 或只能给人看的内部凭证。
- 可以通过命令自动发现的信息,例如完整文件树。
一个实用模板:
# AGENTS.md
## 项目约定
- 使用 pnpm 安装依赖,不要改用 npm 或 yarn
- 修改 TypeScript 后运行 pnpm test 和 pnpm lint
- 不要提交 .env、dist/、coverage/ 目录
## 验证方式
- 单元测试:pnpm test
- 构建验证:pnpm build
创建全局指导
在 ~/.codex/AGENTS.md 里写个人默认值,让所有仓库都继承你的工作习惯:
mkdir -p ~/.codex
# ~/.codex/AGENTS.md
## 工作约定
- 修改 JavaScript 文件后必须运行 `npm test`
- 安装依赖时优先用 `pnpm`
- 添加新的生产依赖前先询问确认
验证是否生效:
codex --ask-for-approval never "Summarize the current instructions."
Codex 会在提出建议之前先引用 ~/.codex/AGENTS.md 里的内容。
如果需要临时覆盖全局配置而不删除原文件,可以创建 ~/.codex/AGENTS.override.md。删除这个 override 文件就恢复原有全局指导。
分层管理项目规则
仓库级文件负责项目规范,在继承全局默认值的同时覆盖特定规则:
- 仓库根目录创建基础
AGENTS.md:
# AGENTS.md
## 仓库规范
- 提 PR 前运行 `npm run lint`
- 改动行为时在 `docs/` 里更新对应公共函数的文档
- 在需要特殊规则的子目录创建
AGENTS.override.md,比如services/payments/:
# services/payments/AGENTS.override.md
## 支付服务规则
- 用 `make test-payments` 而不是 `npm test`
- 轮换 API key 前必须通知安全频道
- 从子目录启动 Codex,确认加载顺序:
codex --cd services/payments --ask-for-approval never "List the instruction sources you loaded."
预期结果:Codex 先报告全局文件,再是仓库根目录 AGENTS.md,最后是 payments 目录的 override。
目录结构示例
AGENTS.md # 仓库规范(高亮)
services/
payments/
AGENTS.md # 被忽略(因为 override 存在)
AGENTS.override.md # 支付服务规则(高亮)
README.md
search/
AGENTS.md
.codex/AGENTS.md 应该写什么
搜索里经常出现“项目文件下的 .codex/AGENTS.md 应该写什么”。可以这样理解:
~/.codex/AGENTS.md:你的个人默认工作习惯。- 仓库根目录
AGENTS.md:这个项目希望所有协作者都遵守的规则。 - 子目录
AGENTS.md或AGENTS.override.md:只对某个模块生效的局部规则。 .codex/目录更适合放 Codex 自己的配置、脚本或全局配置目录,不建议把“项目共享规则”藏在普通协作者不容易发现的位置。
如果规则是给整个仓库看的,优先放项目根目录 AGENTS.md。如果规则只给你自己的 Codex profile 使用,才考虑放到 CODEX_HOME 指向的 .codex/ 目录。
配置 fallback 文件名
如果你的仓库已经用了其他文件名(比如 TEAM_GUIDE.md),可以把它加入 fallback 列表,Codex 会把它当作指令文件处理:
# ~/.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。不在这个列表里的文件名会被忽略。
使用自定义 CODEX_HOME
如果需要不同的配置 Profile(比如自动化用户),可以设置 CODEX_HOME 环境变量:
CODEX_HOME=$(pwd)/.codex codex exec "List active instruction sources"
多任务协作规则
如果你会让多个 Codex 会话同时处理同一个项目,AGENTS.md 里要写清楚“边界”,而不是只写风格偏好。
适合加入这些规则:
- 每个任务必须在独立 branch 或 worktree 中进行。
- 开始前先运行
git status,发现已有未提交改动时不要覆盖。 - 只修改任务指定目录;跨目录修改前先说明原因。
- 不要重命名共享配置、生成文件或锁文件,除非任务明确要求。
- 完成后报告实际改过的文件和验证命令。
不建议写“所有问题都自动修好”这类宽泛要求。多代理协作最怕互相踩文件,AGENTS.md 应该先约束文件边界和验证边界。
相关配置入口
AGENTS.md 负责“告诉 Codex 怎么做事”,但不是所有配置都应该写在 AGENTS.md 里。
| 需求 | 应该看哪里 |
|---|---|
| 配置模型、sandbox、approval、权限 | 基础配置 / 高级配置 |
| 查看完整配置字段 | 配置参考 |
| 写更稳定的项目规则 | Codex 规则 |
| 配置 Skills | Codex Skills |
| Windows / WSL 路径差异 | Codex Windows 指南 |
| 提示词写法 | Codex 提示词 |
| 子代理工作流 | Codex 子代理 |
验证配置
# 从仓库根目录确认全局和项目文件都正确加载
codex --ask-for-approval never "Summarize the current instructions."
# 确认子目录 override 覆盖了上层规则
codex --cd subdir --ask-for-approval never "Show which instruction files are active."
如果需要审计 Codex 加载了哪些指令文件,查看 ~/.codex/log/codex-tui.log 或最近的 session-*.jsonl 文件。
指令看起来没更新?重启 Codex 在目标目录里即可——Codex 每次运行都会重新构建指令链,没有缓存需要清理。
AGENTS.md / CLAUDE.md / GEMINI.md 对比
| 文件 | 主要工具 | 常见位置 | 适合写什么 |
|---|---|---|---|
AGENTS.md |
Codex | ~/.codex/AGENTS.md、仓库根目录、子目录 |
Codex 的工作约定、验证命令、目录规则 |
CLAUDE.md |
Claude Code | 项目根目录、用户配置目录 | Claude Code 的项目指令、工具使用规则、验证要求 |
GEMINI.md |
Gemini CLI | 项目根目录或 Gemini 配置位置 | Gemini CLI 的项目背景和行为约束 |
如果你的团队同时使用多个 AI 编程工具,可以保留一份短的共享原则,再分别写到这些工具各自识别的文件里。不要用一个工具的文件名假设另一个工具会自动读取。
继续阅读:
常见问题排查
| 问题 | 排查方向 |
|---|---|
| 什么都没加载 | 确认你在正确的仓库目录,codex status 报告的 workspace root 是否正确;检查指令文件不是空的 |
| 出现了错误的指导 | 检查目录树更高层是否有 AGENTS.override.md,删除或重命名它回退到普通文件 |
| Fallback 文件名没被识别 | 确认 project_doc_fallback_filenames 里没有拼写错误,重启 Codex |
| 指令被截断 | 提高 project_doc_max_bytes 或把大文件拆分到子目录里 |
| Profile 混乱 | 启动 Codex 前先运行 echo $CODEX_HOME,检查是否指向了非预期的目录 |
常见问题
Q: AGENTS.md 和 AGENTS.override.md 的区别是什么?
A: 两个文件名在语义上是一样的——都会被加载为指令文件。唯一的区别是:当同一目录下两个文件都存在时,Codex 只读 AGENTS.override.md,忽略 AGENTS.md。这让你可以创建临时 override 而不用修改原文件,删除 override 就自动回退。
Q: 多个 AGENTS.md 的优先级是怎么计算的?
A: 靠近当前工作目录的文件优先级更高(出现在组合 Prompt 的后面)。所以子目录里的规则会覆盖仓库根目录的规则,仓库规则又覆盖全局规则。
Q: AGENTS.md 写多长合适,会影响 token 用量吗?
A: 会。AGENTS.md 的内容会出现在每次对话的上下文里,内容越长 token 消耗越多。建议只写关键规则,把大量文档放到 references 目录里按需引用,而不是全部塞进 AGENTS.md。
Q: Codex 在项目文件下的 .codex/AGENTS.md 应该写什么?
A: 如果这是团队共享的项目规则,优先写在仓库根目录 AGENTS.md,不要藏在 .codex/ 里。如果 .codex/ 是你通过 CODEX_HOME 指定的个人配置目录,可以写你的个人 Codex 默认规则,例如默认测试命令、审批习惯、常用工具偏好。
Q: AGENTS.md 能配置 Codex 权限吗?
A: 不建议把权限当成自然语言规则写进 AGENTS.md。AGENTS.md 可以提醒“修改依赖前先询问”,但真正的模型、sandbox、approval 和权限控制应该放到 Codex 配置中,继续看配置参考。
Q: 我已经有 CLAUDE.md,还需要 AGENTS.md 吗?
A: 如果团队同时使用 Codex 和 Claude Code,建议两份都保留。可以复用同一套工程原则,但要分别写成 Codex 能读取的 AGENTS.md 和 Claude Code 能读取的 CLAUDE.md。
Q: Codex 会每次都加载 AGENTS.md 吗?对话长了感觉没遵守规则怎么办?
A: 新会话会重新构建指令链。长对话里“感觉没遵守”通常不是文件没加载,而是上下文太长、任务边界太散或 AGENTS.md 写得太长。更稳的做法是缩短规则、重开聚焦会话,并把模块专属规则放到对应子目录。
Q: Codex 如何同时处理一个项目的多个编程任务?
A: 用独立 branch 或 worktree 隔离任务,并在 AGENTS.md 里明确“不要覆盖已有未提交改动”“只改任务指定目录”“完成前报告验证命令”。任务之间共享的接口或配置,需要先人工确认边界。
Q: Codex 安装 Superpowers 后,AGENTS.md 还重要吗?
A: 重要。Superpowers 负责通用工作流程,AGENTS.md 负责当前项目的具体约定。两者互补:一个管“怎么工作”,一个管“这个仓库有什么规矩”。安装方式见 Superpowers 安装指南。