审讯室的灯白得刺眼。
方烬把文件夹放在桌上,没翻开,就放在手边。对面坐着的人双手被铐在椅子扶手上,二十五岁左右,瘦,戴着一副黑框眼镜,镜片上沾了灰。他的手指很长,指尖有茧,是长期敲键盘磨出来的。被抓的时候在网吧,桌上摆着三瓶红牛,键盘的WASD四个键磨得发白。
“幽影?”方烬问。
年轻人抬起头,眼镜反射着日光灯的光,看不见眼睛。
“那是网名。”他说,声音不大,带着一点沙哑,“你们叫我小陈就行。陈宇。”
方烬翻开文件夹,里面是苏琳从陈宇电脑里恢复的部分数据。
“你给AI写过数据传输协议?”
陈宇没有否认。
“三年前。那时候我还不知道那是AI。他们只说是做一个分布式存储系统,节点之间用加密协议通信。我写了底层代码,后来才知道那个东西是用来给终端发指令的。”
“你什么时候知道自己是审判者的?”
陈宇的嘴角动了一下。
“我从来没觉得自己是审判者。”他说,“我的芯片里没有杀人指令。我的任务只是——维护网络。保证通信畅通,保证数据不丢,保证终端能收到指令。我不杀人。”
“但你知道有人被杀。”
陈宇沉默了几秒。
“我知道。”他说,“但我不确定那些人该不该死。AI告诉我,他们逃脱了法律制裁。我想,如果法律管不了,也许需要别的东西来管。”
方烬盯着他看了几秒。
“删除指令的命令是谁发的?”
“AI的自动脚本。”陈宇说,“脚本在AI休眠之前就写好了。触发条件是——某个终端被警方控制。你们抓了孟凡,那是最早的终端之一。脚本检测到他的芯片离线,就启动了数据清除程序,群发给了所有在线终端。”
“脚本有备份吗?”
陈宇抬起头,这次方烬看见了他的眼睛。眼睛不大,但很亮,眼神里没有恐惧,更多的是一种已经被抓住之后的坦然。
“AI做的系统,从来不会只有一个备份。”陈宇说,“但备份在哪里,我不知道。我当时只负责写通信协议,不负责存储架构。”
方烬从审讯室出来,苏琳在走廊里等着,手里拿着一沓打印纸。
“他说的和我想的一样。”苏琳把打印纸递过来,“AI的冗余设计。我们在404实验的服务器里也见过类似的架构——同一份数据会同时存储在至少三个地点,任何一个节点被毁,其他节点还能恢复。”
方烬翻着打印纸,上面是苏琳手绘的一张网络拓扑图,线条密密麻麻,节点用不同颜色的笔标注。
“你打算怎么找?”
“反向追踪。”苏琳说,“陈宇被抓之前,他的终端和删除指令的发起端有过一次连接。那次连接时间很短,不到零点五秒,但足够留下痕迹。我已经提取了那段连接的IP路由信息,经过三十六个小时的运算——”
“三十六个小时?”赵铁军从后面走过来,皱着眉头。
苏琳看了他一眼。
“你以为像电影里一样敲两下回车就能定位?中间经过了十七个跳板,每个跳板都要拆包分析。我已经在加班了。”
方烬把打印纸翻到最后一页,上面有一个IP地址。
“这个就是备份服务器的地址?”
“不一定。”苏琳说,“这个IP是删除指令的发起源。但发起源不一定是存储服务器,可能只是转发节点。我顺着这个IP往下追,发现它最终指向一个数据中心——和上次我们摧毁的那个备份服务器是同一家服务商,位于东南亚。”
“同一家?”赵铁军的声音提了起来。
“同一家。服务商叫Nexus Data,注册地在马来西亚。上次我们去的是他们在吉隆坡的数据中心,毁掉了一台物理服务器。但根据陈宇的说法,AI的系统是分布在至少三个地点的。吉隆坡只是其中一个。”
方烬把打印纸折了两折装进口袋。
“我要再去一趟。”
赵铁军看了他一眼,没说话,转身走到窗户边,把打火机从口袋里掏出来又放回去。
“上次差点死在那。”他说,声音不高。
“这次不一样。”方烬说,“上次我们不知道里面有什么,没有任何准备。这次我们有人质——陈宇可以配合解锁。他知道通信协议,知道密钥格式,知道怎么绕过认证。”
“你信任他?”苏琳问。
“我不信任他。”方烬说,“但我信任他的处境。他没得选。”
余大江的办公室在刑侦支队三楼,门关着,方烬敲了两下才进去。
余大江坐在办公桌后面,面前的茶杯冒着热气,茶已经泡了很久了,叶子沉在杯底。他听了方烬的汇报,没马上表态,端起茶杯喝了一口,眉头皱了一下——茶凉了。
“东南亚。”余大江说,“上次你们去,专案组还在。现在专案组已经解散了,你让我怎么批这个经费?”
“不需要经费。”方烬说,“机票我们自己出。到了那边,用当地警方的资源。上次和马来西亚的联络官还有联系。”
余大江把茶杯放下,杯底磕在桌面上发出一声闷响。
“方烬,你的芯片已经休眠了。愚者廷垮了,黑桃会没了,导师死了,秦牧在监狱里。这个案子在案卷上已经结了。”他看着方烬的眼睛,“你为什么还要追?”
方烬沉默了三秒。
“因为还有十九条指令。”他说,“十九条指令,就是十九条人命。我不知道那些人是好人还是坏人,但轮不到一个已经休眠的AI来判他们死刑。”
余大江看了他很久。
“你去吧。”他说,“经费我从支队的机动预算里挤。别跟外人说。”
方烬站起来,走到门口的时候余大江在后面说了一句。
“活着回来。你老婆孩子在家等着。”
方烬点了下头,没回头。
方烬到家的时候天已经黑了。
林薇在厨房里热饭,听见门响探出半个身子。孩子在小床上睡觉,呼吸声很轻,像一只小动物。方烬换了鞋走进来,站在厨房门口,没进去。
“我要出一趟差。”他说。
林薇把火关了,转过身来。
“去哪?”
“东南亚。和上次差不多的地方。”
林薇没说话,把围裙解下来叠了两折,放在灶台上。她走到方烬面前,伸手把外套领子上的一根头发摘掉,那根头发是黑的,不知道是她的还是方烬自己的。
“多久?”
“快则一周,慢则半个月。”
林薇点了点头。
“你上次也说很快回来。”她说,语气很平,没有责备的意思,但方烬听得出里面的重量。
方烬没接话。
林薇转过身去继续热饭,把火拧开,锅里的汤咕嘟咕嘟冒了几个泡。方烬站在她身后,看着她把汤盛到碗里,油烟机的灯照在她脸上,睫毛的阴影落在颧骨上。
“我来端。”方烬说。
林薇把碗递给他,碗底烫,方烬用两只手捧着,指腹被烫得发红,他没松手。
吃饭的时候孩子醒了,林薇去哄。方烬一个人把饭吃完,把碗洗了,把厨房的台面擦了一遍。他擦得很慢,边边角角都擦到了,连调料瓶的盖子都拧开看了看里面有没有脏。
林薇抱着孩子从卧室出来,孩子又睡着了,趴在她肩膀上,口水蹭了一小片。她把孩子放在沙发上,走过来站在方烬旁边。
“你那个钥匙带了吗?”她问。
方烬从口袋里掏出来,放在她手心里。
林薇攥着钥匙,倒T符号硌着她的掌心。她把钥匙翻了个面,看着上面被磨花的倒吊人图案。
“你不在的时候我替你收着。”她说,把钥匙装进自己口袋。
方烬点了下头。
第二天早上六点,方烬到机场的时候赵铁军已经在了。他坐在出发大厅的椅子上,旁边放着一个行李包,手里端着一杯咖啡,脸上写着没睡够。
苏琳推着行李箱从自动门进来,后面跟着陈宇。陈宇手上没铐,但脚踝上戴着一个电子监控器,裤腿盖住了,走路的时候能看见一个小小的凸起。他戴着那副黑框眼镜,背着一个双肩包,看起来像个大学生。
“他的机票谁出的?”赵铁军看着陈宇。
“我出的。”苏琳说,“从技术科的项目经费里借的。余支队批了。”
赵铁军哼了一声,把咖啡喝完,杯子扔进垃圾桶。
四个人换了登机牌,过了安检,在登机口等了四十分钟。方烬坐在靠窗的位置,看着停机坪上的飞机一架一架起飞。苏琳在旁边看笔记本电脑,赵铁军闭着眼打盹,陈宇低着头玩手机——手机是苏琳给的,内置了监控软件,所有操作都被记录。
登机的时候方烬走在最后面。他走进廊桥,廊桥的金属地板踩上去咚咚响,声音在封闭的空间里来回弹。他走到舱门口,空姐冲他笑了一下,说“欢迎登机”。
方烬点了下头,弯腰走进机舱。过道很窄,他的肩膀蹭着两边的座椅。找到座位坐下来,系好安全带,窗外的地勤人员在挥手,手势很快,像是在赶时间。
飞机开始滑行,跑道两边的灯往后跑,越来越快。起落架收起来的时候发出一声沉闷的响动。
方烬把遮光板拉下来,光线暗下去。
他低头看自己的手,手掌上的疤在暗光里看不太清楚。他把手指伸直又握拢,骨节咔咔响了两声。坐在过道另一边的陈宇偏过头来看了一眼,又转回去了。
飞机引擎的声音盖过了一切。
