一份好的 AGENTS.md,就是模型升级

38 阅读5分钟

一份好的 AGENTS.md,就是模型升级

你花钱升级的 Claude,在你写的 AGENTS.md 面前,可能还不如免费的。


最近在折腾 AI 编码助手,Claude Code、Cursor、Codex CLI 都试了一圈。

发现一个反直觉的事:模型之间的差距,远没有 AGENTS.md 之间的差距大。

写得好的 AGENTS.md,效果相当于从 Haiku 升级到 Opus。写得差的,比没有还烂。

这不是瞎说。Augment Code 团队从自家 monorepo 里抽出几十份 AGENTS.md,做了系统性评测。结论是:同一个文件,对一个任务提升 25%,对另一个任务降低 30%。


核心认知:AGENTS.md 不是文档,是 Prompt

这是最关键的一句话。

AGENTS.md 不是写给人看的 README,它是写给 AI 模型看的系统提示词。你不是在写文档,你是在给模型做"上下文工程"。

意味着什么?写得好,模型变聪明。写得差,模型变笨。跟你说什么"模型不行"没关系,是你喂给它的上下文不行。


什么样的 AGENTS.md 有效

总结了 6 种经过验证的模式。

1. 渐进式展开,别堆砌

100-150 行的核心文件 + 几个引用文件 = 最佳组合。

核心文件写概览和关键规则,细节扔进引用文件,让模型按需加载。

超过 150 行之后,效果开始反转。模型会陷入"过度探索"——读了太多上下文,反而被干扰。

说白了,AGENTS.md 不是越全越好。它是"技能树",不是"百科全书"。

2. 流程化描述,别写散文

把部署、测试、发版这种流程,写成编号步骤。

一个真实案例:六步部署流程,缺配置文件的比例从 40% 降到 10%,正确性提升 25%。

模型需要的是"第一步做什么,第二步做什么",不是"我们应该怎么做"。

3. 决策表解决歧义

当你的代码库有两种写法时,别让模型猜。直接给决策表。

比如 React Query vs Zustand:

  • 只有服务端数据?→ React Query
  • 多处修改同一状态?→ Zustand
  • 需要乐观更新 + 本地状态混合?→ Zustand

这个模式直接把最佳实践遵循度拉高了 25%。模型不用猜了,按表选就行。

4. 放真实代码片段,别放伪代码

3-10 行的真实生产代码,比任何说明都有用。

比如放一个 Redux Toolkit 的 createSlice 模板、一个 typed useAppSelector hook。模型直接照着写,代码复用率提升 20%。

代码是最好的文档,对人如此,对模型更是如此。

5. 领域规则要具体可执行

"用 Decimal 而不是 float 做财务计算"——这种规则直接有效。

"注意性能"——这种规则等于没说。

规则的颗粒度决定了模型的执行力。

6. 每个"不要"配一个"要"

只说"不要"的 AGENTS.md 是毒药。

试过写 30 条"不要"规则,覆盖数据库迁移、API 版本、部署安全、认证边界。结果模型变得过度保守,什么都怕碰,产出直接腰斩。

正确做法:"不要直接实例化 HTTP 客户端"后面紧跟"使用 lib/http 中的共享 apiClient"。

告诉模型该做什么,而不是不该做什么。


最常见的坑:上下文腐烂

这是踩坑最多的地方。

架构描述太多

AGENTS.md 里写了完整的架构全景、消息队列、API 网关路由、共享中间件。任务只是一个两行配置修改。

结果:模型读了 12 个文档,加载了 80K token 的无关上下文,最后改了个半成品。

教训:架构描述要简洁,聚焦边界,写"是什么"而不是"为什么"。

警告太多

30+ 条"不要"规则,覆盖各种边界场景。任务只是一个简单的 CRUD 接口。

结果:模型逐条检查每个警告是否相关,探索了一堆不需要碰的代码。PR 耗时翻倍,完成度降低 20%。

教训:核心警告留在主文件,大部分扔进引用文件。每个"不要"配一个"要"。

旧文档挡新路

AGENTS.md 记录了 REST + 轮询模式。任务是用 WebSocket 做实时协作。模型乖乖跟着文档写了轮询方案——技术上能跑,架构上全错。

教训:引入新模式时,AGENTS.md 要同步更新,否则它会变成路障。


关于文档发现率

还发现一个有意思的数据:

  • AGENTS.md → 100% 自动发现
  • 引用文件 → 90%+ 按需加载
  • 目录级 README → 80%+ 工作在该目录时读取
  • 嵌套 README → 只有 40% 被发现
  • 孤立文档(_docs/ 文件夹)→ 不到 10%

AGENTS.md 是唯一可靠被发现的文档位置。 重要的内容要么放在这里,要么从这里引用。

一个真实案例:某个服务在 _docs/ 里放了 30K 字的协议设计、限流规则、安全文档。几十个会话下来,模型几乎没打开过。


实操建议

该写什么

  1. 项目概览:这是什么项目,核心模块有哪些(5 行以内)
  2. 开发流程:怎么跑测试、怎么发版、怎么部署(编号步骤)
  3. 决策表:常见歧义场景的选择依据
  4. 关键规则:可执行的领域约束(不超过 10 条)
  5. 代码示例:2-3 个真实代码片段

不该写什么

  1. 完整的架构拓扑图(模型会过度探索)
  2. 30 条以上的警告(模型会过度保守)
  3. 与当前代码库无关的通用建议
  4. 需要追溯原因的"为什么"(模型只需要知道"是什么")

结构建议

/AGENTS.md                    ← 根目录:项目概览 + 核心规则(100-150行)
├── /src/AGENTS.md            ← 源码模块:开发规范
├── /api/AGENTS.md            ← API 模块:接口约定
├── /docs/reference/          ← 引用文件:按需加载

写在最后

AGENTS.md 的本质,是你和 AI 模型之间的一份"合作协议"。

你写得清楚,模型就执行得准确。你写得模糊,模型就开始猜。你写得太多,模型就被淹没。

一份好的 AGENTS.md,不需要你升级模型,就已经是模型升级了。


相关话题: #AI编程 #ClaudeCode #Cursor #AGENTS.md #提示词工程