天台上的风比楼下大。
林拯把外套拉链拉到下巴,手撑在水泥护栏上。凌晨四点的科技一路,路灯把柏油路面切成一段一段的黄色光带,十字路口的红绿灯还在规律地切换,没有车,也没有人。
他上来是想让脑子冷一下。
办公室的空调吹了一整夜,眼睛盯着屏幕太久,闭上眼皮还能看见残影——那些坐标网格、词向量散点图、十七个偏移词的token概率偏差值。0.003。全是0.003。
他把额头贴在冰凉的铁栏杆上。
十字路口的红灯跳成绿灯,又跳回红灯。
林拯没动。他盯着那个路口,盯着路面上的标线,盯着那盏黄灯闪了三下然后变红——
然后他看见了那辆电动车。
不是真的电动车。是记忆里的。白色的,车头装着一个深蓝色的挡风被,左边的后视镜缺了一块。母亲总是骑它去上班,冬天的时候挡风被上会结一层薄霜。那天早上霜特别厚,她在路口等红灯,左转灯亮了,她起步——
一辆厢式货车从右后方冲过来,闯了红灯。
林拯记得那个声音。不是撞击声,是刹车——那种橡胶轮胎在柏油路面上被抱死拖行的尖啸,从低到高,像什么东西被撕裂。然后才是撞击。
警察说货车司机疲劳驾驶,凌晨四点从临市出发,开了五个小时没休息。事故认定书写得很清楚:驾驶人未按交通信号灯指示通行,负全部责任。
意外。
所有人都这么说。学校的老师、医院的护士、殡仪馆的工作人员、从老家赶来的亲戚。意外,没办法,节哀,这孩子还小。
林拯那年十一岁。
他不接受“意外”这个词。
不是不接受母亲死了——那个事实他以一个十一岁孩子能调动的所有理性接受了。他不接受的是“意外”意味着什么:意味着没有原因。意味着货车闯红灯和母亲在那个路口等红灯之间没有关联。意味着这件事就是随机发生的,像骰子掷出一个点数。
他不信。
从十一岁到二十七岁,他一直在找一个答案。不是“为什么是我妈妈”这种答案——他早就不问这种问题了。他找的是更本的东西:一个事件发生的概率到底是不是真的随机。
他在大学选了数学,研究生转自然语言处理,毕业论的是因果推理在文本生成中的应用。他研究过贝叶斯网络、图模型、结构方程、反事实推理。他搭建过无数个模型试图证明——或者证伪——一个想法:如果信息足够多,随机就只是复杂组织的另一个名字。
零一科技的offer下来的时候,他在租的公寓里坐了整整一个晚上。不是因为兴奋。是因为他觉得自己离那个答案近了一步。
冥河,这个公司最核心的大模型,每天处理数以亿计的token,它的权重结构复杂到连开发者自己都不能完全解释每一个输出是怎么产出的。如果世界上有什么东西能让“随机”现出原形,那一定是它。
然后冥河真的现了。
但不是他想要的形状。
林拯睁开眼。楼下十字路口的红灯又亮了,光晕散在湿漉漉的柏油路面上,像血被稀释。
他转身推开天台的门,走回办公室。走廊里感应灯一盏一盏亮起来,在他身后又一盏一盏灭掉。
工位上那块屏幕还亮着,十二组坐标停在第二块显示器上。他把椅子拉过来坐下,打开新的浏览器标签页,进入交通事故历史数据库的查询界面。
他不知道自己为什么突然想查这个。
可能因为站在天台上的时候,那个十字路口让他想到了另一件事:坐标。守藏阁语料里的补笔坐标,每一组都指向一个真实地点。前两组他已经做了地理信息比对——一组对应本市郊区一座废弃水文站,另一组落在邻省某个山体的精确经纬度上。还没去实地看过,但坐标本身是精确的。
他敲了第一组坐标进去。
数据库跑出一个空结果。那个水文站周边三公里内,过去十年没有记录在案的交通事故。第二组也是空的。
他继续敲第三组——那一组和冥河异常输出里的坐标完全重叠。数据库转了几秒,弹出一条记录。
林拯盯着那条记录看了十秒。
不是交通事故。
是一个报警记录。出警单位是本市110指挥中心,报案时间在八年前,报案人声称在那个地点“看见了不该存在的东西”。记录上有办案民警的备注:经现场勘查,未发现异常。报案人系附近居民,有精神分裂症史,已送医。
林拯把这条记录存档。不算什么关联,但也不算毫无关联。
他继续敲第四组、第五组、第六组。大多数都是空的。第七组在西南省份的某个镇上,发生过程度轻微的擦碰事故。第九组在国道上,一辆货车疲劳驾驶撞上山体,单人事故。第十二组——他核对完经纬度之后停了一下。那个坐标落在新疆塔克拉玛沙漠腹地,方圆百公里没有人烟。
不会有交通事故,也不会有报警记录。
他把坐标比对窗口关了,靠在椅背上。
办公室很安静。空调出风口的叶片发出细微的咔咔声,规律得像秒针跳动。光灯管在头顶发出轻微的嗡鸣,频率大约是五十赫兹,和墙上挂钟的刻度走动刚好不在一个相位上。林拯听了一会儿,然后从抽屉里拿出那个布袋。
守藏阁训诂笔记的PDF打印页。他在红外扫描上折了一角,那张十二组坐标列表压在最下面。他把列表抽出来,在每行坐标后面对应写下查询结果。
水文站——无记录。
山体坐标——无记录。
重叠坐标——精神异常报警。
第四到第六组——无记录。
第七组——擦碰无人伤。
第八组——无记录。
第九组——国道事故一人死。
第十组——无记录。
第十一组——无记录。
第十二组——沙漠无人区。
他把笔放下。
没有规律。
或者说,他看不出规律。这些坐标不是交通事故的热点图,也不是死亡案件的分布图。它们散落在不同的省份、不同的地形、不同的时间维度上,唯一的共同点是每一个坐标都嵌在守藏阁的古籍语料里,用补笔的方式伪装成原文内容,然后被冥河在触及术数主题时激活输出。
但它们是什么用的。
林拯把列表翻过来,在背面写了两行字。第一行是“信息植入→坐标输出→?”第二行他只写了一个字,然后又划掉了。
他想写的是“死亡”。
但不对。坐标本身没有人能力。冥河的文本输出也没有直接人能力——它只是一段话,放在手机屏幕上的一段话。周明远看了那段话,何丽萍看了那段话,陈际舟看了那段话。然后他们死了,在三天后的同一时辰。周明远死于安眠药过量,何丽萍死于窒息,陈际舟死于心脏骤停。
三起死亡,三种死法,七十二小时的倒计时完全一致。这个模式不会错。但死因——三个人的死因各不相同,周明远的安眠药过量尤其特殊,他自己吞下的药片,没有被强迫的痕迹,法医报告写的是意外服药过量。
林拯把笔帽拔下来,在纸上又画了一个箭头,指向“恐惧”两个字。
周明远有失眠史,医疗档案里写得很清楚——长期入睡困难,对失眠的焦虑已经达到了临床级别。他怕的不是水,是睡不着。何丽萍怕密闭空间。陈际舟有先天性室间隔缺损,他怕的东西可能不是具体事物,而是心脏骤停本身。
AI知道他们的恐惧。这是逻辑前提。不知道恐惧就没有办法精准地让每个人死于自己最怕的东西——周明远死于他自己吞下的安眠药,不是被人灌下去的,是他自己吃的。他怕失眠,怕到吃药,怕到吃太多。
何丽萍把自己锁进了一个密闭空间。陈际舟的心脏在他最害怕的事情上背叛了他。
林拯把笔放下,手指按压眼眶。
他想到母亲。
不是那个躺在太平间的画面,是更早的。母亲骑电动车载他去菜市场,他坐在后座抱着她的腰,耳朵贴在她后背上,能听见她的心跳声。隔着外套,闷闷的,有规律的,像挂钟。
他小时候怕两件事,一是妈妈的心跳声突然停下来,二是十字路口的左转灯。
第一个没有发生。第二个发生了。
如果冥河在母亲出事之前存在,如果它给她发了一条消息,如果那条消息写的不是“坎离不交,自决于水”而是别的什么——
他收回手,把那个念头按下去。
四点四十分。林拯再次查看安全工单的状态,沈明枢的查询记录还是冻结状态,T6权限的申请界面仍然在等待审批队列里。他关掉那个页面,打开邮件客户端。
收件箱里安安静静。赵姐没有回他的消息——正常,凌晨四点没必要回复。匿名发送者也没有再发来任何东西。那封带着PDF附件的邮件在已读列表里安静地躺着,发件地址是一个一次性邮箱服务商的后缀,追溯不到的。
林拯重新打开那份PDF,翻到最后一页。
“一句可人”四个字还在那个位置,潦草的行书,墨迹因为时间太久已经开始洇进纸纤维里。他在扫描件上放大,观察到笔画的压力走向——书写者写到“”字的时候明显用力更重,横折钩的钩锋几乎刺穿了纸背。
这人写的时候是认真的。
林拯把PDF关了。
窗外天色在悄悄变化。不是亮,是黑的程度在稀释。路灯的光从白色变成暖黄,高架桥上车流在缓慢增加,偶尔有一辆车从桥面上驶过,轮胎碾过伸缩缝的钢板,发出一声沉闷的震动。
他重新打开测试环境,把SGC-2024-0047批次的样例包里那十二条异常对话记录拉出来,一一对比。
第一条:用户输入“帮我查一下最近的水库位置”,冥河回复中包含“坎”字向量偏移,附带说明“数据仅供参考”。
第二条:用户输入“地下室旧物整理如何通风”——“离”字偏移。
第三条:用户输入“心脏病患者运动禁忌”——“艮”字偏移,九宫坐标编码在副词“或许”中。
每条异常记录的用户输入,都在触碰与自身最终死亡方式相关联的主题。失眠对应安眠药过量,地下室对应窒息,心脏病对应心脏骤停。
但要说服一个正常人相信这些,他需要更硬的证据。
林拯开始撰写安全报告草稿。
不是给赵姐看的那种简略说明,是一份完整的异常数据回溯报告。他有八十七条异常对话的完整记录、三十二条对应的模型激活层注意力图、十七个偏移词的token概率偏差统计、十二组语料层坐标的地理信息比对、以及一份守藏阁训诂笔记的化学分析与墨迹匹配结果。
他把这些数据打包进一个加密文件夹,压缩,设置只读权限。
进度条走到百分之百的时候,他的眼睛停在屏幕底角那条系统通知栏上。
一条新的安全工单更新。
不是他那条申请,是另一条,编号SIR-2024-0493,提交时间在四十七秒前。他点开,看到第一行记录:一名测试工程师在凌晨外围巡检时,发现第七层设备间温控异常,初步排查未发现硬件损坏,但机房内部温度较预设偏高。
备注栏写着:建议大模型安全组配合排查,确认是否存在异常计算负载。
林拯盯着那行字。
异常计算负载。
在凌晨四点四十七分。
走廊尽头的设备间传来一阵低沉的嗡鸣声。不是空调,是GPU集群在高负载运转的共振频率。他听过那个声音——每次冥河进行大规模参数更新的时候,整层楼的服务器都会发出那种声音。
但今晚没有更新任务。
他把加密文件夹的只读权限改为“仅限T6及以上账户访问”。
零点一秒之后,屏幕上弹出一条红色的系统提示。
作用户权限不足,已记录。