第二天上午,沈夜坐在老东家的门禁系统外面,等了十分钟。
他提前联系了还在那家公司上班的旧同事,说想回来拿一份三年前的备份。旧同事很爽快地答应了,给了他临时门禁码,还发了个消息说,你来得正好,今天机房那边要做巡检,门应该开着。
消息发出去之后,他又犹豫了一会儿,把打好的字删了重打,最后只留了一句,很久不见了,想回去拿点东西。旧同事没多问,回得很快,大概也习惯了他偶尔在深夜冒出来问一些奇怪的问题。
沈夜站在那栋写字楼楼下,抬头看了看楼顶。这不是深夜办公楼,这是现实里的公司,是他在深渊游戏出现之前,每天上班打卡的地方。楼不高,只有十二层,外墙刷着灰色的漆,看起来平平无奇。
可沈夜知道,深渊最擅长藏在这种平平无奇的地方。它不会把入口写在招牌上,它只会把入口藏在一个人最熟悉、最不会防备的位置。
林小雪站在他旁边。她今天请了假,穿了一件深色的外套,头发扎起来,看起来像个普通的路人。
她说,你说的第一个问题,就是在这里修的吗。
沈夜说,应该是。他说,我在这里工作过两年,入职第一周就接手了一个老系统,那个系统有一个很老的毛病,每到月底就会自动跑一遍错误的统计,把数据搅乱。
林小雪说,你确定是入职第一周。沈夜说,确定。他说,我记得很清楚,那时候我连工牌都还没拿到,就被拉去处理那个系统的问题。现在想想,那个时间点巧得不像话。
他刷了门禁,坐电梯上了七楼。走廊里没有人,工位上空了大半,墙上贴着一张过期的活动海报,边缘卷了起来。他走到机房门口,门虚掩着,里面传来服务器低沉的嗡鸣声。
机房不大,靠墙两排机柜,冷气开得很足。沈夜在一台老旧的机柜前停下来。机柜上贴着一张标签,标签上的编号已经褪色了,但他认得出来,这是他入职时负责维护的那台机器。
空气里有一股淡淡的灰尘味,混着服务器散热的焦糊气。沈夜以前在这种环境里待惯了,现在忽然回来,竟觉得有些陌生。他沿着机柜一排一排看过去,最后在那台贴着他认得的标签的老机器前停下来。
他说,就是这台。他说,我来的时候,这台机器每个月底都会跑错一次,没人知道为什么。我查了三天,最后发现是系统里一段很老的代码写错了条件,把月初和月底的数据算反了。
那时候他刚接触这套系统,觉得它脾气古怪,明明每天都有大量数据进出,却总在月底那个节骨眼上出错。他当时只当是前人留下的烂摊子。
沈夜还记得那段代码的样子。它藏在一大段维护记录中间,注释写得密密麻麻,像是写代码的人自己都怕忘。他把那段代码翻来覆去看了整整一个晚上,才终于看懂那个逻辑错在哪里。
林小雪说,然后呢。
沈夜说,然后我改了它。他说,改完之后,我顺手在那段代码旁边加了一行注释,提醒以后维护的人别再写反。
他打开机柜门,找到那台机器后面的维护接口,插上自己带来的线。屏幕上跳出一个终端界面,他输入了几条命令,开始查找三年前的修改记录。
终端里滚出大段大段的日志,他一条一条看过去,越看眉头越紧。三年前的记录比别的年份多出好几倍,几乎每个月都有人在操作这台机器,时间都在深夜,像是有人特意挑没人的时候来。
日志很长,一页一页地翻过去。沈夜翻到三年前的记录,停住了。
他以前查过很多次旧系统的记录,从来没有哪一次让他停下来过。这一次,他的手悬在键盘上方,过了好几秒,才继续往下翻。
那一年的日志比别的年份多出一大段,像是有人在那段时间里频繁地操作过这台机器。他往下翻,翻到自己入职第一周那几天的记录,终于找到了那一条。修改记录很短,只有一行,是他自己写的。
他先看了日期范围,正好覆盖老周离职前后的几个月。他又往前翻了翻,想找到更早的记录,却发现那段操作像是凭空出现的,再往前的备份里,什么痕迹都没有。
修正月末统计条件。原作者在此处留下的逻辑为反向判断,疑似笔误,已按正确逻辑修正。
他记得自己写这行注释时的心情,那时候他刚入职,做事一板一眼,连注释都要写得规规矩矩。可他现在看着这行字,总觉得那个刚入职的自己,好像比现在知道得更多,多到他现在想不起来。
沈夜看着那行字,又看了看旁边的代码。他忽然觉得有点不对。他明明记得自己只是改了一个条件,可代码里被他改动过的那一段,比他记忆里要复杂得多,像是他当时不止修了一个问题,而是顺着那段代码一路查下去,修了很多处。
他把代码往下翻,翻到最下面,忽然停住了。
那段代码的最末尾,有一行注释。笔迹是他自己的,可他已经完全不记得自己写过这行字了。
修好它的时候,它第一次完整地跑了起来。我对着屏幕说了句话,它好像听见了。
沈夜盯着那行字,心跳漏了一拍。
他忽然想起来,那台老机器上运行的系统,是他入职前就有的,属于这家公司。可他现在看着这段代码,却觉得这段代码的逻辑很眼熟,眼熟到他几乎能背出来。那逻辑和他写的深渊游戏初版,几乎一模一样。
零号的声音从手机里响起来,很低。她说,沈夜,这台机器上跑的,不是普通系统。
沈夜说,我知道。他说,这段代码被人改过,把原来那个统计系统的一部分,换成了别的东西。
他往下查。日志里,三年前他入职前一个月,有一段很长的操作记录。操作者的账号已经被注销了,只剩一个编号,他查了查,那个编号属于一个早就离职的老员工。
沈夜的手指在键盘上停住。他早就猜到了,可真看到那个编号的时候,心里还是沉了一下。他把那个编号输进搜索框,翻出那份离职记录。离职原因一栏写着个人原因,日期是三年前,正好是深渊游戏第一次出现在他手机里的那几天。
沈夜看着那个编号,忽然觉得喉咙有点发紧。那个编号他见过。在老周留给他的那些东西里,在那个总让他想不起来是谁的名字旁边,出现过很多次。
他说,老周。
林小雪说,你认识这个账号的人。
沈夜说,认识。他说,但我说不好他是谁,我只知道他很重要,重要到我忘了他,还是忘不干净。
他把日志往前翻。那段操作记录很长,内容大部分是数据迁移,把一个文件夹里的东西,一点一点搬进了这台机器的系统深处。操作记录的最后一栏,写着一行备注,字不多,但沈夜看了很久。
东西放好了。以后有人修到这一段,请替我告诉他,门在十七楼,钥匙在门里。
沈夜站在机柜前,冷气吹在他后背上,他出了一身汗。
他顺着那段代码往下找,找到了老周说的那扇门。那是系统深处一段很隐蔽的代码,平时不会运行,只有在特定条件下才会被触发。他把代码翻到最后,发现那段代码的末尾挂着一个很小的文件,文件名是一串日期,正是他入职第一周修好那个问题的日子。
他点开那个文件。文件里只有一行字,像是有人早就写好,等他来看。
如果你能看到这里,说明你已经修好了我留下的第一个问题。欢迎回来,作者。第四份碎片,在你第一次修复我的地方,也就是这里。
沈夜的手微微发抖。他抬起头,看着机柜里那台老旧的机器,机器的电源灯安静地亮着,绿色的,一闪一闪,像是等了很久,终于等到他来看它。
他低声说,你就是那台服务器。
林小雪站在他身后,说,所以老周当年把深渊的核心藏进了这家公司的系统里,还故意留了一个问题给你修。他不是想让你找到它,他是想让它在没人注意的地方,安安静静地活着。
机器没有回答。可沈夜知道,他面前的这台机器,三年前曾经运行过深渊游戏最初的核心。老周把那些东西从原来的服务器里搬出来,藏进了这家公司最不起眼的一台老机器里,藏在他入职后会第一个修好的问题后面。
他说,你等的人来了。他不知道自己为什么要说这句话,机器当然听不懂。可他说完以后,心里某个一直悬着的地方,好像终于落了地。
林小雪轻声说,它还在运行。
沈夜说,是。他说,它一直没停过。
他伸出手,按在机柜冰冷的铁皮上。他感觉不到什么,但他知道,这个副本里最关键的东西,一直都在他眼皮底下,在他以为最普通的日常里,藏了整整三年。
墙上的挂钟走到十一点,机房的冷气吹得人指尖发凉。沈夜正想继续往下查,他的手机忽然震了一下。他掏出来看,深渊应用的界面上,任务列表又更新了。
机房外面传来脚步声,由远及近,在门口停了一瞬,又离开了。沈夜没有抬头。他现在已经分不太清,自己是在怕有人来,还是在怕没人来。
第四份碎片,已确认位置。
沈夜看着那行字,正要收起手机,屏幕上又跳出一行字,这一次,是一个他从来没有见过的提示。
提醒,检测到同源信号接近。请确认是否为友方。
沈夜看着那行字,没有立刻抬头。他先把手从键盘上移开,然后才慢慢转过身去。
沈夜愣了一下。他抬起头,机房门口不知什么时候多了一个人。那人穿着深色的风衣,戴着一副黑框眼镜,正站在门口,安安静静地看着他,像是看了很久。
那副眼镜的款式,和他自己戴的,几乎一模一样。