📚AI 编程官方教程中文版
从原理到实战

04 · 为什么 AGENTS.md 能改变 Codex 行为

面向新手解释 AGENTS.md 为什么能让 Codex 更稳定:它是项目和 Agent 的协作接口,不是普通 README。

AGENTS.md 能改变 Codex 行为,不是因为它有什么神秘格式,而是因为它把“每次都要重复交代的话”变成了项目启动时就会进入上下文的规则。

同一个任务,没有项目规则时,Codex 只能猜包管理器、目录职责、测试命令和禁止事项。有了 AGENTS.md,它能先知道项目真实约定,再开始做事。

先理解:AGENTS.md 是接口

写代码的人都知道接口的价值:它定义两边怎么协作。

AGENTS.md 也是接口,只是连接的是项目和 AI Agent。项目一侧有源码、配置、测试、目录边界;Agent 一侧有读文件、改文件、跑命令、调用工具的能力。AGENTS.md 把两边对齐。

README 主要解释项目给人看。AGENTS.md 主要约束 Agent 怎么干活。两者互补,不互相替代。

怎么判断一条规则该不该写进去

最实用的判断是:下个月还有效的,写进 AGENTS.md;只对这次任务有效的,写进 prompt。

适合写进去的内容包括项目用途、技术栈、包管理器、目录职责、启动命令、测试命令、禁止事项、验收要求。

不适合写进去的内容包括本次任务细节、临时想法、长篇背景、密钥、账号、还没有稳定下来的偏好。

如果你第二次对 Codex 纠正同一个问题,这就是写进规则的信号。

一份合格 AGENTS.md 的三层

第一层是事实。项目用什么技术栈、哪个包管理器、哪些目录做什么、哪些命令能验证。

第二层是约束。哪些文件不要碰,哪些操作不能默认做,哪些高风险逻辑必须先确认。

第三层是验收。改完要跑什么检查,无法验证时要怎么说明,最终交付应该包含哪些证据。

只有事实,没有约束,就是说明书。只有约束,没有事实,就是口号。没有验收,就无法判断完成。

新手第一次怎么写

不要追求完整。先写六块就够。

项目概况:一句话说明这个项目做什么。

目录职责:列关键目录,不要逐文件注释。

开发命令:只列启动、测试、构建、lint 等常用命令。

编码规则:写具体可执行的约定,例如复用现有组件、不要新增库、错误处理格式。

禁止事项:写不能碰的路径、不能做的命令、不能新增的依赖。

验收要求:写改 UI、改逻辑、改类型、改文档分别要怎么检查。

写法要具体

“代码要优雅”没有用,因为 Codex 无法验证。

“修改 API handler 后运行某个测试命令”有用,因为它能执行。

“默认不要安装新依赖”有用,因为它能遵守。

“改 UI 后检查 375px 和 1440px”有用,因为它给出了验收面。

规则越具体,越容易执行;规则越抽象,越容易变成装饰。

怎么维护它

AGENTS.md 不是一次写完的文档。它应该随着项目和团队实践迭代。

每次 Codex 犯错后,先判断是任务没写清,还是项目规则缺失。只有会反复出现的问题,才沉淀到 AGENTS.md

团队项目里,AGENTS.md 应该像代码一样走 review。它改变的是所有 Agent 进入项目后的行为,不能随手改。

如果文件越来越长,先删除低价值说明,再把局部规则拆到更靠近对应目录的位置。

新手常见坑

  • 把 README 复制进去:人类介绍太长,Agent 规则不够清楚。
  • 写一堆抽象要求:无法验证,无法稳定执行。
  • 把任务模板塞进去:每次任务不同,应该写 prompt。
  • 把密钥、账号、私有 URL 写进去。
  • 规则互相冲突:根目录说用 pnpm,子目录又让用 npm。
  • 没有验收要求:Codex 只会说“完成了”。

怎么验收

让 Codex 只读总结当前加载到的规则。它应该能复述项目用途、命令、禁止事项和验收要求。

给一个小任务,看它是否先读相关文件、是否只改允许范围、是否按规则跑验证。

检查最终回复是否包含改动文件、验证结果、未验证项和剩余风险。

如果这些没有发生,优先改 AGENTS.md 的具体性,而不是继续骂模型不听话。

官方资料

On this page