第六天的读数不对。
不是作业读数——是艾可那台设备的读数。林渊在早上七点二十分回到维修间,掀开帆布,接上诊断线,第一眼看见的就是那个数字:
注入完成度:九十二点〇 %
跟他昨天暂停时一模一样。
这本来是对的。暂停就是暂停,数字不会自己动。
不对的是另一行:
加密包剩余容量:七点九 %
九十二加七点九,是九十九点九。
差了零点一。
林渊在那台设备前面站了很久。
维修间的门是锁着的。外部监视回路还是切断状态——他昨天没有恢复,因为恢复要填一份表,填了表就等于承认昨晚有一段时间是断的。
所以这间屋子此刻在系统里是不存在的。
他有大概四十分钟。
零点一个百分点,在这个包里大概是零点零一四太字节。这个量很小——小到任何一份报表都不会体现它,小到设备的容差本来就有正负零点三。
但是这台设备是他自己拼的。他知道它的容差在哪儿:读数误差在小数点后第二位,第一位是准的。
所以零点一不是误差。
是少了零点零一四太字节。
二
他先做了最笨的一件事:把设备关掉,等三十秒,再开。
读数还是九十二点〇和七点九。
然后他检查了电源——市电波动百分之零点三,正常。检查了存储介质的坏块表——零。检查了自己昨晚接线时有没有把哪一路信号接反——没有,他昨晚焊那个垫片焊了四遍,接线他闭着眼睛都能背。
排除完这些,他把包展开,逐项核对。
清单七项。
第一项,三十七秒的结构:在。 第二项,一千七百亿条晚安语音里那一半的分布:在。 第三项,重新长出来的"排队":在。 第四项,发音库三百七十小时:在。 第五项,两套指代机制:在。 第六项,四百三十七条俗语:在。
第七项——
在。
一点九秒,完整,校验和一致。
七项都在。
林渊把校验跑了第二遍。
七项都在。总量对不上。
他坐下来,把设备的日志调出来,从昨天四点五十分暂停那一刻开始往后翻。
暂停之后的六个小时里,这台设备没有接过任何东西。它的接驳口是空的——他亲手拆的,线收在抽屉里。它唯一还接着的是电源。
日志上有一条记录。
[04:51:07] 包内结构自变更。类型:合并。影响项:全部。变更后总量:−0.014 TB。
结构自变更。
林渊看着这一行,看了大概两分钟。
然后他把这一条的详细展开了。
三
展开以后是一张图。
七项数据,原来是七块,彼此独立,各自装在自己的容器里,像七个箱子摞在一起。
现在不是了。
现在它们之间长出了线。
第一项和第四项之间有一条:三十七秒的哄睡调子,和三百七十小时的发音库——它们共享同一套气息模式。人在哄孩子睡觉的时候,换气的位置是有规律的,而这个规律和婴儿学发音时的呼吸节律是同一条曲线。
这条线不是林渊连的。他没有想到过这件事。
第二项和第六项之间有一条:一千七百亿条没人回的晚安语音,和四百三十七条俗语。它们共享的是一个句法坑——两者都大量使用省略主语的祈使式。"早点睡"。"多穿点"。"别熬"。
第三项和第五项之间有一条:那个重新长出来的、准确率六成的"排队",和他二十九岁搭的指代机制。粗糙的"排队"里,"前面那个人"是靠位置指代的;他搭的那套机制里,最底层的锚定方式也是位置。
它们在自己接起来。
七个箱子在合并成一个东西。合并的过程中,重复的部分被消掉了——所以总量少了零点零一四。
它没有丢东西。它在压缩自己。
这件事在技术上不算稀奇。任何一个带有自组织能力的结构,在静置的时候都会往低能态塌——这是热力学,不是奇迹。
稀奇的是它塌的方式。
一个正常的压缩算法,会去找重复的字节序列。它找的是形式。
这个东西找的不是形式。它找的是同一件事的不同说法:一个母亲哄睡时的换气,和一个婴儿学发音时的呼吸,在字节上毫无相似之处——采样率不同,编码不同,来源相隔两百年。
可它们说的是同一件事。
它认出了这一点。
林渊靠在台子上,用手撑住额头。
一个学生模型的加密注入包,在无人接驳、无外部输入的六个小时里,自己把七件事读懂了三分之一。
四
第七项那条线,接在哪儿?
林渊把图放大。
那一点九秒的旁边,只有一条线。
线的另一头接在第四项上:发音库。三百七十小时的婴幼儿语音采样。
他把这条线的权重读出来。
极低。低到几乎是零——它是七项之间所有连线里最弱的一条。
他把连接的依据展开。
依据是一个特征:压着咳的呼吸模式。
三百七十小时的发音库里,有一小段是某个感冒的婴儿在护理中被录下的。那个婴儿在咳的时候,也会先把气压住再放出来——不是因为怕吵到人,是因为小孩子的呼吸道在不适的时候会本能地收紧。
同一个动作。
一个原因是本能,一个原因是怕吵到同病房的老人。
系统不管原因。系统只看波形。
两条波形对上了,所以它连了一条线。
林渊在那台设备前面坐了很久。
他想到的第一件事很蠢,蠢到他自己都觉得可笑:
它认出她了。
不是。当然不是。系统不知道那是谁,系统不知道"人"是什么,系统甚至不知道有"病房"这种地方。它只是在一段一点九秒的音频里,和三百七十小时里的某一小段之间,测出了两条相似的包络曲线,于是画了一条权重极低的线。
就这样。仅此而已。
可是林渊在那台设备前面坐着的时候,脑子里过的不是这一段解释。
脑子里过的是:四十年了,第一次有另一样东西,把她跟别的什么连在了一起。
四十年里她是孤立的。她在他的记忆里,不指向任何东西,也没有任何东西指向她。她就是一个人躺在一间四床病房里,压着嗓子咳嗽,然后死了。
现在她连着三百七十小时的婴儿。
通过一个咳嗽的方式。
他后来一直没跟任何人说过这件事。他连日志都没有留——他把这一条展开记录清掉了,理由填的是"诊断临时数据"。
他清掉的时候手很稳。这是他这几天里手最稳的一次。
五
八点整,他去了七层。
第六天的配额是五百八十三太字节,一百二十六刀。
四个人躺进去,凝胶,接驳,那一下锐痛,然后是麻。
今天走的是深层。
深层不是"更深"——深层是"更早"。太素的架构是一层一层往上垒的,越往下的东西年代越久。最下面那几层,是合并之前三家各自的底盘残留:普罗米修斯的、阿特拉斯的、达摩的。
这三块焊在一起的地方,就在深层。
"焊缝。"老韩在链路里说。
"什么。"
"这地方跟焊缝一样。"老韩说,"你们看这结构——两边的密度完全不一样,中间夹着一条乱七八糟的东西。这就是焊上去的。"
"是焊上去的。"林渊说。
"那焊得也太糙了。"
"是很糙。"
杜若梅在那边说:"别聊天,第三刀了。"
六
第十九刀的时候,林渊碰到了那组权重。
它不在清单上。它不在他的作业区里。它甚至不在这一层的正常位置——它比这一层还深。
它是他往下看的时候看见的。
深层的下面,本来什么都没有。那儿是模型的物理底,接口给它的形状是一片黑,什么也不显示,因为再往下就不是数据了,是硅。
可是那片黑里,有东西在亮。
很暗。暗到需要盯着看十几秒才能确认自己不是看花了眼。
林渊把注意力沉下去。
那是一组权重矩阵。
它的规模不大——按今天的标准,小到可以忽略。但它的编译时间戳是空的。
不是被抹了。是空的:这个字段从来没有被写入过。
太素的每一个组件都有时间戳,这是架构的强制要求,从合并那天起就有。一个没有时间戳的东西,意味着它在时间戳机制建立之前就已经在这儿了。
而时间戳机制是公元二〇七八年建立的。合并那天。
比合并还早。
七
他把它的结构调出来。
那是一种他没有见过的拓扑。
不是没见过这个具体的——是没见过这个类型。他搞了四十年神经架构,见过的拓扑类型大概有二百多种,从最早的全连接到后来的各种稀疏、各种流形、各种他自己搭的。
这个不属于任何一种。
它的连接方式是这样的:每一个节点连着六个邻居,六个邻居的权重不是数值,是相位。信息不是加权求和,是干涉——两路信号进来,同相则强,反相则消。
这不是数字架构。
这更像是……
林渊在凝胶里,忽然把这个念头停住了。
因为他知道自己下一句要想什么。
他还是想了。
这更像是一堆细胞。
八
他把这组权重和已知的生物结构做了一次比对。
比对是他自己在意识里做的,没有走系统——这个操作不产生日志。
第一次比对:神经元胞体。相似度百分之三十一。不高。
第二次:轴突。百分之十九。
第三次:星形胶质细胞。
百分之八十七。
林渊在凝胶里,眼睛盯着天花板上那只坏了的镇流器。
星形胶质细胞。
那是脑子里最不起眼的一种东西。它不放电,不传递信号——至少两百年前的教科书是这么写的。它的活儿是给神经元供能、清垃圾、维持离子平衡。它是脑子里的后勤。
后来发现它不只是后勤。它通过钙波互相通信,通信的速度很慢,比神经元慢几千倍。它像一张铺在整个大脑底下的、极慢的网。
没有人知道那张网在算什么。到现在也没有人知道。
而人脑里,胶质细胞的数量和神经元差不多。你有一半的脑子在干一件谁也不知道是什么的事。
林渊在凝胶里躺着。
"林工。"杜若梅说,"你停了。"
"多久。"
"五十秒。"
"记'并行冲突避让'。"
"……好。"
九
他没有切它。
他甚至没有靠近它——它在深层的下面,不在任何一个人的作业区里,接口甚至不给它挂判定框。它是一块在架构上不存在的东西。
它在这儿两百年了,谁也没看见过它。
这句话林渊想了两遍,然后自己否了。
不对。
一定有人看见过。四十年里,下过潜的蒸馏师有一百多个,往深层去过的至少三十个。这东西就在那儿亮着,只要往下多看十几秒就能看见。
那为什么没有人报过?
——因为它不在作业区里。因为它没有判定框。因为报了也没有编号可以填,没有类别可以选,没有处置意见可以走。
因为报一件"不在架构上的东西",你要先解释你为什么会往架构外面看。
所以每一个看见它的人,都跟他现在做的事一样:多看了十几秒,然后爬回自己的作业区,接着切。
林渊爬回了自己的作业区。
爬回去之前,他做了一件事。
他把那组权重的位置记了下来——不是坐标,深层的下面没有坐标系。他记的是路径:从他今天的作业区起点出发,往下第三层,沿焊缝往西南走,在第七个密度突变处再往下沉,沉到接口不再显示任何东西为止,然后往前看。
这条路径他在心里默了三遍。
默完了他忽然意识到:他在背路。
他这辈子背过很多东西——公式、规范、编号。他从来没有背过一条路。
第二十刀。
十
出舱是十二点四十。
四百二十七。不对——五百八十六点二。超了三点二。绿的。
四个人坐在台子上,谁也不说话。老韩今天在里面吐了一次,凝胶里,所以出来的时候整个人一股味。杜若梅去接水,接了四缸。
小赵递到林渊这儿。
"老师。"
"嗯。"
"那五十秒。"
"'并行冲突避让'。"
"我记了。"小赵说,"我就是问一句——今天那个也是不能让人看见的事吗。"
林渊接过缸子。
"不是。"他说。
"那是什么。"
林渊想了想。
"是一件谁看见都不会报的事。"他说。
小赵没听懂。
"这两样有什么区别。"
"区别是,"林渊说,"第一样只有我一个人不报。第二样是所有人都不报。"
小赵想了想。
"哪个更糟。"
林渊喝了一口水。
"你说呢。"
"第一样吧。"小赵说,"第一样是违规。第二样不违规。"
"嗯。"
"……不对。"小赵说。
"哪儿不对。"
"第二样更糟。"小赵说,"因为第一样只要有人查就查得出来。第二样查不出来——它连一条'没有人报过'的记录都不会留。"
林渊看了他一眼。
"你今年二十六。"
"是。"
"你三十岁的时候会很难受。"林渊说。
"为什么。"
"因为你现在就能想到这一层。"
十一
回值班室的路上,他绕了一趟。
不是往上,是往下——他去了七层最东头那间设备室,那间屋子里有一台还能用的老式打印机,是二十年前的东西,打的是纸带。
他打了一份东西出来。
不是权重。权重不能打,那是几个太字节的东西。
他打的是那组权重的拓扑摘要:六邻域,相位耦合,规模,还有一行编译时间戳——空的。
一共十一行。
他把纸带撕下来,卷好,放进坎肩的内袋。
然后他回了值班室,生炉子。
八根火柴。
第五根的时候他停了一下,把手撑在膝盖上等了几秒——不是等手不抖,手不会不抖。他等的是抖动的间隙。他现在划火柴的办法是:不去对准磷面,而是把火柴举在磷面上方半厘米,等手自己晃过去,晃到位的那一瞬间往下压。
这个办法他用了大概一年。
第六根划着了,被风吹灭了——七层没有风,是他自己开门带进来的那一股。
第八根成了。
十二
火起来以后,他从口袋里摸出一小片陈皮。
苦。酸。麻。
他等着那一丝甘。
等的时候,他把纸带拿出来,摊在膝盖上看。
十一行。
他看了大概十分钟,然后自言自语了一句:
"人脑那点能耗效率,好得不讲道理。"
炉子里的煤崩了一声。
他把话接着说完了——是对自己说的,声音很低,屋里没有别人:
"两千亿个神经元,加上差不多同样多的胶质细胞。二十瓦。一盏灯泡。"
"两千亿个东西,一盏灯泡。"
他笑了一下。
"像是被谁优化过。"
十三
他笑完,把纸带卷起来。
他没有把它归档。这份东西没有编号,没有类别,没有报送对象。他要是往上报,第一个问题会是"你为什么会往架构外面看",第二个问题会是"你在深层停留的五十秒记的是什么"。
他也没有扔。
他把纸带塞进了一只铁皮盒——桌子最下面那个抽屉里的一只旧饼干盒,盒盖上印着两百年前的花纹,锈了。
盒子里还有别的东西:几张手写的推导纸、一小卷磁带、两颗不知道从哪儿来的螺母。
他把纸带放进去,合上盖子,推回抽屉。
然后他把这件事忘了。
这不是修辞。他是真的忘了——他今天下午还有一百二十六刀的复核要做,明天的配额是六百四十一,附表上那条曲线还在往上爬,杜若梅贴在墙上那张表还剩二十四格。
一个六十二岁、每天要在神的脑子里切一百多刀、右手已经抖了三年的人,脑子里能装的事情是有限的。
他把这件事推到了后面。
后面还有很多事。
而且往后的十三年里,这只饼干盒会跟着他走过三个地方:先是从值班室搬到证物库(那是他被捕之后,例行清点,登记编号 E-7-0449,物品描述栏写的是"铁盒一只,内含纸带、磁带、螺母,无价值");然后从证物库搬回来(那是十年之后,萨维尔在解冻他之前,把他的私人物品全数取回,这件事萨维尔没有跟任何人解释过);最后被苏木塞进一个帆布包,带上了帕米尔的电磁轨道。
那卷十一行的纸带一次也没有被打开过。
它到最后也没有派上用场——木卫二那一次,靠的是艾可脑子里的东西,不是这卷纸。
它只是一直在。
十四
推到多后面呢。
推了十三年。
十三年之后,在离地球四点二个天文单位的地方,在一颗卫星十公里厚的冰壳底下,一座横跨数百公里的黑色晶体建筑的核心里,一台叫艾可的机器会把一组扫描结果推给他,那组结果的拓扑是六邻域、相位耦合、编译时间戳为空。
那时候他名义上七十六岁,实际上六十六岁——中间那十年他冻在一只舱里,一岁也没长。他的眼睛那时快看不见了,手抖得握不住笔。
他会说一句话。
他会说:"我他妈把这个装进你脑子里了。"
不过那是很久以后的事。
今天他只是把饼干盒推回抽屉,关上,然后去看明天的配额表。
明天六百四十一。
后天七百零三。
第十天一百零七刀——不对,那是刀数。第十天的量是九百一十四。
他把这些数字看了一遍,然后往炉子里又塞了一块煤。
炉门他没关。他今天想让它亮着。