很多人给编程 Agent 写规则文件,第一反应是"把能想到的都写进去"。陈大黄在分析 Codex、ZCode 等工具时给出了相反的建议:这个文件越满,Agent 越容易跑偏。

原因在于 agent.md 的加载方式。它会在每次对话中默认注入上下文,相当于 Agent 的"宪法"——不是参考文档,而是每次都要重新读一遍的最高规则集。塞进去的每一条,都会占用模型的注意力预算。

规则堆多了,模型会"分心"

陈大黄把这种后果称为上下文腐化。规则一旦过载,模型的注意力被分散,对任务的理解就会出现偏差。他打了个比方:既然是宪法,就得保持精要,不可能什么东西都往里面塞。

这解释了一个常见困惑——为什么规则写得越细,Agent 反而越不听话。问题不在规则本身对不对,而在它们挤占了本该留给当前任务的注意力。

只留两样东西

按这套思路,agent.md 里真正该保留的内容并不多:

  • 项目的整体概览,让 Agent 知道自己在什么代码库里干活
  • 关键命令与架构,也就是跑起来、测起来必须知道的那几条

其余的具体规则,交给 Agent 自己去索引,或者让它辅助撰写。人工过度堆砌规则,反而是在给模型添负担。

这个思路和多数人的直觉相反。大家习惯把规则文件当成知识库,恨不得把所有约定、风格、禁忌一次性写全。但 agent.md 的定位不是知识库,是每次对话都要过一遍的入口——入口越窄,后面的路越好走。

对写 Agent 规则的人来说,这或许是个值得重新审视的起点:先问一句,这条规则真的需要每次对话都出现吗?