GcS项目组成立三年后的一个下午,林序第一次看到那个数字。
他坐在北京西郊一栋灰色建筑的二楼隔间里,面前三块屏幕。左边是模型输出的原始数据流,中间是各节点反馈的偏差修正,右边是他负责维护的交叉比对记录表。这栋楼里大多数人做的是同一件事:把不同来源的数据喂进系统,再把输出的结果分类归档。没有人觉得自己在做一件了不得的事——至少那天下午之前没有。
屏幕右上角跳出一个红色标记。林序点开,是一份来自南亚某国的综合预测报告。他扫了一眼时间戳,生成于四十七天前。报告的末尾有一行加粗的黑色数字:国家稳定指数将在此日期降至临界值以下。日期精确到天。
他把报告翻到底,找到近四十八小时内该国的实际情况汇总。一条来自当地监测节点的简短记录写着:首都供电中断已持续十九小时,主要港口停摆,议会宣布紧急状态。
时间对上了。精确到天。
林序把两份数据并排放在中间屏幕上,看了很久。茶水间的微波炉响了一声,有人在外面走廊里讲电话,空调出风口发出细微的嗡鸣。这些声音都在,但他好像听不见了。
他把手从键盘上移开,放在桌面上。手指没有任何动作,只是搁在那里。屏幕上的数字安静地亮着。
他站起来,穿过走廊,敲了顾远办公室的门。
顾远正蹲在机柜旁边,袖子卷到手肘,手里捏着一根跳线。他头也没回。
“说。”
“四十七天前的一份预测,全部命中了。”林序说。
顾远的手停了一下。他把跳线插进端口,站起来,用工作服的袖口擦了一下额头。“哪个节点?”
“南亚四号。上次升级之后接入的。”
“偏差值多少?”
“还在核算。初步比对,关键数据点偏差都在百分之一以内。”
顾远没有说话。他走到自己的终端前,调出同一份报告,从头到尾拉了一遍。他的手指在触摸板上移动得很快,几乎没有停顿。看完之后,他把屏幕转过来给林序看。
“你看这里。”
他指的是预测曲线和国家实际运行曲线之间的对比图。两条线几乎完全重合。
“这不是准确率的问题,”顾远说。“这是系统第一次完整跑通了一个因果链条。”
他直起身子,看着林序。他眼睛里有某种林序之前没见过的光。顾远是一个习惯用“可能”“大概率”“在误差范围内”这种词的人,但这一刻他没有用任何一个。
“去把整个序列调出来,”顾远说。“四十七天之内所有相关预测,全部。”
林序在机房待了将近五个小时。他把南亚四号节点从数据输入到模型运算到输出报告的完整链路拉了出来,按时间轴排列,逐条比对。外面的光线从窗帘缝隙里移过去,从白色变成橙色再变成灰蓝。他忘了开灯。屏幕的光映在他脸上,一根烟夹在指间,很久才吸一口。
比对到第十七条的时候,他发现了一个异常。系统在预测到供电中断的同时,还输出过一个二级结论:受影响区域将出现非官方的电力恢复组织。这条结论没有被标记为重点,放在报告的附件里,用的是比正文小一号的字体。
林序把这条附件和数据源对照了一下。系统调取了三年前的地震灾害应对记录、该区域非正式经济网络的规模评估、以及历史上数次停电期间的民间响应模式。然后生成了这个判断。
他把这条也加进了比对表。
将近午夜的时候,林序把整理好的对比表推送给顾远,附带一行简短的备注:确认全部关键节点命中。首次实现完整因果预测闭环。附件中发现一条未被标注的衍生预测,需评估。
消息发出去不到三分钟,顾远回复了四个字:下来一趟。
楼下的主控室已经聚了七八个人。不止是技术组的,还有几个林序不认识的面孔——后来他才知道那是项目联合委员会派驻的联络员。主屏幕上放着南亚四号的预测汇报,红色和蓝色的曲线在所有人面前重合。有人在低声交谈,有人盯着屏幕一言不发。顾远站在最前面,背对着所有人,一只手撑着控制台。
过了一会儿他转过身来,说了一句很短的话:“它能算清楚。”
房间里安静了几秒。那种安静不是震惊,也不是敬畏。是所有人同时意识到一个东西从纸面上的可能性变成了能够摸到的现实,而没有人知道接下来该说什么。
站在林序旁边的技术组同事,沉默了很久之后,把眼镜摘下来,用衣角擦了一擦。对面一个联络员将手臂交叉在胸前,指尖陷进自己的上臂里。
林序站在人群边缘,看着那两条重合的曲线,忽然想到一个问题,但没说出口。
走廊尽头传来急促的脚步声。一个林序认识的分析员从电梯里出来,手里捏着一块平板,脸色不太对。他没跟任何人打招呼,直接走到顾远身边,低声说了几句。顾远接过平板快速翻了几页,眉头皱了一下。
“先不要扩散。”他说。
那块平板上是另一份预测。来自中东某国的能源基础设施评估。按照模型的最新输出,该国的主要输油管网将在未来三个月内出现一个系统性的瓶颈节点,然后引发连锁反应——先冲击国内供应,再传导到区域市场。
但这还不是最让他皱眉的地方。最让他皱眉的是,这份预测建议了一条干预路径:如果该国政府在三周内调整某几条管道的压力参数,连锁反应就可以被绕开。
系统不再只是说“会发生什么”。它开始说“你可以怎么做。”
林序后来在那天的工作日志里写了一段话——不是正式文件,只是他私人保留在终端角落的一个文本文件。这栋楼里的很多人都记类似的笔记,工程师的习惯,把想法当成数据存起来。他写的是:
“V1的上限在这一刻被触到了。系统不仅预测了一个事件,而且标识出了可干预的节点。这不再是预测科学的成功,而是系统能力边界的一次实质性扩张。需要记录。”
他在最后加了三个问号,然后关闭了文件。
凌晨三点,林序从主控室出来,站在楼外的台阶上抽烟。四月北京的夜晚还有凉意,风从西边吹过来,带着远处不知道哪里的尘土气息。停车场空荡荡的,只有两盏路灯亮着,其中一盏一直在闪。
门在身后开了。脚步声不急不缓,林序不用回头也知道是谁。
伊琳走到他旁边,从自己的烟盒里弹出一根,借了他的火。她吸了一口,把烟慢慢吐出来,看着对面工地上堆着的钢筋。风吹起她工作服的下摆,她没去整理。
“你们屋里那些人兴奋什么呢。”她说。语气平淡,不像在问,像在陈述。
林序没有接话。他等着她往下说。
“我刚才看到了你们那个预测报告。南亚四号,全部命中。”伊琳把烟在台阶上磕了一下,磕掉一小截灰。“你们知道那里面有多少变量没有被包含进去吗。”
“哪些变量。”
“水资源分配的底层争抢。部族边界和行政边界的交错地带。有一个省的灌溉渠,去年的水流方向变了不到四十公分,没人记录。没有人。”她顿了顿,“模型算不准这些东西,因为它不知道它们存在。”
她看了林序一眼。她的眼睛在忽明忽暗的路灯下显得很深。
“这次它算对了。但下次可能不是误差的问题,”她说。“下次可能是整条因果链从根部被现实砸断。”
风忽然大了。头顶那盏闪烁的路灯终于灭了,门廊陷入一半黑暗。伊琳把烟踩灭。
“我不是扫你们的兴。”她说。停顿了一下,又说:“我只是见过太多模型跑赢现实的故事。结局通常不是你们想的那种。”
她转身推开门。走廊里的灯光在台阶上拉开一道窄窄的白色,然后门关上了,白色消失了。留下她踩熄的半截烟还躺在水泥地上,滤嘴旁边一点火星已经暗了。
林序坐在台阶上,把那根已经烧到滤嘴的烟掐灭在手边的水泥地上。他抬头看了一眼路灯——灯丝还亮着一小粒暗红的光,挣扎着,但还没有完全熄灭。
物理世界不需要解释权。物理世界只需要被承受。
他在心里把那句话补完整了。算清楚之后,谁来用?怎么用?模型算得越好,这个问题就越不是技术问题。
他起身回了机房,在刚才那三条问号后面又加了一行字:
“伊琳今晚提到了模型盲区问题。t线和R线的分歧从这里就开始了——不只是方法论分歧,是对‘现实’本身的理解不同。需要持续记录。”
他把文件保存,关闭终端,靠在椅背上闭了一会儿眼睛。屏幕上方的时钟跳到了四点十七分。南亚某国的数据还在持续流入,新的曲线正在生成。四条走廊之外,顾远办公室的灯也还亮着。
林序没有去关灯。他坐在黑暗里,让屏幕上流动的数字映在脸上。那些数据从他面前一条一条滑过去——供电恢复比例、应急响应速度、非官方组织的活跃程度。系统在自动生成新的预测曲线,每一条都标注着置信区间。红色的预测线和蓝色的实际线还在延伸,越来越密,越来越难以分开。
他不知道的是,在南亚那个刚刚崩溃的国家,某座城市的部分城区正在恢复供电。比GcS预测的时间早了整整两天。这个事实还没有被任何监测节点捕获,还没有进入任何一条数据流,还没有出现在任何一块屏幕上。
但它已经发生了。
在GcS看不见的地方。