用户喊话Claude:别再死记硬背杂七杂八的内容
速览
用户对Claude模型记忆随机、无关内容的行为表示不满,公开喊话希望改善。这一现象反映了当前AI模型在数据学习与记忆管理上的隐忧,可能影响用户对AI可靠性的信任。同时暗示大模型在训练数据筛选与记忆机制上仍需优化。
AI 深度解读
背景
在AI编程助手的实践中,许多团队试图通过保存和索引agent与开发者之间的会话记录(session transcripts)来增强记忆、提升任务表现。这种思路源于一个直觉:会话记录中包含了大量有价值的信息,如代码存在的原因、用户意图、尝试过又被放弃的方案等。基于此信念,一些公司甚至开发了完整的产品。然而,Agentics团队在大量实验后发现,当agent已经能获取其他形式的上下文(如代码工件、PR、文档)时,直接搜索历史会话记录并未带来性能提升,甚至可能使模型变得更差。这篇文章来自Hacker News,分享了对这一现象的深入观察和反思。
核心内容
Agentics团队发现,在SWE(软件工程)任务中,如果agent已经可以访问其他形式的上下文(如代码、文档、PR),那么再赋予其对历史会话记录的搜索能力,性能收益为零。换句话说,自动从会话记录中挖掘信息来改善agent上下文,几乎没有任何帮助,除非有人工参与(human in the loop)。
这一结论出乎意料。直觉上,agent与工程师之间的会话记录似乎蕴藏着丰富的信息:代码为什么存在、用户意图是什么、用户尝试过哪些方法并最终放弃。至少,它应该能提供一些额外的上下文来增强agent的理解。正因为这种信念如此强烈,该团队甚至围绕这个概念构建了完整的产品,曾宣称“会话记录是新的石油”,比代码本身更有价值。
其他团队显然也有类似想法,因此市面上出现了大量基于会话记忆的工具,其中包括Claude Code自身。
常见的架构模式如下:
- 将整个组织的所有会话记录存入数据库
- 在其上构建向量搜索、Elasticsearch或SQL搜索层(雄心勃勃的团队会三者兼用,甚至引入图数据库)
- 通过MCP或CLI技能暴露给agent使用
然而,经过数月有无会话搜索访问权限的对比测试,该团队发现这些额外工作完全没有带来任何实质差异,甚至可能让模型表现更差。
为什么会这样?核心原因在于团队非常重视代码工件(coding artifacts)。他们已不再手工编写代码,而是强调良好的提交信息、PR信息和全面的文档。每一次代码变更都附带了丰富的元数据,与代码一同提交。当agent处理代码时,会被指示去查看文档和之前的PR。换言之,agent已经蒸馏(distill)了会话记录中有价值的信息,并将其存储在需要且易于访问的地方。因此,当agent使用会话搜索服务时,它最终只是花费token阅读自己已经知道的内容,同时拾取了agent最初决定不写下来的各种杂乱信息。偶尔可能找到一些有用的金块,但大多数时候,agent只是在查看一个伪无意义的草稿本,浪费宝贵的token。
此外,agent在移除无用上下文方面表现极差——这是维持长期记忆的关键能力。在数千次会话中,团队从未见过agent主动移除一次上下文。这不是通过巧妙的提示工程就能解决的特性。agent没有状态,因此它们必须假设输入上下文窗口中的一切都是事实依据。每一行代码、每一段记忆、每一个token都被视为意图的表达——即使这些代码或记忆是由某个先前的agent会话随机生成、从未经人类审查或理解。这种意图漂移会随着agent自主构建记忆库而不断累积。
据作者所知,目前没有任何编程基准测试假设输入数据是损坏的。事实上,模型会因为假设输入数据有误而受到惩罚。这在一定程度上也是一个对齐问题:我们不希望agent执行非预期的操作,同时没有一个简单的方法来平衡“不要删除代码库”和“删除一些输入上下文”。
由于模型无法自主整理自己的记忆,自动记忆最终只会走向同一个结果:大量垃圾占用token,推高成本,降低模型质量。
因此,作者对那些索引、存储并提供会话记录给agent的工具变得非常悲观。会话记录可能对团队的可观测性有用,但不会让agent变得更好。
这并不意味着agent在随时间学习上下文方面毫无作用。该团队使用内部的nori机器人每周审查公司内所有PR、Slack、Drive等活动,然后对内置的nori技能集提出一组修改建议,并在Slack中标记团队。这些建议默认都处于“拒绝”状态。接受修改必须有人实际查看差异并确认符合意图。团队接受率低于20%,这意味着80%的“自动”更新实际上会让模型更差。如果一家几百人的组织都自动保存这些“更新”,后果将不可持续。
Agentics是关于如何使用和推理agent的研究。
关键要点
- 会话记录搜索对SWE任务无性能提升:当agent已能访问其他上下文(代码、PR、文档)时,额外提供历史会话搜索不会带来收益,甚至可能降低表现。
- 代码工件是更好的信息来源:精心编写的提交信息、PR描述和文档已经蒸馏了会话中的有价值信息,agent只需访问这些已有结构化的上下文。
- agent缺乏移除无用上下文的能力:它们将输入上下文中的所有token都视为事实依据,无法筛选和丢弃无用信息,导致意图漂移和成本浪费。
- 自动记忆机制可能使模型更差:实际上,无人工审查的自动记忆更新往往引入垃圾信息,接受率低于20%。
- 现有基准测试不包含损坏输入数据的情况:模型被训练为信任输入,无法有效处理输入数据污染或错误。
- 会话记录的价值在于团队可观测性,而非提升agent性能。
意义与影响
这篇文章挑战了当前AI agent开发中一个流行的假设:存储和检索历史会话记录能够有效增强agent的长期记忆和表现。它揭示了在已有良好代码工件和文档实践的情况下,额外添加会话记忆层可能适得其反。这提醒从业者,更重要的不是盲目积累数据,而是设计高质量、结构化的上下文来源(如PR、提交信息、文档),并让agent专注于这些经过人工提炼的信息。
同时,该结论也凸显了当前agent在记忆管理上的根本缺陷:无法自主丢弃无用上下文。这意味着,任何试图让agent“自动”积累长期记忆的方法都可能引入噪声,并逐步降低模型质量。未来,agent需要更强的上下文筛选和过滤能力,或者依赖人工在环中的验证机制。
对于整个领域而言,这一发现可能促使团队重新评估记忆系统的设计思路:从“存储一切”转向“只存储精华”,并更重视人类对信息蒸馏和验证的参与。此外,也提示了基准测试的不足——未来需要引入模拟输入数据损坏的场景,以更好地衡量agent的真实鲁棒性。
