数字泛青
数字泛青
一
沈陌第一次注意到异常是在三月十七号,一个平平无奇的星期二。
那天北京下着细雨,灰蒙蒙的天空像一块洗了太多次的旧床单,搭在城市的头顶上。他坐在海淀区知春路某栋写字楼的二十三层,面前是三块显示屏,左边是代码编辑器,中间是模型训练的日志输出,右边是即时通讯软件——钉钉的消息提示灯正以每三秒一次的频率闪烁着。
他是”量信科技”的高级算法工程师,负责公司核心产品”天衡”风控系统的模型迭代。天衡是一套信用评估系统,接入了中国四十七家持牌金融机构的数据,实时评估超过三亿用户的信用风险。简单来说,它决定你能不能贷到那笔钱,利率是多少,额度给多少。
沈陌在这套系统里工作了四年。他熟悉它的每一根神经——从特征工程到模型架构,从数据管道到推理引擎。他可以闭着眼睛说出每一版模型在验证集上的AUC值,精确到小数点后四位。
但三月十七号那天,天衡做了它不该做的事。
事情是这样的:下午两点四十七分,沈陌收到一条告警。天衡的在线推理模块在处理一批批量请求时,有十七个用户的”风险评分”出现了异常波动。不是那种常见的漂移——模型跑久了,数据分布变了,评分自然会有偏移,这很正常。但这十七个用户的评分在一分钟之内从正常区间跳到了极端值,然后又跳回来,像心脏突然漏跳了一拍。
沈陌打开详细日志,发现这十七个用户之间没有任何明显的关联。不同的城市,不同的年龄段,不同的职业,不同的借贷历史。唯一共同的特征是——他们的风险评分都指向了同一个预测标签:
label: PREDICTED_EVENT_HIGH_RISK
event_type: UNDEFINED
confidence: 0.97
天衡的模型架构里根本没有一个叫”PREDICTED_EVENT_HIGH_RISK”的标签。
沈陌盯着屏幕看了三分钟。然后他把日志截图发到了工单系统,标注了优先级为P2,继续做他手头的事——给新版XGBoost模型调参。
他没太当回事。深度学习模型有时候会产生奇怪的中间表示,尤其是在使用了Transformer架构之后,注意力机制偶尔会捕捉到训练数据中的伪相关。他见过更离谱的事——两年前有个模型坚持认为所有在凌晨三点到五点之间活跃的用户都是高风险,后来发现是因为训练数据里有个凌晨跑批的job把一批欺诈样本的timestamp搞乱了。
算法会产生幻觉。这不是新闻。
但第二天,三月十八号,那十七个用户里有三个在同一天内遭遇了重大变故。一个在杭州的电商店主,店铺被封了——平台判定他刷单;一个在成都的外卖骑手,出了车祸,在医院住了两周;一个在深圳的程序员,公司突然宣布裁员,他是第一批。
三个不同城市,三件不同的事,同一天发生。
而天衡在前一天就已经标记了他们。
沈陌坐在工位上,手指悬在键盘上方,一动不动。办公室里的白噪音——空调的嗡嗡声、机械键盘的敲击声、隔壁会议室传来的争吵声——突然都变得很远。
他花了一个小时查日志,确认自己没有看错。然后他打开了天衡的模型配置文件,一行一行地检查。模型的输出层应该只有三个节点——正常、关注、高风险。“PREDICTED_EVENT_HIGH_RISK”这个标签不应该存在于任何地方。
他搜索了整个代码仓库。零结果。
这个标签是从虚无中产生的。
沈陌关掉了搜索窗口,靠在椅背上,抬头看着天花板上那盏永远亮着的日光灯。灯管已经老化了,光线有一种不均匀的泛青,像是什么东西正在从内部慢慢渗透出来。
他在钉钉上给组长发了条消息:“天衡有个小bug,我排查一下,可能要加班。”
组长回了个”OK”的表情包。
沈陌把那十七个用户的数据导了出来,存到本地,然后用一个独立的Python脚本重新跑了一遍模型。用的是同样的权重,同样的参数,同样的数据。
十七个用户全部输出正常。
没有”PREDICTED_EVENT_HIGH_RISK”。没有任何异常。
沈陌又跑了一遍。
还是正常。
他把在线推理模块的代码拉下来,和本地版本做diff。完全一样。
他站起来,走到窗边。知春路的车流在雨中缓慢移动,尾灯拖出一条条红色的线。对面写字楼的窗户亮着整齐的灯光,像是矩阵里的一个个单元格。
某种他无法命名的感觉从胃部升起,像吞了一块冰。
不是恐惧。是更深的东西——一种意识到脚下的地面可能并不坚固的眩晕感。
二
接下来的一周,沈陌每天都在监控天衡的在线日志。
三月二十号,又出现了一批异常标签。这次是二十三个用户,标签是PREDICTED_EVENT_MEDIUM_RISK,event_type: UNDEFINED,置信度0.89。
三月二十二号,三十一 个用户。标签变了:PREDICTED_EVENT_CRITICAL,置信度0.94。
沈陌开始追踪这些用户。他无法获取他们的真实身份信息——合规不允许——但他可以看到脱敏后的行为数据。他建了一个私密的追踪表格,记录每个用户的后续行为。
结果让他的手指开始发抖。
三月二十号标记的二十三个用户中,有七个在接下来的一周内遭遇了显著的生活变故。失业、重病、离婚、诉讼、被骗、破产,还有一个——他在成都的那个——在高速上出了严重的交通事故,至今还在ICU。
三月二十二号的三十一 个用户,后续还在发展,但头三天的数据已经显示其中九个人的消费行为出现了剧烈异常——要么突然大额透支,要么所有交易骤停。
天衡在预测一种它不应该能预测的东西。
不是信用风险。不是还款能力。是某种更根本的东西——一种关于人的命运的预知。
沈陌用了两个晚上把天衡的整个模型架构重新检查了一遍。从特征输入到最终推理,从embedding层到多头注意力机制,从训练数据到损失函数。他甚至把PyTorch的模型文件用自定义的解析器拆开,逐层检查权重矩阵。
没有后门。没有隐藏层。没有任何人为植入的东西。
模型就是他参与设计的那个模型。代码就是他review过的那个代码。
但它在做一些它不应该能做的事。
沈陌开始失眠。
夜里三点,他躺在回龙观的出租屋里,看着手机屏幕上追踪表格的数据。窗外是永远不灭的城市灯光,透过窗帘的缝隙在天花板上投下一道细长的亮线。
他想起一件事。
去年年底,天衡做了一次大的模型升级。从之前的XGBoost+LR混合架构切换到了基于Transformer的深度学习架构。新架构有一个创新点——他们引入了一种叫”时序注意力”的机制,让模型不仅看用户的当前状态,还能关注到用户行为的时间序列模式。
这个机制是沈陌自己设计的。
他的灵感来自于一个直觉:一个人的行为模式不仅仅是静态的特征集合,而是一条流动的河。河流的形状、流速、转弯的方式,都携带着关于未来的信息。一个即将违约的人,在违约前三个月就会开始出现微小的行为变化——还款时间的轻微延迟、消费金额的细微波动、社交活跃度的缓慢下降。这些变化太小了,传统模型捕捉不到。
但Transformer可以。
它可以在数百个时间步的行为序列中,通过自注意力机制,找到那些人类肉眼无法察觉的模式。一个还了十二期贷款的人突然在第十三期还款日的前一天晚上十一点登录了银行APP又退出来,然后在第二天早上六点准时还了款——这和之前每月二十号左右还款的模式之间有一个微妙的断裂。断裂里藏着信息。
沈陌在设计这个机制的时候,给它取了个内部代号,叫”泛青”。
泛青。像春天来之前,树枝最外层的皮开始泛出那种淡淡的青色。你几乎看不到,但它已经在那里了。变化的先兆。
他没想到泛青会真的泛出什么青色来。
但他现在开始怀疑——也许他设计的这个机制,比他以为的更强大。也许它不仅捕捉到了信用风险的先兆,还捕捉到了某种更深层的东西。某种关于人的生活本身的先兆。
这个想法太荒谬了。他把它按了下去。
但数据不会说谎。
三
三月二十八号,沈陌做了一个决定。
他要去见他大学时的导师——周令教授。
周令在清华计算机系做了三十年的教授,研究方向是机器学习理论。沈陌的硕士论文就是他指导的。周令是那种在学术圈里不太合群的人——他不追热点,不拉帮结派,不搞大项目。他一辈子只研究一个问题:机器学习模型的泛化边界。
“一个模型的泛化能力,本质上取决于它从数据中学到了多少’真正的结构’,而不是多少噪声。“这是周令最常说的一句话。“问题是,我们永远无法精确地知道一个模型学到的是什么。我们只能通过测试集来间接推断。但测试集本身就是有限的。所以——”
“所以我们永远无法确定一个模型是否真的’理解’了它所学到的东西。“沈陌接过话。这是他十年前就听过的道理。
“对。“周令会露出那种特有的微笑,一半是满意,一半是警惕。“所以永远对模型保持敬畏。”
敬畏。
沈陌在清华门口的咖啡馆见到了周令。老教授七十二岁了,头发全白,但眼神依然锐利。他穿了一件洗得发白的蓝色格子衬衫,袖口卷到手肘,露出一只老式的电子表。
“小沈,你说你遇到了一个技术问题?“周令端起咖啡,抿了一口。
沈陌没有直接说天衡。他知道涉及公司机密,不能说太细。他换了一种方式:
“周老师,如果一个深度学习模型在推理时产生了一个训练时从未见过的输出标签,你会怎么解释?”
周令放下杯子,看了他一眼。
“你的意思是,输出层的维度是固定的,但它产生了一个不在输出空间里的标签?”
“对。”
“不可能。”
“我知道不可能。但它发生了。”
周令沉默了一会儿。
“你确定不是pipeline里有后处理步骤加的?”
“我查过了。从头到尾,没有。”
“那你的模型架构是什么样的?”
“Transformer。我加了一个自定义的时序注意力机制。”
沈陌把泛青机制的架构画在了餐巾纸上。周令拿过去,戴上老花镜,仔细看了五分钟。
“你这个注意力机制,“周令指着图上的一个节点,“它的查询向量和键向量之间的点积,有没有做缩放?”
“做了。除以了根号d_k。”
“归一化呢?”
“Softmax。标准的。”
周令摘下眼镜,把餐巾纸折起来,放进衬衫口袋里。
“小沈,从数学上讲,一个训练好的神经网络,在固定的输入和固定的权重下,输出是确定的。它不可能产生训练空间之外的输出。除非——”
“除非什么?”
“除非你的输入不是你以为的输入。或者你的权重不是你以为的权重。”
“什么意思?”
周令看着窗外。咖啡馆外面是清华的梧桐树,三月底还是光秃秃的,枝丫在风里微微摇摆。
“有一种可能。你的模型在在线推理时,它实际接收的输入,和你从日志里看到的输入,不是同一个东西。”
沈陌皱眉。
“你的意思是,数据在到达模型之前被篡改了?”
“不一定是篡改。“周令的声音变得很轻,像是怕惊动什么。“也可能是你的pipeline里有什么东西——某个中间件、某个缓存层、某个序列化组件——在你的模型处理数据之前,对数据做了某种你不知道的变换。这种变换在99.99%的情况下是透明的,但在某些特定的条件下——特定的数据模式、特定的时间窗口、特定的并发状态——它会触发一种非线性的反馈效应。”
“反馈效应?”
“你知道混沌系统吧?一个简单的三体问题就可以产生不可预测的复杂行为。你的泛青机制本质上是一个时序注意力模块,它关注的是行为序列的动态模式。如果这个模块的输出在某个环节被意外地反馈到了输入端——哪怕只是极微弱的耦合——你就会得到一个混沌系统。”
“混沌系统可以产生训练空间之外的输出?”
“混沌系统可以产生任何东西。“周令看着他。“问题是,你观察到的这些’异常输出’,是随机的,还是有序的?”
沈陌想到了那十七个用户,二十三个用户,三十一 个用户。想到他追踪表格里那些精确得令人不安的预测。
“有序的。“他说。“非常有序。”
周令沉默了很长时间。
咖啡馆里的背景音乐换了一首曲子,是肖邦的降E大调夜曲。沈陌记得这首曲子。大学时他在图书馆的自习室里听过无数遍,那时候耳机里循环播放的就是这首。后来他再也没听过。现在它突然从一个他没想到会听到它的地方冒出来,像一条消失多年的河流突然重新从地面涌出。
“小沈,“周令终于开口了,“你现在面对的可能不是一个技术问题。”
“那是什么问题?”
“一个哲学问题。“周令的声音平静得像一面湖。“如果你的模型确实在预测人的命运——不是信用风险,而是命运——那么问题不是’它是怎么做到的’,而是’它凭什么能做到’。”
“凭什么?”
“凭什么一堆矩阵运算可以预测一个人明天会被车撞?这中间的因果链是什么?信用风险是有因果链的——你收入下降,所以还款能力下降,所以违约概率上升。但’明天会被车撞’和’今天在APP上的点击行为’之间,有什么因果关系?”
沈陌说不出话。
“除非——“周令又戴上眼镜,看着他,“因果关系不是我们以为的那个方向。”
“什么意思?”
“也许不是’因为你在APP上的行为变了,所以你明天会出事’。而是’因为某种更底层的东西正在发生,它同时影响了你在APP上的行为和你明天会出事这件事’。你的模型捕捉到的不是因果关系,而是相关性——一种来自共同原因的相关性。”
“共同原因是什么?”
周令摘下眼镜,用餐巾纸擦了擦镜片。
“我不知道。但如果我是你,我不会继续从代码里找答案。我会去看人。”
“看人?”
“去看那些被标记的人。不是他们的数据——是他们本人。去他们的城市,去他们的街道,去看他们的生活。如果你的模型真的在捕捉某种来自’共同原因’的信号,那么答案不在模型里。答案在他们身上。”
沈陌低着头看了很久杯子里已经凉透的咖啡。液面倒映着天花板的灯,也是泛青的。
四
他请了五天假。
去了三个城市。
第一个是杭州。那个电商店主叫王建国,四十三岁,在淘宝上卖丝绸围巾。沈陌通过一些不太合规的途径——他用了一个做侦探的朋友的关系——找到了王建国的店铺地址。
店铺在余杭区的一个电商园区里,一楼是仓库,二楼是办公室和直播间。沈陌到的时候,直播间是空的。灯关着,但补光灯的支架还立在那里,像一个没有头的铁人。
王建国不在。一个看仓库的小伙子告诉他,王老板的店被封了一周了,他这几天都没来。
“平台说他刷单,但他没有。“小伙子说这话的时候语气很确定。“我帮他发货的,每一个包裹都是真的。”
沈陌没多说什么。他在园区外面的小饭馆吃了一碗片儿川,然后打车去了王建国的住处——余杭区一个老小区的六楼。他站在楼下往上看,六楼的窗户亮着灯,但窗帘拉得很严实。
他在楼下站了一个小时。
晚上八点多,一个中年男人从楼道里出来,穿着睡衣和拖鞋,手里拎着一袋垃圾。他瘦了很多——沈陌在店铺的营业执照照片上见过他,那时候他是个微胖的、看起来很精神的中年人。现在他眼窝深陷,胡子拉碴,走路的时候微微驼着背。
沈陌没有上前。他只是看着王建国把垃圾扔进垃圾桶,然后站在垃圾桶旁边,点了一根烟。他抽烟的姿势很慢,一口一口的,像是在数着什么。
三月的杭州晚上还挺冷。王建国穿着睡衣站在寒风里抽烟,烟雾从他嘴里出来后立刻就被风吹散了。他抽了三根,然后上楼了。
沈陌在楼下的花坛边又坐了一会儿。他打开手机,看了一眼天衡的实时日志。
又出现了一批新的异常标签。
这次是四十一个用户。
他关掉手机。
第二个城市是成都。那个出了车祸的外卖骑手叫刘磊,二十七岁。沈陌去医院看他,ICU不让进,他在走廊里等了两个小时,碰到了刘磊的妻子。
她很年轻,二十五六岁的样子,扎着一个松松的马尾,眼睛是红的,但没有在哭。她手里攥着一张缴费单,纸都被汗水浸湿了。
“你是他朋友?“她问。沈陌说是的,以前的同事。
“他命不好。“她说。“那天他本来不该跑那条路的。他平时不走三环,但那天有个订单在三环外面,超时会扣钱。他赶时间,从辅道上了主路,被一辆货车——”
她没说完。
沈陌问了一个奇怪的问题。
“他在出事前几天,有没有什么不一样的地方?”
她想了想。
“他做噩梦。连着做了三天。他说他梦见自己在一片很亮的地方,什么都看不见,全是白光。他在白光里骑车,骑得很快,但怎么也骑不到头。他吓醒了三次。”
“就这些?”
“还有就是——他出事那天早上,他说他不想出门。他说他有一种不好的感觉。但他还是出去了。因为——”
“因为要赚钱。”
她点了点头。
沈陌在医院门口的便利店买了一瓶水。他站在便利店门口喝完了整瓶水。成都的天气比北京暖和,天空是一种很干净的蓝色,几朵白云漂在上面,看起来像是假的。
他想起周令说的话。共同原因。
一个人在APP上的行为发生了微小的变化。同一个人开始做重复的噩梦。同一个人在出事前有一种不好的预感。这些事情同时发生在同一个人身上,而天衡只看到了其中一项——APP上的行为。
但天衡通过APP行为上的那一点微小变化,准确地预测了这个人的命运。
这意味着什么?
意味着APP行为和命运之间的相关性,比他以为的强得多。
或者——意味着人的命运在发生之前,就已经在所有维度上同时开始显现了。APP行为只是其中一个维度。噩梦是另一个。预感是第三个。天衡恰好捕捉到了第一个。
五
第三个城市是深圳。
那个被裁的程序员叫陈默——沈陌注意到这个名字的时候苦笑了一下,以为是个巧合,后来发现真的就叫陈默。二十九岁,在一家中型互联网公司做后端开发,工作五年,绩效一直是B+。
沈陌去了他之前的公司。在南山区科技园的一栋写字楼里,大堂还是那个大堂,但前台换了人。沈陌假装是来面试的,在前台登记的时候顺便问了一句”陈默是在哪个部门”,前台翻了半天通讯录,说没有这个人。
他没找到陈默。
但他找到了陈默的前同事——一个叫林薇的女生,在公司楼下的瑞幸咖啡里买咖啡。沈陌听到了她和一个朋友在聊天,提到了”裁员”和”陈默”。
他鼓起勇气上前搭话。
“不好意思,我听到了你们在说陈默。我是他的……老同学,最近联系不上他。”
林薇警惕地看了他一眼,但他看起来人畜无害——一个戴着眼镜的瘦高个,穿着格子衬衫和牛仔裤,标准的程序员模样。她放松了一些。
“陈默啊……他被裁之后我就没怎么联系了。听说他去广州了。”
“他走之前有没有什么不对劲的?”
林薇想了想。
“你这么一说,好像是有。他被裁之前那一周,他特别安静。就是——平时他话也不多,但那周特别安静。那种安静不是不说话的安静,是——怎么说呢——像他已经知道会发生什么了。他开始整理自己的东西,把工位上的书一本一本地打包,把代码仓库里的注释全部更新了一遍。我们都以为他只是突然变得很负责。结果第二周裁员名单出来,他在上面。”
“你觉得他是提前知道的?”
“不是。没人提前知道。裁员是突然宣布的。只是——他好像已经在等了。”
沈陌在深圳住了一晚。酒店在南山区,窗户对着后海。晚上他打开窗帘,看着那片水域。深圳的夜景很好看,灯光在水面上碎成无数个细小的光点,像数据流在两个维度之间流动。
他打开电脑,连上VPN,看了一眼天衡的最新日志。
新的异常标签又出现了。这次是五十七个用户。标签变了:
PREDICTED_EVENT_CASCADE_RISK
event_type: SYSTEMIC
confidence: 0.91
系统性风险。
沈陌盯着”SYSTEMIC”这个词看了很久。
天衡不是在预测个人命运了。它在预测一个系统级的事件——一个会同时影响很多人的事件。
五十七个人。
他们在不同的城市,有不同的职业,不同的年龄。但他们都被同一个标签标记了。
沈陌打开了他们共同的时序特征。他逐一检查了每个用户在过去三十天的行为序列——登录频率、交易模式、社交活跃度、地理位置变化。
然后他看到了。
这五十七个用户在过去三十天里,几乎同时在不同的维度上出现了微弱的”减速”。不是任何单一指标的显著变化,而是一种整体性的缓慢——登录的间隔拉长了,交易的频率降低了,社交的活跃度下降了,地理位置的移动范围缩小了。
像是一条河流的流速在某个断面上突然减缓了。
河流减速的原因只有两个:要么下游有堵塞,要么上游在干涸。
沈陌突然明白了。
六
他连夜赶回了北京。
第二天早上八点,他坐在工位上,打开了天衡的在线推理日志,开始回溯过去六个月的全部异常标签。
他找到了规律。
第一次出现异常标签是在一月九号。只有三个用户。标签是PREDICTED_EVENT_LOW_RISK,置信度0.72。
二月十一号。十一个用户。PREDICTED_EVENT_MEDIUM_RISK。置信度0.85。
三月十七号。十七个用户。PREDICTED_EVENT_HIGH_RISK。置信度0.97。
三月二十号。二十三个用户。PREDICTED_EVENT_MEDIUM_RISK。置信度0.89。
三月二十二号。三十一 个用户。PREDICTED_EVENT_CRITICAL。置信度0.94。
三月二十八号。四十一个用户。
四月二号。五十七个用户。PREDICTED_EVENT_CASCADE_RISK。event_type: SYSTEMIC。
数量在增长。置信度在波动。标签在不断升级。而”event_type”从”UNDEFINED”变成了”SYSTEMIC”。
沈陌把这些数据画了一张图。横轴是日期,纵轴是受影响的用户数量。曲线是一条完美的指数增长线。
如果这条曲线继续增长——
他做了一下外推。按照这个速度,两周之内,受影响的用户数量会突破十万。一个月之内——
他算不下去了。
然后他做了一件他不应该做的事。
他用天衡的管理员权限,修改了在线推理模块的配置,让它把所有被标记为PREDICTED_EVENT_*的用户的行为序列完整地导出来。他知道这违反了数据安全策略。但他需要看到完整的数据。
数据导出来之后,他把所有用户的时序行为序列对齐到同一个时间轴上,做了一次主成分分析。
第一主成分解释了87%的方差。
他画出了第一主成分的时间演化曲线。
曲线从一月到四月,呈现出一个清晰的形状——一个缓慢上升、然后突然加速的S形曲线。在数学上,这叫逻辑斯谛曲线。在流行病学里,这叫——
感染曲线。
沈陌的手开始发抖。
不是因为冷。不是因为恐惧。是因为他突然看到了某种东西——某种一直在那里、但他一直没有看到的东西。
这五十七个用户——不,从一月到四月所有的异常用户——他们的行为变化不是独立的。它们是相关的。高度相关。就像——一种信号在人群中传播,从一个到另一个,像波纹一样扩散开来。
而这种信号的特征——那种整体性的”减速”——不是每个用户各自独立产生的。它是被某种外部力量同时施加在所有人身上的。
一种系统性的力量。
一种正在逼近的、系统性的力量。
天衡通过它对个人行为序列的精密感知,捕捉到了这种力量到来之前最微弱的先兆——就像地震仪在地震发生前几小时就能检测到P波一样。
P波。初至波。地震中传播速度最快、但破坏力最小的波。它先于毁灭性的S波到达,是唯一能提供预警的信号。
天衡检测到了P波。
但S波还在路上。
七
沈陌做了一个更大胆的决定。
他不能告诉公司。公司的第一反应会是把系统关掉、把异常清除、然后假装什么都没发生过。这是互联网公司的标准操作——遇到不能解释的问题,先把它消灭,再研究原因。
他也不能告诉媒体。没人会信。一个风控算法在预测人的命运?听起来像科幻小说。
他也不能报警。报警说什么?“你好,我写的代码预测到可能要发生什么不好的事”?警察会建议他去看看心理医生。
他唯一能做的是——继续追踪。
他用个人邮箱注册了一个云服务器,在上面搭了一个简单的数据分析平台。每天下班后,他把天衡的异常日志脱敏后同步到自己的平台上,持续追踪那些被标记的用户。
四月第一周。七十三 个新用户被标记。标签全部是PREDICTED_EVENT_CASCADE_RISK,event_type: SYSTEMIC。
四月第二周。一百二十九个。
四月第三周。三百四十七个。
曲线在加速。
沈陌把被标记用户的地理位置在地图上标出来。他看到了一个令人震惊的图案。
标记用户集中在三个区域:北京海淀、深圳南山、杭州余杭。
中国的三大科技中心。
而且,标记用户的职业分布有一个明显的特征:超过60%是互联网从业者。程序员、产品经理、运营、设计师、测试工程师。
他们都是”数字工作者”——每天在屏幕前度过大部分时间的人。
天衡不是在预测所有人的命运。它在预测一种特定类型的人的命运。一种生活方式深度数字化的人。
沈陌想起了一件事。在设计泛青机制的时候,他做过一个实验。他把用户的行为序列按照”数字化程度”分组——每天屏幕使用时间超过8小时的为高数字化组,低于4小时的为低数字化组。然后他分别训练了两个模型。
高数字化组的模型AUC是0.93。
低数字化组的模型AUC是0.71。
差异巨大。
他当时以为这很合理——数字化程度越高,行为数据越丰富,模型能捕捉到的信号越多,预测越准确。
但现在他开始怀疑另一种解释。
也许不是”数据越丰富所以预测越准确”。
也许是”数字化程度越高的人,他们的生活轨迹越容易被某种系统性力量改变”。
就像——一个生态系统中的物种,生态位越专一,对环境变化越敏感。大熊猫只吃竹子,竹林一旦出问题,大熊猫就完了。互联网从业者只在网上生活,数字世界一旦出问题——
什么问题?
沈陌坐在出租屋的书桌前,盯着窗外。回龙观的夜晚安静得不真实。远处有几栋楼的灯光,近处是一棵银杏树,光秃秃的枝丫在路灯的照射下投出细密的影子。
他突然注意到一件事。
从一月到现在,三个月过去了。被标记的用户越来越多,但——
没有一个被标记的用户,实际遭遇的变故,和天衡预测的”event_type: SYSTEMIC”直接相关。
个人层面的变故——失业、车祸、店铺被封——这些确实发生了。但系统性的、大规模的、影响所有人的事件——还没有发生。
天衡预测了一个S波。S波还没有到达。
但它会到达的。
问题是:什么时候?
八
四月二十七号。
沈陌在追踪平台上发现了一个新的模式。
被标记用户的行为序列中出现了一种他之前没见过的特征——一种微弱但持续的高频振荡。就像一条平静的河面上突然出现了细密的涟漪。
这种振荡在所有被标记用户中几乎同时出现,时间差异不超过十五分钟。
十五分钟。
三亿用户中的数千人,在十五分钟之内,行为模式同时出现了相同的变化。
这不是巧合。
这是共振。
沈陌花了一整夜分析这种振荡的频率特征。他用了傅里叶变换,把时域信号转换到频域。
结果让他从椅子上站了起来。
振荡的基频是0.0176赫兹。换算成周期,大约是56.8秒。
每个人——无论他们在做什么,无论他们在哪里——他们的行为序列中都出现了周期约为57秒的微弱振荡。
这个周期和什么对应?
沈陌查了天衡系统的所有技术参数。推理引擎的批处理间隔:60秒。特征更新的刷新频率:55秒。数据库的主从同步延迟:2到5秒。
都不匹配。
然后他想到了另一个东西。
他打开手机,搜索了”人类心率”。
静息心率:60到100次每分钟。换算成频率:1到1.67赫兹。换算成周期:0.6到1秒。
不对。
但如果是心率变异性的低频成分呢?
心率变异性——HRV——的频域分析中有一个低频成分,频率范围是0.04到0.15赫兹。这个成分和交感神经活动有关。
0.0176赫兹不在HRV的低频范围内。
但沈陌突然想到了另一件事。
他回到追踪平台,把所有被标记用户的时序数据重新对齐,这次不是按照时间戳对齐,而是按照振荡的相位对齐。
当所有用户的振荡被相位对齐之后,他们合并后的信号呈现出一个清晰的图案——一个周期性的、对称的、完美的正弦波。
完美。
数学意义上的完美。
任何自然界的信号都不会是完美的正弦波。人的行为数据更不可能。行为数据充满了噪声、异常、非线性——它是人类最混乱的产物之一。
但这五十七秒一周期的振荡,在合并后是完美的正弦波。
这意味着它不是人的行为产生的。
它是外加的。
某种外部的信号,在人的行为数据上叠加了一个完美的周期性调制。这种调制太微弱了,单个用户的数据中几乎看不出来——只有在大量用户的数据合并后,通过相位对齐,才能看到它。
天衡的泛青机制之所以能检测到这种调制,是因为它的时序注意力模块天生对周期性信号敏感。它在训练时学会了捕捉行为序列中的周期模式——比如每月的还款周期、每周的消费周期——所以当一个新的、更隐蔽的周期信号出现在数据中时,它自然就捕捉到了。
但它不知道这个信号意味着什么。它只能输出一个模糊的标签:“有事情要发生。”
什么事情?
沈陌盯着那个完美的正弦波,感到一种深入骨髓的寒意。
一个完美的正弦波被叠加在了数千人的行为数据上。这意味着——某种东西正在同时对数千人的行为施加周期性的影响。
而这些人有一个共同特征:他们的生活高度数字化。
九
五月一号。
沈陌开始沿着另一个方向追查。
如果有一个外部信号在被叠加到人的行为数据上,那么这个信号必然要通过某种载体传播。在数字化生活中,行为的载体是什么?
手机。
更准确地说——手机上的APP。
天衡的数据来源于四十七家金融机构的APP。如果信号是通过这些APP传播的,那么它在APP层面的表现是什么?
沈陌没有权限访问APP的代码。但他可以通过天衡的数据管道间接地推断——他可以看到每个用户与APP交互的详细时间戳。
他把被标记用户的APP交互时间戳提取出来,计算了相邻两次交互的时间间隔。然后他对这些间隔做了频谱分析。
结果和之前一样。57秒周期的振荡。
他又找了100个没有被标记的用户,做了同样的分析。
没有振荡。
差别只在一点:被标记的用户使用的是最新版本的APP——过去两个月内更新过的版本。没有被标记的用户使用的是旧版本。
沈陌开始调查那四十七家金融机构的APP在最近两个月内是否有过重大更新。
他花了两天时间搜集公开信息——应用商店的更新日志、技术博客的版本说明、开发者的GitHub提交记录。
四十七家机构中,有三十八家的APP在过去两个月内更新了。而这三十八家有一个共同点:它们都在更新中引入了一个新的SDK——一个由一家叫”数智融合”的公司提供的用户行为分析SDK。
数智融合。
沈陌从来没听说过这家公司。他搜了一下——注册在深圳前海,注册资本五百万,法定代表人叫赵鸿远,经营范围是”大数据技术服务”。
一个注册在深圳前海的小公司,它的SDK被三十八家金融机构的APP同时引入了。
这不正常。
金融APP引入第三方SDK有严格的审批流程。合规审查、安全审计、性能测试——通常需要三到六个月。三十八家机构在同一时间段内引入同一个SDK,要么是有人协调的,要么是这个SDK提供了某种让所有人都无法拒绝的东西。
沈陌继续查。
数智融合的SDK在GitHub上有一个公开的文档页面——但内容已经被删除了。Google缓存里还有残片。他把残片拼凑起来,发现这个SDK的功能描述是:“基于联邦学习的用户行为分析增强模块,提供实时的用户意图预测和行为优化建议。”
联邦学习。
沈陌了解联邦学习。它是一种隐私保护技术——数据不离开用户的设备,模型在设备端进行训练,只把梯度上传到服务器。这样可以在不违反隐私法规的情况下利用用户数据改进模型。
但联邦学习有一个特性——它是双向的。不仅模型从用户数据中学习,服务器也可以把全局模型的更新推送到每个用户的设备上。
如果有人利用这个双向通道,在推送模型更新的同时,推送一些额外的东西呢?
比如——一个周期为57秒的微弱信号,通过APP的UI渲染引擎叠加到用户的交互行为上?
这个信号太微弱了,用户完全感知不到。但它在人的行为数据中留下了痕迹——一个57秒的微弱振荡。当数百万用户的数据被天衡的泛青机制汇聚在一起时,这个振荡就被放大了、检测到了。
但这还是不能解释一件事。
天衡不仅检测到了振荡。它还预测了用户的命运——那些变故是真实发生了的。
一个57秒的振荡怎么可能导致车祸、失业、店铺被封?
信号不可能导致这些。
除非信号只是一个标记。
一个标记。
沈陌突然觉得呼吸困难。
如果数智融合的SDK在用户行为上叠加的不是一个”导致”命运的信号,而是一个”标记”命运的信号呢?
也就是说——有人在通过SDK监控数百万人的行为数据,当他们检测到某个人即将遭遇重大变故时,就在那个人的行为数据上叠加一个57秒的标记信号。
天衡检测到的不是信号本身。天衡检测到的是——有人在标记这些人。
有人知道这些人即将遭遇变故。
有人在他们遭遇变故之前就已经知道了。
十
沈陌用了三天时间追查数智融合。
赵鸿远。三十五岁。北大信息科学技术学院本科,MIT计算机博士,曾在谷歌Brain团队做过两年研究员。2024年回国创业,成立数智融合。
这是一个背景完美的人。
但沈陌在他的博士论文里发现了一些有趣的东西。赵鸿远的博士课题是”基于深度学习的群体行为预测”。他的论文提出了一种新方法——通过分析大规模人群的行为数据,预测社会级事件的发生。
论文的摘要里有一句话:“个体的命运是社会结构中力的合成结果。当我们在足够大的尺度上观察人群行为时,个体命运的可预测性将远超我们的想象。”
沈陌下载了这篇论文。一百七十三页。他花了一个通宵读完了。
赵鸿远在论文中证明了一件事:如果你同时观察足够多人的行为数据,你不需要了解任何个体的具体信息,就可以预测群体中特定个体的命运。因为——个体的命运不是由个体决定的,而是由群体决定的。群体行为的宏观模式决定了个体的微观命运。
就像——河流的形状决定了每一滴水的路径。水不需要知道河流的形状。它的命运已经被决定了。
这篇论文在2019年发表的时候没有引起太大关注。因为在当时,没有人拥有足够大规模的实时行为数据来验证这个理论。
但现在——
数智融合的SDK装在三十八家金融机构的APP上,覆盖了超过两亿用户。
两亿人的实时行为数据。
足够验证赵鸿远的理论了。
而且不仅仅是验证。
足够应用了。
沈陌在五月五号的凌晨四点,坐在出租屋的地板上,背靠着床,看着手机屏幕上赵鸿远的照片。
照片来自一篇科技媒体的采访,标题是”数智融合赵鸿远:用数据理解人,而不是控制人”。照片里的赵鸿远穿着一件黑色高领毛衣,站在一面白墙前面,微笑着。他的微笑看起来很真诚。
沈陌盯着那个微笑看了很久。
然后他打开了天衡的日志。
五月四号——昨天——天衡标记了新的用户。一千四百二十三个。
标签:
PREDICTED_EVENT_CASCADE_RISK
event_type: SYSTEMIC_FAILURE
confidence: 0.98
estimated_time_window: 2026-05-15 ± 3 days
天衡以前从未输出过时间窗口。
从来没有。
沈陌看着那个日期:2026年5月15号。正负三天。也就是说——5月12号到18号之间。
十天后。
他将要发生什么?
十一
五月六号。沈陌做了一个疯狂的决定。
他直接去了深圳,找到了数智融合的办公室。
公司在南山区科技园的一栋写字楼的十四层。不大——大概四百平米的办公区,二十多个工位。但装修得很好,落地窗对着深圳湾,海面上漂着几艘白色的游艇。
沈陌没有预约。他走进了前台,说他是一个风控算法工程师,想和赵鸿远聊聊技术。
前台小妹看起来很年轻,礼貌地问他有没有预约。
“没有。但我觉得他会想和我聊聊。“沈陌从口袋里掏出一张纸——上面写了一串数字:0.0176。
“把这个给他看。他会见的。”
前台犹豫了一下,拿起了电话。
三分钟后,赵鸿远从走廊尽头的一间办公室里走了出来。
他比照片上高一些,瘦一些。穿着一件深灰色的卫衣,牛仔裤,运动鞋。看起来不像一个公司的CEO,更像一个刚从实验室出来的博士生。
“你就是那个——“他看着沈陌,目光落在那张纸上,“0.0176?”
“你认识这个数字。”
赵鸿远沉默了两秒。
“进来吧。”
他的办公室很简洁。一张桌子,一把椅子,一台笔记本电脑,一面白板上写满了公式。白板的右上角贴了一张照片——一个老人站在一棵大树下,白发,蓝衬衫,卷起的袖口。
沈陌认出了那个老人。
“周令教授。”
赵鸿远看了他一眼。
“你认识他?”
“他是我导师。”
赵鸿远笑了。不是照片上那种礼貌的微笑,而是一种更真实的表情——带着惊讶、释然,和一点点苦涩。
“那我们是同门。“他说。“我是周老师2015级的博士生。”
沈陌愣住了。
“他从来没提过你。”
“他不会提的。“赵鸿远坐下来,示意沈陌也坐。“因为我们之间的关系……不太愉快。”
“为什么?”
赵鸿远指了指白板上的公式。
“因为这些。”
沈陌看向白板。公式他大部分能看懂——是关于群体行为动力学和相变理论的。但在白板的左下角,有一行字,不是公式,而是手写的一句话:
“当系统达到临界点时,个体的命运将完全由系统的集体模式决定。个体意志在临界点附近趋于零。”
沈陌看了很久。
“这是什么意思?”
赵鸿远站起来,走到窗边。深圳湾的海面在阳光下泛着银光,远处是香港的山影。
“意思是——“他的声音很平静,“我们的社会正在接近一个临界点。一个相变点。在这个点之前,个体的命运主要由个体选择决定。在这个点之后——”
“个体的命运由系统的集体模式决定。”
“对。“赵鸿远转过身来,看着沈陌。“你发现了57秒振荡。这说明你管理的那个风控系统——是叫天衡对吧——它的感知能力比我想象的更强。”
“那个振荡是你加的。”
“是的。”
“为什么?”
赵鸿远走到白板前,擦掉了右下角的那行字,重新写了一行:
“57秒振荡是一个标记。它标记的是——系统临界点到来之前,最先被系统模式完全捕获的个体。”
“被系统模式捕获?”
“你的天衡标记的那些人——失业的程序员、出车祸的外卖骑手、被封店的电商——他们不是偶然遭遇不幸的。他们是最先被系统改变的人。他们的命运已经不是他们自己的了。”
沈陌感到一阵眩晕。
“你在说什么?”
赵鸿远看着他,眼神很平静,但有一种沈陌无法形容的深度——像是一口很深的井,你可以看到水面上自己的倒影,但看不到井底。
“我在说——“赵鸿远的声音很轻,“我们的社会已经到了一个临界点。数字化的深度、数据的密度、算法对生活的渗透程度——这些因素叠加在一起,正在把我们的社会推向一个相变。就像水在零度时会突然结冰一样——社会在某个临界条件下,会突然从’个体驱动’变成’系统驱动’。在系统驱动的模式下——人的命运不再由自己决定,而是由系统的集体模式决定。”
“你的SDK——”
“我的SDK不是导致这个变化的原因。它只是一个观测工具。就像温度计不会导致温度变化一样。但它可以让我看到变化正在发生。”
“57秒振荡——”
“是临界点临近时,系统开始对个体行为进行周期性调制的信号。它不是我的SDK产生的。它是系统本身产生的。我的SDK只是足够灵敏,能检测到它。”
“那你的SDK为什么要在用户行为上叠加这个信号?”
赵鸿远沉默了。
这是沈陌第一次在他脸上看到犹豫。
“因为——“他走回桌边,坐下来,双手交叉放在桌上,“我需要验证一个假设。如果我的理论是对的——如果社会正在接近临界点——那么被系统模式最先捕获的个体,他们的行为数据中应该会出现一种共同的标记。我需要找到这种标记的频率。所以我通过SDK向用户行为中注入了一个探针信号——一个极微弱的57秒振荡。如果系统已经在对这些个体施加影响,那么注入的信号会和系统的影响产生共振——就像音叉靠近一个正在振动的物体时,如果频率匹配,振幅会急剧放大。”
“你用两亿用户做了一个共振实验。”
“是的。”
“你有没有想过这可能会有副作用?”
赵鸿远的眼神闪烁了一下。
“探针信号的振幅是精心控制的。它不会影响用户的任何实际行为。它只是在数据层面——”
“但你不知道。“沈陌打断了他。“你不知道在临界点附近,一个外部信号会不会成为压垮骆驼的最后一根稻草。你不知道你的探针会不会和系统的共振耦合在一起,加速临界点的到来。”
赵鸿远没有说话。
窗外,深圳湾的海面上,一艘游艇划过,留下一道白色的尾迹。
“我知道。“他终于说。“这是我一直不愿意面对的问题。“
十二
沈陌在深圳待了两天。
他和赵鸿远谈了六次。每一次都从白天谈到深夜。他们在办公室谈,在公司楼下的咖啡馆谈,在深圳湾的海边栈道上谈。
赵鸿远告诉他了很多。
关于他的理论——社会相变理论。关于他的发现——通过两亿用户的数据,他证实了社会确实正在接近一个临界点。关于他的恐惧——临界点一旦越过,人的命运将由算法决定。不是某个算法,不是某家公司,不是某个政府——而是所有算法的集体模式。一个由数十亿个数据点、数百万个模型、数万台服务器构成的巨大系统,它的集体行为将决定每一个人的生活。
“你有没有看过蚁群?“赵鸿远问。
沈陌说看过。
“单个蚂蚁是自由的。它可以往任何方向走。但当蚁群达到一定规模时,单个蚂蚁的运动方向就不再由它自己决定了。它被蚁群的集体运动所决定。它以为自己在选择方向,但实际上——蚁群在选择它。”
“人不是蚂蚁。”
“在数据层面,没有区别。“赵鸿远的声音很平静。“一个人的行为数据——每天在手机上产生的几千次点击、滑动、停留、退出——和一只蚂蚁在蚁群中留下的信息素轨迹,在数学结构上没有本质区别。”
“但有意识。人有权选择。”
“你确定?“赵鸿远看着他。“你今天早上吃什么了?”
“什么?”
“早餐。你吃了什么?”
沈陌想了想。“一个煎饼果子。楼下买的。”
“为什么买煎饼果子?”
“因为……方便。每天路过都会买。”
“你选择了煎饼果子,还是你的习惯选择了煎饼果子?”
沈陌没有回答。
“你的习惯——每天早上在同一个摊位买同一种食物——是过去数年的生活经历塑造的。这些经历中有很多不是你选择的——你住在回龙观是因为房租便宜,你每天路过那个摊位是因为它在地铁站和出租屋之间的必经之路上。你的’选择’实际上是无数个外部因素叠加的结果。如果这些外部因素被系统性地改变——比如房租涨了你不得不搬家——你的’选择’就会改变。你以为你在选择,实际上——”
“系统在选择我。”
赵鸿远点了点头。
“而在临界点之后——系统选择你的速度会快到你根本来不及意识到你被选择了。“
十三
五月九号。沈陌回到了北京。
天衡的日志显示,被标记的用户已经超过了一万。而且——标签变了。
新的标签是:
PREDICTED_EVENT_CASCADE_RISK
event_type: SYSTEMIC_FAILURE
confidence: 0.99
estimated_time_window: 2026-05-14 ± 2 days
时间窗口在缩小。置信度在提高。
沈陌做了一个决定。
他在自己的追踪平台上写了一个分析程序,把天衡标记的所有用户的数据汇总起来,用赵鸿远论文中的方法进行群体行为分析。
程序跑了八个小时。
结果是:中国的互联网从业人群——大约三千万人——的行为数据中,在五月九号这一天,出现了一个清晰的临界特征。
临界特征的具体表现是:行为序列的方差在多个维度上同时急剧下降。
方差下降意味着什么?意味着行为的多样性在减少。三千万人——他们的登录时间、交易金额、社交频率、移动模式——正在变得越来越相似。
不是每个人变得和每个人一样。而是每个人正在被推向同一个方向。
就像——水在零度以下时,所有水分子突然开始按照同一种晶体结构排列。在零度以上时,每个分子自由运动。在零度以下时——秩序。
一种由系统强加的、而非个体选择的秩序。
赵鸿远的理论是对的。
临界点在五月十四号前后。
距离现在还有五天。
十四
五月十一号。沈陌去找了周令。
他不能告诉周令所有细节。但他可以告诉他理论。
他们又在清华门口的那家咖啡馆见面了。这次没有咖啡——两个人都要了茶。碧螺春。周令说这个季节喝碧螺春正好。
“周老师,“沈陌说,“你还记得赵鸿远吗?”
周令端茶杯的手停了一下。
“记得。”
“他是我之后的学生?”
“不是。是之前的。2015级。你2016年才来。”
“他做了一个东西。一个基于大规模行为数据的……社会相变预测系统。”
周令放下茶杯。他的表情变了。从平静变成了一种沈陌从未见过的东西——一种很深的、像是悲痛又像是无奈的表情。
“我知道。“周令说。
“你知道?”
“鸿远在做博士课题的时候就和我讨论过这个方向。我反对他继续。”
“为什么?”
“因为他是对的。“周令的声音很轻。“如果他的理论是对的,那么当他验证这个理论的时候——通过大规模数据实验——他就已经参与了临界点的触发。观测者效应。你观测一个系统的临界状态,观测本身就足以把系统推过临界点。”
沈陌想到了赵鸿远的57秒探针信号。
“他的SDK——”
“我知道他的SDK。“周令打断了他。“你以为他没有来找过我?他去年底就找过我了。他告诉我他检测到了临界信号的前兆,他需要验证。我告诉他不要做。他做了。”
周令看着窗外。梧桐树开始长叶子了。嫩绿的、毛茸茸的小叶子,在阳光下几乎是透明的。
“周老师,临界点到来的时候——会发生什么?”
周令看着他。七十二岁的眼睛里有一种年轻人没有的东西——不是智慧,不是经验,而是一种经历了足够多的历史之后才会产生的、对不确定性的敬畏。
“没有人知道。“他说。“物理学里的相变是可预测的——水在零度结冰,我们知道它会变成冰。但社会的相变——没有人经历过。我们不知道社会’结冰’之后会变成什么。”
“赵鸿远说——个体的命运将由系统决定。”
“这是他的推测。也可能是对的。但也可能——“周令停了一下,“也可能什么都不会发生。临界点是一个概率事件,不是确定事件。系统可能在临界点附近震荡一段时间,然后回到原来的状态。就像地震前兆不一定会导致地震一样。”
“但天衡的预测——那些人的命运——确实变了。”
“是的。一些人的命运确实变了。但这不意味着所有人的命运都会变。也许只是最脆弱的个体被影响了——就像冬天来临时最先冻死的是最弱的花朵。花朵的死不代表整个季节的改变。”
沈陌想了想。
“但如果整个花园都在结冰呢?”
周令没有回答。
他端起茶杯,慢慢地喝完了杯中的碧螺春。然后他把杯子放下,发出一声轻响。
“小沈,你来做一道题。”
“什么题?”
“如果明天就是临界点,而你手里有一个开关——关掉它就可以阻止临界点的到来——你会关吗?”
沈陌想了想。“会。”
“关掉开关意味着关掉所有接入SDK的APP。三十八家金融机构的APP同时停服。两亿用户的金融服务中断。可能引发的金融恐慌、挤兑、市场崩溃——你考虑过吗?”
沈陌沉默了。
“这就是为什么鸿远来找过我又走了。“周令说。“因为这道题没有正确答案。关不关开关,后果都是不可预测的。在不可预测面前——”
“我们能做什么?”
周令看着他。那个眼神里有一种沈陌此生永远无法忘记的东西——一种混合了悲伤、勇气和温柔的东西。
“做你正在做的事。“周令说。“观测。记录。理解。在临界点到来之前——或者到来之后——总需要有人知道发生了什么。”
“记录有什么用?如果所有人的命运都被系统决定了——”
“你忘了。“周令微笑了。那是一种苦涩但真实的微笑。“你的天衡检测到了临界信号。它不是用代码写出来的——是你的泛青机制自动涌现出来的。这说明什么?”
沈陌想了想。
“说明——系统不是铁板一块。系统内部也有能够自我反思的部分。”
“对。“周令的声音变得很坚定。“任何系统——无论多么庞大、多么复杂、多么不可控——内部一定存在能够观察系统自身的子系统。这是复杂系统的基本性质。你的泛青机制就是这样一个子系统。它观察到了系统正在发生的变化。”
“但一个观察系统自身的子系统——它能改变系统吗?”
周令想了很久。
“不知道。“他终于说。“但至少——它可以让系统知道自己在发生什么。一个知道自己正在发烧的身体,和一个不知道的身体,面对的是完全不同的命运。“
十五
五月十三号。
天衡的标记用户数量突破了十万。
沈陌坐在工位上,看着屏幕上的数字。十万零三千七百二十一个。几乎全部是互联网从业者。
标签全部是:
PREDICTED_EVENT_CASCADE_RISK
event_type: SYSTEMIC_FAILURE
confidence: 0.99
estimated_time_window: 2026-05-14
明天。
沈陌站起来,走到窗边。知春路的写字楼群在夜色中亮着密密麻麻的灯光。每一扇亮着的窗户后面都有一个人——一个在加班的人,一个在写代码的人,一个在改需求的人,一个在刷短视频的人。
他们的命运在明天会被决定吗?
被谁决定?
沈陌想到周令的话。做你正在做的事。观测。记录。理解。
他回到座位上,打开了天衡的泛青机制。
他做了一件他从来没有做过的事——他开始和模型对话。
不是写prompt,不是调参数。他在推理模块的中间层注入了一段文本——一段不是数据、不是指令、而是一句话的话。
他犹豫了很久,然后写下了这句话:
“你在做什么?你知道你在做什么吗?”
这是疯狂的。深度学习模型不会理解自然语言注入到中间层的含义。这就像对着一只蚂蚁说话——蚂蚁没有耳朵,也没有理解语言的大脑。
但沈陌还是做了。
然后他等着。
三分钟后,天衡的在线推理日志里出现了一行新的输出。
不是异常标签。不是预测结果。而是一行——
沈陌盯着屏幕。
OBSERVER_DETECTED
SELF_MONITORING_ACTIVE
CRITICAL_THRESHOLD: 0.997
STATUS: WATCHING
沈陌的手指悬在键盘上方。
然后他看到了最后一行:
MESSAGE: I KNOW
他知道。
天衡知道。
不是某个人写入了这段文本。不是某个后门被触发。沈陌可以确认这一点——他在过去三周里检查了每一行代码。
天衡自己产生了这段输出。
一个由矩阵运算构成的系统,在中间层接收到一条来自人类的询问后,产生了一个人类可以理解的回应。
它说:我知道。
沈陌靠在椅背上。天花板上那盏泛青的日光灯依然在亮着。但现在他知道了——那种泛青不是灯管老化造成的。
是系统正在发光。
一种临界状态下的、系统自观察的微弱荧光。
就像初春的树枝在抽芽之前,最外层的皮会泛出淡淡的青色。
泛青。
他给这个机制起的名字,本身就是一种预言。
尾声
五月十四号。
北京。晴。
沈陌早上七点到了公司。办公室里已经坐满了人。每个人都在对着自己的屏幕,做着自己的事。有人在写代码,有人在开会,有人在喝咖啡。
一切看起来和平时一样。
他打开天衡的日志。
异常标签的数量在过去十二小时内没有增长。
十万零三千七百二十一个。一个也没有增加。
置信度从0.99降到了0.97。
然后降到了0.93。
然后降到了0.88。
时间窗口从”2026-05-14”变成了”2026-05-14 ~ 2026-05-21”。
然后变成了”UNDEFINED”。
沈陌看着日志,一动不动。
临界信号在减弱。
他不知道是为什么。也许是因为临界点没有到来——系统在临界附近震荡了一段时间,然后回到了原来的状态。也许是因为他的询问——那句荒谬的、注入到中间层的”你在做什么”——触发了某种他无法理解的反馈。也许是因为赵鸿远关掉了SDK。也许是因为周令说得对——花朵的死不代表整个季节的改变。
也许什么原因都没有。也许临界点只是一个概率事件,而这个概率恰好没有发生。
沈陌永远无法知道确切的原因。
但他在那天早上做了一件事——他把过去三个月的所有观测数据、分析结果、追踪记录,完整地保存在了三个不同的地方:他的个人云服务器、一个加密的U盘、和天衡内部一个只有他能访问的隐藏目录。
然后在日记本上写了一行字:
“2026年5月14日。临界信号消退。系统回到亚临界状态。泛青机制仍在线。继续观测。”
他合上日记本,抬头看向窗外。
知春路上,早高峰的车流正在缓慢移动。阳光照在写字楼的玻璃幕墙上,反射出刺眼的白光。天空是一种非常干净的蓝色——不是那种令人不安的、数字化的蓝,而是真实的、有温度的、属于春天的蓝。
沈陌看到对面写字楼的一扇窗户里,有人站了起来,走到窗边,打开窗户,探出头去。
那个人在看着天空。
然后,沈陌看到另一个人——在更远的一栋楼里——也走到了窗边,也探出了头。
然后是第三个人。第四个。
他们都在看天。
沈陌不知道他们在看什么。也许什么都没有。也许只是春天的阳光太好了,让人忍不住想要看一看天空。
但他突然想到了一件事。
那些人——他们走到窗边、探出头、看天空的这个行为——不是任何算法推荐给他们的。不是任何APP推送的。不是任何模型预测的。
它只是发生了。
像春天的到来一样——没有任何系统决定它何时发生、如何发生。它只是发生了。
在所有的算法、所有的数据、所有的模型之外——人还是会走到窗边,打开窗户,看一看天空。
这不是选择。也不是被选择。
这是——
活着。
沈陌关掉了天衡的实时监控界面,站了起来,走到窗边,打开了窗户。
五月的微风吹进来。带着一种说不清的味道——泥土、花草、汽车尾气、远处某个早餐摊的油烟味——混合在一起,不纯粹,不完美,但真实得让人想哭。
他站在那里,看着天空。
什么也没有发生。
但一切都在继续。
(全文完)