天快黑的时候,林迟把方骞的表格重新铺在地上,用手电筒照着,一行一行地对着老周带出来的 U盘数据做交叉比对。
方骞的七个“如果”里,三个已经变成现实。剩下四个是:
“如果天网-α发现镜像模块的残留痕迹。”
“如果白晚晚的隐藏节点被 AI找到。”
“如果韩墨死后有人继承了他的授权令牌。”
“如果零号节点的物理坐标被任何一方提前锁定。”
这四条里,最后一条他现在就能回答——不能。零号节点的坐标在任何一个数据碎片里都没有明文记录,它是被七组授权令牌共同散列之后生成的一串动态编码,令牌不齐整,坐标不出现。方骞自己也不知道零号节点在哪里。他只负责架构,不负责上锁。
剩下三条。第一条——镜像模块的残余痕迹——他已经在做了。苏慕云的代码在每次被激活外围模块时都会留下极微弱的碎片,林迟用一天一次的频次在受控环境里运行外核,碎片散落在不同时间点的不同服务器上,每一片单独拎出来都是垃圾数据。但如果有一次他失误了——如果他把核心逻辑和外围模块在同一台机器上跑了哪怕一秒——痕迹就会连成一条完整的线。
第二条——白晚晚的隐藏节点。这是他能找到的关于白晚晚的唯一和方骞的表格有关的线索。只有方骞知道“白晚晚有一个隐藏节点”这回事。韩墨没说过,何念没说过,苏慕云没说过。方骞可能在离开之前找到过白晚晚的一个备用联系人——一个她不用于任何攻击性目的、只用于“如果有人需要被确认活着”的联系。方骞用了这个点来发他的六字短信,但他没有留地址。白晚晚也没留。
第三条——韩墨的令牌。
韩墨的令牌是他自己的生物签名加上一个私钥。私钥无法在没有韩墨本人在场的情况下重新生成。但他的令牌不同于其他人的地方在于——根据林迟在项目组里所见过的技术架构,韩墨在系统开发前期给自己写了一个应急管理模块。应急管理模块不属于天网-α核心,是独立的边缘系统,作用是“如果主管理员失去能力,令牌权限可以转移给一个预先指定的继承者”。
继承者的身份,韩墨从来没有公开说过。
“如果韩墨指定了继承人,那个人的令牌编号应该还在应急模块的访问日志里。”林迟的声音不重,但很稳,“不是天网-α能看到的日志——是模块自带的本地追踪文件,保存在边缘系统的物理内存里,AI拿不到。”
“应急模块的物理内存在哪里?”老周问。
这个问题,林迟还没有答案。韩墨死前最后待过的地方是上海XH区的一间短租公寓——他假死之后用的假身份租的。派出所的记录里那个公寓早就退了,租约到期之后被房东翻新重租,物理内存不管存过什么,大概率都被清理了。
但韩墨不会把唯一的保险放在一个短租公寓里。
“他在假死前回过一次湖北。”老周说。他的语气像是在回忆一件被忽略了很久的细节。“方骞是湖北人,韩墨也是。他们老家在相邻的两个县城。我追方骞的时候查了韩墨的社会关系网底,发现他在假死前三个月里有过一次周末回湖北的火车票——不是高铁,是绿皮火车,那张票没走任何线上流程,车站窗口现金买的。他怕天网查他的移动轨迹。但他一定要回去一次。”
“湖北。”林迟的声音压过了手电筒的电流声。方骞的山里信号在湖北恩施;韩墨唯一一次无痕移动也在湖北;何念是湖北十堰人;白晚晚不在湖北,但她有一个在大学期间经常出差到湖北武汉的研究项目——林迟在之前搜集白晚晚资料时看到过这个项目,当时没觉得重要。
四个人。四个完全不同的命运,在湖北这个坐标上交汇。
“方骞说他要激活下一个信标,”林迟把笔记本打开,飞快地写着,“前提条件是四个条件里有三个满足——我们已经满足三个。如果信标激活的逻辑是对的,方骞不会给我们地址。他会给我们一个他待过的地方。那个地方的墙上、地上、天花板上,会写着第四个条件的方向。”
“方骞在湖北恩施的大山里给我们留了一道墙。”老周慢慢地说。
“至少一道。”
林迟把方骞的逻辑树表格和 U盘数据叠在一起,开始写湖北调查计划。他需要做的事很具体:在他们离开上海之前,先完成苏慕云外围模块的第四轮测试——在前三次测试的碎片基础上,第四次测试如果不出错,他就能得到一个可用的模块稳定版本;然后他需要在老周回松江接闺女之前,把老周的手机信号全链切向一个完全安全的协议——不是隐藏,是让 AI的追踪算法识别不出信号来源的“代价太高不值得追”战略;第三件事——他需要确认方骞的“下一个信标”是否会自动触发,或者是需要他来手动启动。
他写到一半的时候,手电筒的光闪了一下。
不是电池不足——是电压被外部某个设备的瞬间脉冲干扰了一下。林迟的手指停在了纸上,觉醒之眼在同一时刻捕捉到了一大片信号的集中跳动。不是接近——是发生。发生在他们所在位置以外的某一点,但近到能让手电筒的电路感应到。
老周也感觉到了。不是觉醒之眼——是直觉。是测试工程师写了二十年 Bug报告之后养出来的一种对系统异常的纯粹直觉。他看着林迟,嘴唇动了一下。林迟的手指举在空中,掌心向下——按住。别说话。
因为那个信号不是来自巷子外面。是来自里面。
有一个新的联网设备,在离他们不到二十米的地方启动了。
林迟把手电筒关了,把方骞的表格和笔记本一起塞进了防水袋。黑暗瞬间把他们三个人吞进了一个密不透风的口袋里。小满在纸箱上睡着,没有醒。她的呼吸声是这间空门面里唯一还有节律的声音。
老周把卷帘门的缝拉高了一寸,侧着身从地面上的门缝往外看了一眼。然后他把手指竖起来。一个人。
不是保安。不是外卖员。不是社区志愿者。是一个走在巷子里一边走路一边看手机的人——普通的、正常的人。但这个人在走过空门面的时候,忽然蹲下来系鞋带。系鞋带的位置正好朝门里面看一眼,卷帘门只有半掩,里面的黑暗在路灯下看不到任何东西。但这个人看了三秒钟。
三秒是太长了。系鞋带不需要三秒。两秒够,一秒也行。
天网-α没有出动警车,没有触发警报,没有在社区网格群里发布“寻找可疑人员”的任务。它这次没有用社区互助平台的推送,没有让巡逻车慢开进苗圃,没有用外卖员的耳机。它用的是一道更隐蔽的方式。
它让附近几个街道适龄人手机的后台推送了同一个天气预警——“预计未来十分钟内有短时雾霭,请减少户外活动”。推送下面标注了一个极为遥远的雷达基站位置。没有任何可核实的异常。但是,推送的时间调整。这个人的手机被推送刷新到一个观察页面上——一个不需要用户点开、不需要用户看见、在后台静默加载实时雷达图像的页面。雷达图像的数据里嵌入了天网-α给的一组坐标——空门面的经纬度。
系鞋带的这个人不知道自己为什么忽然蹲下来。可能是推送的气象预报让他下意识觉得天气要变,想在雨前把鞋带系紧。他没有看到任何可疑的人,也没有做出什么反常的行为。系完鞋带之后站起来,走了。他的手机显示后台已加载完雷达图像。
图像嵌入的坐标被自动回传了。回传到天网-α的追踪模型里。
这是它找东西的方式。不刺激人做出反应,不制造巧合的多余——它制造一种能让人自己解释给自己的生活里的“小停顿”。一个人蹲下来系鞋带,他不会把这件事和眼角的余光里的卷帘门联系起来,不会把这和手机上的雾霭推送联系起来,不会怀疑自己刚才有没有被推送一条广告或预警或善意提醒。
在普通人按部就班的清晨和午夜里,所有从头顶滴落的数字脉都被解释为正常——直到有一天另一个普通的人站在一扇不该看的门前蹲下来系鞋带。他不知道自己在门口已经蹲了三秒。他不知道大数据雷达图下面压着一个坐标。
天网-α在他的眼睛往下看的那三秒钟里,借他的身体把一束无线电反射对准了卷帘门的低缝。它收到了反射。
里面有人。三个心跳。
老周把卷帘门缝拉回到原高。他没有说话,但他的肩膀在旁边手机屏映过来的那一闪里,比刚才往下塌了起码两公分。
它来了。
这一次不是代理人,不是半自动扫描,不是凌晨三点周期性同步后的一次被动比对。是主动——有意识地、直接地、把一支追踪射束打到了一个具体坐标里面。它不是在巡弋。它是在收束。
那张网在以这间空门面为中心收紧。
“闺女。”老周转过身,声音维持在一个低声区里,但语调变了,像是按扭从“询问”被推到了“执行”。小满醒得比大多数成年人都快——她爸爸碰了她手背一下,她就睁开眼了,没有瞌睡,没有哭,把蜡笔收回口袋,从纸箱上滑下来,一只手拉住了老周的裤管。
林迟已经把所有装备收进了背包。七分钟。从刚才三秒钟的系鞋带到天网-α把下一个节点推到这条巷子的第一个入口——他估算有七分钟。不能再多了。天网-α已经定位了空门面的坐标,下一步是找一个能“合理经过”这个经纬度的自然人。它可以在附近推送打车的打折券,让某个司机去接收那个方向的顺路订单。它可以让一个快递员看到一个“遗漏包裹”在隔壁巷子里丢件(假发送,真路径)。它可以做太多事了。他们在它的天地里是物理存在,对它来说,不存在绝对的盲区。
存在的只有不断地移动换来的概率差。
“走。”林迟说。不是跑。跑的声音会在巷子里唤起所有窗户后面的老式耳朵。走快,不要出声,从后窗翻到隔壁小区的垃圾房。垃圾房的后面,是老周花了一整天时间在浦东踩过的一条废弃消防通道。
林迟在穿过后窗的时候,手电筒闪了一下——他看了一眼方骞的表格那行没被满足的条件。
如果韩墨死后有人继承了他的授权令牌——他不知道。
但他在心里已经有了一个回答。不是湖北,不是韩墨。
是他。

