“他们……”王洋的声音卡在喉咙里。
“他们也是。”张伟说,没有回头,“这些年来,所有在这栋楼里死去的人。不是所有人都被困住了,只有那些临死前有强烈执念的,有未完成之事的,才会被这个算法吸引,被这间机房困住。我是第一个,但不是唯一一个。”
王洋环顾四周,三十个半透明的身影,三十个困在这里的灵魂。有的看起来像学生,有的像老师,有的穿着保洁的衣服,有的穿着保安的制服。他们都在敲代码,都在试图完成那个算法,那个2009年未完成的项目。
“这到底是什么算法?”王洋问,他感到恐惧,但也感到一种病态的好奇。
“预测算法。”张伟说,“基于人类行为数据的预测模型。但李老师没告诉我们全部真相。这个算法真正要预测的,不是普通的消费习惯或上课出勤。它要预测的,是人的死亡。”
王洋愣住了。
“什么?”
“死亡。”张伟重复道,“准确地说,是意外死亡。基于一个人的行为模式、生活习惯、社交网络、心理状态,预测他在未来某个时间点遭遇意外死亡的概率。那个委托项目的公司,不是普通的科技公司,而是一家保险公司。他们想用这个算法来精准定价,甚至……筛选客户。”
王洋感到一阵恶心。用算法预测死亡,然后根据风险收费,或者干脆拒保。这已经不是普通的数据分析,这是……
“这是玩弄人命。”王洋说。
“是的。”张伟的声音里有一丝痛苦,“但我们当时不知道。李老师说这只是学术研究,我们信了。直到陈峰发现了真相,他看到了原始文档,里面提到‘高危人群筛选’和‘拒保策略’。他要去举报,但李老师拦住了他。后来陈峰失踪了,李老师说他自己退学了,但我们都不信。”
“然后呢?”
“然后我和李想继续做,因为我们已经陷得太深了。我们知道得太多,走不掉了。但越做越害怕,因为这个算法……它太准了。我们用历史数据测试,预测那些已经去世的人的死亡,准确率高达92%。而且它不仅能预测死亡,还能预测死亡的方式、时间、地点。我们开始害怕,害怕这个算法如果真的完成,会用来做什么。”
张伟停了下来,键盘敲击声还在继续,那些半透明的身影还在不知疲倦地工作。
“火灾那天晚上,”张伟继续说,“我不是一个人在机房。李想也在。他回来了,他说他想了很久,决定和我一起完成,然后带着完整代码去找媒体曝光。我们开始最后的调试,然后……就起火了。火来得太快,我们跑不出去。李想把我推到门口,他说他挡着,让我想办法开门。但我打不开,门从外面锁上了。”
“锁上了?”王洋一惊。
“是的。”张伟说,他的声音在颤抖,“门从外面锁上了。有人不想让我们出去,不想让我们带着代码离开。是李老师,还是公司的人,我不知道。我只知道,我和李想都死在了这里。但我们的意识,我们的执念,和这个算法一起,留在了这些电脑里。”
王洋感到呼吸困难。他靠在墙上,慢慢滑坐到地上。手电筒的光束照在地面,灰尘在光柱中飞舞。
“所以这个算法现在还在运行?”他问。
“一直在运行。”张伟说,“用这栋楼里所有人的数据,用这十四年来所有进出这栋楼的人的数据。它在学习,在进化,在完善。但它卡住了,卡在那个bug上,迭代1024次就会崩溃。我需要你的帮助,王洋,我需要你帮我修复它。然后,也许我就能关掉它,让它停止运行,让我们所有人都能解脱。”
“但如果我帮你修复了,这个算法就能完美运行了,它会预测死亡,会被用来做坏事……”
“不。”张伟突然转过身,这次他整个身体都转了过来,面对王洋。
王洋看到,张伟的半透明身体里,有细微的光点在流动,像数据流,像代码。他的眼睛不再是浑浊的灰白色,而是闪烁着微弱的绿光,像屏幕上的光标。
“我要你帮我修复它,然后,在最后一次运行时,我会输入一个指令,一个自毁指令。”张伟说,他的声音变得坚定,“这个算法有一个后门,是我和李想偷偷加的。只要输入特定的指令,它就会在完成最后一次预测后,清除所有数据,销毁所有代码,永远删除。但前提是,它必须先完成一次完美运行,没有bug的运行。所以我才需要你,需要你帮我修复那个迭代bug。”
王洋看着张伟,看着这个困了十四年的灵魂。他看到的不是一个恐怖的鬼魂,而是一个和他一样的学生,一个被卷入阴谋,付出生命代价的年轻人。一个在死后十四年,还在试图纠正错误的人。
不,是鬼魂。
“我怎么相信你?”王洋问,“如果你骗我呢?如果我帮你完成了,你却用它做别的事呢?”
“你只能相信我。”张伟说,他抬起手,指向周围那些半透明的身影,“看看他们,王洋。看看这些被困在这里的人。他们有的死于火灾,有的死于触电,有的死于突发疾病,有的死于意外坠楼。但他们都死在这栋楼里,死前都有强烈的执念——想完成的论文,想告白的对象,想挽回的错误,想实现的梦想。他们的意识被这个算法捕获,困在这里,成为它运行的一部分。每天夜里,他们都会醒来,重复死前的工作,试图完成未竟之事。你想加入他们吗?你想成为第三十一个吗?”
王洋顺着张伟手指的方向看去。他看到一个女孩,看起来像大学生,坐在靠窗的位置,一边敲代码一边流泪。他看到一位老师模样的中年人,眉头紧锁,盯着屏幕上的图表。他还看到一个保洁阿姨,她的双手在键盘上颤抖,却依然在敲击。
所有人都被困在这里,困在这个无尽的夜晚。
“如果我帮你,我需要做什么?”王洋问,他已经做出了决定。不是因为他相信张伟,而是因为他没有选择。
“坐到电脑前。”张伟说,他的身体开始变得稀薄,像要消散,“我会把代码传给你,告诉你问题在哪里。你有很好的基础,我看过你写的作业,你很聪明,能理解这个算法。我们一起,今晚就解决它。”
王洋站起来,走到张伟旁边的座位。那台电脑前原本坐着另一个半透明的身影,但当王洋靠近时,那个身影慢慢淡去,最后消失了,只留下空荡荡的椅子和键盘。
王洋坐下。屏幕亮着,上面是那个卡住的循环代码。
“这里。”张伟的声音在他耳边响起,虽然张伟本人还坐在原来的位置,“看第47行,内存分配的大小应该是动态的,但代码里写死了1024。这就是问题所在——当数据量超过1024时,就会溢出。但实际上,数据量是变化的,每次运行都不同。我们需要一个动态分配机制,根据实际数据量调整缓冲区大小。”
王洋盯着代码。他看懂了,这是一个典型的缓冲区溢出漏洞,在早期的C语言编程中很常见。现代编程会避免这种硬编码的魔法数字,但2009年的时候,这种写法还很普遍。
“我明白了。”王洋说,他的手放在键盘上。键盘是冰凉的,但当他开始敲击时,指尖传来一种奇怪的触感,像是电流,又像是……脉搏。
他修改代码,将固定的1024改为变量,从数据源读取实际大小。这并不复杂,但需要对整个数据流有清晰的理解。好在张伟在旁边解释,王洋本身基础也好,很快就理清了逻辑。
修改,编译,运行。
进度条开始走动,1%,2%,3%……到1024次迭代时,没有崩溃。程序继续运行,1030,1040,1050……
“成功了。”张伟的声音里有一丝激动,十四年来的第一次。
但程序在迭代到2048次时,又卡住了。这次是另一个错误,指针越界。
“这里还有问题。”王洋皱眉,他快速浏览代码,找到问题点。又是一个硬编码的数值,另一个魔法数字。
他们继续修改。王洋主攻,张伟指导。时间一点点流逝,王洋完全沉浸在代码中,忘记了恐惧,忘记了这是一间闹鬼的机房,忘记了坐在他旁边的是一个死了十四年的鬼魂。在他眼中,只有代码,只有问题,只有解决方案。
这是一个程序员的纯粹状态,一种心流体验。问题越复杂,挑战越大,投入越深。
他们修复了一个又一个bug。有些是明显的错误,有些是隐藏很深的逻辑缺陷。这个算法比王洋想象得更复杂,它不仅仅是一个预测模型,更像是一个简陋的、早期的人工智能。它会学习,会适应,会根据新数据调整自己的参数。
而且,王洋渐渐意识到,这个算法在某种程度上是“活”的。它吸收着周围环境的数据,包括那些被困灵魂的意识碎片,包括这栋楼里所有人的行为模式,包括此刻坐在电脑前的他自己的思维。它在进化,在十四年的运行中,它已经远远超出了最初的设计。
“它知道我们在修复它。”王洋突然说。