Study Notes / 2026 ・ No.05
AGENTS.md 札记
交给 AI 的“这个仓库的规矩”
发布
本期要回答的问题
先说 Q4 的结论:“要写的会变少,但不会消失”
Codex、Claude Code、Copilot、Cursor……开始用编码智能体之后,
仓库里就会出现一个叫 AGENTS.md 的文件。
它是做什么用的、怎么写才有效,本期一次讲清。
AGENTS.md 是什么 ── Q1 的答案
AGENTS.md 是写给编码智能体看的 README。它就是放在仓库最上层的一个普通 Markdown 文件,没有固定格式,也没有必填项。智能体开始工作时会先读它,从中了解怎么构建、怎么跑测试、要遵守哪些规矩。
这个格式由 OpenAI 在 2025 年 8 月发布,是和 Amp、Google 的 Jules、Cursor、Factory 等一起整理出来的。同年 12 月,它与第 1 期提到的 MCP 等项目一起,被捐赠给了 Linux 基金会旗下新成立的 Agentic AI Foundation(AAIF),成为不属于任何一家公司的通用格式。据官网介绍,使用它的开源项目超过 6 万个,能读取它的智能体和 IDE 超过 30 种。
| 工具 | 自己的配置文件 | 对 AGENTS.md 的处理 |
|---|---|---|
| OpenAI Codex | AGENTS.md | 原生格式。把主目录的 ~/.codex/AGENTS.md 和从仓库根目录到当前工作目录路径上的 AGENTS.md 拼接起来读取(合计默认上限 32KiB) |
| Claude Code | CLAUDE.md | 没有 CLAUDE.md 时改读 AGENTS.md(v2.1.277 起)。也可以在 CLAUDE.md 里写 @AGENTS.md 导入 |
| GitHub Copilot (coding agent) | .github/copilot-instructions.md | 2025 年 8 月起支持 AGENTS.md |
| Cursor・Jules・Devin・Zed・Aider 等 | 列在官网的支持列表中 |
和 README 的区别在于读者。README 是给人看的,写项目是什么、怎么用;AGENTS.md 是给智能体干活用的,写用哪条命令验证、哪些事不能做。官方的说法是:这样可以把给智能体的细碎指示单独放一处,不把给人看的说明弄乱。
为什么需要它
智能体每次都是“第一天上班的新人”。正如第 1 期所写,模型一次只能看到上下文里的内容。换一个会话,你上次口头叮嘱的事就全没了。
- 有些事推测不出来 ── “这个 HTML 是生成的,不要直接改”“发布要等人确认”这类事,读多少代码也看不出来
- 推测要花钱花时间 ── 为了找到跑测试的方法,打开一个个文件,试了又失败。写下来只要一行
- 不同的人说法不同 ── 让团队里谁用哪个智能体都按同一套规矩干活,把口头叮嘱搬进文件
把它看成交给新同事的入职资料,就好理解了。不同之处在于,对方每次都一定会通读全文,而且相当听话地照做。正因为如此,才必须写得短而准确。
什么场景下用 ── Q2 的答案
值得放的是要让智能体反复干活的仓库,尤其是存在“读代码也看不出来的规矩”的仓库。一次性的小活,写在请求里就够了。
| 场景 | 是否适合 | 理由 |
|---|---|---|
| 构建或测试步骤特殊 | ◎ | 自有脚本、经由 Docker、需要环境变量等。让它自己找,会耗时间和 token |
| 有不能碰的地方 | ◎ | 生成文件、外部代码、生产配置。一旦被改坏,损失很大 |
| 业务系统开发 | ◎ | 独特的命名规范、改动需审批的表。业务规则没写在代码里 |
| 团队同时使用多种智能体 | ◎ | 一个文件就能把同一套规矩告诉所有工具 |
| monorepo | ○ | 前端和 API 风格不同时,可以按文件夹分别放 AGENTS.md |
| 结构常规的小应用 | △ | 常规结构,智能体自己就能看懂 |
| 用完即弃的脚本 | × | 写它的工夫反而更大 |
判断标准很简单:“同一句提醒,是否已经对智能体说过两次”。说过两次的,第三次多半还得说。这时往 AGENTS.md 里加一行,是最不浪费的养法。
怎么写 ── Q3 的答案
原则有三条:短、具体,而且只写从代码里读不出来的东西。写什么,用“智能体自己能不能查到”和“出错时损失大不大”两条来判断,就不会纠结。
写,还是不写
右上一定要写。左上不止要写,还要用机制拦住
- 命令写成能直接执行的样子 ── 不写“跑一下测试”,而写 npm test -- --run。智能体会真的去执行写下的命令
- 附上一句理由 ── 比如“这是生成文件,不要直接改(去改源头的 build.py)”。有了理由,它在没写到的类似情况下也能正确变通
- 禁止事项要配上替代做法 ── 只写“不要……”,智能体会去找别的旁门左道
- 不要写长 ── Claude Code 官方文档建议 CLAUDE.md 以 200 行以内为宜;Codex 默认把读取总量限制在 32KiB。越长越不容易被遵守,每次的成本也越高
- 不写机密 ── 密码和 API 密钥不要放进仓库,这个文件是所有人共享的
- 必须遵守的事,用机制保证 ── AGENTS.md 只是“上下文”,没有强制力。不许直接推到 main 就用分支保护,不许破坏格式就用 CI 或钩子(如 Claude Code 的 hooks)拦住
按文件夹放置时,离得近的优先
Codex 从根目录向工作目录依次拼接读取,越靠后(越近)的起覆盖作用
在 monorepo(多个项目放在同一个仓库)里,子文件夹也可以放 AGENTS.md。官网的说明是“离得最近的文件优先”,以及“请求本身优先于一切”。据说 OpenAI 自己的仓库里有 88 个 AGENTS.md。
和 Claude Code 一起用时,没有 CLAUDE.md 就会直接读 AGENTS.md。如果两个都想放,官方做法是在 CLAUDE.md 开头写一行 @AGENTS.md 导入,下面再补充只给 Claude Code 的指示。也可以用符号链接(ln -s AGENTS.md CLAUDE.md),但如果有人在 Windows 上 clone,用导入更稳妥。
实例:本站的 AGENTS.md
举个例子:如果给本站(kiji-site)放一个 AGENTS.md,会是下面这样。这是一个用一个 Python 文件生成三种语言页面、通过 Cloudflare Pages 发布的小仓库。在和 AI 一起做这个博客的过程中,我只留下了每次都要解释的事和差点犯过的错。
| 写了什么 | 为什么写 |
|---|---|
| *.html 是生成文件 | 一让它改样式,它就容易直接改 HTML,下次构建就没了 |
| 命令和检查宽度 | 不让它去找,连看哪个屏宽都定好 |
| 新增文章的步骤 | 让它把三处改动当成一组记住,漏一处构建就停 |
| 图的检查 | 英文版标签溢出的事故真实发生过两次 |
| 照片的许可 | 不让它从网上随便找图 |
| 不要 push | 发布前要过人眼。无法撤回的操作由人来做 |
反过来,没写什么同样重要。“用 Python 写的”“blog.html 是文章列表”这类项目介绍一概没放。打开文件就能看懂的,智能体会自己去读。这个 30 行左右的文件,大小也和下一章的研究结论相吻合。
真的有效吗 ── 研究结果
相关研究还很少,结论也不一致。但指向是一致的:“由人写的、简短的、只写代码里看不出来的东西的 AGENTS.md”有望奏效,其他的要么没用,要么反而碍事。
| 研究 | 研究对象 | 结果 |
|---|---|---|
| Lulla 等 (2026 年 1 月) | 10 个仓库・124 个拉取请求 | 有 AGENTS.md 时,运行时间中位数缩短 28.64%,输出 token 减少 16.58%,完成率相当 |
| Gloaguen 等 苏黎世联邦理工学院 (2026 年 2 月) | AGENTbench 138 例・SWE-bench Lite 300 例。Claude Code・Codex・Qwen Code | LLM 自动生成的文件使成功率下降 0.5–2 个百分点,人写的文件平均提高约 4 个百分点。两者都使推理成本增加 20% 以上。仓库概要说明没有帮助 |
| Khatri (2026 年 7 月) | Claude Code 与 Codex CLI,17 个任务・288 次运行 | 对正确性没有显著影响。失败原因不在“不知道”,而在设计与实现的功力 |
苏黎世联邦理工学院的论文这样解释无效的原因:智能体会忠实执行写下的指示,增加测试和探索,结果让任务本身变得更难。并不是写得越多越好。
由此可以得出:不要把 /init 等自动生成的文件原样放进仓库。生成之后,由人读一遍,把看代码就知道的行删掉再放。这是目前最稳妥的用法。
第三篇是个人研究者尚未经过同行评审的论文。所有数字都只在各自的实验条件下成立。
变聪明之后还需要吗 ── Q4 的答案
我的答案是:“要写的会变少,但不会消失”。把 AGENTS.md 里常写的内容分成三类,就能清楚地看出,哪些会因为变聪明而不再需要,哪些是聪明也补不上的。
模型变聪明之后,还剩下什么
宽度表示分量的大致感觉。没写下来的意图,不会因为模型更聪明而变小
- 读代码就懂的(项目概要、用的语言、目录结构)── 现在就已经不需要了,研究也表明它没有帮助
- 查一查就知道的(构建和测试命令、本地运行方法)── 模型越聪明、越快、越便宜,自己去找的成本就越不值一提。写它的意义将只剩“省时省钱”
- 哪里都没写下来的意图(为什么这样做、什么不能做、由谁拍板)── 读多少代码和历史记录都找不到。这不是聪明与否的问题,而是信息根本不在那里
换成人来想就明白了。再优秀的工程师,跳槽第一天也不会知道“周五不碰生产数据库”“这张表的改动要财务审批”。越是优秀的人,越会先来问清这些规矩。
会变的是形式。让智能体把自己发现的事记下来的机制(如 Claude Code 的自动记忆)、只在需要时才加载的操作手册(技能)、有强制力的机制(钩子和 CI)都已经出现,不必再把一切都写进一个 AGENTS.md。即便如此,由人决定、由人写下、人和 AI 读的是同一份的那个地方,应该会一直存在。理由和 README 不会消失是一样的。
本章是笔者基于以上事实的判断。
结 — 一页总结
- AGENTS.md 是写给智能体的 README。普通 Markdown,Codex・Copilot・Cursor 等 30 多种工具会读,Claude Code 在没有 CLAUDE.md 时也会读。
- 适用于要让智能体反复干活、存在读代码也看不出来的规矩的仓库。同一句提醒说过两次就补进去。
- 要写的是命令、禁止事项及替代做法,以及理由。简短,由人来写。不写概要和泛泛之谈。
- 必须遵守的事,用分支保护・CI・钩子拦住。AGENTS.md 没有强制力。
- AI 越聪明,要写的越少。但作为传达代码里没写的意图的地方,它会留下来。
参考
- AGENTS.md(官网)
- Linux 基金会 — Agentic AI Foundation 成立(2025 年 12 月)
- OpenAI — Codex 如何读取 AGENTS.md
- Claude Code — CLAUDE.md 与 AGENTS.md
- GitHub — Copilot coding agent 支持 AGENTS.md(2025 年 8 月)
- Lulla 等「On the Impact of AGENTS.md Files on the Efficiency of AI Coding Agents」
- Gloaguen 等「Evaluating AGENTS.md: Are Repository-Level Context Files Helpful for Coding Agents?」
- Khatri「Do Context Files Help Coding Agents? A Two-Agent Ablation Study on Real Repositories」
AGENTS.md 札记 — 全七章 / 2026.09