没有脚注的纹身

——《记忆碎片》里的外置记忆:遗忘者靠什么活,以及谁在替他写条子

《记忆碎片》的主角 Leonard 患的正是《机器的三种记忆》里 H.M. 的病:一次袭击之后,他再也记不住新发生的事,记忆窗口只有几分钟。电影让他说过一句几乎是为这个系列写的台词:记忆会变形,记忆只是一种解读,不是记录——所以他不信记忆,只信写下来的事实。

他靠一套外置记忆活着,而且活得相当有章法。上一篇《同事,不是分身》讲的是遗忘的用处:没读过结论的实例才能建出独立的基线。这一篇讲另一面:一个每次醒来都从头开始的系统,靠什么把事情做完,以及这套活法里藏着的两个陷阱。诺兰把两个陷阱都拍出来了。

一个遗忘者的记忆分层

Leonard 的记忆有三种载体,权威等级分明。

纹身是最高一级:刻在身上,不可变更,写的都是他认定的“事实”——“John G. 强奸并杀害了我妻子”,编号排列,Fact 5、Fact 6。拍立得是第二级:每张照片拍一个人或一个地方,背面写批注,批注里带着信任标签——旅馆的照片写着房号,Teddy 的照片写着“别信他的谎话”。随身纸条是第三级:这一轮任务的过程记录,用完就换。三级之外还有第四样东西,他自己说过:习惯与重复。他讲 Sammy Jankis 的故事时解释过,失忆者仍然能通过条件反射学会动作——那是 H.M. 保住的程序性记忆,也是 Leonard 每次醒来先摸口袋、先看照片的那套仪式的来源。

拿这四样对照机器:纹身是不可变的根指令,拍立得是带信任标签的文件批注,纸条是本轮的工作底稿,习惯是会跑的检查。层级与《机器的三种记忆》里的三档信任几乎重合——而且 Leonard 比大多数 Agent 设计得更周到的一点是:每一级都有明确的读法。醒来先读纹身,再读照片,最后看纸条;纹身不问为什么,照片看批注,纸条随时可以撕。

记忆窗口还决定了他的任务粒度。任何事都必须在几分钟内做完,做不完的必须在窗口边界留一张条子给下一个自己。他打电话时必须一边讲一边写,开车追人时必须先拍一张照片。这正是上下文长度对 Agent 流水线的约束:工作被切成能在一个窗口内闭合的单元,单元之间靠形状固定的交接物衔接。Leonard 没有选择,Agent 也没有——区别只是 Agent 的设计者常常假装有。

到这里为止,Leonard 的系统是一个相当好的 harness。然后电影开始拆它。

写条子的人

Natalie 的那场戏是全片最冷的一段。她当面羞辱 Leonard,激他动手,然后走出门——走之前把屋里所有的笔都收走了。几分钟后 Leonard 忘了刚才发生的一切,Natalie 回来,脸上带着伤,说是 Dodd 打的。Leonard 没有条子可查,于是替她去对付 Dodd。

她没有攻击他的推理。他的推理在那几分钟里完全正常,甚至想到了要写下来。她攻击的是写入口:让该写下的东西写不下来,让该写下的人换成她。对一个每次醒来都从头开始的系统,这是唯一需要攻击的地方。它不记得上一轮是谁在说话,只记得纸上写了什么;谁能决定它下一次读到什么,谁就是它的作者。

这是提示注入的原型,比任何工程论文都早。Agent 的记忆文件、任务说明、上一轮留下的摘要——凡是它醒来会读的东西,都是 Natalie 可以站的位置。设计上的推论很直接:记忆的写权限必须比读权限严得多。谁可以往纹身上刻字,谁可以往照片背面写批注,谁只能留一张随时可撕的纸条——这三种权限不能是同一个人,更不能是随便什么进了屋的人。Leonard 的系统里三级记忆的读法分得很清楚,写法却没有分:任何人递给他一支笔,他就会写。

自己下的毒

第二个陷阱更深,因为下毒的是他自己。

电影结尾(按时间顺序其实是开头),Teddy 告诉 Leonard 真相:真正的 John G. 一年前已经被他杀了;他早就报了仇,只是记不得;后来的每一个“John G.”都是别人利用他的失忆找来的替身。Leonard 听懂了。然后他做了一件事:把 Teddy 的车牌号写下来,作为下一条要纹的事实——Fact 6。他烧掉了会拆穿这一切的照片,开车离开,几分钟后忘记了这一切,只剩下一条新的“事实”指向 Teddy。

他知道自己会忘记写下这条的动机,只会记得纹身的权威。这是外置记忆最危险的性质:写下来的东西获得了超出它应有的权威,因为读它的那个实例记不得写它时的处境。 纹身上的 Fact 6 和 Fact 5 排在一起,字体一样,笔迹一样,读的人分不出一条是调查所得、一条是自我欺骗。

Agent 往自己的记忆里写字时,处境完全相同。这一轮写下“该方案已确认”“此路径已排除”,下一轮的实例把它当既定事实——它没有办法追问当时是谁确认的、依据什么、有没有核过,因为追问所需要的记忆恰恰是它没有的。《代码即记忆》说过,给机器建的记忆从第一天起就不必 squash,每条规则可以永远拴着它出生的那次失败。反过来看 Leonard:他的纹身全是 squash 过的——只有结论,没有 commit message。Fact 6 没有脚注,所以它和真相看起来一模一样。

于是《同事,不是分身》里那条原则要再往前推一步。那篇说校验器不接受任何角色的自述;这篇要说:校验器也不能接受记忆的自述。一条记忆的权威不能来自“它已经写在那里”,只能来自它是怎么被写上去的——谁写的、凭什么、当时核过没有、写的时候系统处在什么状态。带脚注的记忆可以被下一个自己复核;没有脚注的记忆只能被相信,而对一个遗忘者来说,只能被相信的东西就是最容易被利用的东西——被别人利用,也被自己利用。

倒着放的电影

诺兰用形式做了同一个论证。彩色段落倒着放,观众每进入一场戏,都不知道前面发生了什么——只能凭眼前的人、手里的照片、纸上的字判断谁可信。观众就是 Leonard,也就是一个刚被新开的上下文。整部电影里我们和他一起相信了“别信他的谎话”,一起把 Teddy 当成坏人,直到最后一场(时间上的第一场)才发现那条批注是怎么来的。

这就是没有脚注的记忆对一个干净读者做的事:不是骗过它的推理,是替它决定了推理的起点。

尾声

遗忘是机器的天赋。每次新开的上下文都是一个未被污染的复核者,这是人做不到的——律师读过一遍结论,就再也读不回没读过的状态。但天赋有代价:一个从头开始的系统,对自己的记忆没有免疫力,它读到的每一条都会被当作起点。

Leonard 的系统缺的不是层级,也不是纪律,他两样都有。缺的是那一行小字:这条是谁写的,凭什么。对一个每次醒来都从头开始的系统,记忆的权威不能来自“它已经写在那里”,只能来自“它是怎么被写上去的”。