← 最新论文
🤖 machine learning

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

本文将“灾难性记忆”识别为 CLAUDE.md 等智能体编码提示词中无界增长的原因,证明了追加指令的成本很低,而删除指令在计算上却极其昂贵,并提出通过在提示词注释中嵌入潜在推理可以有效遏制这种发散,并显著提高指令遵循性能。

原作者: Kushal Chakrabarti

发布于 2026-08-12
📖 1 分钟阅读☕ 轻松阅读

原作者: Kushal Chakrabarti

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在教一个非常聪明但有点健忘的机器人助手如何完成一项特定的工作,比如写博客文章或修复代码。你开始给它一个简单的规则列表:“使用三个段落”、“不要使用‘非常’这个词”以及“结尾一定要带上笑脸”。这被称为提示词(Prompt)。在人工智能的世界里,这些提示词就像是机器人的说明书。

现在,假设机器人犯了一个错误。你通过添加一条新规则来修正它:“好的,还要确保正好使用五个要点。”机器人再次尝试,失败了,于是你又加了一条规则:“并且记得每个句子的首字母都要大写。”随着时间的推移,这个规则列表变得越来越长。在计算机科学中,有一个著名的概念叫做灾难性遗忘(Catastrophic Forgetting),指的是机器人学习新知识时,不小心抹去了对旧知识的记忆。但本文讨论的是相反的问题:灾难性记忆(Catastrophic Remembering)。这是指机器人(或管理它的程序)不断添加规则,却从不删除不再需要的旧规则。列表变得如此庞大且混乱,以至于机器人会感到困惑、变慢,并重新开始犯错。核心问题在于:为什么这个列表会无止境地增长?我们该如何阻止它?

关于永无止境列表之谜

本文作者,来自 South Park Commons 的 Kushal Chakrabarti,决定调查为什么这些“智能体型(Agentic)”指令列表(在软件项目中通常命名为 CLAUDE.mdAGENTS.md 的文件)似乎会无限制地增长。他们研究了 GitHub 上近 1,870 个真实的软件项目,并追踪了超过 247,000 条单独指令的生命周期。

他们发现了一个奇怪的模式:这些列表几乎从未缩减过。相反,每当文件进行一次更新时,平均会增加 4.9 条新指令。在文件的整个生命周期内,指令数量增加了 226%,甚至超过了原来的 三倍。平均每个文件最终会有 39 条指令,但有些甚至超过了 100 条。

研究人员问道:为什么人们不直接删除那些旧的、没用的规则呢?

他们发现,罪魁祸首并不是因为规则“陈旧(Stale)”(过时)或者坏规则死得早。相反,问题在于不完美的记忆回溯(Imperfect Recall)。可以这样理解:当你向列表添加一条新规则时,你知道为什么要添加它。也许你添加“使用三个段落”是因为机器人之前总是写四个段落。但那个“为什么”只是你脑中的一个念头,它并没有被写下来。

随着时间的推移,其他人在编辑文件,或者项目发生了变化,最初的理由就淡忘了。如果你在六个月后看到这条规则“使用三个段落”,你根本不知道它为什么在那里。是因为机器人太啰嗦了?还是因为老板要求的?由于缺乏这个理由,删除这条规则感觉是有风险的。你会担心如果删除了它,机器人会再次出错。所以,你把它留在那儿。与此同时,你又在为新的问题添加新的规则。结果就是一个臃塞、混乱、没人能理解的规则列表。作者称之为灾难性记忆:保留了所有你应该忘记的东西。

“推土机”效应

研究还发现了一些关于人们如何试图修复这些混乱列表的有趣现象。他们很少只删除一两个坏规则,而是倾向于按下“全部删除”按钮。数据显示,76.8% 的指令删除行为都发生在一个巨大的“重写”过程中,即某人一次性删除了文件的一半或更多内容。这就像一个园丁无法决定拔掉哪些杂草,于是干脆把整个花园烧掉,然后重新开始。

但关键在于:即使经过了这次“焚烧”,花园还是会重新长出来。列表会立即重新开始增长,且增长速度与之前一样快。这被称为棘轮效应(Ratchet Effect)。规模虽然下降了,但增长率并没有改变。根本原因——即人们无法记住最初添加规则的原因——从未被解决,所以列表会再次开始填满。

“注释”的魔力

那么,我们如何阻止列表无限增长呢?论文提出了一个软件工程师使用了几十年的解决方案:注释(Comments)

在常规计算机代码中,程序员会在代码旁边写下小笔记,解释他们为什么要那样编写代码。这些笔记对计算机是不可见的,但对阅读代码的下一个环节的人非常有帮助。研究人员测试了这种方法是否同样适用于 AI 提示词。

他们设置了一个模拟实验,让“维护者”(AI 智能体)去构建和修复一个提示词。在一组实验中,他们必须在没有任何笔记的情况下编写指令。而在另一组中,他们被允许在每条指令旁边添加一个注释,用以解释原因。例如,在“使用三个段落”旁边,注释可能会写道:“添加此规则是因为机器人在第三轮中一直写四个段落。”

结果非常显著:

  • 没有注释时: 提示词的大小比完成任务所需的完美、最小规模要大出 211.3%
  • 有注释时: 提示词的大小保持得几乎完美,仅比最小规模大出 1.4%

注释就像一台时光机。它们保存了每条规则背后的“潜在推理(Latent Reasoning)”(隐藏的原因)。当维护者稍后查看列表时,他们可以通过注释了解该规则是否仍然需要,或者意识到它已不再必要,从而安全地将其删除。注释消除了 99.3% 多余且不必要的指令。

它真的效果更好吗?

研究人员不仅停留在缩短列表上,他们还检查了机器人的表现是否真的有所提升。他们发现,当提示词充斥着无用的、嘈杂的指令时,机器人会感到困惑并犯更多错误。通过使用注释来保持列表的简洁和专注,机器人的指令遵循能力提高了多达 23.1%

研究还表明,即使指令很复杂且“维护者”是非常聪明的 AI 智能体,这种方法依然有效。AI 的能力越强,它就越倾向于过度添加规则,但也越能从这些有助于保持克制的注释中获益。

核心启示

论文以一个幽默但严肃的问题结束:“如果英语是新的编程语言,为什么我们还没有注释呢?”

正如人类程序员很久以前就学会了需要解释为什么要写某行代码一样,管理这些 AI 提示词的人(以及 AI 智能体)也需要开始记录下添加规则的“原因”。如果没有这些解释,规则就会堆积,系统会变得混乱,性能也会下降。解决方案不是停止添加规则,而是要在每条规则旁边写下一小段笔记,以便让下一个人(或机器人)准确知道哪些该保留,哪些该丢弃。这能将一个混乱、不断膨胀的怪物,变成一个干净、高效的工具。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →