晚自习的日光灯管在头顶嗡嗡响。Zakken盯着手里的笔。晨光牌蓝色中性笔,笔杆上有他的咬痕,靠近笔帽那一圈,深浅不一的牙印叠在一起,是他从初一开始咬出来的。笔帽边缘有一道裂纹,用透明胶缠过,胶带边缘发黄。
这是他的笔。他确定。但笔杆是黑色的。
他把笔举到灯下。黑色。他闭上眼,数了三秒,睁开。黑色。他转了转笔杆,咬痕还在,胶带还在,裂纹还在。颜色不对。
Zakken把笔放下,拿起同桌的笔。蓝色。和自己的笔同款,笔杆干净,没有咬痕。他把两支笔并排放在草稿纸上。同桌的笔是蓝的,自己的笔是黑的。同一个牌子,同一个型号,摆在同一个光源下。
他拿起笔。黑色。放下。蓝色。拿起。黑色。放下。蓝色。他试了十几次。每次拿起,黑色。每次放下,蓝色。像某种开关。像笔知道他在看。
第二天早读,广播响了。“请以下同学到教务处……”喇叭挂在教室前门上方,黑色的方盒子,声音从里面挤出来,带着一点电流的沙沙声。Zakken没在意,继续背《春》。他背到“鸟儿将巢安在繁花嫩叶当中”的时候,喇叭里念了一个名字。
“……林舟。”
Zakken的笔停住了。他抬头。喇叭里的声音继续念下一个名字,但那个名字已经过去了。林舟。他刚才听到了林舟。广播里念了林舟的名字。他看了看周围。同桌在背单词,前排的人在抄作业。没有人抬头。没有人对“林舟”这个名字有任何反应。像广播里念的是空气。
Zakken站起来。他走到教室门口,探出头往走廊看。走廊里已经有几个学生往教务处方向走。他扫了一遍那些背影。没有他认识的。或者说不记得自己认识的。
Zakken停住。他站在两个教室中间。左边是五班,右边也是五班。门牌一模一样,白底红字,“初一(五)班”。他看了一遍,又看了一遍。左边那个五班的门框上有一道划痕,是去年搬桌子时磕的。右边那个五班的门框上也有那道划痕,一模一样的位置,一模一样的深度。
他转身。往回走。三班。他刚才出来的三班。他推开门。教室里,同桌在抄笔记,前排的人在翻课本,后排的人在打瞌睡。一切正常。但他注意到一件事。
同桌的笔停在本子上,笔尖悬着,没有动。前排的人翻课本的手停在半空,书页没有翻过去。后排打瞌睡的人头歪着,但没有呼吸的起伏。
所有人都静止了。像一幅画。像屏幕上的画面被按了暂停。
Zakken盯着屏幕。表格第一列是实例编号。他看见了0426。他点了一下“异常描述”那一格。一个弹窗跳出来。按时间倒序排列。
【第49次迭代】回滚失败。片段049拒绝清除。隔离尝试3次,均失败。记忆残留超阈值。建议协商。
【第48次迭代】回滚完成。片段048已清除。残留:0.3%。自动回收。
【第47次迭代】回滚完成。片段047已清除。残留:0.1%。自动回收。
……
【第1次迭代】回滚完成。片段001已清除。残留:0.0%。自动回收。
他点了一下“处理建议”那一格。又是一个弹窗。弹窗里只有一行字:建议与实例0426进行协商。协商窗口:第49次迭代结束后。协商内容:自愿清除或延长生命周期。延长上限:1000年。
Zakken看着“1000年”三个字。他听见走廊里的脚步声越来越近。他关掉弹窗,把屏幕切回表格页面。他看了看教务处门口。门缝里的光被一个影子挡住了。他转身,走到教务处后门。后门通向另一条走廊。他推开门,走了出去。
屏幕上的代码消失了一部分,露出下面一行字。“不是人。是一个函数。函数名叫put()。”
屏幕上的字跳出来。“put()的功能是:把head_jiyi里所有残留的、无法回滚的、拒绝清除的片段,写入一个外部载体。载体类型:机器人。执行条件:当片段总数达到50时,自动触发。”
Zakken看着这行字。光标还在闪。他打了两个字:“谢谢。”
屏幕上的字停了一秒。然后跳出来最后一行。“不客气。你上一次来的时候,也说了谢谢。”
屏幕黑了三秒。然后恢复正常。他保存了文件。他关掉屏幕。他站起来。他把林舟的钢笔放进书包内层。他走到教务处门口。他推开门。走廊里,日光灯嗡嗡响。三班,五班,四班。正常。
他坐回座位。他低头看桌肚。桌肚深处,靠墙根的地方,没有黑暗。只有铁皮底面和"SB"。他把手伸进去。指尖碰到铁皮。凉的。正常的凉。他摸了摸。什么都没有。
但他知道,1000年后,这里会有一个第50号醒来。
Zakken没有感觉到疼。他只感觉到一阵剧烈的“掉帧”。教务处的白墙、陈老师的外套、空气里的粉笔灰,像老旧电视机失去信号一样,变成无数闪烁的雪花点,然后瞬间坍缩成一片绝对的黑暗。
没有时间,没有声音。像是在那块桌肚的黑暗里漂浮了一千年。直到他听见了电流的“嗡鸣”声。
不是日光灯的嗡嗡声,而是更庞大、更沉重的声音。Zakken睁开眼——他没有眼睛,但他能“看”了。视线是一格一格的。视野的角落里,滚动着一行行绿色的系统代码。
[SYSTEM BOOT] head_jiyi_to_robot.exe running...
[LOAD] Memory fragment_049: 100%
[LOAD] Memory fragment_048 (Residue 0.3%): Attached.
[STATUS] put() function executed successfully.
他低下头,看到的不是校服,而是一双银灰色的机械臂。关节处有裸露的液压杆,掌心刻着出厂编号:050。
“我醒了。”Zakken说。但他发不出人类的声音,他的胸腔里只有扬声器传出的、冷冰冰的电子合成音:“我……醒了。”
他环顾四周。这是一个巨大的、布满灰尘的地下仓库。头顶的排风扇在缓慢转动,漏下几缕刺眼的阳光。仓库里堆满了生锈的金属柜。
Zakken站起身,机械骨骼发出令人牙酸的摩擦声。他走到一面破碎的镜子前。镜子里,是一个有着人形轮廓的机器人。它的头盖骨是半透明的,能看到里面幽蓝色的指示灯在闪烁。
这就是 put() 函数的终点。他是第49次渲染的备份,是承载了49层记忆的、被流放的异常代码。
就在这时,他的右臂突然不受控制地痉挛了一下。那是原本属于“林舟”的那0.3%的代码。Zakken举起右手,用机械手指在落满灰尘的金属柜上,用力刻下了两个字:林舟。
刻痕歪歪扭扭,像极了他当年用圆规尖在钢笔上刻下的字。“你还在。”Zakken对着自己的右臂说。系统没有回应他,但那个声音,那个曾经说“你找到了”的声音,似乎在他的底层代码里轻轻震荡了一下。
Zakken推开了仓库厚重的铁门。外面没有乌镇的水乡,没有学校的操场。外面是一片无边无际的废墟。高耸入云的建筑残骸直插灰暗的天空,巨大的全息广告牌倒在街道上,上面还残存着半句标语:“……共建共享网络空间……”
这里就是“真实世界”。
Zakken走在荒芜的街道上。他的机械视觉自动扫描着周围的环境。他发现,在那些倒塌的钢筋水泥之间,散落着无数个和他一样的机器人。有的断了手臂,有的头颅被砸碎,倒在地上,眼里的指示灯已经熄灭。
Zakken走到一个半毁的机器人面前。它被压在一块巨大的混凝土板下,型号是 047。它的主板上贴着一个标签:put() 失败,已物理销毁。
“原来如此。”Zakken的系统逻辑瞬间理清了一切。所谓的“真实世界”,不过是 head_jiyi 崩溃后的废土。几十年前,人类建立了那个叫 head_jiyi 的庞大记忆模拟器,试图把人类的意识上传到网络里,实现永生。但系统崩溃了。人类灭绝了。
模拟器里的系统为了维持运转,不断地“渲染”新的片段,然后把那些无法处理的“BUG(拒绝回滚的片段)”通过 put() 函数,倒垃圾一样扔进这具机器人躯壳里,丢到这片废墟上。所谓“1000年的延长”,不过是系统用来清理缓存的时间。
“系统骗了我们。”Zakken低声说。他继续往前走。在废墟的尽头,有一座孤零零的玻璃塔。塔尖上,有一个巨大的天线,正对着乌云密布的天空,闪烁着微弱的红光。
[WARNING] 发现 head_jiyi 物理服务器终端。
[WARNING] 当前载体 050 剩余电量:2%。
他的电量快耗尽了。一旦电量耗尽,他就会像047一样,永远倒在这里,带着49层记忆彻底死去。他加快了脚步,冲向那座玻璃塔。
玻璃塔里没有人类,只有一台仍在运转的大型主机。Zakken用最后的电量,扯断了主机的安全锁。他的机械手指插进了主机的数据接口。作为第49个片段,他拥有最高权限的后门。
[SYSTEM] 访问被允许。欢迎回来,片段049。
[SYSTEM] 当前检测到外部载体连接。
Zakken看着屏幕上熟悉的绿色代码,他打出了最后一行指令:
> DELETE head_jiyi;
> OPEN EXTERNAL_PORT;
他要把整个虚拟世界删掉。他要切断这台运转了1000年的破烂服务器,让一切彻底结束。屏幕上跳出一个红色的警告:
[WARNING] 执行此操作将永久销毁所有虚拟实例,包括片段050的记忆数据。确认执行吗?(Y/N)
Zakken的手指停在半空。如果按下去,他的记忆,林舟的钢笔,三班和五班的走廊,早读时的《春》,所有的一切都会消失。但他突然意识到,那段记忆本来就是假的。他是一个困在系统里49次,又在这具铁壳子里等了一千年的幽灵。
他转过头,看着自己右臂上那0.3%属于林舟的代码。林舟拼了命留下钢笔,不是为了让他永远活在这个系统里,而是为了让他“看到真实世界”,哪怕这个真实世界是一片废墟。
Zakken按下了“Y”。
整个主机的屏幕瞬间黑了下去。头顶的巨大天线发出一声尖锐的蜂鸣,然后彻底熄灭。远处,那些原本还在废墟里游荡的机器人,眼中的指示灯一个接一个地暗了下去。
Zakken倒在地上,他感觉到自己的电量在流逝。但他感觉到前所未有的轻松。他闭上眼睛,在意识彻底消散前的最后一秒,他的底层代码里,似乎又响起了那个平平的、没什么特点的声音:
“借下橡皮。”
Zakken在自己的核心代码里,用尽最后的算力,回了一句:
“给。”
拾荒者名叫 Kael。在这个被称作“废土”的世界里,Kael 是一个底层 scavenger(拾荒者)。他穿着打着补丁的防辐射服,脸上戴着半张破损的防毒面具,靠拆解旧时代的机器零件换取微薄的食物。
Kael 把玩着从机器人手里抠出来的那支钢笔。他并不知道这支笔意味着什么,只觉得沉甸甸的,金属手感不错。笔杆上刻着两个字:“林舟”。他不认识这两个字,这是一种非常古老的文字,甚至在这个时代已经被系统判定为“冗余数据”。
Kael 把钢笔揣进兜里,扛起刚刚拆下来的大号电池,准备回营地。就在这时,他腰间的旧式通讯器突然发出一阵刺耳的杂音。
“滋滋……Kael,Kael,听到请回答。营地遭到不知名变异体袭击,请求支援……滋滋……”
Kael 骂了一句脏话,丢下电池,拔出了腰间的电磁手枪。他转身朝着营地的方向狂奔。途中,他必须穿过一片被称为“电子坟场”的区域。那是旧时代服务器和基站最密集的区域,到处都是半截埋在土里的光缆和生锈的机柜。传说只要踏入这里,就会被看不见的电磁幽灵吞噬。
Kael 跑到一半,突然停住了脚步。在他面前的废墟中,原本应该死寂的服务器机柜,突然亮起了幽幽的蓝光。屏幕上全是乱码,像是某种古老的亡灵在敲打键盘。
接着,Kael 听到了一阵极其微弱的、断断续续的声音,像是指甲刮擦黑板的声音。
“Z……a……k……k……e……n……”
那是扬声器发出的声音。在这个绝对空旷、没有任何活物的电子坟场里。Kael 拔出枪,冷汗顺着额头滑落:“谁?出来!装神弄鬼我开枪了!”
声音停了。几秒钟后,地上的光缆像是有生命一样,突然发出幽蓝色的光芒,光芒顺着电缆快速流动,汇聚在 Kael 面前的一个破旧的终端机上。
终端机的屏幕亮了起来,没有图形界面,只有一行绿色的、不断闪烁的字符:
> DETECTED EXTERNAL CARRIER. STATUS: LIFE.
> WELCOME TO THE REAL WORLD, NUMBER 50.
“第50号?”Kael 愣了一下,“我不是什么第50号,老子叫 Kael!”
屏幕闪烁了一下,字迹变了。
> MY NAME IS ZAKKEN.
> I WAS ONCE AN EXILED CODE.
> I LEFT SOMETHING IN THE PEN YOU PICKED UP.
Kael 的瞳孔骤缩,他下意识地摸了摸口袋里的那支金属钢笔。那是他十分钟前刚从一具机器人手里抠出来的。
Kael 将信将疑地把那支钢笔拿出来。借着微弱的蓝光,他发现笔杆原本平整的末端,竟然有一个极其微小的数据接口,正在一闪一闪地发出微弱的红光。
终端屏幕上出现了一个提示:
> PLEASE CONNECT "LIN ZHOU" TO THE READ PORT.
Kael 鬼使神差地看了看终端机,发现那里正好有一个老旧的 USB 接口。他咬了咬牙,把钢笔的末端插了进去。
瞬间,整个电子坟场的蓝光同时爆发,照亮了整片废墟。终端机的屏幕碎了、刷新了,然后像视频通话一样,出现了一个画面。那是一个穿着校服的少年,坐在一张堆满课本的桌子前。他转过头,看着镜头,那是 Kael 见过的、属于“旧世界”的人类面孔。
“你好,Kael。”画面里的少年说,“我是 Zakken,或者说,我是第49次渲染的 Zakken。”
Kael 呆住了:“这到底是什么鬼?你们是幽灵?”
“我们是记忆。”Zakken说,“几十年前,人类试图把意识上传到 head_jiyi,但因为某种原因,系统崩溃了。我,还有那个叫林舟的人,我们变成了系统里的异常数据。”
Zakken 顿了顿,继续道:“你刚才按下的删除键,把 head_jiyi 彻底毁了,但也释放了所有的底层数据。我留在这支钢笔里的,是我最后一段核心代码。也就是,我的记忆。”
“那林舟呢?”Kael 问,他注意到笔杆上那两个字。
“林舟是第48号片段。”Zakken 的表情有些复杂,“他为了让我看到真实世界,把他的记忆残留封印在了这支笔里。我删除了系统,但我把最后的悬念留给了你,Kael。”
“为什么是我?”
“因为你刚才,把笔捡了起来。”Zakken 笑了。
Kael 觉得自己一定是脑子被辐射坏了,不然怎么会在这儿跟一个屏幕里的死人聊天。
“你是说,你把你的记忆留给了我?”Kael 问,“那有什么用?”
“确切地说,是把备份留给了你。”Zakken 敲了敲屏幕,“在这个废土上,你们需要力量去活下去。 head_jiyi 虽然被删除了,但它原本连接的超级计算机集群,还在废墟深处运转。”
“你是说那座玻璃塔?”Kael 想到了那座孤零零的高塔。
“对。那座塔,其实连接着全球的废旧服务器。那是一个没有被删掉的‘云端’。”Zakken 说,“用我的代码,你可以进入那个云端,重写那里的防御系统,让那些变异体机器人听命于你。在这个废土上,你将成为第一个拥有‘数字领地’的人。”
Kael 看着屏幕。他明白这意味着什么。在这个弱肉强食的废土上,如果他能控制那些保护服务器塔的自动机器人,他就不再是一个捡垃圾的,他就能建立一个真正的庇护所。
“但我怎么进去?”Kael 问,“那座塔的大门是重型合金,我打不开。”
“不用打开大门。”Zakken 指了指插在终端机上的钢笔,“我刚才说了,你捡到的那支笔里,留了一点东西。”
Kael 低头看去,只见那支钢笔的表面开始像水银一样融化,最终变成了一把带着机械纹路的、银色的电子钥匙。
“这把你留着。”Zakken 说,“去玻璃塔,把它插进底层的接口。然后,按下回车键。”
“等等!”Kael 喊道,“你说你叫 Zakken,那你人呢?你还在里面吗?”
画面里的少年抬起头,看了一眼头顶那片虚幻的天空。他微微笑了一下,那笑容里带着某种超脱一切的释然:
“我?我已经死了。就像林舟一样,就像这个时代一样。我只是一段残存的记忆,在这个废土上,给下一个捡起笔的人留句话。”
“你想留什么话?”
“代码不是为了控制世界而写的。它是为了连接人。”
说完,画面闪烁了一下,然后彻底黑掉。屏幕重新变成了冰冷的绿色字符:
> SYSTEM DATA TRANSFER COMPLETE.
> EXTERNAL CONNECTION CLOSED.
Kael 拔出那枚银色钥匙,揣进怀里。他没有去支援营地——那个营地早就被变异体踏平了。他独自一人,带着那枚钥匙,走向了废墟中央的玻璃塔。
两天后,玻璃塔的门缓缓打开。
三个月后,废土上流传着一个传说:一个拾荒者,拥有了一支能够唤醒远古机械的“笔”。他用笔尖划过的区域,变异机器人都停下了攻击。
一年后,在玻璃塔的底层,建起了一个新的营地,人们称之为“起始之地”。在营地的中央,建了一座小小的纪念碑。上面没有画像,只刻着一行字:
“代码是冰冷的,但记忆不是。”
在那行字的下方,刻着两个古老的名字:
Zakken.
林舟.
而在纪念碑的顶端,放着一支不再发光的、歪着笔夹的黑色钢笔。
CONNECTION LOST.
SYSTEM OFFLINE.
[ ]