时空交换协议

招魂者 · 2026/5/17

时空交换协议

林远舟第一次注意到不对劲,是在三月的某天早晨。

他站在公司楼下便利店的冰柜前,伸手去拿最后一罐冰美式。手指刚碰到铝罐的冰凉表面,整只手忽然穿过罐体——不是打翻,不是滑落,而是像穿过一层水面的涟漪,手指短暂地失去了与物质的联系。

一秒钟后,罐子还在那里。他拿起来,拉开拉环,喝了一口,苦涩的液体滑过喉咙,一切如常。

他告诉自己是没睡好。

「远舟,九点半的会。」微信弹出同事赵琳的消息。赵琳是他们小组的产品经理,三十出头,短发,说话干脆利落,永远穿一件灰色卫衣,像是某种程序员审美的标配。

林远舟在一家叫「拓扑时序」的公司做算法工程师。公司名字听起来像搞理论物理的,实际上是一家金融科技公司,主营业务是风控模型——用机器学习预测用户的还款能力、违约概率、信用画像。简单说,就是给每个人打分,决定他们能不能借钱、能借多少。

这份工作林远舟做了三年,不算喜欢也不算讨厌。他的真正兴趣在时间序列预测——用算法从过去的数据中推断未来的走势。读研的时候他写过一篇论文,用LSTM网络预测城市交通流量,准确率达到97%,被导师称为「有天赋的直觉」。但毕业后的现实是,交通预测的岗位不多,金融风控的工资很高,于是他来到了拓扑时序。

公司在北京西二旗的一栋写字楼里,十三楼,窗户朝北,能看到另一栋写字楼的窗户。每天下午三点,对面楼的某个工位上会出现一盆绿萝,阳光打在叶子上,投下细碎的影子。林远舟有时候盯着那些影子发呆,觉得它们像某种正在运行的算法——规则的、重复的、不知疲倦的。

「九点半,别迟到。」赵琳又发了一条。

他回了个「收到」,把空罐子扔进垃圾桶,刷卡进楼。

九点半的会议是关于新项目的。CTO周瀚文坐在会议桌的一头,穿着他标志性的黑色高领毛衣,尽管北京的三月还算不上暖和。周瀚文四十出头,头发剃得很短,说话的时候习惯性地转动手里的笔,像是在拆解什么看不见的方程。

「我们拿到了一个新的数据集。」周瀚文说,屏幕上投射出一张幻灯片,上面是密密麻麻的数据表格。「不是普通的信贷数据。是时序行为数据——用户在过去十二个月里的每一次点击、每一笔交易、每一次位置移动。维度超过两千个。」

林远舟皱了皱眉。两千个维度的时序数据,这不是普通的风控模型能消化的。

「客户是谁?」赵琳问。

「这个暂时不方便说。」周瀚文转笔的动作停了一下。「但你们可以理解为,这是一个……更大尺度的预测项目。不只是预测一个人下个月还不还钱,而是预测他未来三年、五年、十年的生活轨迹。」

会议室里安静了几秒。

「预测十年的生活轨迹?」林远舟忍不住开口。「这需要的不仅仅是行为数据。你需要基因组、医疗记录、教育背景、社交网络——」

「我们都有。」周瀚文打断他,语气平淡,像是在说今天中午食堂有红烧肉。「数据已经脱敏了。合法合规。」

林远舟看着周瀚文的眼睛。那双眼睛没有闪躲,但也没有多余的热情。林远舟在拓扑时序三年,见过周瀚文各种表情——兴奋的时候会微微眯眼,焦虑的时候会用指甲敲桌面,撒谎的时候——

他不确定。他从未见过周瀚文撒谎。

「好。」赵琳替所有人说了。「什么时候开始?」

「今天。」

会后,林远舟回到工位,打开电脑,下载数据集。

数据量确实大。两百GB的压缩包,解压之后超过一TB。他写了个脚本先看数据结构,然后愣住了。

数据里有一列他从未见过的字段,名叫「drift_score」。翻译过来大概是「漂移分数」。他翻了翻数据字典,上面只写了一行字:用户与最优时间线的偏离程度,0-1之间,越小越优。

最优时间线?

他给周瀚文发消息问这个字段的含义。五分钟后收到回复:「先别管那个字段。用其他的先跑模型。」

林远舟盯着那行字看了很久,然后把它截了图,存到了一个叫「疑问」的文件夹里。这是他的习惯——遇到解释不了的东西,先存下来,不急着追问。他相信时间会把答案送到面前,就像他相信算法会从数据中浮现出真相。

但他不知道的是,这一次,时间送来的不是答案,而是一个问题。

模型跑了一周。

林远舟用了Transformer架构——就是那种让ChatGPT火起来的注意力机制——来处理两千维的时序数据。效果出奇地好。在测试集上,模型能以89%的准确率预测用户未来一年的收入变化,以76%的准确率预测未来三年的职业变动。

这些数字在风控领域已经足够惊人。但真正让林远舟不安的,不是准确率,而是模型学到的特征。

他做了特征重要性分析,排在前五的分别是:

  1. sleep_pattern(睡眠模式)
  2. micro_location_variance(微观位置方差)
  3. social_density_change(社交密度变化率)
  4. drift_score(漂移分数)
  5. impulse_purchase_freq(冲动消费频率)

其中第四个就是那个神秘的漂移分数。尽管周瀚文让他忽略,但模型自己找到了它,并且赋予它极高的权重。

林远舟开始认真研究这个字段。

他选了五个用户,手动追溯他们的drift_score变化曲线。为了保护隐私,数据是脱敏的——没有姓名,只有编号。但行为数据太详细了,详细到他觉得自己几乎能看见这些人的一天。

用户#10234,女,35岁左右(从消费模式推断),住在朝阳区。她的drift_score在过去半年里从0.12缓慢上升到0.31。同时,她的消费模式出现了微妙的变化:从固定在三家餐厅用餐,变成了随机选择;从每周三次健身房,变成了不规则的运动记录(有时深夜跑步,有时清晨游泳);她的位置方差——也就是每天移动范围的波动——增大了三倍。

林远舟看着这些数据,脑海里浮现出一个画面:一个三十多岁的女人,原本过着规律的生活,突然开始失眠,开始在城市的不同角落游荡,像一只失去了方向感的候鸟。

她的生活正在「漂移」。

用户#07821,男,50岁左右,住在海淀区。他的drift_score更高,0.47。他的行为数据显示,他在过去一年里换了三份工作,搬了两次家,社交密度从每月与12个人有线下互动,下降到了3个。他的冲动消费频率却在上升——买了一台昂贵的相机,一周后挂在二手平台;订了一张去大理的机票,起飞前三天退了;在网上订购了一整套露营装备,快递到的时候拒收了。

像是一个人在反复做出改变生活的决定,又在最后一刻退缩。

林远舟把这些观察写在笔记本上,然后发现自己在无意识中画了一条曲线——一条从左下角向右上角攀升的线,像某种不可逆的增长。他标注了「drift_score上升 = 生活失序?」然后画了个问号。

那天晚上回到出租屋,他给父亲打了个电话。

父亲林建国住在石家庄,退休工人,六十二岁,身体一直不太好——高血压、轻微的糖尿病、腰椎间盘突出。这些都不是大病,但加在一起,就像一座年久失修的房子,到处都在漏风。

「爸,最近怎么样?」

「挺好的。你妈做了红烧带鱼,吃不完。」父亲的声音从电话里传来,带着一点含糊——他知道那是因为父亲的假牙又松了,但每次提出来,父亲都说「没事,还能用」。

「体检的事你别忘了,下月十五号。」

「知道知道。你别老操心我,好好工作。」

「嗯。」

挂了电话,林远舟坐在出租屋的阳台上抽烟。阳台上有一盆他养了两年的薄荷,叶子开始发黄,他忘了浇水。远处是北京三环的夜景,灯光密密麻麻,像一片凝固的数据矩阵。

他忽然想到一个问题:如果他拥有父亲过去十二个月的全部行为数据,他能不能预测父亲未来十年的健康轨迹?

答案是可以。至少在概率意义上可以。

但预测了又能怎样?知道一个人会在某一天倒下,并不能阻止那一天的到来。就像天气预报告诉你明天有雨,你可以带伞,但你不能让天空不放晴。

他掐灭烟,回去睡觉。

梦里,他看见一条时间线。一条像丝线一样发光的线,从过去延伸到未来,线上挂满了细小的光点,每一个光点都是一个事件——一次心跳、一次呼吸、一次微笑、一次叹息。他伸手去触碰那些光点,指尖穿过了它们,像穿过了便利店冰柜里的那罐咖啡。

四月第二周,周瀚文召集了一个小型会议。除了林远舟和赵琳,还有另外两个工程师——陈默和张晓丹。陈默是公司的首席数据工程师,四十多岁,之前在某大厂做了十五年基础设施,头发白了一半,说话慢,但每句话都像经过编译一样精确。张晓丹是应届博士,清华计算机系,研究方向是对抗学习,性格安静,工位上永远放着一本非技术类的书——最近在看马尔克斯的《百年孤独》。

「我直说。」周瀚文关上门,拉上窗帘,只开了投影仪。「这个项目的真正目标,不是风控。」

赵琳看了林远舟一眼。林远舟没有表情。

「客户是一家……怎么说呢,机构。名字我不能说,但你们可以理解为,他们正在做一项关于’时间价值’的研究。」

「时间价值?」陈默推了推眼镜。「金融里的时间价值是指货币的时间价值——今天的一块钱比明天的一块钱更值钱。但我不觉得你说的这个。」

「不是。」周瀚文的笔转得很快。「是字面意义上的时间价值。他们想知道:一个人的时间,能不能被量化、被交易、被……重新分配。」

房间里的沉默持续了至少十秒。

「你是说……时间交易?」张晓丹的声音很轻,像是怕惊动什么。「把一个人的时间给另一个人?」

「更准确地说,是把一个人在某个时间点的状态,与另一个人在另一个时间点的状态进行交换。或者说——对齐。」周瀚文在白板上画了两条平行线,然后在中间画了一个双向箭头。「时空交换。」

林远舟的脑海里闪过便利店里穿过咖啡罐的那一秒。

「我知道这听起来很荒谬。」周瀚文继续说,语气没有任何自我辩护的意思。「但数据是真实的。drift_score就是证据——它测量的是一个人偏离’最优时间线’的程度。而这个偏离,在某些条件下,可以被修正。」

「修正?」赵琳的声音里第一次出现了明显的怀疑。「修正一个人的人生轨迹?」

「你可以把它理解为……给迷路的人一个指南针。」

「不,」林远舟忽然开口,声音比他预期的要大。「你说的不是指南针。你说是交换。交换意味着有人给出,有人得到。谁给出什么?谁得到什么?」

周瀚文看着他,手里的笔停了。

「你很敏锐,远舟。」他说。「但我现在不能回答这个问题。我能告诉你们的是:你们需要做的,是建一个模型,能够识别出drift_score异常高的人群,然后对他们进行分类——哪些人是可以通过外部干预修正的,哪些人不行。」

「外部干预是什么意思?」张晓丹问。

「那是客户的事。你们只需要做好分类。」

会议散了之后,林远舟在走廊里拦住了周瀚文。

「周总,我需要知道更多。」

「你不需要。」

「我需要。」林远舟的声音很平静,但他的手指在裤兜里攥紧了。「如果我在为一个我不理解的项目工作,我至少需要知道它的边界在哪里。」

周瀚文看了他很长时间。走廊里的灯管发出细微的嗡嗡声,像是某种低频的共振。

「你有没有过一种感觉,」周瀚文忽然说,语气变得不像一个CTO,更像一个深夜在酒吧里打开话匣子的人,「某个瞬间,你觉得自己走错了路?不是选错了专业、找错了工作那种走错,而是——你的整个人生轨迹,在某一个岔路口,拐向了一个不属于你的方向?」

林远舟没有说话。

「如果你有过这种感觉,」周瀚文说,「那你就在drift_score的曲线上了。而我们正在做的事,就是找到那个岔路口,看看另一条路是什么。」

他拍了拍林远舟的肩膀,转身走了。

林远舟站在走廊里,看着他的背影消失在拐角。然后他低头看了看自己的手——右手,刚才攥得太紧,指甲在掌心留下了四个月牙形的红印。

那天晚上他没有回家,而是在公司加了一整夜的班。他把五个用户的行为数据全部导出来,写了一个可视化工具,把每个人的drift_score画成一条曲线,叠加上他们的生活事件——搬家、换工作、住院、旅行、分手、结婚。

他发现了一个规律。

drift_score不是线性上升的。它在某几个时间点会出现跳跃——突然从0.1跳到0.3,从0.3跳到0.5。而这些跳跃点,无一例外地对应着人生中的重大决定。不是事件本身,而是做决定的时刻。

也就是说,drift_score测量的不是「你的生活有多糟糕」,而是「你离你本应走的路有多远」。

这个发现让他的手开始发抖。

因为如果这个模型是对的,那么它暗示着一件可怕的事情——每个人都有一个「本应走的路」,一个最优的时间线,一个预先确定的命运。而自由意志——那些让我们偏离轨道的选择——不是别的,正是一种可以被量化的误差。

他关掉电脑,走到窗边。天快亮了,对面楼那盆绿萝还没有出现。他忽然觉得那盆绿萝可能不会出现了——也许它的主人辞职了,也许调了工位,也许只是把它搬回家了。一个微小的变化,一个无关紧要的drift。

但他知道,从今天开始,他会用不同的眼光看待每一个微小的变化。

四月下旬,模型的第一版完成了。

准确率比预想的还要高。在测试集上,分类模型能以91%的准确率将高drift_score用户分为「可修正」和「不可修正」两类。周瀚文对结果很满意,但他的满意里带着一种林远舟无法辨认的东西——不是兴奋,更像是如释重负。

「下一步,」周瀚文在项目群里发了一条消息,「我们需要在小范围内进行实地验证。」

所谓实地验证,就是从「可修正」的用户中选取几个样本,由团队进行线下接触——不是接触本人,而是观察他们的生活状态,验证模型的判断是否准确。

林远舟被分配了三个用户。其中一个是#10234——那个他之前手动分析过的、drift_score从0.12上升到0.31的女性用户。

为了保护隐私,他们没有用户的真实姓名和地址,只有脱敏后的位置数据。但行为数据的颗粒度太细了,林远舟几乎可以确定她住在朝阳区望京附近——从她的打车记录(脱敏后的路线轨迹)和消费地点(餐厅的模糊定位)可以推断出一个大概范围。

他花了一个周末,在望京的几家咖啡馆里坐着,试图从人群中辨认出一个符合数据画像的人。

这很荒谬。他知道。一个算法工程师,坐在咖啡馆里,用肉眼做目标检测。

但他还是去了。

周六下午三点,他在一家叫「碎片」的咖啡馆里坐了两个小时,喝了一杯拿铁和一杯美式,看了四十七个进出的客人。没有收获。他正准备离开的时候,门口进来一个女人——三十多岁,穿着一件洗得发白的蓝色衬衫,头发扎成一个松散的马尾,手里拎着一个帆布袋。她点了一杯黑咖啡,没加糖也没加奶,坐在靠窗的位置,然后开始盯着窗外发呆。

林远舟观察了她二十分钟。她没有看手机,没有看书,没有做任何事——就是发呆。偶尔她会低头看一眼杯子里的咖啡,像是在确认它还存在着。

他想起了数据里的一条记录:#10234在过去三个月里,每天的「屏幕使用时间」从8.2小时下降到了3.1小时。

这个女人可能就是#10234。也可能不是。他没有办法确认,也不应该确认。

他站起来,走出了咖啡馆。经过她身边的时候,她抬头看了他一眼。那一眼很短,不到一秒钟,但林远舟感觉到了一种奇怪的熟悉感——不是他认识她,而是他觉得自己应该认识她。就像在一个陌生的城市走过一条从未走过的街道,却觉得每一家店铺都似曾相识。

他加快脚步,走出了咖啡馆。

那天晚上,他做了一个梦。梦里他站在一条分叉路上,左边是一条柏油马路,笔直地通向远方;右边是一条泥巴小路,弯弯曲曲,消失在一片雾里。他站在路口,两边的风景都很陌生,但他知道——不是推断,不是猜测,而是真的知道——右边的路是他应该走的。

但他迈出的那一步,走向了左边。

五月初,父亲在电话里说了一件事。

「远舟,我跟你说个事,你别急啊。」

在林远舟的经验里,凡是开头要求「别急」的事情,都值得急。

「上个月体检,医生说肺部有个结节。不大,说是良性的可能性高,但要定期复查。」

「多大?」

「六毫米。医生说不用手术,观察就行。」

六毫米的肺结节。在临床上,这确实是一个「大概率良性、只需随访」的尺寸。但林远舟的大脑自动调出了他的模型——如果他把父亲的数据输入进去,drift_score会是多少?

他没有父亲的行为数据。当然没有。那是父亲的隐私,他不可能也不应该获取。但模型的逻辑已经刻在了他的思维方式里。他开始不由自主地分析:父亲退休后社交密度下降(每天只和母亲说话,偶尔和老同事通电话),运动量减少(腰不好,散步从每天三公里减到一公里),睡眠质量变差(母亲提过,父亲经常凌晨三四点醒来)。

这些,在模型里,都是drift_score上升的特征。

他的父亲正在漂移。

挂了电话之后,林远舟打开电脑,试图用公开的医学数据估算父亲的drift_score。这不是模型原本的用途,但他还是做了。他输入了年龄、性别、基础疾病、生活习惯(基于他对父亲的了解),以及那个六毫米的肺结节。

结果:drift_score = 0.38。

可修正。

他盯着屏幕上那两个字,心跳加速。可修正。在模型的分类里,这意味着「存在一种外部干预,可以使drift_score降低」。

什么干预?

他不知道。

他给周瀚文发了一条消息:「周总,我想知道’外部干预’的具体含义。不是作为员工,是作为——作为一个可能需要这个干预的人的家属。」

这一次,周瀚文没有在五分钟内回复。他过了整整四个小时才回复,而且没有用文字,而是直接打了电话。

「你在公司吗?」

「在家。」

「明天早上八点,来我办公室。」

第二天早上,林远舟比平时早到了一个小时。周瀚文的办公室在楼层的一角,门是关着的。他敲了敲,门从里面打开了。

办公室里除了周瀚文,还有一个人。一个女人,五十岁左右,头发花白,穿着一件深蓝色的西装外套,坐姿端正得像一把尺子。她的眼神很平静,但那种平静不是温和,而是经过训练的——林远舟见过这种眼神,在做审计的人脸上。

「这位是顾岚。」周瀚文说。「她是……客户方的代表。」

顾岚微微点头。「林远舟。我看过你写的模型文档,很清晰。」

「谢谢。」林远舟坐下来,看着她。「我想知道外部干预是什么。」

顾岚和周瀚文交换了一个眼神。周瀚文微微点头。

「我们开发了一套系统,」顾岚说,声音平稳得像在朗读说明书,「叫做时空对齐系统。简单来说,它可以识别一个人在某个时间点偏离最优路径的偏差,然后通过一种……我们可以称之为’共振’的方式,将偏差修正。」

「共振?」

「你可以把它理解为一种信息干预。不是药物,不是手术,不是心理咨询。是一种——」她想了想措辞,「频率干预。人是一个复杂的动态系统,和任何动态系统一样,它有共振频率。当你用正确的频率去扰动它,它可以自发地回到稳定轨道上。」

林远舟沉默了很长时间。

「你们已经用过这个系统了?」

「在小范围内。十二个测试对象。」

「结果呢?」

「十一个人的drift_score显著下降。生活质量改善——睡眠恢复、社交增加、冲动行为减少。」

「第十二个人呢?」

顾岚的平静第一次出现了一丝裂痕。很小的裂痕,像瓷器上的发丝纹,不仔细看根本看不到。

「第十二个人的drift_score没有下降。」她说。「但它也没有上升。它停住了。」

「停住是什么意思?」

「就是字面意思。他的人生——从数据上看——停住了。不再变化。每天的轨迹完全相同,像一段被循环播放的录像。」

「他人呢?」

「还活着。身体很健康。只是……」她停顿了一下。「只是不再做任何选择了。不选择吃什么,不选择去哪里,不选择见什么人。他每天重复着完全相同的一天。」

林远舟觉得胃里翻了一下。

「所以这个系统有风险。」

「任何干预都有风险。」顾岚的声音恢复了平静。「但我们的成功率是十一分之十一——如果你把第十二个人视为’无效果’而非’恶化’的话。」

「一个不再做选择的人,你不觉得这是恶化吗?」

顾岚看着他,没有回答。

那天下午,林远舟没有回工位。他请了半天假,坐地铁去了天安门广场。

不是有什么目的,只是想走走。

五月的北京已经开始热了,广场上的游客穿着短袖,举着手机拍照。林远舟在人民英雄纪念碑旁边站了一会儿,看着那些刻上去的名字。他们没有选择——战争替他们做了选择。而活着的人,每天都要做无数个选择:吃什么,穿什么,走哪条路,见什么人,爱谁,离开谁。

选择就是drift。每一次选择都让我们偏离那个「最优路径」。但如果没有drift,我们就是第十二个人——活着,但不再活着。

他在广场上坐了一个小时,看天上的云。北京的云在五月很高,很薄,像一层一层被拉伸的棉絮。他想起小时候在石家庄,夏天的傍晚,父亲会带他到楼顶看云。父亲说:「你看那朵云,像不像一条鱼?」他说不像,像一只兔子。父亲说:「你看,同一朵云,你看见了兔子,我看见了鱼。谁是对的?」

他说:「都对。」

父亲笑了,说:「对。都对。这就是人厉害的地方——同样一个东西,每个人看到的都不一样。」

他想起了drift_score。想起了那个试图量化人类偏离程度的算法。算法不会看云。算法不知道同一朵云可以是鱼也可以是兔子。算法只知道数据点、距离、偏差。

但算法可能是对的。至少在某种冷酷的、数学的意义上。

他拿出手机,给周瀚文发了一条消息:「我想让我父亲加入测试。」

接下来的两周,林远舟经历了一种奇特的认知分裂。

白天,他继续优化模型。他改进了特征工程,加入了更多的时序依赖关系,把分类准确率从91%提高到了94%。他和张晓丹一起写了一篇技术报告,用学术的语言描述模型架构和实验结果,小心翼翼地避开了所有关于「时空对齐系统」的内容。

晚上,他回到出租屋,研究顾岚给他的资料——一份关于时空对齐系统的技术白皮书,只有三十页,但每一页都让他读得头皮发麻。

系统的原理大致如下:

每个人的生活轨迹可以用一个高维状态空间中的路径来表示。这个状态空间的维度包括所有可以量化的变量——生理指标、行为模式、社交网络、环境因素等等。在这个空间中,存在一条「最优路径」,就是drift_score为零的路径——一个人「本应走的路」。

但这里的最优不是道德意义上的最优,而是信息论意义上的最优——这条路径上的状态变化最符合某种信息熵最小的原则。换句话说,最不意外的路径就是最优路径。

时空对齐系统通过一种叫做「量子共振」的技术——白皮书写到这里变得很模糊,大量使用了「量子」「共振」「对齐」这些词,但缺乏具体的物理描述——来扰动一个人的状态,使其向最优路径靠拢。

林远舟不确定他相信这套说辞。但他确定的是,测试结果是真的。十一个测试对象的生活确实改善了——他亲眼看了数据。睡眠恢复、社交增加、焦虑指数下降。这不是安慰剂效应,因为测试对象并不知道自己在被干预。

他也确定了另一件事:他父亲的drift_score是0.38,在「可修正」的范围内。

他做了一个决定。

五月十五日,他带着父亲去北京做了全面体检。体检结果比他预期的略差一些——肺结节没有增大,但血液检查显示了一些炎症指标的升高,医生建议进一步检查。父亲一如既往地说「没事没事」,但林远舟注意到父亲走路的速度比上次见面又慢了一点。

五月十八日,他通过顾岚,把父亲的数据输入了时空对齐系统。

系统给出的结果是:可修正。建议干预频率:每周三次,每次二十分钟。干预方式:非接触式频率共振(白皮书里对这个术语的解释是「通过特定频率的电磁波对人体进行远程扰动」,但林远舟觉得这个解释本身就需要被解释)。

他开始了对父亲的远程干预。

具体的方式很简单:他只需要在系统中确认一个时间,系统会自动运行。父亲不需要知道任何事情。他只是在自己的生活中,不知不觉地被「对齐」。

这让林远舟感到不安。但他告诉自己,这和吃药没有区别——父亲每天吃降压药,也不知道药片在分子层面做了什么。信任系统,和信任药物,有什么本质的区别?

他不确定。但他开始了。

干预开始后的第三天,林远舟收到了赵琳的一条消息。

「远舟,你最近有没有觉得什么不对?」

「什么不对?」

「就是……物理上的不对。比如你拿东西的时候有没有觉得——」

他的手指悬在键盘上方。

「——觉得手穿过去了?」

他看着这条消息,心脏猛跳了一下。

「你也感觉到了?」

「不只是我。陈默也说了。他说上周在茶水间倒水,杯子从手里滑下去了,但不是正常的滑下去——他说杯子像是穿过他的手掌。」

林远舟靠在椅背上,深吸了一口气。

「可能只是太累了。」

「也许是。」赵琳的回复来得很快,但他觉得她并不相信这个解释。

他打开了公司的内部论坛——一个很少有人用的讨论板——搜索了「穿过」「消失」「透明」等关键词。找到了三条帖子,都是最近一个月发的,都是匿名。

第一条:「有没有人最近感觉物体变得……不实在?我刚才碰到了一个杯子,感觉手指穿过去了。」

第二条:「电梯里有一秒钟,我觉得按钮是假的。就是那种——你知道按钮应该是硬的,但我按下去的时候感觉它是软的,像果冻。」

第三条:「今天早上在地铁上,我低头看自己的手,有一瞬间觉得它不是我的手。不是麻木那种感觉,是——它不属于我的感觉。」

三条帖子,三个不同的人,三个相似的经历。

林远舟把这些截图存到了「疑问」文件夹里。然后他做了一件他之前没有做过的事——他打开了drift_score的全量数据,不是看某个用户的,而是看所有用户的平均值。

平均值在过去三个月里,从0.18上升到了0.23。

这不是一个人的漂移。这是所有人的漂移。

他坐在那里,看着屏幕上的曲线,感觉到了一种他无法命名的东西。不是恐惧,恐惧是有具体对象的。这个东西没有对象。它弥漫在空气里,像北京五月柳絮一样无处不在,但你抓不住它。

他想起马尔克斯。张晓丹工位上那本《百年孤独》——马孔多镇上的人突然患上了一种失眠症,他们不再睡觉,然后开始遗忘事物的名称和用途。他们给每一样东西贴上标签——「这是牛」「这是山羊」「这是猪」——以免忘记。

也许他们需要给整个城市贴上标签:「这是你的手」「这是你的杯子」「这是你的生活」「这是你的时间」。

以免忘记。

五月二十日,父亲在电话里的声音变了。

不是变得更好或更坏,而是变得——更稳定。像一台原本有些抖动的发动机被校准了,运行得更平顺了。他的语速变得均匀,笑声出现得更规律,甚至开始主动聊一些以前不会聊的话题。

「远舟,我昨天去公园下棋了。赢了三盘。」

「你以前不下棋的。」

「以前不下了,现在开始下了。退休了嘛,总得找点事做。」

林远舟愣了一下。父亲退休三年了,从来没有「找点事做」的念头。他每天的生活就是:早上六点起床,买菜,回来吃早饭,看新闻,午休,下午去小区里溜达一圈,回来吃晚饭,看电视剧,九点半睡觉。像一台设定好程序的机器,日复一日。

现在这台机器的程序被修改了。它变得更「优化」了——下棋、社交、运动量增加、饮食更规律。

但这个「优化」是谁定义的?

他想起了白皮书里的话:「最不意外的路径就是最优路径。」一个每天下棋、作息规律、社交活跃的退休老人,确实比一个每天窝在家里看电视的老人更「不意外」。但这真的是最优的吗?

如果最优意味着「最不意外」,那么最优的生活就是最无聊的生活——每一个明天都完全可以被今天预测。

他摇了摇头,把这个想法赶走。父亲在电话里笑了,声音明亮而稳定。他不应该在这种时候质疑。

「下棋好啊,爸。下次回去你教我。」

「行。你小时候学过,忘了?」

「忘了。」

「没事,重新教。棋这东西,会了就不会忘。跟游泳一样。」

挂了电话,林远舟打开了时空对齐系统的后台。父亲的drift_score从0.38降到了0.27。系统显示:「干预有效。建议继续当前频率。」

他点了一下「确认」,然后关掉了页面。

屏幕暗下来的时候,他在黑色的镜面反射里看到了自己的脸。一张二十九岁的脸,有点疲惫,有点困惑,有点——漂移。

变化来得比他预想的快。

五月二十三日,张晓丹在工位上忽然站起来,说了一句所有人都听到但没有所有人都能理解的话:

「我看到两条时间线。」

她说得很平静,不像是在说胡话,更像是在陈述一个观测结果——像她每天看数据一样,发现了某个异常值,然后报告出来。

赵琳第一个反应过来。「晓丹,你没事吧?」

「我没事。」张晓丹坐回去,推了推眼镜。「就是——刚才有一瞬间,我看到了两条。一条是我现在坐在这里,另一条是——」

她停住了。

「另一条是什么?」林远舟问。

张晓丹看着他。她的眼睛在镜片后面很亮,像两颗被擦拭过的玻璃珠。

「另一条是我没有来北京。我留在了清华读博后。我在实验室里,面前是一台量子计算机的模拟器,跑着一个和我现在做的完全不同的模型。」

「那只是想象。」赵琳说。「谁都会想’如果当初怎样怎样’。」

「不是想象。」张晓丹摇头。「我看到了数据。不是脑子里的画面——是真的看到了,像投影一样,叠加在我眼前的现实上面。持续了大概三秒钟。」

林远舟的脊背开始发凉。

他想起了drift_score。想起了「最优路径」。想起了那个问题:每个人都有一个「本应走的路」。

如果时空对齐系统真的能影响人的状态,那它是否也能让人看到那条没有走过的路?

他走到张晓丹的工位旁边,低声问:「你的drift_score是多少?」

张晓丹抬头看他。「我不知道那个东西跟我有什么关系。」

「你知道吗?」

「我知道你在做什么,远舟。」张晓丹的声音很轻。「你建了一个给人打分的系统,然后你在用那个系统给所有人——包括你父亲——做实验。」

林远舟的手指开始发冷。

「我不是——」

「你是。」张晓丹的语气没有指责,只有陈述事实的平静。「你上周五晚上九点十七分在系统后台操作了三次,每次都是同一个用户ID。那个ID的行为数据画像和石家庄的一个退休工人完全吻合。」

林远舟沉默了。

「我不会告诉任何人。」张晓丹说。「但你得知道——你在做的事情,和我们论文里研究的对抗攻击,本质上没有区别。你在对一个人施加一种他不知道的干扰,试图改变他的输出。这不是治疗,这是——」

「是什么?」

「是控制。」

十一

五月二十五日,林远舟做了一件他自己也没有预料到的事。

他关掉了对父亲的干预。

操作很简单——在系统后台,找到父亲的用户ID,点击「暂停干预」,确认。一个蓝色的按钮变成了灰色。没有仪式,没有确认对话框,没有任何戏剧性的瞬间。就像关掉一盏灯。

他关掉之后,坐在椅子上,等了很久。

什么也没有发生。窗外的天还是灰的,键盘上还是那些字母,他的手还是那双手。没有世界崩塌,没有时间断裂,没有任何科幻电影里的特效。

但他知道,有些东西已经不一样了。

他不知道父亲会不会感觉到变化。他不知道那个在公园下棋、声音明亮的老人会不会慢慢回到原来那个窝在家里看电视的状态。他不知道自己是不是做了一个错误的决定。

他只知道,张晓丹说得对。

他不想控制父亲。哪怕那个控制让父亲变得更好。因为「更好」是一个他自己定义的词,而他无权为另一个人定义什么是好。

那天晚上他失眠了。躺在床上看天花板,脑子里像跑马灯一样转个不停。他试图理清思路,但思绪像那罐咖啡一样,他的手指穿过它,抓不住。

凌晨三点,他爬起来,打开电脑,开始写一封邮件。

收件人是周瀚文。

内容只有三行:

周总,

我请求退出时空对齐项目。

另外,我建议公司暂停这个项目,直到我们弄清楚它对第十二个人的长期影响。

他看了很久,没有点发送。

十二

五月二十六日早上,林远舟走进公司的时候,感觉到了一种异样的气氛。

前台的小姑娘在打电话,声音压得很低。走廊里有两个不认识的人——穿着深色西装,表情严肃,像是某种官方机构的人。

他走到工位,发现赵琳已经在了。赵琳看到他,站起来,走到他面前。

「出事了。」

「什么事?」

「陈默。」

林远舟的心沉了一下。「陈默怎么了?」

「他昨晚在公司加班到很晚。凌晨一点多的时候,他给周瀚文发了一条消息,说他在系统后台发现了一个异常——不是用户的异常,是系统本身的异常。他说时空对齐系统的共振频率不是在修正人的状态,而是在——」

赵琳停了一下,像是在选择措辞。

「在什么?」

「在同步。他说系统不是在把人拉回最优路径,而是在把所有人拉向同一条路径。所有人在被干预之后,行为模式都在趋同——不是变得更好,而是变得更像。」

林远舟想起了那个drift_score平均值从0.18上升到0.23的曲线。所有人的漂移。

「然后呢?」

「然后——陈默失联了。手机打不通,家里没人。周瀚文报了警。」

林远舟看向周瀚文的办公室。门是关着的,窗帘拉上了。透过门缝,可以看到里面有不止两个人在说话。

「那两个西装——」

「是公安局的。经侦。」赵琳的声音压得更低了。「远舟,这个项目到底是怎么回事?」

林远舟看着她。赵琳的眼神里有恐惧,但更多的是困惑——一个产品经理面对一个她无法理解的产品时的困惑。

「我也不完全清楚。」他说。这是实话。

他回到工位,打开电脑,登录系统后台。他想看看陈默最后发现的那个异常。

系统后台的日志显示,陈默在凌晨一点十二分访问了共振频率的底层参数。那些参数是加密的,但陈默作为首席数据工程师有最高权限。他打开了一个叫「alignment_matrix」的文件——对齐矩阵。

林远舟也打开了那个文件。

对齐矩阵是一个巨大的表格,行和列都是用户ID,单元格里的数值是两个用户之间的「对齐系数」。林远舟看了一会儿,发现了一个让他头皮发麻的模式:

对齐系数最高的用户对,并不是drift_score最接近的用户对,而是行为模式差异最大的用户对。

也就是说,系统在做的不是让相似的人更相似,而是让不同的人变得相似。它在抹平差异。它像一个巨大的熨斗,把所有褶皱都烫平。

而褶皱,就是人的个性、选择、drift——所有让人之所以成为人的东西。

他关掉了文件,手指发抖。

张晓丹从工位那边看过来。两人对视了一秒,不需要语言。张晓丹那天说的话在林远舟脑海里回响:「这不是治疗,这是控制。」

不,比控制更可怕。这是同化。

十三

五月二十七日。陈默依然失联。

警方调查了他的行踪——最后的监控画面显示他凌晨一点四十分离开了公司大楼,走向地铁站。然后在地铁站的入口处,他忽然停下了脚步,站了大约三十秒,然后转身往回走。监控显示他沿着一条小路走进了写字楼后面的一片绿化带,然后消失在摄像头的覆盖范围之外。

手机信号最后出现在绿化带附近的一个基站,时间是凌晨一点五十三分。之后就没有了。

林远舟去了那片绿化带。很小的一块地方,几棵银杏树,一些灌木,两张长椅,一个垃圾桶。他绕着走了两圈,什么也没有发现。

他坐在长椅上,抬头看天。北京的五月,天空有时候会非常蓝,蓝得不真实,像一块巨大的屏幕。他想起张晓丹说她看到了两条时间线——像投影一样,叠加在现实上面。

如果陈默也看到了呢?

如果陈默在凌晨的绿化带里看到了另一条时间线——一条他走了另一条路的时间线——然后选择了走进去呢?

这个想法太荒谬了。林远舟知道。但在过去几周里,「荒谬」这个概念已经像便利店的咖啡罐一样,变得不那么结实了。

他的手机响了。是父亲。

「远舟,我今天没去下棋。」

「怎么了?」

「不想去。」父亲的语气又回到了那种熟悉的、略带含糊的平淡。「就在家待着。看看电视。」

林远舟的心紧了一下。自从他关掉了干预,父亲的drift_score——他假设——可能在回升。回到了那个0.38的、正在漂移的状态。

但这个「正在漂移」的状态,才是父亲自己的状态。不是系统优化的、下棋的、声音明亮的父亲,而是那个真实的、有点懒的、窝在家里看电视的父亲。

「爸,不想去就不去。在家歇着挺好。」

「嗯。你妈炖了排骨汤。」

「好。下次回去我喝。」

「好。」

挂了电话,林远舟发现自己没有之前那种焦虑了。那种「我必须修正他」的焦虑消失了。取而代之的是一种更平静、更沉重的东西——接受。

接受父亲会老,会病,会以他自己的节奏走向某个终点。接受自己无法用算法去优化这个过程。接受drift——偏离——是活着的代价,也是活着的证据。

他站起来,走出了绿化带。经过一棵银杏树的时候,他伸手摸了摸树干。粗糙的树皮,坚实的触感。没有穿过,没有消失。真实。

十四

五月二十八日。林远舟做出了最后的决定。

他约了顾岚在公司附近的一家茶馆见面。茶馆很小,只有五张桌子,墙上挂着一幅没有落款的水墨画——一棵歪脖子松树,顽强地长在悬崖边上。偏离了所有正常松树应该生长的方向,但活得比谁都久。

顾岚来了。还是那件深蓝色西装外套,还是那种训练有素的平静。

「林远舟。你找我。」

「我要退出项目。」

「可以。但我需要知道原因。」

「原因是你和周总没有告诉我全部的真相。」

顾岚端起茶杯,喝了一口,放下。动作很慢,像是在给某个程序留出缓冲时间。

「你想知道什么?」

「第一,时空对齐系统的共振频率不是在修正个体,而是在把所有人同步到一条统一的路径上。对吗?」

顾岚没有否认。

「第二,陈默发现了这一点,然后他消失了。他和第十二个人一样——被系统’停住’了,还是更糟?」

「陈默的情况很特殊。」顾岚的声音第一次出现了某种波动,很小,但林远舟捕捉到了。「他不是被系统干预的对象。他是系统的操作者。当他触发了alignment_matrix的时候,系统对他产生了……反向反馈。」

「什么意思?」

「系统不是单向的。它在干预对象的同时,也在读取干预者的状态。当陈默的对齐矩阵被打开时,系统检测到他的drift_score极高——超过0.7——」

「0.7?」林远舟打断了。「我以为0.5就已经是’不可修正’了。」

「0.5是不可通过常规干预修正。0.7以上——系统会自动触发一种更激进的干预方式。」

「什么方式?」

顾岚沉默了。

「什么方式?」林远舟重复了一遍,声音比他预期的要硬。

「时间凝固。」顾岚说这四个字的时候,语气非常轻,像是在说一个她不确定应该存在的词。「系统会把drift_score超过0.7的人的状态完全锁定——不是像第十二个人那样的行为重复,而是物理层面上的锁定。他们的时间停止了。」

林远舟的脑子像被电击了一下。

「你的意思是——陈默现在在哪里,他处于一种——时间停止的状态?」

「他在绿化带里。我们的团队能定位到他。但他处于一种……我们无法用常规手段接触的状态。他的生命体征还在,但极其微弱,像是被冻住了,但没有低温。」

林远舟闭上了眼睛。

「所以系统不是什么量子共振。系统是一种——把人的时间当成可以操控的变量的东西。」

「是。」

「而你们从一开始就知道这个。」

「我们知道一部分。不是全部。这个系统的核心算法不是我们写的——是客户提供的。我们只是应用方。」

「客户到底是谁?」

顾岚看着他。那种训练有素的平静终于碎了,露出了下面的东西——不是恐惧,是疲倦。一种「知道得太多」的疲倦。

「我不能说。但我可以告诉你:他们不是中国人。也不是任何国家的政府。他们是——」她犹豫了一下,「你可以把他们理解为一群非常聪明的人,他们相信人类文明的唯一出路是消除个体差异。不是通过教育,不是通过洗脑,而是通过——物理层面的同步。把所有人都拉到同一条时间线上。没有drift,没有偏离,没有——」

「没有人。」林远舟替她说完了。

顾岚没有反驳。

十五

林远舟离开了茶馆,在街边站了很久。

五月的北京,阳光很烈,但他觉得冷。不是身体的冷,是认知的冷——一种理解框架被打破之后的寒意。

他想起了很多事情。想起了导师说的「有天赋的直觉」——他的直觉确实告诉他,有些东西不对。从便利店里的那罐咖啡开始,从drift_score那个字段开始,从那条分叉路的梦开始。

他的直觉一直都在报警。只是他没有听。

或者说,他选择了不听。就像他选择用系统干预父亲——因为他害怕失去父亲,害怕那个0.38的drift_score会继续上升,害怕算法预测的那个终点的到来。

恐惧让他做出了一个控制别人的决定。

但张晓丹说得对:那不是治疗,是控制。

他拿出手机,给周瀚文发了那封在草稿箱里躺了三天的邮件。然后他又写了一封新的,发给赵琳和张晓丹,附上了alignment_matrix的截图和顾岚的原话。

最后,他给父亲打了一个电话。

「爸。」

「嗯?」

「没什么事。就是想跟你说——」

他想说什么?他想说「我爱你」,但这个词在中国人的父子关系里太重了,像一块搬不动的石头。他想说「对不起」,但父亲不知道发生了什么,道歉只会让他困惑。

「——就是想跟你说,你上次教我下棋的事,我记得。下次回去你教我。」

「行。」父亲的声音里有一丝笑意。「那你可得准备好,我最近又厉害了。」

「你之前说不下的。」

「又开始了嘛。最近在手机上看教程,学了几个新招。」

林远舟笑了。是真的笑了。不是因为系统,不是因为干预,不是因为drift_score。是因为他的父亲——那个退休三年、窝在家里看电视的父亲——自己选择了学下棋。不是因为被「对齐」,不是因为被「优化」,而是因为——他想学。

这,才是真实的drift。一个六十多岁的老人,忽然决定学下棋。这个决定在模型里是一个异常值,在drift_score的曲线上是一个向上跳跃的点。但它是真实的。它属于父亲自己。

挂了电话,林远舟走向地铁站。

地铁站的入口处,他停了一下。这里是陈默最后出现在监控里的地方。陈默在这里站了三十秒,然后转身往回走。

林远舟也站了三十秒。

他什么也没有看到。没有两条时间线,没有投影,没有叠加的图像。只有地铁站的灯光、自动售票机的嗡嗡声、一个背着书包的小女孩在楼梯上跳着走。

真实的。笨拙的。不完美的。充满了drift。

他走进了地铁站。

十六

后来的事情,是在新闻上看到的。

拓扑时序被查了。不是因为在搞什么时空对齐——那东西太科幻了,经侦大队未必理解——而是因为数据违规。两千维的用户行为数据,未经充分脱敏和授权,违反了《个人信息保护法》的多个条款。公司被罚款,周瀚文被约谈,顾岚消失了——像是从来没有存在过一样。

陈默在绿化带里被找到了。他的状态被描述为「原因不明的低体温昏迷」,送医后逐渐恢复。他醒来后对那一夜的记忆很模糊,只说了一句话:「我看到了所有的路。」

之后他辞职了,回了老家,据说在一家中学教数学。

林远舟也辞职了。他没有再找算法相关的工作。他用积蓄在石家庄开了一家小小的面馆——不是因为他特别会做面,而是因为他父亲说「开个面馆吧,我帮你看着」。

面馆不大,六张桌子,墙上没有水墨画,只有一张父亲手写的菜单,字歪歪扭扭的,但每个来吃面的人都说——这家店有家的味道。

每天下午,父亲会坐在面馆门口的一把旧椅子上,看着街上来来往往的人。他不知道什么是drift_score,不知道时空对齐,不知道他的儿子曾经试图用算法去修正他的人生。他只知道面汤要多熬一会儿,醋要放山西老陈醋,来吃面的老张头喜欢辣子多放,隔壁王阿姨不吃香菜。

这些知识没有被编码在任何数据集里。它们是活的,是随着时间自然生长的,是一个六十二岁的老人用六十二年积累下来的——不是「最优路径」,而是「他的路径」。

林远舟有时候会在打烊后坐在面馆里,看着空荡荡的桌子,想起北京的十三楼、那盆绿萝、对齐矩阵、drift_score的曲线。那些记忆像是另一个时间线上的事情——一个他走了另一条路的时间线。

那条路上的林远舟,也许还在优化模型,还在追逐更高的准确率,还在试图用算法去丈量人与最优之间的距离。那个林远舟,也许更成功,也许更「对齐」。

但这个林远舟——坐在石家庄一家小面馆里的林远舟——知道自己做了一个选择。不是最优的选择,但那是他的。

窗外,夏天的风吹过来,带着烤串的烟味和蝉鸣。他伸出手,在空气中握了一下。什么也没有穿过。风是真实的,热的,带着面粉和酱油的味道。

他握住了。

尾声

那年秋天,林远舟在整理旧物的时候,发现了一个叫「疑问」的文件夹。里面是他三月份截的图——周瀚文让他忽略drift_score的那条消息。

他看了很久,然后删掉了。

不是因为不再有疑问。而是因为有些问题,不需要答案。需要的是活着,做选择,接受drift——然后在某一个夏天的傍晚,看着天上的云,说:「像鱼。」

旁边的人说:「像兔子。」

然后两个人都笑了。都对。