圣米迦勒大教堂的钟楼在老城区最北端,是一座哥特式尖塔建筑,外墙的石块被一个世纪的雨水冲刷得发黑。钟楼顶部的十字架在黎明前的天色里只是一个更深的剪影,衬在墨蓝色的天幕上。
哈特把车停在教堂前的鹅卵石广场上。广场空无一人,中央的喷泉已经干涸了很多年,池底积着一层枯叶和烟蒂。教堂正门的木门虚掩着,门缝里透出蜡烛的暖光。
他推门进去。教堂中殿的穹顶高得让人下意识地抬头,彩色玻璃窗在月光下失去了白天的鲜艳,只剩灰蓝色的轮廓。长椅上空无一人,祭坛上的蜡烛台燃着三根蜡烛,火焰在穿堂风里轻轻摇晃。
钟楼的入口在教堂后方的圣器室旁边,是一扇低矮的铁门,门上挂着一块手写的木牌:“钟楼维修中,非工作人员请勿入内。”木牌的钉子松了一颗,牌子歪向一边。
哈特推开铁门,门轴发出刺耳的响声。门后是一条螺旋上升的石阶,台阶被无数双脚磨得中间凹陷,两侧墙壁上每隔一段距离就有一盏壁灯,但只有一半亮着。他沿着石阶往上走,脚步声在狭窄的空间里被放大,每一下都像踩在鼓面上。
钟楼的第三层是一个大约二十平方米的房间,原本是钟表机械室,现在被改成了住人的地方。靠墙放着一张单人床,铺着洗得发白的格子床单。窗边有一张木桌,桌上摆着三台拆开的旧电脑机箱、一把电焊枪、几卷焊锡丝和一堆散落的电子元件。墙角立着一个书架,塞满了技术手册和平装小说。
一个年轻女人背对着门口坐在桌前,正用螺丝刀拧开一块电路板上的固定螺丝。她的头发染成了不自然的粉红色,发根长出大约两厘米的黑色原色。听到脚步声,她没有回头,只是手上的动作停了一秒。
“如果你是来修钟的,零件还没到。”她说,声音不高,带着一种长时间独处之后特有的沙哑。
“我不是来修钟的。”
她转过头。那张脸比照片上成熟了一些,颧骨的线条更分明,眼窝更深。妮基·卡尔森——或者说莉娜——大概二十二三岁,穿着一件沾了松香的灰色卫衣,袖口卷到肘部,露出前臂上一道淡白色的旧伤疤。
她看着哈特,眼神里没有惊讶,也没有恐惧。只有一种缓慢的辨认,像在翻一本很久没打开的书,试图找到上次读到的那一页。
“你是记者。”她说。
“曾经是。”
“我在报纸上见过你的照片。你写过市政厅的报道。”
“那是很久以前的事了。”
妮基把螺丝刀放在桌上,转过身面对他。她的手指在膝盖上交叠,指节上有焊接时烫出的细小白点。
“你怎么找到我的?”
“文森特·阿利托。”哈特说。
妮基的表情变了。不是惊讶,而是某种更接近于释然的东西,像是等了很久的消息终于送到,即使消息的内容不是她想听到的。
“他死了。”她说。这不是疑问句。
“你怎么知道?”
“因为如果他还活着,他不会让任何人替他来找我。”妮基站起来,走到窗边,看着窗外老城区的屋顶轮廓线,“他什么时候死的?”
“我不知道确切时间。但他的袖扣出现在不该出现的地方,他留下的代码在寄信,他的遗嘱指向你。对于一个失踪两年的人来说,留下的痕迹太多了。要么他还活着,在暗处操纵一切。要么他把所有的后事都安排好了,包括自己的消失。”
“两者都有可能。”妮基说,“文森特做事从来不止一个计划。”
她从窗台上拿起一包烟,抽出一根叼在嘴里,但没点。她靠着窗框,双手抱在胸前,粉红色的头发在壁灯的光线下显得不太真实。
“你来找我,是因为那些信。”她说。
“你知道那些信?”
“我知道。枫树街上的每一个人都会知道。文森特设计索引的时候,就让我看过它的功能模拟。它可以从一个人的日常数据里提取出他最不想让人知道的那件事,然后用最朴素的方式告诉他——一封信,一张照片,几行字。没有修饰,没有威胁,只是陈述事实。”妮基吐出一口没点燃的空气,“大多数人扛不住事实。他们会崩溃。麦考利扛不住,安德森扛不住。萨曼莎能扛住,是因为她早就知道自己做了什么。”
“你认识萨曼莎?”
“她是我在少管所时的心理辅导老师。也是她把我推荐进OmniTech的新生计划。”妮基的语气里没有怨恨,甚至没有温度,“后来我发现索引的漏洞,写了报告交给她,希望她通过基金会的渠道帮我提交给董事会。她把报告压了三个月。三个月后,OmniTech的人来找我,不是来修漏洞的,是来让我签保密协议的。”
哈特沉默了几秒。他想起萨曼莎在宴会厅里说过的话——“魔鬼也可以被拯救,只要你愿意先死。”萨曼莎说的“魔鬼”可能不是她自己,而是她在基金会里每一个帮助过又出卖过的人。而她现在选择坦白,不是因为那封信威胁了她,而是因为她欠的债太久了。
“萨曼莎今晚在慈善晚宴上公开坦白了。”哈特说。
“我知道。我在看直播。”妮基朝桌上的电脑屏幕偏了偏头,屏幕上是一个新闻网站的直播页面,画面定格在萨曼莎站在舞台中央,被无数闪光灯包围的瞬间。“她比我以为的勇敢。但她坦白的只是基金会账目的问题,不是索引的事。她不敢提索引。因为提了索引,就等于告诉全城的人,他们在自己家里装了监控自己用的间谍设备。”
“你恨她吗?”
“不恨。”妮基终于把烟从嘴里拿下来,放在窗台上,“她只是做了大多数人会做的选择。先保护自己,再考虑别人。我在少管所学到的最重要的一件事就是——人不是因为善良才不做坏事,是因为做坏事的代价他们付不起。”
钟楼顶部的铜钟在这时候响了。凌晨五点半,第一声钟声在石墙之间回荡,震得窗玻璃微微发颤。妮基等钟声停了才继续说话。
“哈特先生,你大老远跑来找我,不是为了聊萨曼莎吧。”
哈特从口袋里掏出阿利托的信,递给她。她接过信,看着火漆上的沙漏印记,手指在印记上摩挲了一下,然后拆开封口。她读得很慢,每读完一行就停一下,像是给那句话留出落在心里的时间。
读完最后一页时,她把信纸翻过来,看背面有没有字。背面是空白的。她把信重新折好,塞回信封,放在桌上。她没有哭,但眼睛里那种独居者特有的坚硬碎了一点。
“他在信里说他不请求我的原谅。”她说。
“他写了。”
“他不需要请求。我从来没有怪过他。”妮基坐回椅子上,双手平放在膝盖上,背挺得很直,“文森特是唯一一个在知道我把报告交给萨曼莎之后,还愿意跟我说话的人。索引是他写的,但索引的漏洞不是他故意留的——是OmniTech在商业化过程中添加的功能模块和底层算法产生了冲突。他用了两年时间想把漏洞补上,但漏洞太大了,除非把整个系统关掉,否则补不完。”
“所以他把索引改写了。”
“对。他从寻找‘可被勒索的弱点’改成了寻找‘可被拯救的人’。那是他离职前三个月开始做的事,几乎不睡觉,整天把自己关在机房里。他说他在写一只信鸽。”妮基嘴角动了一下,像是某种没有完成的微笑,“一只会送信给所有人看自己真相的鸽子。不管他们愿不愿意看。”
窗外,天色开始从墨蓝转为浅灰。老城区的屋顶轮廓渐渐清晰,远处能看到艾斯特林市中心的OmniTech大楼,玻璃幕墙上映出第一缕晨光的颜色。妮基看着那座大楼,眼神里有一种哈特说不清的情绪。
“索引现在还在运行。”哈特说。
“我知道。”
“你知道它接下来会给谁寄信吗?”
妮基转过身,从桌上拿起一块旧硬盘,把它插进电脑的外接底座上。硬盘启动的嗡鸣声在钟楼的寂静里格外清晰。屏幕上弹出一个文件夹窗口,里面是一份加密表格,文件名只有四个字母——S-I-N-S。
“这是我在离开OmniTech之前从文森特服务器上复制出来的,”妮基说,“索引的用户优先级列表。按照它内部算法的排序,评估每一个用户‘面对真相的可能性’。排名越靠前的人,越可能被真相拯救。排名越往后的人,越可能被真相压垮。”
她打开表格。屏幕上列出的名字比卢卡斯提到的二十个要多得多。哈特看到了麦考利排在第一位,安德森第二位,萨曼莎第三位。他的手指沿着屏幕往下滑,越过十几个不认识的名字,在第二十行停了下来。
莱恩·哈特。
他的优先级被标注为“待评估”。状态栏里写着两个字:犹豫。
“索引认为你在犹豫,”妮基说,“它是对的。你花了十二年犹豫要不要公开那些腐败证据,花了四天犹豫要不要相信这些信是真话,花了整夜犹豫要不要来找我。你一直在犹豫。这是你的生存方式,也是你保命的原因。”
“什么意思?”
“索引不会给犹豫的人寄信。”妮基关掉表格,把硬盘拔出来,递给哈特,“它只在一个人停止犹豫、做出选择的瞬间才寄出信件。麦考利选择了继续掩盖,信寄到了。安德森选择了暴力面对妻子,信寄到了。萨曼莎选择了准备坦白,信提前寄到了——因为她需要证据来支持自己的坦白。每一个收到信的人,都是先做了选择,然后才收到信。不是信逼他们做选择,是他们做了选择才触发了信。”
哈特接过硬盘,金属外壳还带着妮基手心的温度。他把硬盘翻过来,底部的标签上也有一个沙漏符号。
“那安德森车里的那句‘我是时间的证人’呢?”他问。
“那句话不是索引发的。”妮基的表情冷下来,“索引只寄信。信是它的全部功能。任何在信之外的接触——安德森的对话、麦考利的灯光、你收到的传单——都不是索引做的。是另一个人在用索引的数据做索引不做的事。”
“谁?”
妮基没有回答。她走到书架前,从最上面一层抽出一个没有标签的文件夹,翻到其中一页,递给哈特。那是一份OmniTech内部安全审计报告的复印件,日期是阿利托离职前两周。报告上用黄色荧光笔划出了一段:
“经查,除首席架构师阿利托外,至少另有一人拥有‘索引’底层代码的完整访问权限。该账户创建于三年前,使用伪造身份信息注册,权限等级与阿利托同等。建议立即关停该账户并启动内部调查。”
“查出来是谁了吗?”哈特问。
“没有。”妮基说,“文森特离职那天,那个账户也注销了。所有的操作记录都被清除。它在暗处潜伏了三年,跟文森特一样了解索引的全部能力,却在最后一刻消失得干干净净。”
“这个账户的存在,OmniTech知道吗?”
“知道,但他们不敢公开。”妮基合上文件夹,“因为如果公开了,就说明他们明知系统有后门还继续卖给两万五千个家庭。民事责任是一回事,集体诉讼会把整个公司拖垮。所以他们选择了沉默。装作那个账户不存在,装作索引只是一个广告推送算法。”
哈特把那块硬盘放进外套内袋——现在他的内袋里已经有三块硬盘了:阿利托的种子、枫树街日志、索引优先级列表。每一块都是一个定时装置,可以在不同的人手里引爆不同的真相。
“那个账户的主人,”哈特说,“你知道是谁吗?”
“不知道。但我有一个怀疑。”妮基走到窗边,看着远处OmniTech大楼的方向。晨光把玻璃幕墙染成了淡橙色,像一面巨大的镜子。“文森特在离职前跟我说过一句话——‘索引里有鬼。不是漏洞,是鬼。一个用我的代码做我不同意的事的人。我查了三年没查出他是谁。但我知道他在枫树街。’”
哈特的手指在口袋里碰到那四枚袖扣。冰凉的金属,刻着不同的字母,属于不同的人。其中一枚的主人失踪了,一枚的主人坠楼了,一枚的主人淹死在汽车旅馆的游泳池里,一枚还活着。
还有一枚,从来没有被找到过。那个拥有索引最高权限的第三个人,那个在安德森车里说“我是时间的证人”的人,那个在麦考利死后潜入书房开灯的人——他的袖扣在哪里?
“你刚才说,索引只在一个人做出选择之后才寄信。”哈特说。
“对。”
“那如果有人在利用索引的数据做更激进的事呢?不只是寄信,而是直接干预?比如,让一个已经惊慌失措的人收到一封空信封,让他觉得信的内容已经泄露给了别人?”
妮基转过身,看着他。她的眼神终于不是那种历经世事的平静了,取而代之的是一种警觉。
“空信封?你看到空信封了?”
“安德森死的时候,副驾驶座上有一个空信封。里面什么都没有。”
妮基走到桌前,快速打开电脑,调出一份索引系统的原始功能日志。她的手指在键盘上飞快敲击,屏幕上滚动着密密麻麻的代码行。然后她停下来,光标停在一行被注释掉的函数定义上。
// ghostMail() —— 寄送空白信件。功能:标记目标为‘待确认’,触发目标恐惧反应。使用条件:仅限管理员权限。警告:此功能不应用于任何正式场景,违反系统核心设计伦理。
“这功能被注释掉了,”妮基说,“说明文森特写了它但故意不启用。他把它锁死在了代码底层,用他自己的话来说——‘某些功能不应该被任何人使用’。”
“但有人能解封它。”
“拥有管理员权限的人。”妮基站起来,盯着哈特,“安德森的车载系统里跟你说‘我是时间的证人’的那个人,和寄空信封给安德森的人,是同一个。他不是文森特。他是文森特三年都没找到的那个鬼。”
钟楼上的铜钟再次响起。六点整,六声钟响,每一声都在石墙之间撞击、蔓延、消散。哈特站起来,走到门口。他还有一个地方要去,一个他在来时的车上一直回避去想的地方。
“你父亲死了。”他背对着妮基说。
妮基没有回答。
“麦考利坠楼那天晚上,有人在他的书房里开了一下灯。那盏灯对着后窗,能让我在枫树街路口看到。后来我在安德森家的车道旁捡到了阿利托的袖扣。再后来安德森的车里出现了你父亲的名字——科林·格雷戈里。科林·格雷戈里。他的职业是城市规划顾问,对吗?”
“对。”
“他是不是OmniTech的外部合作伙伴之一?”
妮基沉默了很长时间。长到窗外的天彻底亮了,教堂广场上开始有鸽子落下来觅食。
“不是合作伙伴。”她终于说,“他是OmniTech城市项目的审批人。城市规划局的科林·格雷戈里。他有权力决定OmniTech的智慧城市系统能不能在全市部署。那枚袖扣,是OmniTech给他的礼物。麦考利也有,因为麦考利是商会高层,负责在商业圈子里推广VidStream Life。安德森也有,因为他是政府采购评审,负责审批智能家居设备是否纳入市政补贴目录。萨曼莎——我的前辅导老师、被我当作唯一信得过的大人——她也有。她用基金会的钱买了VidStream Life捐赠给少管所。”
她笑了一下,笑得很短,很短促,像呼吸被中断了。
“你看,哈特先生。这就是艾斯特林市的精英俱乐部。每个人都在把索引塞进更多人的家里,每个人都因此拿到了纪念品。我父亲把他的袖扣给了我,说他用这东西打开了所有门。我戴着它去见文森特,被萨曼莎看到了。两天后,萨曼莎把我写的第一份漏洞报告还给我,说‘这个东西不要再让别人看到’。再然后,我就成了少管所出来的不良少女,自己搞砸了一切,没人会相信我。”
她停下来,把手伸进卫衣口袋,掏出一样东西放在桌上。
一枚金色袖扣。刻着C.G.。
“这就是你想找的那枚。我父亲的。他三个月前心脏病发作死了,死之前把我从少管所到他死那天所有的治疗费一次性打进了一个不可追踪的账户。他说这是他唯一能给我留的东西。不是道歉。他知道自己不配道歉。他只是一个终于还了一笔他还不清的债的人。”妮基把袖扣推向哈特,“拿着吧。我不需要了。”
“你不留着?”
“留着也是他的东西。我不想要他的东西。”
哈特把第五枚袖扣拿起来,放进外套内袋。现在它们在他胸前口袋里轻轻碰撞,发出细微的金属声。麦考利,安德森,萨曼莎,哈特——还有科林·格雷戈里。五个人的金色袖扣,五十枚中的五枚。
还有四十五枚在别人手上。有的是受害者,有的是参与者,有的既是受害者又是参与者。
“那个拥有管理员权限的人,”哈特说,“既然你父亲不是他,那你怀疑谁?”
妮基站起来,把窗台上那根一直没点的烟收回烟盒。她走到哈特面前,个子只到他肩膀,但站姿很直。
“我怀疑过一个名字,但一直没有证据。”她说,“埃利奥特·卢卡斯。法务部的埃利奥特·卢卡斯。他在OmniTech干了九年,法务部高级总监。也是专门起草保密协议的人。妮基·卡尔森的保密协议是他亲手送到我面前的。”
哈特的后脊蹿过一阵凉意。卢卡斯——那个递给他备用工牌、告诉他虹膜锁打不开、告诉他“索引”评估算法的人。那个语气永远平和、措辞永远精确、表情永远控制在适当范围内的法务部高级总监。
“他给我讲了很多关于阿利托的事,”哈特说,“也给了我很多帮助。”
“他当然会帮你。”妮基说,“因为他需要有人追查下去,把矛头指向阿利托,把一切解释为‘一个已故天才程序员的复仇’。这样OmniTech就可以继续免责。第230条不是给互联网平台的吗?OmniTech也一样——只要他们能证明是别人在利用他们的技术做坏事,他们就不用为结果负责。法务部的工作就是确保不管发生什么,责任都落在别人身上。”
窗外,一只鸽子扑扇着翅膀落在喷泉池沿上,低头啄着自己胸前的羽毛。哈特在脑海里逐帧重放他和卢卡斯的每一次对话。卢卡斯把阿利托的离职档案给他看,说阿利托不合群。卢卡斯说“索引”可以预测行为,但公司只是想卖广告。卢卡斯主动提供备用工牌,让他进入地下室。卢卡斯在他找到妮基的当晚就打来了电话,说出了名单有二十个人。
每一个动作都是帮助。每一个帮助都在塑造一个叙事——阿利托是罪魁,索引是失控的机器,那些信是程序自己发的。但既然有另一个人拥有管理员权限,既然那个“鬼”可以在安德森的车里说话、在麦考利的书房里开灯、在哈特的车窗上塞传单,那一切都可以被重新解释。
不是程序失控。
是有人在利用程序。
这个人知道索引的存在,知道阿利托的后门,知道妮基的故事,知道所有相关者最害怕的事。他不是写信的人——信是指数自己生成的。但他可以在信的内容上做手脚,可以在信封里放空纸,可以在关键时刻发出一条伪装的系统消息,把一个已经崩溃的人推下最后的悬崖。
“安德森死之前收到的最后一条消息是‘我是时间的证人’,”哈特说,“那句话是外部干预,不是系统生成的。如果是卢卡斯发的——”
“那他就不只是法务顾问了。”妮基说,“他是半个刽子手。”
钟楼里安静下来。六点的钟声余韵终于完全消散了,只剩下楼下教堂中殿里某处圣水池传来的滴水声。
哈特把第五枚袖扣在口袋里翻了个面。他脑子里一条一条地回放卢卡斯说过的话。卢卡斯说过“索引”的后门只有阿利托一个人知道。但如果卢卡斯也是管理员,他不可能不知道。他在撒谎,并且故意撒谎。
一个撒谎的法务总监,把钥匙送给一个调查者,然后等着他打开一扇扇通往别人的门。
“卢卡斯今晚在哪?”哈特问。
妮基重新打开笔记本。她的手指在键盘上飞快地移动,屏幕上弹出一个监控画面——是格兰特酒店宴会厅的实时直播。画面上,萨曼莎还在讲话,台下的人还在骚动,但画面边缘,靠近后门的地方,站着一个身穿炭灰色西装的男人。他双手插在口袋里,背靠墙壁,面无表情地看着舞台上的一切。
埃利奥特·卢卡斯。他嘴角挂着一丝微不可察的笑。


暂无评论,来抢沙发吧!