AGENTS.md 实战:如何让 Agent 读懂代码仓库
AGENTS.md 实战:如何让 Agent 读懂代码仓库
wwxdsg一个陌生 Agent 进入仓库时,最浪费时间的动作往往不是写错代码,而是猜。
它猜入口文件在哪里,猜哪条脚本才能构建,猜生产环境和本地环境是否一样,猜某个看起来能删的目录是不是生成物。项目越复杂,这种猜测的代价越高。
AGENTS.md 的意义不是替 README 再写一遍,也不是给模型塞一万字公司制度。它应该是一个高信噪比的项目入口:让 Agent 在第一次进入仓库时就知道该先看什么、不能碰什么、怎样证明工作完成。
一、一个好入口只回答关键问题
根目录的 AGENTS.md 应尽量短,但必须回答:
- 项目解决什么问题,关键入口在哪里;
- 核心架构边界和不能破坏的契约;
- 安装、运行、测试、构建的标准命令;
- 哪些目录是源文件、生成物、运行数据或敏感配置;
- 哪些动作可自主执行,哪些必须先确认;
- 详细架构、决策和进度文档在哪里。
它的目标不是让 Agent 了解一切,而是让它在十分钟内建立正确的第一张地图。
二、一个可直接开始的模板
# Project overview |
不要照抄路径。真正有价值的是把你项目里最容易被误判的地方翻译成清晰边界。
三、文档要按需展开
最大的反模式,是把所有细节都塞进根规则。最后 Agent 每次改一行样式都要读部署、数据库和历史决策,重要信息反而被淹没。
更适合 Agent 的仓库像这样组织:
AGENTS.md |
根规则提供地图;具体任务再进入对应文档。这样既减少上下文噪声,也让规则能随着项目局部演进。
四、把“不要猜”变成可执行路径
假设 Agent 要修改一篇博客文章。一个差的项目入口可能只写着“使用 Hexo”。它仍不知道文章在哪、线上文件能不能改、发布会影响什么。
更可操作的说明是:
文章源码位于 source/_posts/。 |
这几句话同时回答了入口、生成边界、验证和安全范围。它的价值远高于“请小心操作”。
五、让错误信息也成为导航
Agent-friendly 不只是写文档。脚本和错误信息也应告诉下一步。
不好的输出:
Build failed |
更有用的输出:
Build failed: required environment variable BLOG_URL is missing. |
前者只报告失败;后者同时说明根因、恢复方向和安全边界。无论读者是人还是 Agent,都更容易做对下一步。
六、检查 AGENTS.md 是否真的有用
把仓库交给一个没有聊天历史的 Agent,让它只读根规则后回答:
- 这个项目是什么,最常见任务的入口在哪里?
- 哪条命令能验证改动?
- 哪些文件不应该直接改?
- 什么时候必须停下来请求确认?
- 需要理解架构或历史决定时去哪里找?
如果它答不出来,说明不是 Agent 不够聪明,而是入口仍缺少信息。把这些问题变成回归检查;每次有人踩到新坑,就考虑是否应该补一条短规则或更清晰的脚本提示。
AI 实现摘要
- 要解决的问题:为陌生 Agent 提供高信噪比仓库入口,减少错误定位、架构违规和危险操作。
- 适用版本与前置条件:适用于任意使用版本控制的项目;推荐维护 Markdown 文档和稳定的 build/test 命令。
- 输入、输出与验收标准:输入为项目结构、命令和安全边界;输出为根
AGENTS.md与按需文档地图。新 Agent 应能定位入口、验证命令、禁止目录和审批条件。 - 文件改动清单:根
AGENTS.md,可选docs/architecture.md、docs/decisions/、docs/agent/、skills/与scripts/。 - 完整命令:使用项目自身命令;最低限度建议提供可重复的 install、run、test、build 和 validation 入口。
- 测试步骤与预期结果:让无历史上下文的 Agent 按根规则完成一项只读定位或小修改任务;预期它不误改生成物,且能运行正确验证命令。
- 常见错误、回滚方法与安全边界:不要将密钥、生产地址、个人数据或完整运行日志写入文档。规则更新应走版本控制;错误规则可通过回滚提交恢复。