MODULE // PAPERS

agentic coding影响力 87.8

Why Does CLAUDE.md Keep Growing? Catastrophic Remembering in Agentic Coding

这篇论文揭示了一个反直觉的现象:AI 编程助手(如 Claude Code)的指令文件 CLAUDE.md 会像“记忆雪球”一样无限膨胀,作者称之为“灾难性记住”(catastrophic remembering)——它是灾难性遗忘的镜像问题,并证明在提示词中写入“注释”可以显著遏制这一增长,甚至提升真实任务中的指令遵

arXiv 2608.11095Kushal Chakrabarti

Why Does CLAUDE.md Keep Growing? Catastrophic Remembering in Agentic Coding

一句话概括

这篇论文揭示了一个反直觉的现象:AI 编程助手(如 Claude Code)的指令文件 CLAUDE.md 会像“记忆雪球”一样无限膨胀,作者称之为“灾难性记住”(catastrophic remembering)——它是灾难性遗忘的镜像问题,并证明在提示词中写入“注释”可以显著遏制这一增长,甚至提升真实任务中的指令遵循能力。

问题背景

在人类团队中,README 或项目文档通常有“生命周期”:项目稳定后文档会收敛,甚至被精简。但在 agentic coding(智能体编程)场景下,像 CLAUDE.md 这样的指令文件却表现出“只增不减”的顽固趋势。作者从经济学般的成本结构切入:追加一条指令的成本几乎为零(写一行字即可),但删除一条指令的代价却是指数级的——因为一旦指令背后的原始理由(rationale)丢失,你无法确定删除它是否会导致模型在某个隐藏场景下出错,这种验证成本在最坏情况下是 O(2^|D|),其中 |D| 是当前指令总数。

这种不对称性导致了一个恶性循环:指令越积越多,文件越来越长,而删除的决策越来越难。作者将这一现象命名为“灾难性记住”,与机器学习中经典的“灾难性遗忘”(模型学新忘旧)形成镜像对照——在持续学习里我们担心遗忘,在 agentic 编程里我们反而被“过度记住”所困。

方法要点

论文的方法分为三个层次,层层递进:

  1. 大规模实证测量:作者分析了 1,867 个真实仓库中的 247,694 条指令生命周期。他们追踪每条指令从被写入到被删除(或存活至今)的完整过程,量化了指令文件的增长速率、净增指令数、以及指令存活时间与删除概率的关系。

  2. 构造“可验证世界”:作者借鉴 IFEval(Instruction-Following Evaluation)的思路,将其“反转”——不是用提示词去测试模型,而是构造一类已知最优提示词的任务环境。在这样的世界里,每条指令的“正确性”是可以被客观验证的,从而能精确测量“多余指令”的数量。

  3. 真实场景验证:将同样的“注释方法”应用到 WildIFEval(一个更贴近真实世界的指令遵循基准),检验注释能否改善实际 agentic 编程中的指令遵循表现。

核心干预手段非常简单:在提示词中为每条指令添加注释,记录其存在的原因(rationale)。这样,当后续需要删除或修改指令时,模型(或人类)可以依据注释判断该指令是否仍然必要,而不必进行指数级的全组合验证。

关键结论

基于摘要可合理推断的结论如下:

  • 指令文件无界增长:agentic 提示词在其生命周期内平均增长超过三倍(+226%),平均每次提交净增 4.9 条指令。这是一个惊人的速率——意味着一个活跃项目的 CLAUDE.md 会在几个月内从几 KB 膨胀到几十 KB。

  • “越老越难删”:指令的存活时间越长,被删除的概率越低,对数风险率约为 -0.032/提交。这暗示指令文件存在“僵化效应”——早期写入的指令几乎成为永久性内容,即使它们可能已经过时。

  • 注释能“止血”:在可验证世界中,加入编码潜在推理的注释后,多余指令减少了 99.3%(从 +211.3% 降至 +1.4%)。这是一个极其显著的效果,说明“记录理由”能从根本上解决删除验证的指数成本问题。

  • 真实场景有增益:在 WildIFEval 上,同样的注释方法使真实 agentic 指令遵循能力提升了最多 23.1%。摘要未给出具体实验设置和统计显著性,但这一数字暗示注释不仅防止膨胀,还能直接改善模型的行为质量。

读后思考 / 适用场景

这篇论文的洞察力在于它把“提示词工程”从艺术提升到了工程学:提示词文件本质上是一种持续演化的知识库,而知识库管理的第一原则就是“记录元数据”。这让我联想到软件工程中的代码注释——我们早就知道“代码是给机器看的,注释是给人看的”,而这里作者把这句话升级为“提示词是给模型看的,注释是给未来的模型(和人类)看的”。

适用场景非常明确:

  • 长期维护的 agentic 项目:任何使用 Claude Code、Cursor 等工具且项目生命周期超过数月的团队,都应该在 CLAUDE.md 中为每条指令标注“为什么存在”。
  • 团队协作的提示词管理:当多人共同维护指令文件时,注释能减少“我不知道这条指令是干嘛的”的认知负担。
  • 指令审计与清理:定期检查注释中 rationale 是否仍然成立,可以像代码重构一样进行“提示词重构”。

局限与开放问题

摘要未给出的一些关键细节值得注意:

  • 注释本身的维护成本:如果注释也需要更新,那谁来更新注释?如果注释过时了,会不会反而误导删除决策?论文未讨论注释的“元维护”问题。
  • O(2^|D|) 的严格性:这个复杂度是在最坏情况下的理论界,实际中模型可能通过语义理解来近似判断,未必真的需要指数级验证。作者可能高估了删除的代价。
  • 样本偏差:1,867 个仓库可能偏向于活跃的开源项目,对于小型或个人项目,指令膨胀问题是否同样严重?摘要未给出。
  • 注释的“可读性”:模型能否可靠地理解注释中的 rationale 并据此做出正确删除决策?在 WildIFEval 上 23.1% 的提升是否意味着注释有时也会引入噪声?
  • 最根本的开放问题:如果“英语是新的代码”,那么提示词注释是否应该成为 agentic 编程的标准实践?我们是否需要一个类似“lint”的工具来自动检测和标记那些没有 rationale 的指令?

这篇论文的价值不仅在于发现问题,更在于给出了一个极其简单、可立即实施的解决方案——写注释。它提醒我们,在 AI 时代,人类最古老的工程智慧(记录决策理由)依然是最强大的工具。

本页为科普精读;细节以 arXiv 原文为准。就本篇提问请点左下角「论文研读助手」。