好的 AGENTS.md 等于免费换模型,写错了比没文档更糟

摘要: 一份文件,让 AI 编码质量从 Haiku 跳到 Opus——或者让它比裸跑还烂。 下面这套东西,是 Augment Code 团队从一个大型 monorepo 里抽出几十份真实的 AGENTS.md 跑出来的实测结论,外加老金我自己的怀疑视角,把里面的几个坑也补上去。 希望读完这一篇,你不再"凭感...

一份文件,让 AI 编码质量从 Haiku 跳到 Opus——或者让它比裸跑还烂。

下面这套东西,是 Augment Code 团队从一个大型 monorepo 里抽出几十份真实的 AGENTS.md 跑出来的实测结论,外加老金我自己的怀疑视角,把里面的几个坑也补上去。

希望读完这一篇,你不再"凭感觉"写 AGENTS.md。

让工程师惊掉下巴的实验

Augment Code 做了件事:从一个大型 monorepo 里提取了数十个 AGENTS.md,逐一测量它们对 AI 代码生成质量的影响。

结果他们自己都没想到——

最好的 AGENTS.md,带来的质量提升相当于把模型从 Claude Haiku 直接换成 Claude Opus。

最差的 AGENTS.md,让输出比完全不写任何文档还糟。

更夸张的是:同一份 AGENTS.md,在常规 bug 修复任务上把代码质量提升了 25%,在同一模块的复杂功能任务上却让完整性下降了 30%。

一份文件,正负 30% 的波动。

顺带泼一盆冷水:"Haiku 跳到 Opus"是个非常抓人的比喻,但严格说不是模型变聪明了。好 AGENTS.md 提升的是"消除歧义"的能力,不是模型自身的推理能力。遇到真正需要多步逻辑推演的架构难题,再好的文档也救不了 Haiku。把它当成"减少 Agent 在你代码库里走错路的概率"更准确。

把这件事讲清楚,是因为后面的所有模式,本质都在做一件事:给 Agent 一份没有歧义的执行手册。

7 个有效模式

1. 渐进式披露,而不是把所有东西塞进一个文件

把 AGENTS.md 想成一个入口,不是百科全书。

  • • 主文件控制在 100~150 行,覆盖常见场景与工作流
  • • 细节推到几份"按需加载"的参考文件里

实验数据:在一个约 100 个核心文件的中等规模模块里,这个体量的主文件让所有指标提升 10~15%。一旦超过 150 行,收益开始反向

为什么是 150 行?因为当前 AI 编码助手普遍存在"中间迷失"(Lost in the Middle)现象——即便模型宣称 200K 甚至 1M 上下文,当规则被埋在长文本中段时,遵循率会直线下降。150 行是把注意力机制压在"高度聚焦区"的甜区。

2. 程序性工作流:让 Agent 从"无法完成"到"一次成功"

把任务写成编号的多步骤工作流,是测量到的最强模式之一。

一个真实例子:部署新集成的六步工作流。Agent 照步骤执行后——

  • • 缺少连接文件的 PR 比例:40% → 10%
  • • 正确性 +25%
  • • 完整性 +20%

工作流的本质是消除歧义,让 Agent 不用猜

3. 决策表:在写第一行代码前就解决"二选一"

代码库里经常有两三种都说得通的做法——React Query 还是 Zustand?REST 还是 GraphQL?

决策表强制提前选好。Agent 读完就知道走哪条路,不用在代码里反复试探。

效果:相关区域的 PR 在"最佳实践遵从度"上 +25%。

4. 真实代码片段,不是伪代码

来自实际生产代码的 3~10 行短片段,改善了代码复用和模式遵从。

关键词是"真实"——伪代码和示意性代码效果远不如直接从生产代码里截取的。但保持在最相关的几个示例以内,超过这个数量,Agent 会开始在错误的地方做模式匹配

很多人到这里会担心:代码飞速迭代,硬编码的片段下个月就过期了,AI 不就被带偏了吗?
解法:动态引用优于硬编码。如果工具支持,尽量用相对路径或 @引用核心文件,让 Agent 跳去看活的代码;只有在那段逻辑足够稳定时,才直接复制片段。复制进来的片段,必须进 Code Review 的 checklist——API 一变就同步更新,否则它就从资产变成毒药。

5. 每个"不要做"都配上"要做"

只有警告的文档,表现一贯不如"禁令 + 替代方案"配对的文档。

❌ 不要直接实例化 HTTP 客户端

✅ 不要直接实例化 HTTP 客户端。
   使用 lib/http 中带有重试中间件的共享 apiClient。

第一条让 Agent 变得谨慎和探索性——它知道不能做什么,但不知道该做什么,于是开始翻代码库。第二条告诉它该怎么做,直接继续。

有 15 条以上连续"不要做"且没有"要做"的文件,会导致 Agent 过度探索、保守行事、完成更少工作。

6. 代码模块化,文档也要模块化

表现最好的 AGENTS.md,描述的是相对隔离的子模块。仓库根目录的大型跨领域文件,效果不如模块级别的。

更关键的是:AGENTS.md 只是入口,周围环境才是问题所在

实验里,一个模块有 37 个相关文档总计 50 万字符;另一个有 226 个文档超过 2MB。这两种情况下,仅仅移除 AGENTS.md 几乎不改变 Agent 的行为——因为 Agent 会继续找到并阅读周围的文档蔓延。

一个聚焦的 150 行 AGENTS.md,放在 50 万字符的周围规格之上,救不了你

修复文档环境,不是只修入口。

7. 特定领域规则要具体、可执行

语言特性、框架约定、安全限制——这些规则有效,前提是具体且可执行。堆几十条模糊规则,效果跟没写一样。

两个最常见的失败模式

1. 过度探索陷阱(上下文腐烂)

最常见的失败,本质是上下文中毒

两种写法触发它:

太多架构概述
Agent 被拉去阅读数十个文档,试图"更好地理解架构",加载几万甚至几十万 token 后,输出反而变差。

过多警告堆叠
大量"不要做"且没匹配"要做",Agent 会对每一条警告都去验证当前方案是否违规。30~50 条警告,意味着它要去翻迁移脚本、检查 API 版本兼容性、探索认证中间件——即使这些跟当前任务完全无关

2. 文档描述了代码库里还不存在的模式

如果在 AGENTS.md 里写了一个"打算引入但还没落地"的新模式,Agent 会被积极地引向错误方向——它按文档去找根本不存在的代码,然后产生错误的解决方案。

AGENTS.md 描述现状,不是愿景。

文档发现率


Augment Code 在数百个 session 里追踪了 Agent 实际读取了什么:

  • • AGENTS.md:100%,自动发现
  • • AGENTS.md 中引用的参考文件:>90%,按需加载
  • • 当前工作目录的 README.md:>80%
  • • 嵌套子目录的 README:~40%
  • • _docs/文件夹中无引用的孤立文档:<10%

一个服务在 _docs/里放了 3 万字符的协议设计、限流规则和安全文档,Agent 在数十个 session 里几乎从未打开过其中大多数

**AGENTS.md 是唯一具有可靠发现性的文档位置。**如果某些内容需要被 Agent 看到,要么在那里,要么从那里直接引用。把内容移到被引用的位置,往往比写更多文档更有杠杆效果。

几个值得讨论的边界

到这里我把 Augment Code 的实验讲完了。但作为一个见过太多"银弹"的工程师,必须把下面这几条也说清楚——否则这套方法落到不同团队、不同工具上,会失效。

1. AGENTS.md 不是 README 的替代品

读到"主文件控制在 150 行 / 不要写架构概述",很多人会担心:那新人入职怎么办?架构图、历史决策、设计哲学谁来讲?

答案是分受众。

README 是写给人类的
人类需要架构、愿景、来龙去脉,才能在脑子里建立心智模型。

AGENTS.md 是写给机器的执行手册
它只关心规则、工作流、防坑指南。

接受这种分离,是 AI 时代工程实践的第一步。两份文件不是 DRY 的破坏,而是因为受众不同,关心的层级也不同。当然,两份都要维护——这是真实成本,要计入。

2. 维护成本不能假装不存在

"使用真实代码片段"+"描述现状不描述愿景"这两条加起来,意味着 AGENTS.md 是一份高频更新文档

不接受这一点的团队,AGENTS.md 几个月后就会变成第二种失败模式——描述了代码库里已经不存在的模式,把 Agent 主动引向错误方向。

应对办法:

优先用引用,不用复制
真实代码片段尽量是文件路径 + 函数名而不是粘贴。

复制片段进 Code Review checklist
API 改动时强制 reviewer 检查 AGENTS.md。

定期 prune
每个迭代/季度删一遍过时的警告与工作流,比加新条目更重要。

3. 150 行不是真理,是当前模型的甜区

这条数据来自 Augment Code 自家的 RAG 与上下文管理策略。换一套底层 Agent(Cursor / Claude Code / Devin / Copilot Workspace),检索算法和注意力分布都会不同。

100~150 行真正的含义不是"上限",而是:把规则压进模型注意力机制最聚焦的那一段。模型一升级,这个数字会往上挪;但"主文件聚焦、细节外推"这个结构原则不会变。

把它当原则用,不要当数字背。

最后

这件事最有价值的地方,不是抛出了什么新奇的结论,而是用数据把一件模糊的事说清楚了:

AGENTS.md 不是越多越好,不是越全越好,不是越详细越好。

它是一个精心设计的上下文入口。写好了,相当于免费升级了一个更强的模型;写烂了,你付出维护成本,换来一个比裸跑更差的 AI。

在 AI 工程里,"少即是多"这句话,从未像现在这样字面成立过。

转自:https://mp.weixin.qq.com/s/3bTDtC5keck37gq4NMAi9Q