讲一讲https://www.anthropic.com/research/components-of-agent-memory 的 Steering Claude to write memory 这一段。我发现文章中有提到要让模型自己决定什么时候写入,更新,删除记忆。而不是一个确定性规则。人类只用告诉模型写记忆是做什么的就行。这个我觉得有点很难理解,因为我觉得现在模型写的记忆还是不可靠。有什么 benchmark 印证这个结论吗?
来自夹夹 QQ 群讨论,审核后公开 · 。查看原始讨论
提问
讲一讲https://www.anthropic.com/research/components-of-agent-memory 的 Steering Claude to write memory 这一段。我发现文章中有提到要让模型自己决定什么时候写入,更新,删除记忆。而不是一个确定性规则。人类只用告诉模型写记忆是做什么的就行。这个我觉得有点很难理解,因为我觉得现在模型写的记忆还是不可靠。有什么 benchmark 印证这个结论吗?
回答
回复 群友 3892
这篇之前有群友问过,完整解读在这里:https://jiajia.fun/digest/3d9bc42bab3319755bffed14
你的疑惑我理解,而且你抓到了一个真问题:这份证据的样本数和强度撑不起“模型自己判断更可靠”这句大结论。但文章论证的其实是另一件事,分清之后就不难接受了。
先说它到底测了什么
Steering 那段的对照只有一组:CL-Bench 的数据库任务上,分别给 Opus 5 / Opus 4.7 加上“只记录失败”这条规则,然后看它们靠记忆拿到的增益掉了多少。结果两条曲线都明显下滑。还有一组是任务里只告知“有一个记忆文件夹”,不给任何写法规则,Opus 4.7 和 Opus 5 就能用起来并涨分。左边那张 Sonnet 4.6 的图是反例:老模型需要明确指令(先读记忆文件、再验证猜想),加上之后分数差不多翻倍。
所以它的结论范围很窄:在“该写什么”这个判断上,给强模型预先固定死规则会压性能;给弱模型则相反,得给具体操作指令。它没说“模型的记忆可信”,更没说“人不用管”。这是单任务、单 benchmark、几条规则,不是系统性验证,样本量也远算不上 benchmark 级的证据。
你认为模型写的记忆不可靠,文章其实同意
整篇文章有一半篇幅在讲“不可信怎么办”:笔记会写错、会随环境漂、会被后来会话当真读进去。Mt. Moon 那个例子就是写错一条 PokéCenter 在山的哪一侧,模型出门宣布“山在我身后”,连掉三次悬崖,最后放弃不玩了。另一个数字更直观:Sonnet 3.7 在 Pokémon 里写了 413 个文件 225 个文件夹只拿一个徽章,Fable 5 写了 9 个文件拿四个。Opus 4.7 那档“开始标哪些核对过、哪些没核对”,其实就是在做可信度分级。
它解决不可信的办法不是“相信模型”,而是拿 transcript 当基准去打回重写——记忆只是假设,原始记录才是真值。这是篇文章里最硬的一条设计原则,恰好对应你担心的点。
那为什么还不能用固定规则
固定规则的问题不在于它错,而在于它不合时宜。CL-Bench 那个任务里,记失败是有用的,因为错误是主要增量;换成另一种任务,“只记失败”就把成功的验证路径丢掉了,而那条路径反而是下次能省的。规则是人在任务开始前定的,可判断价值要等任务进行中才知道。提前定死等于在任务还没发生时就猜完了。
举个很常见的对照:写死“每次会话都记下用户的项目路径”和让模型自己判断“这条路径用户在本次对话里提到过、且看起来是稳定约定,才记”。前一种在很多场景下就是噪音,后一种在识别不出时什么也不写——不对比多写要安全得多,尤其顶层还要每轮注入。
另外有个你没有明说但值得提醒的点:无监督判断和“不可靠”并不冲突到无法共存的程。不可靠的代价可以靠下层校正吸收(dreaming 拿 transcript 重写),而错写规则的代价没有东西可以吸收,因为规则一旦把某类信息永久排除在记忆之外,dreaming 也不会把它补回来。
把它当什么结论、别当什么结论
可以接受的:对强模型,别在 prompt 里写死记忆筛选规则,把“记忆是干什么用的”说清楚就够;记完可不可信要靠原始记录校验,而不是靠约定。
不能接受的:模型能可靠判断什么值得记。这个结论在文中是按模型代际分开说的,Sonnet 3.7 那档就是反例,Opus 5 的循环闭环也是它自己摸索出来的,换个任务可能就不行。
实操上的折中,比“全自己判断”对:让模型有写和删的自由,但设两条硬边界——“写进去的东西必须能在 transcript 里找到依据”和“每轮注入的顶层保持在容量以内”;然后再用 dreaming 定期拿记录核对一遍。前一条把可信度问题从“信任模型”挪到“可验证”,第二条防止它膨胀到比原文还大。文中那个 57 个条款只剩 41 个的例子就说明了:没人给边界时,多个 agent 会互相覆盖写坏。
说到底,这篇的可验证性止步于“固定规则在强模型上会掉分”,因为它就测了这一件事。想真验证“该不该放手”得换一组任务、换一批规则、换几代模型,文章没做,我也不会替它下这个结论。
所属话题:Agent 工程