文档复兴:你的 README 是 Agent 的核心上下文界面
二十年来,文档一直是良好初衷的坟墓。你在第一个 Sprint 期间编写 README,那时架构整洁,你的热情高涨。但没人读它。到了第三个 Sprint,它就开始在构建命令上误导人,到了第六个 Sprint,它描述的是一个早已被删除的服务。文档是每个人都同意缴纳但实际上没人在缴的税 —— 一种没有反馈循环的道德准则。写了烂文档,什么也不会发生。不写文档,同样什么也不会发生,因为高级工程师把架构都记在脑子里。
然后我们将编程 Agent 指向我们的代码仓库,反馈循环一夜之间降临。README 现在是你拥有的杠杆率最高的文件 —— 这并不是因为有人做了关于文档规范的励志演讲,而是因为该文件的质量现在直观地决定了你的 Agent 是交付正确的代码,还是会信誓旦旦地对一个已不存在的架构产生幻觉。
这就是文档的复兴,而它与我们过去编写的文档几乎毫无关系。
从描述性到指令性
旧的 README 是描述性的。它为人类叙述系统,人类在入职期间会粗略阅读一次,凭直觉填补空白,然后就再也不打开它。人类是宽容的读者。他们会推断。当文档与代码冲突时,他们会察觉并默默地信任代码。他们会询问隔壁桌的同事。一份陈旧的 README 只会让新员工困惑一个下午,而不会导致生产事故。
Agent 的 README 是指令性的。它不是供人类解读的叙事 —— 它是模型在接触任何一行代码之前加载的执行上下文。当你告诉 Agent “我们使用仓库模式进行数据访问,绝不直接从控制器调用 ORM” 时,这句话不只是背景介绍。它是模型在编写下一个文件时必须遵循或违反的约束。这种文件的标准化形式 —— AGENTS.md(2025 年中期在 agents.md 得到正式定义,由 OpenAI、Google、Anthropic、Cursor、Sourcegraph 和 JetBrains 共同推广,旨在取代碎片化的 .cursorrules、.clinerules 和各类工具配置文件)—— 最好被理解为一份写给会逐字逐句执行的读者的 README。
这种“字面主义”就是游戏的全部。当文档出错时,人类读者的表现会优雅降级。Agent 则不然。它会根据文件中的内容自信地操作,这意味着陈旧的指令不会导致明显的失败 —— 它会产生看似合理、结构良好但错误的代码。糟糕文档的成本从“轻微的人类困惑”变成了“看似正确但错误的输出”,这种转变让 README 从“可有可无的附属品”变成了基础设施。
