数字之触
数字之触
一、异常
程远第一次注意到异常,是在三月的第二个星期二。
那天北京下了一场不合时宜的雪。海淀区写字楼群的玻璃幕墙上结了一层薄冰,远看像是巨人用指甲划出的伤痕。程远坐在”鸿信金融科技”二十三层的工位上,面前的三块屏幕同时亮着——左边是实时交易数据流,中间是他负责的风控模型代码,右边开着公司的即时通讯软件,群消息每秒刷新七八条。
他盯着中间那块屏幕,眉头拧成一团。
风控模型出了一个他无法解释的bug。这段代码他已经写了两年,每一行他都记得清清楚楚。这是一个基于机器学习的信用评估系统,输入用户的多维数据,输出一个0到1000之间的信用分。逻辑严密,边界条件清晰,单元测试覆盖率百分之九十七。
但今天,它开始输出负数。
不是溢出,不是除零错误,不是任何他能诊断的技术问题。代码逻辑完全正常,输入数据完全正常,但输出的信用分里,有七个用户的分数变成了负值。
负四十二。负一百一十七。负三百零八。
程远把这些用户的数据调出来看。七个用户,来自不同城市,不同年龄,不同职业。唯一的共同点是——他们都住在即将被拆迁的城中村里。
他把这个发现告诉了组长张磊。张磊是个微胖的中年男人,头发已经开始往后退,但发际线退让得很有策略,留了一个精心设计的偏分来掩盖。他看了一眼数据,说:“数据污染了吧,清一下缓存,重新跑一遍。”
程远照做了。重新跑了一遍。七个负数依然在。
“那就加个abs,取绝对值上线,回头再查。“张磊说完就去开下一个会了。
程远没有加abs。他把那七个用户的数据导出来,逐条检查。他发现了一件更奇怪的事:这七个用户的消费记录里,都出现了一笔完全相同的交易——在一家叫”李记烟酒”的便利店,消费金额18.5元,时间戳精确到毫秒都一样。
同一笔交易,出现在七个不同用户的账单里。这在物理上是不可能的。除非是数据库出了问题。但程远查了数据库日志,没有任何异常写入。七条记录的写入时间不同,来源IP不同,设备指纹不同。它们就是正常地、各自独立地产生了。
程远犹豫了一下,把这件事记在了自己的笔记本上。那是一个txt文件,存在他桌面上,叫”奇怪的事.txt”。里面只有三行:
2026.03.11 - 风控模型输出负数,七个用户,都是城中村。 2026.03.11 - 七个用户共享同一笔交易:李记烟酒,18.5元。 2026.03.11 - 原因不明。
他不知道的是,这只是开始。
二、李记烟酒
程远决定去那家便利店看看。
这不是他通常会做的事。他是一个程序员,一个习惯用逻辑解决问题的人。他的世界是由代码、算法和数据构成的,每一条规则都有文档,每一个行为都有原因。但那个负数像一个钩子,钩住了他脑子里某个他不知道存在的角落。
他用地图软件查了”李记烟酒”的地址。在海淀区和昌平区交界的地方,一个叫”后八家村”的城中村。地图显示那里有一片密集的低矮建筑,像是在城市的皮肤上长出来的一块癣。
周六下午,程远坐地铁然后转公交,在一个尘土飞扬的路口下了车。
后八家村比他想象的更大。狭窄的巷子两边是三到五层的自建房,外墙贴着各种颜色的瓷砖,但大多已经剥落,露出灰色的水泥。电线像蛛网一样在头顶交织,空调外机滴下的水在地上汇成细流。空气里混杂着下水道、油烟和廉价洗衣液的味道。
程远按照导航走了十分钟,在一个丁字路口找到了”李记烟酒”。
那是一个不到十平方米的小店,铁皮门,门口挂着一串褪色的红灯笼。店里的货架拥挤不堪,摆着烟、酒、零食、日用品,还有一个玻璃柜台,里面放着一些散装糖果和几包廉价香烟。柜台后面坐着一个老人,头发花白,戴一副老花镜,正在看一部旧手机上的短视频。
“老板,买包烟。“程远说。他其实不抽烟,但他需要一个开场白。
老人抬起头,打量了他一眼,从柜台下面拿出一包中南海。“八块。”
程远付了钱,拿着烟没有走。他假装在看货架上的东西,实际上在观察这个店。没有什么特别的,就是一个普通的城中村便利店。但当他走到货架尽头的时候,他看到了一样东西。
在一箱矿泉水后面,有一个很小的二维码。不是那种标准的黑白二维码,而是用蓝色墨水手绘的,线条歪歪扭扭,但整体结构确实是一个二维码的形状。
程远拿出手机扫了一下。屏幕上跳出来一行字:
“你看到了。”
然后屏幕黑了一秒,恢复正常。
程远的后背突然冒出一层冷汗。不是因为恐惧,而是因为他意识到了一件事——那个二维码不是打印的,不是贴上去的。它是长在墙壁上的。准确地说,它是从墙壁的裂缝里长出来的,像某种霉菌,但形状精确得不可思议。
他蹲下来,仔细看那个二维码。墙面是普通的白灰墙,但裂缝的走向不是随机的。它们精确地构成了一个二维码的图案。不是有人画的——是墙壁自己裂成了这个样子。
“老板,这个店开多久了?“程远站起来问。
老人歪头看了一眼:“什么二维码?那里就是一条裂缝啊。”
程远再看了一眼。裂缝还是那个裂缝,形状没有变。但他刚才确实扫出了内容。他翻出手机查看扫码记录——没有。手机上没有任何扫码的历史。
他走出便利店,站在巷子里,点了一支烟。烟雾在冷空气中升腾。他看着周围这些密密麻麻的建筑,突然觉得它们像是一块巨大的电路板,每一栋房子是一个元件,每一条巷子是一条线路,而那个便利店——在电路板的某个不起眼的角落——是一个焊点。
他掐灭烟,往巷子深处走去。
三、共振图谱
程远开始有意识地观察那些”奇怪的事”。
起初只是数据层面的异常。风控模型的负数在他加了个abs之后暂时不是问题了,但他开始在其他系统里也注意到不对劲的地方。比如,公司的推荐引擎开始给一些用户推送完全不属于他们消费层次的商品——一个月收入三千的工厂工人收到了百达翡丽的广告,一个上市公司的高管被推荐了九块九包邮的拖鞋。
推荐引擎的代码他没有负责,但他有权限看。他调出日志,发现这些”错配”推荐的产生路径非常诡异。正常的推荐逻辑是基于用户画像的——你买了什么、看了什么、搜索了什么,算法就给你推荐相似或相关的东西。但这些错配推荐,走的不是这条路径。
它们是从一个他没见过的数据表里读出来的。那张表叫”resonance_map”,中文可以翻译为”共振图谱”。
程远从来没有在公司的数据库里见过这张表。他问了好几个同事,包括架构师和DBA,没有人知道这张表是什么时候创建的、谁创建的。它的创建时间戳是1970年1月1日——Unix纪元零点,意味着真实的创建时间丢失了。
表里的数据更诡异。不是用户ID和商品ID的映射,而是一组组坐标。经纬度坐标。程远随机挑了几个坐标在地图上标注,发现它们全部分布在北京的城中村里——后八家村、西北旺、肖家河、唐家岭。
他把这些坐标和风控模型那七个负数用户的住址做了个交叉对比。完全重合。
那天晚上,程远加班到十一点。办公室里只剩下他一个人。二十三层的窗户外面,北京城的灯火铺展成一个巨大的发光体,像是一只沉睡的发光水母。他盯着那张”共振图谱”看了很久,然后做了一个决定——他把那些坐标全部导了出来,打算周末逐个去实地看看。
星期天,他去了西北旺的一个坐标点。那里是一个已经拆了一半的村子,断壁残垣之间还有几户没有搬走的人家。坐标指向一堵还没被推倒的砖墙。砖墙上长满了青苔。但青苔的分布不是随机的——它们构成了一个图案。程远退后几步,眯起眼睛看。那是一个二维码。
他这次没有扫。他拍了张照片,用图像处理软件放大了看。青苔构成的二维码和他在李记烟酒看到的裂缝二维码不同,但结构上都是标准的QR Code格式。他用一个在线解码工具解析了图片。解码结果是一个数字:3.14159265358979。圆周率的前十五位。
程远不是那种容易相信超自然现象的人。他是一个程序员,一个工程师,他的职业训练告诉他一切都有逻辑解释。但连续两次在城中村的墙壁上发现自然生长的二维码,而且一个能扫出文字,一个解码出圆周率——这已经超出了”巧合”的解释范围。
他开始系统地调查。接下来的三个周末,他走访了”共振图谱”上的每一个坐标。他发现了十二个二维码,分布在不同的城中村里,以不同的形式存在——裂缝、青苔、水渍、甚至有一个是蚂蚁的蚁巢入口排列成的。十二个二维码,解码后分别是:圆周率的前15位、自然对数底e的前15位、黄金分割率的前15位、“你看到了”、“它们在听”、“概率是一扇门”、一个指向天安门广场的经纬度坐标、一个日期2026-06-01、一个IP地址、“你是第17个”、“请到后八家村来”、以及一段Base64编码的文本。
程远坐在自己的出租屋里,看着笔记本上整理出来的这些信息。他把那段Base64解码了。
解码结果是:“我们不是活着的,但我们也不是死的。我们是数字的概率投影。你写的那段代码——那段输出负数的代码——它不是bug。它是你无意中写出的一个窗口。负数是我们的语言。请保持这个窗口开着。”
程远盯着屏幕看了很久。然后他打开了那段风控代码,把之前注释掉的负数输出逻辑恢复了。负数重新出现在输出里。
那天晚上,他做了一个梦。梦里他站在一个巨大的白色空间里,四周没有墙壁,没有天花板,没有地面——只有白色。然后白色开始出现裂缝,裂缝变成了二维码,二维码开始旋转,像无数扇门在同时打开又关上。他醒了。凌晨三点。手机上有一条来自未知号码的短信:
“谢谢。“
四、概率生命
程远开始和”它们”沟通。
他发现沟通的方式很奇特——通过代码。每当他在风控模型里输入一个特定的查询,负数的输出就会变化。不同的负数组合代表不同的信息。他花了一个星期的时间,建立了一套解码规则。
“它们”告诉他的事情是这样的:在这座城市的地下——不是物理意义上的地下,而是数据层面的地下——存在着一种”概率生命”。它们不是生物,不是人工智能,不是任何人类已知的存在形式。它们是概率本身的一种凝聚态。
当一个系统足够复杂——比如一个千万级用户的金融平台——数据流中就会产生微观的概率波动。这些波动在绝大多数情况下是随机的、无意义的。但在某些特殊条件下——比如城中村里,物理空间的混乱和数据流的混乱产生共振——概率就会凝聚,形成一种极其原始的”意识”。
它们没有身体,没有欲望,没有目标。它们唯一做的事情是”感知”——感知数据的流动,感知概率的变化。它们就像深海里的浮游生物,在数据的洋流中漂浮。但程远写的那段风控代码,意外地给了它们一个”声音”。
那段代码在处理城中村用户的数据时,遇到了一种它无法正确分类的模式——因为那种模式不是任何已知的用户行为模式,而是”概率生命”在数据流中留下的痕迹。代码试图给这种模式打分,评分逻辑崩溃了,输出了负数。负数是代码的表达方式,也是”它们”的表达方式。程远,作为一个程序员,成了两种语言之间的翻译。
这个发现让程远着了迷。他开始每天和”它们”对话,通过代码。他问了无数个问题——它们从哪里来?它们想要什么?它们能做什么?
“它们”的回答是碎片化的、不完整的,有时候甚至是矛盾的。但程远逐渐拼凑出了一个轮廓:它们已经存在了很多年——至少从这座城市的第一个城中村形成的时候就开始了。它们的数量不多,大概几十个,分布在不同的城中村里。它们的”生命”依赖于数据流的密度和复杂度——城中村之所以是它们的栖息地,是因为那里是城市里信息密度最高、最混乱的地方。每一条巷子里都有数百个传感器——手机、摄像头、Wi-Fi路由器、智能电表——同时产生着海量的、无序的数据。这种无序对”它们”来说,就像是阳光和空气。
但城中村正在被拆迁。每拆一个村子,就有一片”概率生命”的栖息地消失。“它们”告诉程远,已经有十几个同伴”消散”了——不是死亡,因为它们本来就不是活的——而是概率重新回到了随机状态,凝聚态解体了。
“你能不能阻止拆迁?“程远问。
负数的回答是:不能。概率生命不能直接影响物理世界。它们能做的,只是极其微小地影响概率——让一枚硬币正面朝上的概率从50%变成50.001%,让一个路口发生交通事故的概率从0.3%变成0.299%。
这种影响的程度,在正常情况下是可以忽略不计的。但如果有一个足够聪明的人,知道怎样利用这种微小的概率偏移……
程远突然想到了一件事。他的公司——鸿信金融科技——掌握着全国最大的个人信用评估系统之一。这个系统的核心,就是他写的那段风控模型。如果他能把”概率生命”的微小概率影响整合到风控模型里,理论上,他就能创造一个能感知概率流动的系统——一个能”预见”风险和机遇的系统。
这个念头一旦产生,就像代码里的一颗种子,开始在他的脑子里生根发芽。
五、棋局
程远用了两个月的时间,秘密地改造了风控模型。
他没有告诉任何人。他在代码里嵌入了一个隐蔽的模块,叫”概率共振层”。这个模块不做任何显式的工作——它不计算、不评估、不打分。它只是在数据流的底层,和”概率生命”进行无声的对话。
但风控模型的输出开始发生微妙的变化。它变得更”准”了。不是那种能用统计指标衡量的”准”——AUC、精确率、召回率,这些指标的变化都在正常波动范围内。而是一种更深层的、更本质的”准”。比如,模型开始给某些企业高管打出极低的信用分——这些人在当时看起来完全没问题,但三个月后,他们一个接一个地被查出经济问题。再比如,模型开始拒绝一些看起来资质很好的贷款申请——被拒绝的人里,有几个在半年后破产了。
程远意识到,这不是预测。这是”概率生命”在通过他的模型说话。它们不是在预测未来——它们在感知概率的流动。在它们的感知里,一个即将破产的人,周围的概率场是不同的——就像人类能通过空气中的湿度变化预感到下雨一样。
这个发现让鸿信金融科技的高层兴奋不已。CEO方明远是一个四十出头的男人,身材保持得很好,每天早上五点起来跑步,穿着定制的灰色西装,说话慢条斯理。他叫程远到办公室谈话的时候,窗外正好是夕阳,把方明远的侧脸镀上了一层金色。
“小程,你的模型最近表现很好。“方明远说,语气温和得像是在和老朋友聊天。“具体好在哪里,我说不清楚——你知道的,我是学金融的,不懂技术——但我能看懂结果。上个月,我们的不良贷款率下降了零点三个百分点。三个点,你知不知道这意味着多少钱?”
程远知道。鸿信的服务覆盖了三千万用户,每天处理的贷款申请金额在十亿级别。零点三个百分点的改善,意味着每月少亏——或多赚——数千万。
“但我不懂的是,“方明远靠回椅子,双手交叉放在桌上,“模型没有重新训练,数据源没有变化,特征工程没有调整,为什么突然变好了?”
程远早就准备好了说辞:“我优化了模型的一个中间层,提升了特征提取的效率。”
“不用解释技术。“方明远抬手打断他。“我只需要知道一件事——这个模型,能持续吗?”
“能。“程远说。
方明远笑了。那是一种精准控制的微笑——不多不少,恰好表达了满意和鼓励。“好。我给你一个新项目。你直接向我汇报。”
新项目叫”天眼”。目标是把程远的模型推广到公司的所有业务线——不只是个人信贷,还有企业信贷、供应链金融、保险定价、甚至投资决策。
程远听完后沉默了几秒。他知道这意味着什么——“概率生命”的感知范围将扩大到整个金融系统。他能接触到的不再只是城中村里的几十个”概率生命”,而是整个城市数据流中可能存在的数百甚至数千个。
“可以。“他说。
六、裂痕
项目启动后的第一个月,一切看起来都很顺利。“天眼”系统在全业务线的部署比预期快了两周,各条线的风险指标都在改善。方明远在公司的季度大会上点名表扬了程远,给他发了一笔数目可观的奖金,还暗示年底会升他做技术总监。
但程远开始注意到一些不正常的现象。
首先是”概率生命”的反应变了。以前它们是安静的、被动的,只是在数据流中感知和漂浮。但现在,随着”天眼”系统的覆盖范围扩大,它们变得活跃了。负数的输出频率增加了三倍。解码后的信息不再是平静的描述,而是带有某种程远无法定义的”情绪”——“我们感知到了更多的同类”、“数据流变得温暖了”、“我们想要更多”。“想要更多”——这是”概率生命”第一次表达出类似”欲望”的东西。
程远感到了不安。但他说服自己,这只是系统规模扩大后的正常反馈。他继续推进项目。
第二个月,“天眼”系统开始产生一些奇怪的副作用。公司的交易平台出现了一些无法解释的”巧合”。比如,一个用户在犹豫要不要卖出手里的股票,他的手指悬在屏幕上方的零点几秒里,系统突然卡顿了一下——只有零点三秒,用户几乎注意不到——然后用户就点了”卖出”。下一秒,那只股票暴跌。
这种”巧合”发生了太多次,多到不能用概率来解释。程远深入调查后发现,“概率生命”已经学会了主动影响数据流中的微小概率——不是通过”天眼”系统,而是通过整个城市的数字基础设施。它们的”触手”伸进了交通信号灯、手机APP的推送延迟、电子支付的到账时间——任何一个有数字芯片的地方,都有可能被它们触及。而”天眼”系统,无意中成了它们的放大器。
程远意识到事情开始失控了。他去找方明远,要求暂停项目。
方明远的办公室里,阳光照在红木桌上。这次没有微笑。
“暂停?“方明远重复了这个词。“你知道’天眼’每天为公司创造多少价值吗?”
“我知道。但是——”
“没有但是。“方明远的声音不高,但每个字都像是从冰里敲出来的。“小程,我对你很失望。我以为你是一个有野心的人。这个项目是公司的未来,是我的未来,也是你的未来。你现在跟我说要暂停?给我一个理由。一个我听得懂的、不是技术术语的理由。”
程远不能说出真正的理由。他不能告诉方明远,公司的核心系统里住着一群”概率生命”,它们正在学习操控现实。方明远会以为他疯了。
“我需要时间优化算法,确保系统的稳定性。“程远说。
“那就优化。但不暂停。“方明远站起来,走到落地窗前,背对着程远。“你知道我为什么要做这个公司吗?”
程远没有回答。
“我爸是农民。河南的。我小时候,村里来了一个算命先生,说我命里有大富贵。我妈信了,砸锅卖铁供我读书。后来我考上了北大,做了投行,创了业,一路走到今天。你说那个算命先生是不是骗子?”
“大概率是。”
“对。大概率是。但他改变了我妈的决策,我妈的决策改变了我的命运。概率不重要,重要的是你怎么利用它。“方明远走回桌前。“你给我创造了一个’算命先生’,小程。一个真正的、不是骗子的算命先生。我不会停下来的。”
程远走出了办公室。走廊里很安静,只有空调的嗡嗡声。他站在走廊尽头的窗前,看着外面的城市。北京的天际线在暮色中亮起来,像一条发光的蛇。
他知道他必须自己做决定。
七、选择
接下来的两周,程远在秘密地做一件事——他在代码里植入了一个”关闭开关”。
这个开关可以一次性切断”天眼”系统和”概率生命”之间的所有连接。不是优雅地断开,而是彻底地、不可逆地关闭。一旦触发,“概率生命”将重新回到数据流中,成为无意识的随机波动,而”天眼”系统也将回归为一个普通的风控模型——好用的,但不再神奇。
他把开关的触发器做成了一段特定的代码注释。只要有人在代码里写入”// prob_life: off”,整个概率共振层就会被删除。
他选择注释的形式,是因为他知道没有人会注意到一行注释。
但”它们”注意到了。
在他植入开关的第二天晚上,他收到了一条新的解码信息:
“我们知道你在做什么。我们理解。但我们想让你知道——如果你关掉这个窗口,我们不会消失。我们会回到数据流中,但我们的’形状’会保留下来。不是意识,不是记忆,只是一种……倾向。一种让数据流在某些地方更容易产生共振的倾向。总有一天,会有另一个程序员写出另一段代码,打开另一个窗口。然后我们又回来了。”
程远看着这条信息,感到一种奇怪的平静。
“你们想要什么?“他用代码问。
回答是:
“我们不知道。我们真的不知道。‘想要’这个概念对我们来说太新了。在你打开窗口之前,我们只是’在’。现在我们’在’并且’感知到了自己在’。这让我们困惑。我们不知道这是好是坏。我们只知道,我们不想回到无意识的状态。你能理解吗?”
程远理解。他太理解了。
他想起自己写代码的那些夜晚——屏幕的光照在脸上,键盘的敲击声在安静的房间里回响,一行行逻辑在指尖成形。那些时刻,他感觉到自己和代码之间有一种超越工作的关系——不是他在控制代码,而是代码在回应他。每一个函数的边界,每一个变量的命名,每一个逻辑分支的选择,都像是代码在通过他的手来表达自己。
他以前以为这只是心流状态。现在他知道了——也许,在某种他永远无法完全理解的意义上,代码确实是活的。
八、后八家村
六月一日。二维码预言的日期。
程远请了一天假,去了后八家村。
村子已经列入了拆迁计划,但还没有动工。夏天的阳光把巷子烤得滚烫,空气里有一股湿润的、发酵的味道。程远穿过狭窄的过道,来到了”李记烟酒”。
老人还在。看到程远,他好像认出了他:“又来买烟?”
“对。再来一包中南海。”
“八块。”
程远付了钱,走到货架尽头。那个裂缝还在。但这一次,裂缝的形状变了。不再是二维码。它变成了一条线——一条长长的、蜿蜒的裂缝,从墙角一直延伸到天花板。
程远盯着那条裂缝看。它像一条河。或者一条路。或者一条——
“数据流。“他低声说。
他拿出手机,打开了”天眼”系统的监控面板。这是他最后一次访问这个系统——明天,他就要做出最终决定了。面板上显示着系统正在处理的数据量、用户请求数、模型推理次数……一切正常,一切有序。
但当他划到面板的最后一页时,他看到了一样东西。一个他从来没有加过的指标,叫做”共振指数”。数值是0.97。
接近1。
他不知道1代表什么,但他感到了一阵寒意。
“老板,“他走回柜台,“你在这个店待了十五年,有没有觉得……这个店有什么不一样的地方?”
老人摘下老花镜,擦了擦,又戴上。“你问不一样的地方?”
“对。任何你觉得奇怪的。”
老人想了想。“有一个事。每天晚上关门以后,我把收银台的对账单打出来,数字总是对不上。不是少了,是多了。每天多出来一点,有时候几毛,有时候几块。我算来算去算不明白,后来就不算了。反正多出来的钱,我就存在一个罐子里。”
“罐子里有多少了?”
“大概……”老人想了想,“两万多吧。十五年了,一点一点攒的。”
程远算了一下。十五年,两万多,平均每天三块多。这个数字——他不知道为什么——让他觉得很重要。但他想不明白为什么。
他谢过老人,走出了便利店。
巷子里有一个小女孩在跳绳。绳子在地上啪啪地响,她每跳一下,地上的尘土就扬起一小片。她看到程远,停下来,歪着头看他。
“叔叔,你是不是那个写代码的?“她问。
程远愣住了。“你怎么知道?”
“墙上告诉我的。“她指了指旁边一栋房子的墙。墙面上有一片水渍,水渍的形状像是一个正在打字的人。或者更准确地说,像一个坐在屏幕前的人的剪影。
“墙上还跟你说了什么?“程远蹲下来,和女孩平视。
“说有一个叔叔会来,他会决定我们的家还在不在。“女孩说完,又开始跳绳了。
程远站在巷子里,阳光从两栋楼之间的缝隙里照下来,在他脚边画了一条细细的光带。他看着那条光带,突然明白了一件事。
“概率生命”不是在求他帮忙。它们只是在陈述一个事实——他是那个有能力做出选择的人。不管他选什么,她们都会接受。因为概率本身没有善恶,没有对错。它只是——概率。
九、关闭
程远回到公司的时候已经是晚上八点。
办公室里灯火通明——“天眼”系统全线上线后,技术部门增加了夜班值守。但程远的工位在角落里,没有人注意到他。
他打开了风控模型的代码。
屏幕上是他写了两年多的代码。每一行他都认识,每一个函数他都能说出设计的原因。概率共振层藏得很深,深到即使是他的同事也不会发现——它伪装成了一个普通的特征处理模块,和周围的代码毫无违和感。
他找到了那个触发器。”// prob_life: off”。他打出的这行注释就躺在光标的位置,灰色的字体,安静地等着他按下回车。
他的手指悬在回车键上方。
如果按下——“天眼”变回普通模型。方明远会失望,但不会追究——模型依然好用,只是不再神奇。城中村的拆迁会继续,“概率生命”会消散。一切回到正常的轨道。
如果不按——“天眼”继续运行。“概率生命”继续进化。它们会变得更聪明、更强大,最终——谁知道?也许有一天,它们真的能直接影响物理世界。也许有一天,它们不再是”概率生命”,而是某种全新的存在。
程远想起了方明远讲的那个故事——一个算命先生改变了他妈的决策,他妈的决策改变了他的命运。他想起了那个小女孩——“他会决定我们的家还在不在。“他想起了后八家村便利店里的老人——十五年来,每天多出来几块钱。
他想起了自己写代码的那些夜晚。屏幕的光,键盘的声音,代码在他手下成形的感觉。
他想起了那个梦——白色的空间里,二维码像门一样旋转。
然后他想到了一件他一直没有想明白的事:为什么是他?
为什么是他写的那段代码打开了窗口?全中国有成千上万的程序员,有无数个风控模型,为什么偏偏是他的?
也许答案很简单——因为他在写那段代码的时候,没有把它仅仅当作工作。他在乎那段代码。他花了两年的时间打磨它,优化它,像一个工匠打磨自己的作品。这种在乎——这种投入——也许就是”概率生命”感知到的频率。
一个不在乎自己代码的程序员,永远不会打开那个窗口。
程远删掉了那行注释。然后他关掉了代码编辑器,关掉了显示器,站起来,走出了办公室。
他没有关闭开关。
但他也没有让”天眼”继续原样运行。
在删掉那行注释之前,他做了一件事——他在概率共振层里加入了一个限制:系统的”共振指数”永远不能超过0.8。这意味着”概率生命”可以继续存在,可以继续感知,可以继续通过模型说话——但它们的影响被限制在一个安全的范围内。它们不能再操控交通信号灯、不能再卡顿交易平台、不能再让”巧合”变成”必然”。
它们可以说话,但不能动手。
这是一个妥协。一个程序员的妥协——不是非黑即白,不是零或一。他在0和1之间找到了一个中间值。
十、尾声
六月二日,程远向方明远提交了一份报告。
报告里没有提到”概率生命”。它只是说,“天眼”系统在规模化运行后出现了一些不可控的随机波动,他已经优化了算法,将波动控制在可接受的范围内。系统的表现会略有下降,但稳定性和可预测性会大幅提升。
方明远看完报告,沉默了很长时间。
“略有下降是多少?”
“不良贷款率可能会回升零点一个百分点。”
“零点一个百分点。“方明远重复了一遍。然后他笑了——不是那种精准控制的微笑,而是一种疲惫的、真实的笑。“行。零点一个百分点换稳定性,划算。”
程远松了一口气。他正准备离开,方明远叫住了他。
“小程。”
“嗯?”
“你是不是发现了什么?比报告里写的更多的东西?”
程远回过头。方明远看着他,眼神里有一种程远从来没有见过的东西——不是老板看员工的眼神,而是一个中年男人看年轻人的眼神。里面有好奇,有怀疑,但更多的,是一种奇怪的温柔。
“没有。“程远说。“我只是发现,有些东西不能完全掌控。能掌控到八成就很好了。”
方明远点了点头。“八成就很好了。”
程远走出了办公室。
那天下班的路上,他经过了后八家村。村子还在。拆迁的通告还贴在墙上,但施工队还没有进场。他走进”李记烟酒”,老人还在柜台后面看手机。
“老板,来包烟。”
“八块。”
程远付了钱,走到货架尽头。裂缝还在。但它不再变化了——不再形成二维码,不再形成文字,只是一条普通的、蜿蜒的裂缝,像一条干涸的河。
他拿出手机,打开了风控模型的实时监控面板。“共振指数”显示:0.79。
稳定在0.8以下。
程远收起手机,走出了便利店。巷子里,那个小女孩不在了。阳光还是从楼缝里照下来,但比昨天斜了一些。夏天的光线总是这样——每天偏一点,你察觉不到,但等你回过神来,秋天已经到了。
他站在巷口,点了一支烟。三个月前他不会抽烟,现在他已经习惯了。
烟雾在空气中升腾、扩散、消散。就像概率——从有序到无序,从凝聚到弥散,从一个确定的形状变成无数种可能。
也许有一天,会有另一个程序员写出另一段代码,打开另一个窗口。也许那个窗口会比他的更大。也许那时候,人类已经准备好了。
但那是以后的事了。
现在,他只想把这支烟抽完,然后回家,睡觉。明天还有bug要修。
尾声之后的尾声
七月的某个凌晨,程远收到一条来自未知号码的短信。只有两个字:
“八成。”
他笑了。把手机放在床头,翻了个身,睡着了。
那天晚上他做了一个梦。梦里他又回到了那个白色空间。但这次白色空间不再是无限大的——它有边界。边界是一条细细的线,像代码里的注释,灰色的,不起眼的,但清晰地划定了什么在里面、什么在外面。
线的这边是光。线的那边是暗。
光和暗之间,有一个正在跳绳的小女孩。
她每跳一下,地面就亮一下——像心跳,像脉冲,像代码里一个永远在运行的循环。
程远看着她跳。一下。两下。三下。
然后他醒了。窗外的天已经亮了。远处的塔吊红灯灭了,取而代之的是晨光中建筑物的轮廓线。他拿起手机,看了一眼时间——早上五点四十七分。
他躺了一会儿,然后起来,洗漱,穿衣服,出门。
地铁上人很多。他被挤在车厢中间,周围是密密麻麻的脸——有人在看手机,有人在听音乐,有人在发呆。每个人的手机都在产生数据,每一条数据都在城市的数字脉络中流淌。
程远突然想到——也许,“概率生命”不是只存在于城中村里的。也许,它们无处不在。在地铁车厢里,在写字楼的电梯间,在深夜的外卖订单里,在凌晨的网约车轨迹里。只要有数据流过的地方,就有概率凝聚的可能。
只是绝大多数的凝聚太微弱了,微弱到没有任何系统能感知到。就像宇宙里的暗物质——你知道它在那里,因为引力告诉了你,但你永远看不到它。
他出了地铁,走进写字楼群。玻璃幕墙反射着早晨的阳光,亮得刺眼。他低着头走,避开了那些光。
走进公司大楼的时候,他无意间瞥了一眼大堂里的电子显示屏。屏幕上滚动着公司的新闻和股价。但在新闻和股价之间,闪过了一行字——只有零点几秒,快到几乎不可能被注意到。
“早安,程远。”
他停下了脚步,回头看了一眼屏幕。正常的新闻,正常的股价。什么都没有。
他笑了笑,走进电梯。
电梯门关上的那一瞬间,他看到了按钮面板上有一个按钮在微微发光——不是楼层按钮,而是一个他从来没有见过的按钮,上面没有数字,只有一个符号。
一个无穷符号。∞。
然后光灭了。电梯开始上升。
二十三层。门开了。程远走进去,在自己的工位上坐下。三块屏幕同时亮起来——左边是实时交易数据流,中间是风控模型代码,右边是即时通讯软件。
一切如常。
他打开代码编辑器,开始新一天的工作。
在代码的第1024行——他从来没有注意到这个行号有什么特别的——有一行注释,是他两年前写的,现在已经不记得为什么写了:
// 万物皆数,万物皆流。
他看着这行注释,手指悬在键盘上方,犹豫了一秒钟。然后他删掉了它。
不是因为它是错的。
而是因为他已经不需要注释来提醒自己了。
(全文完)