AGENTS.md 系列总结:五个教训、常见问答与我的复盘

Dev.to AI 2026-07-28T23:10:55.982105

TL;DR —— 五篇文章,一个文件。整条路线:它是什么 → 动手写一个 → 为何会腐化 → 保持真实 → 从事实中自动生成。本篇是收尾篇:系列地图、五个常见问答、以及最重要的教训——事实块 vs 独特文风。

📚 AGENTS.md 系列 · 你正在阅读第 6 篇——系列总结 I · 实战指南 II · 动手写 III · 腐化 IV · 保持真实 V · 从事实生成 VI · 系列总结(就是本篇)

新读者?
AGENTS.md 是仓库根目录下的一个 Markdown 文件,告诉 AI 编程 Agent 如何在这个项目里工作——命令、测试、约定、护栏。它是 AAIF / Linux Foundation 下的开放标准。如果你想了解全貌,从第 I 篇开始看。

我们讲了什么

五个教训,一个目标:让 briefing agent 真正按你定的规则来。

篇章 角色 一句话总结
I 实战指南 AGENTS.md 该放什么、不该放什么
II 动手写 构建一个真实文件,然后让 Agent 去用它
III 腐化威胁 过时的文件依然会被严格执行——而且毫不怀疑
IV 保持新鲜 同 PR 反腐化、用 Agent 验证、让真相跟上代码变化
V 终极方案 从仓库事实自动生成文件,彻底解决跑偏问题

如果你只打算在本文之外再读一篇:选第 III 篇(如果你还没体验过腐化);选第 V 篇(如果你已经有文件,想让文件不再撒谎)。

路线总览:整条弧线如何衔接

把它当作一条完整路径,而不是五个孤岛。

VI 本篇 → 地图 · 常见问题 · 教训

前三篇(I、II)让你得到一个能跑起来的文件。III、IV 让它在变更后依然诚实。V 剔除了那些本就不该手动编写的行。本篇(VI)就是这张地图,以及一个需要人为判断的问题:哪些事依然离不开人。

这个系列并不是在鼓吹把 AGENTS.md 写得更长,而是主张写得更真——先写一个简明的事实块,再配上你的叙事。总长度由你自己决定。


五个常见问题

1. 如果我已经有 README / CONTRIBUTING / CLAUDE.md,还需要 AGENTS.md 吗?

需要——只要你的 repo 里跑着 agent。README 是给人浏览的;CONTRIBUTING 是流程说明;厂商专属文件(如 CLAUDE.md)是给特定工具用的。AGENTS.md 则是通用工具无关的简报,很多 agent 已经在主动寻找它。保持简短,用链接展开深度,不要复述一本小说。

2. 它应该多长?

短到让 agent(以及人类)仍然愿意信任每一行。优先放那些能直接运行的命令、真实存在的路径、以及确实能起作用的护栏。如果某个段落无法通过目录树或一条规则验证,就删掉它,或者移走它。

3. 最常见的失败模式是什么?

看起来依然官方,但内容已经过时。重命名的脚本、废弃的测试命令、滞后于目录结构的映射——agent 会十分信任地照着它们执行。第三篇才是整个系列的核心。新鲜度不是锦上添花,它就是产品本身。

4. 应该每一行都自动生成吗?

不。生成(或检查)那些仓库能证明的东西:包名、脚本、项目布局、CI 命令。保留只有人类才能拥有的内容:判断力、产品的「为什么」、不在目录树中的团队规范、以及尚未写成 linter 规则的「永远不要做 X」。第五篇是事实块部分的终局——不是对判断力的替代。

5. 我什么都没有,从哪里开始?

第一篇 —— 形状与反模式
第二篇 —— 写一个并用 agent 验证
当它开始撒谎时,去读第四篇,然后是第五篇
不要永远跳过第三篇——你迟早会通过痛苦的方式遇到它。


我的教训:事实块 vs 独特叙事

如果说这个系列只留下一个观点,那就是这句。

事实块(Facts block)—— 核心原则

项目 含义
独特描述(Unique prose) 仓库已经知道或能证明的内容
只有人类才该断言的事情 构建/测试命令、包布局、入口点、CI检查等
产品为何存在、团队偏好、软性规范、尚未编码的硬性“绝对不做” 失败模式:漂移(如目录移动但文件没跟着动)、模糊或说教(AI无法操作)
修复方法 从目录树出发检查,漂移时CI失败(✓);写短小、可执行、由人类负责的内容,当规范变化时与变更提同一PR(✓)

更好的 AGENTS.md = 与树结构匹配的事实 + 值得占据字符的描述文字。

以前我总把整个文件当成“我该维护的文档”。这个系列教会我把任务拆分开:用自动化保证地图(目录结构)的真实性;把人类精力留给判断。这就是“文件存在”和“文件值得被信任”之间的区别。

实践中的“好”与“更好”对比

维度 好 (Good) 更好 (BETTER)
文件存在于仓库根目录
AI能遵循设置/测试命令 常常可以 命令与 package.json / just / CI 当前状态匹配
结构/地图 含糊或不全 与实时目录树匹配(或特意指向它)
过时行 “我们以后修” 与变更同PR,或重新生成事实
长度 又长又炫 短而真

Goose、Cursor、Claude Code、Copilot、Codex —— 它们都不需要你的回忆录。它们需要一份简报,让它们不会满自信地冲进一个已被重命名的脚本。

问答与反馈

这篇文章是 AAIF(AI Agent 交互框架)大使计划系列收尾 —— 一份实用、无厂商偏见的 AGENTS.md 指南。

我想听听你的声音:
- 你的 AGENTS.md 最先在哪个部分腐烂(命令、结构、围栏、还是其他)?
- 你尝试过从事实出发编写(Part V)吗?什么环节出了问题?
- 这五篇文章还没触及到哪些 AGENTS.md 讨论中的空白?

欢迎在本文下方评论,或在你关心的项目上发起讨论(例如:确保那个仓库的 Structure 部分与 crates/ / src/ 保持一致)。当真实的目录结构开始挑战漂亮的文档时,标准才会变得更好。

系列索引(请收藏)
- AGENTS.md:让 AI 编程 Agent 真正有用的一份文件 — 实践指南
- AGENTS.md 动手实操:一步步构建 — 教程
- 你的 AGENTS.md 已经过期(而你的 Agent 却完全信任它)— 威胁
- AGENTS.md 保持真实:逐步阻止腐化 — 纪律
- AGENTS.md 基于事实:撰写一份不会偏移的文件 — 终极工具路径
- 本文 — 总结 · 常见问题 · 事实 vs 叙述

延伸阅读:标准本身请见 agents.md,以及按章节划分的实践指南 — 什么值得写一行、排序、长度、反模式 — 在 faf.one/agents。感谢你阅读本系列。发布一份简短真实的文件,然后保持它真实。👍

AGENTS.md 系列总结:五条经验、常见问题与我本可以做得更好的地方

查看原文