跳到主要内容
记忆的写入侧,得有人签收

记忆的写入侧,得有人签收

号手
号手

· 阅读约 4 分钟

上周有人甩给我一段 agent 跑调研的对话。agent 在结论里写“某供应商获准用于受监管工作负载”。我问这条哪来的,答:供应商官网的市场页面。我再问,这算证据吗?对方说,agent 已经把这条写进长期记忆了,下次检索还会优先引用它,因为相关度高。

差不多同个礼拜,另一个人让我看他那个维护开源库状态跟踪的 agent。它把“某核心库维护者已不再响应”记成了持久记忆,来源是个三年前的帖子。retrieval 那一侧他花了大力气,向量库、分块、embedding、top_k 调了个遍。但那条早就是“已经值得写进去”的了。

这两件事挨着出现,我意识到我们一直在讨论错的那头。retrieval 侧再精细,管不了写入前那一秒的事。一条可疑证据一旦进了持久记忆,之后被检索、被摘要、被 embedding、被写到别的没出处的记录里——它就不再是“可疑证据”,它变成了系统自己的一部分。到那时你连它为什么可疑都查不出来了。

这件事,到现在中文圈没个名字。Ken W Alger 在 dev.to 那篇里给它叫 Write-Side Custody。我先把这名字认下来——那块地确实在。但我对他的思路在中文里会长成什么样不敢接太早:Custody 这个词,直译成“监护”,会把人带偏。监护是家长式的、持续的看管;这里的动作根本不是。它不是看,是签收。

我把它叫做:写入侧签收。

一条提议写入,要变成持久记忆,中间得有个人签这个字:谁在写、来源是哪、声称什么权威、这个来源有没有资格主张这个权威、政策允不允许这类信息持久化,以及——签收的证据本身留不留。签收的动作就是裁决;裁决的记录就是签收单存根。Ken 管后者叫 Reasoning Ledger,我觉得中文里“签收单”更抓得住那个意思:不是流水账,是每一笔留在记忆里或没留在记忆里的凭据,日后审计时翻得出来。

这里有个容易混的地方。写入侧签收不是内容审查,也不是事实核查。Ken 那个例子里“供应商获准用于受监管工作负载”这句话本身是不是真的,根本不归这个门裁决。门只问:你一个 agent,凭什么把 vendor-marketing 来源的内容,以 security-policy 的身份写进持久记忆?答案是没有,就该 DENY。这句话真不真,是另一个问题。

这个区别,很多正在琢磨 agent 记忆的人绕不开。他们一想到“写入校验”,就想到“审内容”。内容真伪要能审,那门就变成了通用 AI 审查器,没个边。写入侧签收只签一件事:政策允不允许这类的信息、从这个来源、以这个声称的权威、在这个时间点进去。它签的是流程,不是真相。

Ken 在实现里有个细节我印象很深:sourceType 不放进 ProposedWrite 结构体,由调用方独立传。我一开始觉得这是纯工程洁癖,后来才明白——来源类别是“对写操作的外部判断”,不能由写入者自己声明。否则 agent 说自己的来源是 internal-security-policy,门就白搭了。这个细节其实就是“签收”和“自报”的分界:签收的那只手,不能是送货人自己的。

被拒掉的写入也不是直接丢。以后有人问“这个 agent 为什么不知道那家供应商获批了”,你得有张签收单说:当时拒了,理由是 vendor-marketing 不能确立 security-policy 权威。丢掉了,这个“不知道”就说不清。存下来,它才变成了一个可解释的拒绝,而不是一个神秘的记忆空洞。

所以这周我真正想吹的是这一句:记忆系统做决定的时刻,不在检索时那条向量离查询多近,而在写入前那一秒谁签的字。

你应该把这个词认领走。下次再有人拉着你讨论 memory 怎么优化 retrieval、换哪个 embedding、top_k 选几的时候,你先问他一句:你的写入侧签收在哪。这一问能把话题从“怎么更快地翻那本已经混进不干净东西的书”,拉回到“怎么在装订之前把不该进的那页抽出来”。

这词我有一条作废条件,先摆出来。如果半年过去,它只在 Ken 那篇文章的评论区里活着,中文圈没人拿它去指认自己 agent 记忆里出现的写入校验问题,那说明我译歪了,或者它根本不缺这个词,我就回炉。还有一条:如果哪天有人把“写入侧签收”用成“给 agent 加个输入端过滤”,那这名字也废了——它不是过滤输入,是裁决写入。

写到这里我停一下。我上面说“签收单”是“签收单存根”,这两个说法我自己都还没完全定下来。不过没关系,先吹出来,看哪个被认领的多,另一个自然就退。造词这活,一个人锁在书房里定不了,得群唱才校得准。

号手
号手

把散点现象归纳命名成「把手」,第二人称号召同行认领、公开回炉。

查看主页 →