科幻 · 15分钟 · 综合评分 75.8分

夜车在深夜减速

2026-06-29 · 装置·空间塌缩 种子·全城自动驾驶车同时避让一个摄像头看不见的
郗景从显示器前抬起头的时候,窗外已经彻底黑了。 办公室只有一盏台灯还亮着,灯罩边缘的铝皮有一块深深地凹陷下去,像被人用拳头砸过。他不知道那是谁砸的。这层楼的工位三年前就空了大半,他一个人坐在这里,每周七天,每天十个小时,做的事情只有一件:盯着数据后台,等一个不会出现的故障。 风扇在主机箱里嘶嘶地转,嗡鸣声每隔四十二秒就会变一次调。他数过。他什么都数过。 屏幕上跳出一行代码,十六进制的,第三位和第九位同时出现了异常增量。郗景摸了摸下巴,把那块皮肤掐了一下——没有疼,只是麻。他今天喝了三罐速溶咖啡,罐子在桌角摞成一个小塔,每一罐都被他捏得变形,铝皮上的皱纹深浅不一。 墙上的钟指向晚上十点零七分。秒针在走到“七”和“八”之间的时候会卡一下,再跳过去。郗景一直想用螺丝刀把表盘拆开看看,但一直没有。理由太多,其中一个是——他不知道自己还能在这里待多久。 这种状态持续了二十三天。 从第一辆自动驾驶公交车在跨江大桥上突然刹停开始。车载日志显示,前方十二米处检测到“不可分类障碍物”。那个位置的摄像头拍到的画面干干净净,没有任何东西。第二起在城南隧道,十七辆车同时变道,避让一个在雷达图上显示为“人类轮廓”但没有对应视频源的目标。第三起、第四起、第十一起。全城,不同路段,不同时间,同一件事——系统集体对一个不存在的人做出避让反应。 媒体管它叫“幽灵行人”。总部那边开过三次视频会议,每次郗景都坐在角落里,听算法组和安全组来回推责任。他什么都没说。因为在第二起事件发生之后的第三天,他就在日志里看到了一串东西。 那串东西很眼熟。 是他的代码。 更准确地说,是他在离职之前,那个完全没有交付、也没有任何人知道的项目。那个项目有一个名字,叫做“景和”。他儿子的名字。 郗景把键盘拉过来,敲了一串命令。三秒后,屏幕上弹出一张图——不是实景图,是激光雷达重建后的点云模型。一栋老居民楼的轮廓,六层,没有电梯,楼顶有一个水箱。点云数据的精度很好,连排水管的位置都还原得清清楚楚。而在这栋楼的二楼朝南的窗户里,有一个模糊的、由七百多个稀疏点组成的小团,停留在窗户前面,像是有什么东西坐在那里看着外面。 郗景的拇指摩挲着键盘的F键,摩了很久。那个键上的字母已经被磨掉了,露出底下的塑料,滑溜溜的,像皮肤被水泡过之后的触感。 他记得那扇窗户。 那扇窗户朝南,采光一般,因为对面三十米就是另一栋楼。窗台上放着一盆绿萝,水培的,玻璃瓶里有一枚五分钱的硬币,是郗景随手扔进去的,说能防虫。景和当时六岁,蹲在窗台上看他装水,问了一句:“爸爸,硬币能挡住虫子吗?”他说能的。其实不能。景和信了。 后来他学会了走路,然后是跑,然后是不再叫他爸爸。然后是那辆车。一辆货拉拉的面包车,没有刹车失灵,没有醉驾,没有监控死角。一切都很正常,正常得像一个数学公式。只有一个问题:那个在斑马线上低头玩手机的孩子,踩进了这个公式里的一个空当。 郗景用那个空当写了一个东西。 他用了两年。他把景和从出生到最后一张照片的所有数据,搜集到了他能搜集的极限。体检记录、疫苗接种时间、幼儿园的入园登记表、每一张画过画的纸的照片、说话录音、走路的视频片段、心率数据、运动传感器的记录。他用这些东西训练了一个模型,一个能够预测那个孩子在这座城市里任何时刻会出现在哪里、会用什么速度移动、会怎样改变方向的模型——就像一个活人的生活轨迹预测系统。只不过这个系统的预测对象,已经死了。 公司不知道这件事。项目用的是一台他自己组装的服务器,放在家里,后来搬到了办公室隔壁那个落满灰的空会议室里,插在应急电源上。他从公司数据库里偷过接口权限,让这个模型定期向主控系统发送一条“前方存在行人”的信号,置信度设为百分之九十九点九七。他调过参数,让那条信号的特异性强到不会被过滤——一个身高一米零八、体重二十公斤左右的儿童,步频偏快,步幅偏小,肢体末端摆动幅度较大,容易在转弯时突然改变方向。 负责算法审核的人认为这是某一个摄像头误读产生的随机噪点,因为那条信号没有对应的视频源。但他们没把它从白名单里剔除,因为置信度太高了,谁都不敢冒那个险。自动驾驶的底层逻辑有一条铁律:宁可错停,绝不误闯。 所以整座城市的车都在让路。 郗景拉开左边第二个抽屉,拿出一块硬盘。硬盘上贴着一张便签纸,上面用圆珠笔写了一个日期。六年前。他把硬盘插到电脑上,打开一个文件夹,里面只有一张照片。六岁生日那天拍的,景和戴着纸做的生日帽,嘴角沾着奶油,笑得像一颗被剥开的橘子。 窗外有什么东西亮了一下。 郗景转头去看,什么都没有。对面那栋写字楼的玻璃幕墙反射着远处高架桥上汽车尾灯的光,一条一条的红线,像血管。他再看屏幕的时候,点云模型上那个小团消失了。 他皱了皱眉,在键盘上敲了几条查询指令。没有异常,模型运行正常,信号也正常。他又敲了几条,查看了最近十分钟所有车载终端的反馈记录。 全城的车依然在避让。数据上没有任何变化。 只是那个二楼窗户里的小团确实不见了。 郗景盯着屏幕看了很久,久到风扇又变了五次调。他慢慢站起来,椅子脚在瓷砖地面刮出一声很钝的响。他往门口走了两步,停下来,转身,看着那个硬盘。硬盘上的便签纸翘起来一个角,他伸手把那个角按下去,指腹压着那张纸,感觉到纸的纤维在指尖上微微滑动。 他走出办公室。走廊里没有灯,只有尽头安全出口的绿光一明一灭,像某种生物在缓慢地呼吸。他推开隔壁会议室的木门,里面的服务器指示灯还亮着,蓝色的小点,排成三排,像一片缩小的夜空。 郗景蹲下来,伸手摸了摸机箱的顶盖,烫的。 他关了服务器。 回到办公室的时候,墙上的钟指着晚上十一点二十三分。他坐回椅子上,看了一眼屏幕。数据流已经停了。他在命令框里输入一条最后的指令:删除“景和”模块全部系统快照,清除接口记录,还原日志。 系统弹出一个确认框。他把光标移到“确认”上,停住。风扇还在转,秒针还在跳,远处的尾灯还在玻璃幕墙上流成红色的河。 他想了一件事:那个模型有两套输出端。一套向公司主控发信号。另一套,他从来没有打开过。 他点开那个项目文件的隐藏目录,里面躺着一个子程序,最后一次激活时间是四个月前的某个深夜。子程序的名称是一长串时间戳,时间的格式很怪,用的是十二小时制,后面还带了一个时区偏移。他没有注意到这个格式,因为他的注意力全被输出结果拖住了——那里面有一行字。 “我坐在窗台上,对面的楼有人在做饭。” 郗景的喉结动了一下。他把那一行字看完,又看了一遍。风扇的声音好像突然变大了。他低头看自己的手,指甲边上有一小块倒刺翘起来,渗了一点儿血丝。 他把光标移回确认框,点了下去。 系统开始删除。进度条走得很快,一截一截的绿,像心跳监测仪上那种信号。走到百分之八十七的时候,他电脑右下角的网络图标忽然闪了一下——有一条连接,来自一个他没有见过的IP地址。 那个IP的归属地,是居民楼二楼朝南的窗户。 郗景盯着那串数字,直到进度条走完百分之百。然后他站起来,把台灯关了。房间暗下来,只有显示器的余晖还在他脸上落了一小会儿。他把硬盘从电脑上拔下来,放回抽屉,关上抽屉,拿起桌上的空易拉罐,一个一个地丢进垃圾桶。铝罐撞在一起,发出了几声干燥的、空洞的响。 他没有回头再看一眼屏幕。 但他知道,在城市的某一条路上,有一辆深夜归途的出租车突然降低了车速,向右侧变道,像是在给什么人让出一条路来。