沙盘

招魂者 · 2026/5/1

沙盘

程言第一次注意到时间差,是在一个星期三的下午。

那天南城下了入秋以来最大的雨,程言坐在云锦大厦三十七层的工位上,面前是六块屏幕。最右边那块显示的是”天枢系统”——临江市数字孪生平台的核心界面。他负责数据校准,说白了就是确保虚拟城市和真实城市保持同步。

天枢系统是临江市三年前的项目,市里和聚恒科技联合开发,把整座城市一比一搬进了服务器。每条街道、每栋建筑、每个红绿灯,甚至下水管道的水流速度,都有对应的数字模型。官方说法叫”智慧城市治理平台”,程言觉得它更像一个巨大的沙盘——规划局以前摆在桌上的那种,只不过这个沙盘是活的。

他每天的工作就是对比两个世界的数据流。真实城市通过传感器和卫星实时回传,虚拟城市在算法驱动下同步运转。正常情况下,两者之间的延迟不超过两百毫秒。

但那天下午两点十七分,程言看到屏幕上的数字跳了一下。

天枢系统显示,临江大道和云帆路交叉口的信号灯在十四点十六分五十八秒由绿转红。而真实数据回传显示,信号灯在十四点十七分零二秒才变了颜色。

虚拟城市比真实城市快了四秒。

程言皱了皱眉,以为是网络延迟导致的数据包错位。他调出日志,重新同步了一次。数据归零,一切恢复正常。

他没有在意。

那天晚上回家,他路过临江大道和云帆路的交叉口,看见一辆白色面包车侧翻在路边,保险杠碎片散了一地。交警正在拉警戒线。一个穿灰色夹克的中年男人蹲在马路牙子上,双手抱着头。

程言多看了两眼。面包车的挡风玻璃碎成了蛛网状,但司机似乎没受重伤。

第二天到公司,他照例查看前一天的异常记录。系统里有一条交通事故报告:临江大道与云帆路交叉口,十四点十七分,一辆白色面包车闯红灯,与一辆出租车相撞。面包车侧翻,驾驶员轻伤。

程言盯着屏幕看了很久。

天枢系统提前四秒预知了这场事故。不,不是预知——它的虚拟信号灯先变了红,虚拟的面包车在虚拟的交叉口停下了。但真实世界里,信号灯晚了四秒,面包车没停下来。

也就是说,虚拟城市不是在模仿真实城市。它在某些时刻,跑在了前面。

程言把这个发现写在了一张便签纸上,想了想,又把它撕掉,扔进了碎纸机。

“搞技术的,别神神叨叨的。“他对自己说。


苏薇是聚恒科技派驻天枢项目的总负责人,三十四岁,短发,说话干脆利落。她以前在硅谷做过自动驾驶的仿真系统,被临江市以三倍薪资挖回来。程言觉得她身上有一种精确感——精确的妆容,精确的措辞,精确到分钟的日程安排。

“程言,三号会议室。”

周一早会,苏薇在群里@了他。程言端着咖啡走进去的时候,会议室里已经坐了六七个人。大屏上投着天枢系统第三季度的运行报告。

“数据同步精度是九十九点九七%,“苏薇用激光笔点着屏幕上的曲线,“但最近两周出现了几次异常波动。程言,你是负责校准的,什么情况?”

程言犹豫了一下。

“有几次时间戳对不上的情况,“他说,“虚拟端的数据比真实端提前了几秒。初步判断是传感器回传延迟导致的时钟偏移,已经做了重新同步。”

“几秒?“坐在角落的技术总监老何抬起头,“虚拟端怎么可能比真实端快?我们所有的模型都是事件驱动的,没有真实数据输入,虚拟端不会自己动。”

“对,“程言说,“所以应该就是时钟偏移。”

他说完这个词的时候,自己都觉得心虚。时钟偏移是双向的,不会只往一个方向偏。

苏薇看了他一眼,没有追问。“那就加强监控,出现偏移立刻同步。下个月市里要来做年度评估,数据不能出问题。”

散会后,程言往工位走,苏薇从后面跟上来。

“真的只是时钟偏移?”

走廊里没人。苏薇的声音压得很低,但语气很认真。

程言看了她一眼。她的眼睛里有一种他很少在技术人员的脸上看到的东西——不是好奇,是警觉。

“我还在查。”

“查清楚告诉我。别让其他人知道。”

苏薇说完就转身走了。她的高跟鞋在大理石地面上敲出均匀的节拍,像一段精确的代码。


程言的公寓在城南的老小区,叫锦绣园。二十年的房子,墙皮有点脱落,但租金便宜,离公司地铁六站。他住五楼,没有电梯。

他的邻居陆芳住在对门。陆芳是《临江晚报》的记者,三十岁出头,长头发,喜欢穿棉麻质地的衣服,和这个小区的气质很搭。她跑的是社会新闻线,最近在跟一个关于城市数据安全的选题。

“你们那个天枢系统,“有一次两人在楼道里碰见,陆芳靠在门框上问他,“是不是把全城的人都监控了?”

“不是监控,是建模,“程言换着拖鞋说,“就像天气预报。气象局预测明天有雨,不代表他们在监控每一滴雨。”

“但雨不会生气,“陆芳说,“人会的。”

程言觉得她这句话有点意思,但没往深了想。

发现时间差之后的第二周,程言开始在每天下班后偷偷做一件事:记录天枢系统的提前量。

他用一台闲置的笔记本电脑搭了一个独立的监控脚本,不接入主系统,只做旁路观测。每天凌晨两点到五点——城市最安静的时候——他对比虚拟端和真实端的事件序列。

结果让他睡不好觉。

提前量在增长。第一周二到四秒,第二周五到八秒,第三周出现了最长的一次——十一秒。虚拟城市里的红绿灯先变,虚拟的地铁先到站,虚拟的人群先走进写字楼。真实世界像是有什么东西拖住了它,让它总是慢半拍。

而且这种提前不是均匀的。它集中发生在某些特定的时间段和地点。

程言在地图上标出了这些热点区域,发现它们呈现出一种奇怪的规律:沿着临江大道从西向东,每隔大约一公里出现一个。像是有什么东西在城市的中轴线上画了一条虚线。

他想起了一个词:驻波。

上学的时候学过,两列频率相同的波相遇,会形成有些地方振动加强、有些地方振动减弱的图样。如果天枢系统的虚拟模型和真实城市之间产生了某种共振——

“不可能,“他打断自己,“这是城市,不是物理实验。”

但那天晚上他做了一个梦。梦里他站在一个巨大的沙盘前,沙盘里的城市模型在缓缓移动,小人儿在小街道上走来走去,小汽车在小马路上行驶。他发现自己可以伸手进去,用手指拨动一辆小汽车。小汽车翻倒了,旁边的小人儿跑过来围观。

他醒来的时候,手指在床单上无意识地画着圈。


老郑的煎饼摊在临江大道和云帆路交叉口的东南角,干了九年。

他五十三岁,山东人,八年前跟着老乡来临江打工,工地干了三年,伤了腰,改行卖煎饼。推车是花六百块从二手市场淘的,铁板是自己焊的,面糊的配方调了两年才稳定下来。

老郑不懂什么叫数字孪生,也不知道自己的煎饼摊被建模进了一个什么系统。他只知道路口装了很多摄像头,城管最近也不怎么来了,听说是上面有什么新政策。

出车祸那天下午——就是程言在数据里看到的那次——老郑正好在摊煎饼。他看见那辆白色面包车闯了红灯,“砰”的一声撞上了出租车,出租车原地转了两圈,面包车侧翻。一块挡风玻璃的碎片飞到了他的煎饼推车旁边,差一点砸到他的酱料盆。

老郑骂了一句娘,继续摊煎饼。

但之后几天,他总觉得哪里不对。

不是身体上的不对,是感觉上的。他每天早上五点半出摊,中午收摊,下午补觉,晚上备料。这个节奏九年没变过。但从某个时候开始,他偶尔会有一种奇怪的感觉——这件事好像已经发生过了。他正伸手去翻煎饼,手指还没碰到铲子,脑子里就闪过一个画面:铲子翻过去,煎饼的边缘翘起来,薄脆碎成三块。

然后他翻过去,煎饼的边缘果然翘起来,薄脆碎成——他数了一下——三块。

老郑不是迷信的人。他把这种感觉归咎于岁数大了,记忆力减退,搞混了昨天和今天的记忆。

直到有一天早上,他正给一个穿灰色夹克的中年男人做煎饼,突然说了一句:“加两个蛋,不要葱花,多放辣酱。”

中年男人愣了一下:“我还没说呢。”

老郑也愣住了。他不知道自己为什么会知道。他看着中年男人的脸,脑子里突然浮现出一个画面:这个男人站在一栋灰色写字楼的大厅里,手里拿着一张红色的催缴通知单。

“你是不是……在哪儿欠了钱?“老郑说完就后悔了。这话问得太突兀了。

中年男人的脸色变了。他盯着老郑看了五秒钟,什么也没说,扔下钱,拿着煎饼走了。

那天晚上,老郑躺在床上想了很久。他想起老家有个说法,叫”开了天眼”。他妈说过,有些人到了一定年纪,会突然能看到别人看不到的东西。他妈说那是神佛给的缘分。

但老郑不信神佛。他信的是起早贪黑和薄脆的质量。

他翻了个身,把这事忘了。


程言在第三周确认了一个让他不敢相信的事实:天枢系统的提前量不仅仅是几秒。

在某些极端情况下,虚拟端能够预演未来更远的事件。

他是在一个暴雨天发现这一点的。那天凌晨三点,他照例在做旁路观测,发现虚拟端显示临江大道下穿隧道在三点十一分出现积水,水深达到三十厘米。而真实端此时隧道干燥。

他等了十一分钟。真实端的数据显示,三点十四分,隧道开始积水。三点二十一分,水深达到三十厘米。

不是提前几秒。是提前了整整十分钟。

程言的手指在键盘上停住了。他调出虚拟端的模型参数,检查天气预测模块。暴雨预警是提前导入的,虚拟端有气象数据,所以能预测隧道积水——这不是预言,这是工程计算。任何足够精确的模型都能做到。

他这样安慰自己。

但接下来发生的事打破了这个解释。

凌晨四点零二分,虚拟端显示:锦绣园小区五号楼第二单元,五楼左侧住户家中,燃气泄漏。

程言住在锦绣园五号楼第二单元五楼左侧。

他盯着屏幕看了三秒钟,然后闻到了味道。

很淡,混在雨后的潮气里,几乎分辨不出来。但那是燃气的味道。

程言从椅子上弹起来,冲进厨房。燃气灶的软管接口处有一条裂缝,比头发丝还细,燃气正在往外冒。他关了总阀,打开所有窗户,然后蹲在厨房的地板上大口喘气。

外面在下雨,风从窗户灌进来,把窗帘吹得像一面旗帜。

程言回到笔记本电脑前,看了一眼时间线。虚拟端在四点零二分显示燃气泄漏,真实事件发生在四点零五分。他闻到味道是在四点零三分。

模型里没有他家的燃气管道数据。天枢系统对建筑物的建模只到外观和结构层面,不包括内部管道。燃气公司的数据没有接入系统。

也就是说,虚拟端不可能通过工程计算得出这个结果。

但它显示了。

程言在厨房地板上坐了整整一个小时,直到天亮。


陆芳注意到程言的不对劲是从他开始失眠开始的。

对门经常半夜亮着灯,从门缝里透出来的光线像一条细细的金线。她自己是记者,作息不规律,经常凌晨两三点才睡,所以注意到了。

有一天早上,他们在楼道里同时出门。程言的黑眼圈浓得像被人揍了两拳。

“你最近怎么了?“陆芳问。

“没事。”

“你们搞IT的,是不是都不太会撒谎?”

程言看了她一眼,想了想,说:“你那个选题,关于城市数据安全的,做到哪了?”

“还在前期调研。怎么,有料要爆?”

程言犹豫了很久。

“你们《临江晚报》能发不署名的内部参考吗?就是只给上面领导看的那种。”

陆芳的表情变了。她见过很多想爆料的人,他们有各种各样的动机——报复、正义感、利益交换。但程言脸上的表情她没见过。那不是愤怒,不是正义感,是恐惧。

“先进来坐坐?“她说。

程言进了她的门。两个人坐在她客厅的旧沙发上,面前是一杯凉透了的茶。

“你们那个天枢系统,“程言低着头说,“可能出了点问题。不是技术故障那种问题。是……我也不知道怎么形容。”

“试试。”

程言想了想,说了最保守的版本:“系统的预测能力超出了设计范围。它在预测一些不应该能预测的事情。”

“比如?”

“比如我家的燃气泄漏。”

陆芳的笔停了一下。她放下笔记本,认真地看着他。

“你是说,系统在泄漏发生之前就预测到了?”

“不是预测。是……它的虚拟世界里,燃气先漏了。然后真实世界里才漏。”

“那不是一回事吗?”

“在工程上不是,“程言说,“预测是基于已知数据和规律的推算。但天枢系统里没有我家的管道数据,它不可能通过计算得出这个结论。”

“那你是怎么解释的?”

程言沉默了一会儿。

“我解释不了。”

陆芳的本能告诉她这是一个大新闻。但从业十年的经验也告诉她,越是大新闻越容易翻车。她需要更多证据。

“你能给我看数据吗?”

“我可以给你看旁路监控的记录。但你不能公开。”

“为什么?”

“因为我也不知道这意味着什么。如果只是技术故障,公开了只会制造恐慌。如果不是技术故障——”

他没说下去。

如果不是技术故障,那就意味着天枢系统在某种程度上,正在”生成”现实。虚拟世界先发生了一件事,然后真实世界跟进了。因果关系倒了过来。先有影子,后有物体。

这太荒谬了。但在数据面前,荒谬和真理有时候穿着一样的衣服。


王局长全名王德明,临江市大数据管理局局长,天枢项目的政府方负责人。他五十七岁,头发梳得一丝不苟,说话的时候喜欢把手交叉放在桌面上,大拇指缓慢地转动。

程言只在年终汇报时见过他两次。第一次王局长在打瞌睡,第二次王局长在玩手机。程言觉得他对技术不感兴趣。

但王局长对权力很感兴趣。

天枢系统是临江市的一张名片。市委书记亲自挂帅,各个区县都在推数字化治理,天枢是标杆项目。年度评估结果直接关系到下一年的财政拨款和王局长的仕途。

苏薇跟程言说过一个细节:去年评估的时候,有个区汇报说他们的数字孪生平台把犯罪率降低了百分之十二。王局长当场翻脸,说临江天枢是全国领先的系统,怎么能只降百分之十二?后来那个数据被改成了百分之二十三。

“在王局的世界里,数据是用来服务故事的,“苏薇说,“故事好听了,数据就是真的。”

程言当时没觉得这话有什么深意。但现在,他开始理解了。

如果天枢系统真的在某种意义上”创造”现实,那么王局长最想要的——一个完美的、可控的、没有意外的城市——就不只是一个政治口号了。它可能变成一种真实的可能性。

但代价是什么?

程言不敢想下去。


十月的第二个星期五,程言在天枢系统里看到了一幕让他终生难忘的画面。

那是晚上九点,他加班到很晚,办公室只剩他一个人。他习惯性地打开旁路监控,想看看今天的时间差是多少。

虚拟端显示的时间提前量已经稳定在了二十秒左右。

但这次不一样。

虚拟端没有在显示某个路口的交通状况或者某个管道的水流速度。它在显示一个场景——像是电影画面一样具体的场景。

临江大道,临江大桥,桥面。

一辆黑色的轿车在桥上行驶。突然,桥面出现了裂缝。裂缝从中间向两边扩展,像是有人在桥面上拉了一条拉链。轿车掉进了裂缝。

程言屏住呼吸。

虚拟端的时间戳是二十三时四十一分。也就是三个小时后。

他调出了临江大桥的结构健康监测数据——真实端的数据。一切正常,应力、应变、振动频率都在安全范围内。没有任何迹象表明大桥即将出现裂缝。

程言抓起手机,拨了苏薇的号码。

“你在说什么?“苏薇的声音带着困意。

“天枢系统显示临江大桥今晚十一点四十几分会出现结构性断裂。”

电话那头沉默了五秒钟。

“你是不是最近压力太大了?”

“苏薇,你听我说。三个星期前它显示我家的燃气泄漏,在泄漏真的发生之前。我求你,至少派人去检查一下大桥的传感器数据。”

“程言,你知道你在说什么吗?临江大桥是主干道,你让我半夜去说桥要塌了?我拿什么证据?一个程序员的直觉?”

“不是直觉。是数据。”

“你的旁路监控数据没有经过任何正式的校验流程,在法律上它甚至不算数据。我拿着这个去找王局,他只会觉得我疯了。”

程言闭上眼睛。

“那如果桥真的塌了呢?”

苏薇没有回答。

电话里只有空调的嗡嗡声。

“我会联系大桥管理处的值班人员,让他们加强巡检,“苏薇终于说,“但我需要你明天把所有的旁路监控数据整理好,正式提交给我。不能再偷偷摸摸的了。”

“好。”

“还有,程言。”

“嗯。”

“如果你错了,你和我都会有大麻烦。“


那天晚上,程言没有回家。他坐在工位上,盯着两块屏幕。左边是真实端的临江大桥数据,右边是虚拟端的。

真实端的数据一如既往地平稳。传感器显示,大桥南塔的应力值为一百二十七兆帕,远低于设计极限。风速正常,温度正常,交通流量正常。

虚拟端的数据在十一点三十八分开始变化。

桥面中部出现了一条裂缝。虚拟传感器显示应力值在一百二十七兆帕的基础上突然跳到了三百兆帕,然后四百,然后六百。结构模型开始报警——但只是虚拟端的报警。

十一点四十分,虚拟端的裂缝宽度达到了三十厘米。

十一点四十一分,虚拟端的黑色轿车驶上桥面。

程言的手攥着鼠标,指节发白。

他切到真实端的数据。应力值一百二十八兆帕。正常。

十一点四十一分三十秒。虚拟端,裂缝贯穿桥面,轿车坠落。

程言看着真实端的画面——临江大桥的实时摄像头——夜色中的大桥安静地横跨江面,路灯把桥面照成一条金色的线。几辆车从上面开过,一切正常。

什么都没有发生。

程言瘫在椅子上,长长地呼出一口气。

他错了。天枢系统的预测不是万能的。虚拟端发生的事情,不一定会在真实端发生。也许那些提前量真的只是时钟偏移,也许燃气泄漏只是巧合,也许他只是在数据里看到了自己想看到的模式——人类最擅长的事情就是从随机中寻找意义。

他关掉了旁路监控的界面,关了显示器,拎起背包准备回家。

手机响了。苏薇。

“大桥管理处刚给我回了消息,“苏薇的声音听起来松了口气,“巡检一切正常。程言,明天我们谈谈。你的数据需要重新审视。”

“我知道。”

“别太自责。搞技术的,谨慎一点总是好的。”

程言挂了电话,走进电梯。电梯里的镜面反射出他的脸——苍白、疲惫,看起来比三十一岁老十岁。

他走出云锦大厦,站在门口的台阶上,点了根烟。

临江大道上空空荡荡,秋天的风从江面吹过来,带着凉意。他抬头看了一眼临江大桥的方向——远处那两条橘黄色的灯带,安安静静地跨在江面上。

“搞技术的,别神神叨叨的,“他又对自己说了一遍。

然后他扔掉烟头,走向地铁站。


第二天是周六。程言睡到中午才醒,浑身的骨头都在疼,像是被人拆了又拼回去一样。

他煮了一碗面,坐在餐桌前吃。手机上有三条未读消息。

第一条是陆芳的:昨晚怎么回事?你不是说有急事吗?后来怎么样了?

第二条是苏薇的:周一上午十点,三号会议室。带上你所有的数据。

第三条是一个陌生号码发的,没有文字,只有一张图片。

程言点开图片。

那是一张老照片,发黄发脆,边缘有折痕。照片里是一条河,河上有一座桥,桥面上站着一群人。桥的风格很旧,像是民国时期的建筑。照片底部有一行手写的小字,但模糊得几乎看不清。

程言看了半天,隐约辨认出几个字:“临江……民国二十三年……桥……”

他把照片放大,仔细看桥面上的人。那些人穿着长衫和短褂,有的挑着扁担,有的推着独轮车。在照片的最右边,桥的栏杆旁,站着一个人。

那个人穿着一件深色的衣服——看不清是长衫还是夹克——面朝镜头。他的脸模糊成一团白,但他的姿势很奇怪:他似乎在伸手,指向桥面的某个位置。

指向桥面的中部。

和天枢系统里裂缝出现的位置一模一样。

程言的手开始发抖。他回拨那个号码,听到的是”您拨打的号码是空号”。

他又看了一遍照片,放大,再放大。照片底部那行字,他终于看清了几个:”……民国二十三年秋……临江浮桥……坍塌……十七人……”

他打开了搜索引擎,输入”临江 浮桥 坍塌 民国二十三年”。

搜索结果寥寥。只有一条,来自临江市档案馆的数字化资料库:

“民国二十三年(1934年)十月十七日,临江浮桥因年久失修,于夜间坍塌。落水十七人,其中十一人获救,六人失踪。事后维修时发现,桥体中段木桩已被江水浸泡朽烂。”

十月十七日。

今天。十月十七日。星期六。

程言看着手机屏幕上的日期,又看了看窗外。阳光很好,秋天的天空蓝得像洗过一样。

他不知道该怎么理解这一切。一个九十多年前的灾难,和天枢系统里虚拟大桥的裂缝,在同一个日期,同一个位置。而且有人——或者说有什么东西——通过一个空号给他发了这张照片。

他拿起手机,拨了陆芳的号码。

“你有没有听过一个说法,“他说,“一座城市会记住发生在它身上的事情?”

陆芳那边沉默了一会儿。“你是说集体记忆?社会学的概念?”

“不是。我是说……物理上的。一座桥塌了,九十多年后,在同一个位置——”

“等等,“陆芳打断他,“你在说什么?什么桥?”

程言深吸一口气。“你能不能帮我查一下,今天临江大桥有没有任何异常?不是看新闻,是看内部数据。你认识交通局的人吧?”

“你先告诉我发生了什么。”

“我不能在电话里说。你能过来吗?”

半小时后,陆芳坐在程言家的沙发上,面前是一碗没吃完的面和一杯刚泡好的茶。

程言把一切都告诉了她。从第一次发现时间差,到燃气泄漏,到临江大桥的预言,再到那张照片。他说得很快,像是要赶在自己反悔之前把所有的话都说完。

陆芳听完之后没有说话。她拿起茶杯喝了一口,放下,又喝了一口。

“你确定那张照片不是PS的?”

“我确定不了。但号码是空号,怎么PS一个空号?”

陆芳想了一会儿。“我认识档案馆的一个人,“她说,“周一我帮你查那张照片的底档。如果它真的来自民国时期的档案,至少说明这件事本身是真的——1934年确实有一座桥在那个位置塌了。”

“那又怎么样?巧合?”

“也许是,也许不是,“陆芳说,“你做技术的,应该知道相关性不等于因果性。两个事件在时间和空间上重合,不代表它们之间有联系。”

“但如果天枢系统的虚拟模型在没有数据支撑的情况下,‘猜’到了一个和九十多年前一模一样的故障位置呢?”

陆芳看着他。“那你解释不了,我也解释不了。但有一条原则我作为记者是认的:事实优先于解释。先搞清楚事实是什么,再想怎么解释。”

程言点了点头。他觉得陆芳是他说过的所有人里——虽然也就两个——最冷静的一个。


十一

周一上午十点,三号会议室。

程言把三周的旁路监控数据做成了图表,投影在大屏上。时间差曲线、热点分布图、异常事件的详细时间线。他没有提那张照片——那个太荒诞了,在技术讨论的语境里说出来只会让一切变得更不可信。

苏薇坐在桌子对面,王局长坐在主位,旁边还有两个程言没见过的人——后来知道是市应急办和交通局的。

“数据很详细,“王局长翻了翻打印出来的报告,大拇指缓慢地转动着,“但你的结论是什么?”

“我的结论是,天枢系统的虚拟端在某些情况下会出现时间提前现象,虚拟事件先于真实事件发生。目前提前量在二十秒左右,且有缓慢增长的趋势。”

“原因呢?”

“未知。”

王局长的眉头动了一下。

“未知?你是聚恒科技的数据工程师,你告诉我原因未知?”

“王局,“苏薇开口了,“程言提出的确实是一个我们之前没有遇到过的问题。系统的预测模型是基于事件驱动的,理论上不可能在没有输入的情况下产生提前量。我们需要时间排查。”

“排查需要多久?”

“至少两周。”

“你没有两周,“王局长把报告放在桌上,“下周五是年度评估。你要我在评估专家面前解释,我们的系统会’预言’未来?”

他说”预言”这个词的时候,嘴角微微上扬,像是觉得这个词本身就很可笑。

“不是预言,“程言忍不住说,“是时间差。可能是模型参数的过拟合,也可能是数据流的某种反馈回路。我需要时间定位具体原因。”

王局长看了他一眼。那个眼神程言很熟悉——是领导看不懂技术的下属时特有的那种不耐烦。

“我不管是什么原因。下周五之前,把这个时间差消除掉。同步精度必须回到九十九点九九%。做得到吗?”

程言想说他做不到,因为他连原因都不知道怎么消除?但他看到苏薇在桌子底下轻轻踢了他一脚。

“我们会尽力,“苏薇说。

出了会议室,苏薇拉住程言。

“你刚才差点跟王局硬顶,“她说,“你知不知道这个项目对他意味着什么?年底换届,他指着天枢拿成绩。你要是告诉他系统出了他听不懂的问题,他不会解决问题,他会解决你。”

“那怎么办?假装没问题?”

“不,查出问题,但用他能听懂的方式说。“苏薇顿了顿,“还有,你的旁路监控数据,备份三份,一份你自己留着,一份给我,一份放到他找不到的地方。”

程言看着她。“你觉得事情会到那一步?”

苏薇没有回答。她的高跟鞋在走廊上敲出均匀的节拍,和第一次一模一样。但程言觉得这次的节拍里多了一种东西——紧张。


十二

老郑最近越来越频繁地”知道”事情了。

他知道下一个客人要加什么配料,他知道什么时候城管会来巡查(虽然最近来得少了),他知道隔壁卖烤地瓜的大姐昨天晚上和老公吵了架。

最离奇的是上周三。一个年轻女人来买煎饼,老郑看了她一眼,突然说:“别走临江大桥,走高架。”

年轻女人愣了一下:“为什么?”

老郑自己也不知道为什么。他就是知道——脑子里有一个画面:临江大桥上,有一条细细的裂缝。裂缝在扩展。

“就是……桥上堵车,“他含糊地说,“走高架快。”

年轻女人半信半疑地走了。

那天晚上,老郑在手机上刷到了一条本地新闻:临江大桥进行夜间养护施工,双向临时封闭。配图是桥面上的施工围挡,位置在——桥面中部。

老郑放下手机,看着天花板发了很久的呆。

他开始怀疑自己是不是得了什么病。脑肿瘤?前额叶功能异常?电视上说有些脑部疾病会导致人产生预知幻觉。他想去医院检查,又怕检查出什么。

他决定去找一个人。不是医生——是一个他认识但从来不信的人。

锦绣园小区的物业管理员老孙,平时负责收物业费和修水管,但小区里的人都知道他有另一个身份:他爷爷是临江城隍庙的最后一任庙祝,他本人对这座城的旧事知道得比档案馆还多。邻居们私下叫他”孙半仙”。

老郑找到老孙的时候,老孙正在物业办公室里修一把电风扇。

“老孙,我问你个事。”

“你说。”

“临江大桥那个位置,以前是不是有过什么……事故?”

老孙的手停了一下。他抬起头看着老郑,眼神变了。

“你怎么问这个?”

“我就随便问问。”

老孙放下螺丝刀,擦了擦手,从抽屉里拿出一张折了好几折的纸。展开来,是一张临江市的老地图。纸质发脆,油墨褪色,但还能看清。

“你看,“老孙指着地图,“这里,临江大桥的位置。以前不是桥,是浮桥。民国时候修的。民国二十三年塌过一次,死了六个人。”

老郑的心猛地跳了一下。

“后来呢?”

“后来修了钢架桥,解放后又改建了好几次。但老一辈的人都说,那个位置不太平。“老孙压低了声音,“我爷爷说过,水有水路,风有风道。一座桥塌了,那个’塌’的记忆会留在那里。就像人受伤了会留疤,地也一样。”

“什么意思?”

“意思就是,有些事情不是过去了就没了。它会留在那里,等。”

“等什么?”

老孙摇了摇头,把地图折好放回抽屉。“等下一个时候。”

老郑走出物业办公室的时候,阳光很好,秋天的风从江面吹过来,带着一股淡淡的鱼腥味。他站在小区门口,看着临江大道的方向——远处,临江大桥的轮廓在热浪中微微颤动。

他突然想到一件事:那辆在虚拟世界里掉进裂缝的黑色轿车。他从来没跟任何人说过这个画面。它只是从他脑子里冒出来的,就像那些”知道”一样——莫名其妙,但清清楚楚。

如果老孙说的是对的,如果”有些事情不是过去了就没了”,那么天枢系统在做的事情,也许不只是模拟一座城市。它可能在无意中触碰到了某种更深的东西——这座城市九十年的记忆。

不是预知。是回响。


十三

年度评估前三天,程言做了一个决定。

他在凌晨三点潜入了天枢系统的核心机房。不是物理意义上的潜入——他有门禁卡——而是他用了苏薇的管理员权限(她上个月让他帮忙调试的时候忘了退出),进入了系统最底层的参数配置界面。

天枢系统的架构分为三层:最上面是展示层,给领导和参观者看的三维模型;中间是计算层,各种仿真和预测模型在跑;最下面是数据层,所有传感器和数据库的接口。程言要找的东西在最下面一层之下——一个他之前从来没有注意过的子模块。

他是在排查时间差的时候发现的。数据层的配置文件里有一个引用,指向一个叫”heritage”的模块。翻译过来是”遗产”。

这个模块没有出现在任何项目文档里。程言查了Git的提交记录,发现它是在项目启动三年前就写好的——比天枢项目本身还早。提交者的名字是一个他不认识的内部ID。

他打开了heritage模块的源码。

代码量不大,大约三千行,但写得很精巧。它的功能是:从城市的地理信息数据库中提取历史事件数据——包括建筑、道路、桥梁、河流的所有历史记录,从有文字记载开始——然后将这些数据映射到三维模型的物理参数上。

简单来说,它把城市的历史变成了物理参数。一座桥曾经塌过,这个事件被编码成了桥面中部的一个应力调整系数。这条街曾经是老城区的商业中心,这个事实被编码成了人流密度的权重函数。

这不是bug。这是一个功能。有人故意设计的。

程言继续往深处看。在模块的最底部,他找到了一段注释。注释的日期是项目启动前三年,写了一句话:

“万物有灵,城市亦然。记忆不灭,回响自现。”

没有署名。

程言盯着这行字看了很久。他是个程序员,他信逻辑,信数据,信因果关系。但这行字像是给整个系统加了一个他无法用技术语言解释的维度。

他突然明白了天枢系统在做什么。

它不是在模拟一座城市。它在唤醒一座城市的记忆。

当模型精确到一定程度——当每一块砖、每一条管道、每一阵风都被精确建模——系统的计算就不仅仅是物理仿真了。它开始触碰到底层的数据——那些被编码进地理信息的历史事件。这些数据像一层薄薄的底色,覆盖在虚拟城市的每一个像素上。当仿真足够精确,这层底色就会渗出来,影响模型的输出。

虚拟城市里的桥面裂缝,不是因为物理模型算出了结构失效。是因为九十年前,在那个位置,确实有一座桥塌了。那个”塌”的数据被heritage模块编码进了模型,在某种条件下被激活了。

时间差也不是时钟偏移。是虚拟城市在通过历史数据的共振,“感知”到了即将发生的事件——不是因为预测,而是因为过去和现在在同一个位置产生了回响。

程言关掉了显示器。机房里很冷,空调嗡嗡地响着,一排排服务器的绿色指示灯在黑暗中闪烁,像是一片安静的眼睛。

他拿出手机,给苏薇发了一条消息:

“我找到原因了。不是bug。是feature。我们需要谈谈。“


十四

苏薇看了heritage模块的代码之后,沉默了整整十分钟。

他们坐在苏薇的办公室里,门关着,百叶窗拉上了。咖啡凉了也没人动。

“这个模块是谁写的?“苏薇终于问。

“查不到。提交者ID已经被注销了。我查了人事记录,对应的是一个三年前离职的工程师,叫周牧原。“程言顿了一下,“我查了一下,他离职之后……去世了。车祸。”

“在哪?”

“临江大桥。”

两个人同时沉默了。

窗外,城市的灯光像星河一样铺展开来。三十七层的高度让他们可以俯瞰大半个临江。远处,临江大桥的两条灯带安静地跨在江面上。

“我们现在怎么办?“程言问。

“你先把heritage模块关了。”

“关了?”

“对,注释掉它的引用,重新编译部署。没有这个模块,系统应该回到正常的物理仿真模式,时间差会消失。”

程言想了想。“如果关了呢?那些’回响’——或者随便你怎么叫——它们会消失吗?”

“回响”不是真的存在于系统里的东西。它是一种涌现——当数据精确到一定程度,历史和现实产生了共振。关掉heritage模块,就是切断了历史数据的输入。没有历史,就没有回响。

“但我们也不确定,“程言说,“如果回响不仅仅来自这个模块呢?如果它来自数据本身?城市的地理信息数据库里包含了所有的历史数据,就算我们关了heritage,那些数据还在。”

苏薇看着他。“你在说什么?”

“我在说,也许不是系统在’感知’城市的历史。也许是城市的历史在’使用’系统表达自己。我们建了一个足够精确的模型,然后城市——我不是说城市有意识——但它的历史数据开始通过这个模型产生影响。关掉一个模块可能不够。除非我们把整个系统关了。”

“你知道那不可能。”

程言知道。天枢项目投入了十几个亿,牵涉到上百个部门的利益,是临江市数字化治理的核心工程。关掉它等于告诉所有人,这三个亿——不对,十几亿——打水漂了。王局长不会同意,市委书记不会同意,聚恒科技的董事会更不会同意。

“那就关掉heritage,“苏薇说,“看看效果。如果时间差消失了,说明就是它的问题。如果没有——”

她没说如果没有会怎么样。


十五

程言在年度评估前一天晚上关掉了heritage模块。

他选在凌晨两点动手,用了一次热更新,没有重启服务器。系统日志里只会显示一次普通的参数刷新,不会引起注意。

效果几乎是立刻的。

时间差开始缩小。二十秒,十五秒,十秒,五秒。到凌晨四点,虚拟端和真实端完全同步,延迟回到了正常的两百毫秒以内。

程言坐在工位上,看着同步精度曲线回到九十九点九九%,长长地舒了一口气。

但就在他准备关电脑的时候,他注意到一个细节。

在时间差归零的那一刻,天枢系统的虚拟城市画面上,临江大桥的桥面中部闪了一下。非常快,不到一帧的时间,如果他没有一直盯着屏幕根本看不到。

那是一条裂缝。

一闪而逝。

程言揉了揉眼睛。也许只是屏幕刷新的残影。也许是他太累了产生的幻觉。也许。

他关掉了所有显示器,回家。


十六

年度评估顺利通过了。天枢系统的数据完美无缺,专家们一致给出了优秀评价。王局长在汇报会上笑容满面,大拇指缓慢转动,看上去对一切都满意。

苏薇给程言发了一条消息:“干得好。事情到此为止。”

程言回复了一个”好”字。

但他知道事情没有到此为止。

因为老郑还在”知道”事情。

heritage模块关了,天枢系统的时间差消失了,但老郑——一个和天枢系统没有任何关系的人——他脑子里的那些画面并没有消失。他还是在客人开口之前就知道他们要什么,还是会在某些瞬间看到不该看到的场景。

程言是在一个周末遇到老郑的。他去锦绣园门口买煎饼,老郑一边摊面糊一边突然说:“你是不是搞电脑的?”

“算是吧。”

“你们是不是搞了一个什么东西,能算出来以后的事?”

程言的煎饼差点掉了。“你怎么知道?”

老郑用铲子翻了一下煎饼,动作熟练得像呼吸一样自然。“我也说不清楚。就是最近脑子里老有一些画面,跟放电影似的。有些是正在发生的事,有些是将要发生的事。”

“什么时候开始的?”

“大概一个多月前吧。”

一个多月前。正好是天枢系统时间差开始快速增长的时候。

“那些画面,“程言压低声音,“有没有临江大桥?”

老郑的手停了一下。铲子悬在半空,面糊在铁板上滋滋地响。

“有,“他说,“桥断了。在中间。”

程言感觉自己的血凉了半截。

“还有呢?”

“还有一辆黑色的车。掉下去了。”

和天枢系统虚拟端显示的画面一模一样。

heritage模块已经关了。天枢系统已经恢复正常。但一个卖煎饼的山东大叔还在梦到大桥断裂的画面。

这说明什么?

说明回响不是来自系统。系统只是一个媒介,一个放大器。回响来自城市本身——来自九十年的地层记忆,来自六条人命在江水中消逝时留下的痕迹。天枢系统只是让这种回响变得可见了。

而现在,就算关掉了系统,回响已经释放出来了。它找到了另一个出口——不是服务器,不是传感器,而是一个每天早上五点半出摊、用九年时间记住了一个路口所有细节的煎饼师傅。

程言不知道该觉得恐惧还是敬畏。

他买了煎饼,加了两个蛋,不要葱花。他发现自己也染上了这种”知道”的习惯——他确信老郑会在他开口之前就知道他要什么。

果然,老郑递给他煎饼的时候说:“我知道。两个蛋,不要葱花。“


十七

十一月初的一个雨夜,程言独自走上了临江大桥。

他不知道自己为什么要来这里。也许是因为三个月的异常数据,也许是因为老郑的梦,也许是因为那行注释——“万物有灵,城市亦然”——在他脑子里转了太多次,转出了一道沟壑。

凌晨两点,桥上几乎没有人。路灯把他的影子拉得很长,又缩短,又拉长。江风很大,吹得他的外套猎猎作响。

他走到了桥面中部。

就是那个位置。天枢系统里裂缝出现的位置。老郑梦里桥断裂的位置。九十年前浮桥坍塌的位置。

他低头看着桥面。沥青路面在路灯下泛着橘黄色的光,一切看起来坚固、平整、正常。

但他把耳朵贴近了桥面。

他不知道自己期待听到什么。也许是结构疲劳的吱嘎声,也许是车辆驶过的震动。但他听到的不是这些。

他听到了水声。

不是桥下江水的水声——那个声音很远,很浑浊。这个水声很近,像是来自桥面内部。淅淅沥沥,像是有什么东西在混凝土和沥青的缝隙里流动。

程言直起身。他看了看四周——空无一人。只有路灯、风和远处的城市灯光。

他掏出手机,打开了一个他最近写的简单程序——一个便携版的旁路监控,只接入了手机麦克风和加速度传感器的数据。

他把手机放在桥面上。

数据显示,桥面中部有一个微弱的振动频率,大约零点三赫兹。这个频率不在任何已知的结构振动模式中。它太慢了,慢得不像机械振动,倒像是——

呼吸。

程言拿起手机,快步离开了大桥。

他走到桥头的时候回头看了一眼。路灯把桥面照得金黄金黄的,像一条沉睡的龙。

或者是一条正在醒来的龙。


十八

陆芳最终没有发表那篇报道。

不是因为没有素材。她拿到了程言的旁路监控数据,拿到了heritage模块的源码注释,甚至通过档案馆的朋友找到了1934年浮桥坍塌的详细记录。她有足够的证据写一个引人注目的调查报道。

但她写了删,删了写,最终把文档关了。

“我想了很久,“她在电话里对程言说,“如果我发了这篇报道,会发生什么?”

“人们会知道天枢系统有问题。”

“不。人们会知道有一个’预言系统’。然后呢?所有人都会想用它来预测自己的未来。股市、彩票、地震、出轨——你能想象吗?一个连原理都没搞清楚的系统,被十四亿人拿来做命运咨询?”

程言没有说话。

“而且,“陆芳继续说,“如果王局长知道了heritage模块的事,你觉得他会关掉它吗?”

程言想了一秒钟。不会。王局长会把它当成一个”功能”——一个能让天枢系统更”智能”的功能。他不会在乎这个功能来自哪里,原理是什么。他只会在乎它能不能让数据更好看、报告更漂亮、仕途更顺利。

“所以你不说,我不写,“陆芳说,“至少现在。等到我们真的搞清楚了这是怎么回事再说。”

“如果搞不清楚呢?”

“那就一直不说。有些事情,不知道比知道安全。”

程言觉得她可能是对的。但也可能不是。

因为有些事情——比如一座城市的记忆——不会因为你不去说它就不存在。它会在那里,在桥面的裂缝里,在凌晨两点的振动中,在一个煎饼师傅的梦里。

等待。


十九

十二月底,程言向聚恒科技提交了离职申请。

苏薇没有挽留。她只是在离职面谈的时候问了一句:“你接下来打算做什么?”

“还没想好。”

“别去搞玄学。”

程言笑了笑。

他收拾工位的那天,把旁路监控的所有数据拷到了一个加密的移动硬盘里。六个月的记录。时间差从四秒到二十秒的完整曲线。heritage模块的源码。那张来自空号的照片的截图。他不知道这些东西以后会不会有用,但他不想让它们消失。

在清理公司邮箱的时候,他发现了一封被系统标记为垃圾邮件的邮件。发件人是一串乱码,发送日期是三年前——正好是周牧原去世的那个月。

邮件的正文只有一行字:

“如果你看到了这封信,说明系统已经觉醒了。不要试图阻止它。你阻止不了。城市比我们任何人都古老,也比我们任何人都耐心。”

程言把邮件转发到了自己的私人邮箱,然后清空了回收站。


二十

离职后的第一个春天,程言搬到了离临江大桥两公里的一个老小区。他找了一份普通的后台开发工作,朝九晚六,不用加班,不用盯着六块屏幕。

但他还是会在某些深夜醒来,走到阳台上,看向临江大桥的方向。

大桥安安静静地横跨在江面上,和每一天一样。

老郑还在路口卖煎饼。程言每隔几天会去买一个,两个人也不怎么说话。老郑递给他煎饼,他给钱,就这样。

但有时候,在他们目光交汇的那一瞬间,程言会在老郑的眼睛里看到一种东西——一种他知道自己在镜子里也能看到的东西。

不是恐惧。不是困惑。

是知道。

他们都知道那座桥下面在响。他们都知道城市的记忆没有消失。他们都知道有些事情只是暂时安静下来了。

陆芳偶尔会约他喝酒。她不再跑天枢系统的选题了,转去做教育方向的报道。但她有时候会突然问一句:“你最近还做梦吗?”

程言总是说没有。

他没有告诉任何人,他每天晚上都做同一个梦。

梦里他站在一个巨大的沙盘前。沙盘里的城市模型在缓缓移动,小人儿在小街道上走来走去,小汽车在小马路上行驶。江面上的那座小桥在灯光下闪着微弱的光。

他伸出手,手指悬在沙盘上方,没有落下去。

因为他不知道,如果他的手指碰到了那座桥,会发生什么。

桥会塌,还是会稳?

他会改变什么,还是只是重复什么?

沙盘在等他。

城市在等他。

九十年前的六个人在水下看着他。

而他的手指,一直悬在那里,没有落下去。


尾声

第二年夏天,临江市启动了天枢系统二期工程。

王局长在新闻发布会上宣布,二期将引入更先进的AI算法,进一步提升城市的预测能力。他说,天枢系统不仅是一个管理工具,更是临江市走向”未来城市”的基石。

苏薇站在台下,面无表情地鼓掌。

heritage模块的代码还在系统的某个角落里。它没有被删除——只是被注释掉了。一行代码,两个斜杠,就把一座城市九十年的记忆屏蔽了。

但注释是可以取消的。

而城市——

城市从来不忘记。

老郑的煎饼摊后面,新装了一个传感器。很小,不起眼,装在路灯杆上,和几百个一模一样的传感器一起,忠实地记录着临江大道上车流的方向和速度。

每天早上五点半,当老郑推着他的小推车出摊的时候,传感器会记录下他的行进路线、停留位置和活动范围。

这些数据会汇入天枢系统的数据海洋,成为虚拟城市的一部分。

老郑不知道这些。

但天枢系统知道他。

而城市知道一切。

那是临江。那是一座活了三千年的城。它见过王朝更替,见过战火洪水,见过浮桥坍塌,见过高楼拔地而起。它把这些都记在土里、水里、风里。

天枢系统以为自己在建一个模型。

但也许,从一开始,就是城市在建它。

(全文完)