虚线市场
虚线市场
一
陈渡第一次注意到那条虚线,是在一个周四的下午。
准确地说,是2025年11月13日,北京时间15点47分。他记得这么清楚,因为那是他职业生涯中最漫长的一周——连续五天,每天凌晨三点从工位上醒来,脸上印着键盘的痕迹,口水浸湿了回车键。
他在一家叫河图科技的互联网金融公司做后端开发。公司名字听起来很文化,实际上是个P2P借贷平台,不过换了个好听的说法叫智能信贷匹配。陈渡的工作是维护风控系统的数据管道——把用户的消费记录、社交关系、位置信息、搜索历史等等一切能爬到的数据,灌进一个叫河伯的模型里,然后吐出一个0到1000的分数。
分数低于300的,系统自动拒绝贷款申请。
陈渡从来没问过那些被拒绝的人后来怎么样了。这不是他的工作。他的工作是确保管道不漏水,数据不丢失,模型不停摆。
那天下午,他正在排查一个数据异常——有一条用户记录的信用评分在每个整点都会波动,从287跳到643,再跳回287,像心跳一样有规律。
可能是缓存击穿,他在技术群里发了一条消息。
没人回复。技术群里永远没人回复,除非出了线上事故。
他打开数据库,找到那条异常记录。用户ID是一串他没见过的格式:不是公司标准的UUID,而是一串看起来像古文的十六进制编码。
他复制了那段编码,粘贴到终端里,随手敲了一个查询。
结果返回的不是数据。
是一条线。
终端屏幕上,那行查询结果被渲染成了一条虚线——细小的短横线,断断续续,从屏幕左侧延伸到右侧,像是某种心电图,又像是什么东西在试着说话。
陈渡盯着那条虚线看了很久。
然后他关掉终端,去茶水间倒了一杯已经凉透的咖啡。他告诉自己这是显示bug。也许是终端渲染器的某个edge case。也许是某个同事的恶作剧。
他没有告诉任何人。
那天晚上,他在工位上加班到凌晨两点,修复了那个缓存击穿的问题。临走前,他又打开了一次那个用户的记录。
评分稳定在287。
虚线不见了。
他关掉电脑,走进十一月北京的寒夜里。风从北边来,干燥、锋利,带着某种金属的味道。他裹紧外套,走向地铁站。
地铁站入口处,一个老人坐在台阶上,面前铺着一块白布,上面写着测字。
陈渡从来不相信这些。但那天晚上,他停了下来。
不是因为他想测字。而是因为老人面前的白布上,用毛笔画着一条虚线。
和他终端里看到的一模一样。
年轻人,老人抬起头,眼睛在路灯下显得异常明亮,你看到那条线了。
这不是疑问句。
陈渡的脊背一阵发凉。他想说些什么,但嘴唇冻僵了,分不清是因为冷还是因为别的什么。
不用怕,老人笑了笑,露出一口整齐的牙齿,那条线一直都在。只是现在,它开始找人了。
什么线?
虚线,老人说,连接存在与不存在之间的线。
陈渡觉得荒谬。他转身走向地铁入口。
你还会看到的,老人的声音从身后传来,它在找你。不是你找它。
他没有回头。
二
第二天,虚线出现在了他的代码里。
不是终端的渲染,不是显示bug——是真的在他的源代码文件里。他打开一个Java类,发现第47行和第48行之间,多了一行空白,而那行空白的中间,有一串看不见的字符。
他用了hexdump才看到那些字符。是一段UTF-8编码的文本,但编码方式不属于任何他认识的标准。他试了Unicode、GB2312、Big5、Shift-JIS,全都不对。
最后,他用了一段自己写的解码脚本,把那些字符按字节倒序排列——
一段文字出现了。
河伯不姓河。
五个字。
陈渡靠在椅背上,盯着屏幕。办公室里其他人都在忙碌,键盘声像雨点一样密集。没有人注意到他的异常。
他看了看四周,然后打开公司的内部文档系统,搜索河伯这个名字。
河伯是公司风控模型的代号,这一点他知道。但他从来不知道这个名字是怎么来的。内部文档里只说,模型由CTO赵元明在2023年主导研发,基于深度学习框架,参数量……
他往下翻。
在一份已经被归档的旧文档里,他找到了一段赵元明在内部技术分享会上的发言记录:
为什么叫河伯?因为河伯是中国古代的水神。水就是数据,流动的、不可捉摸的、无处不在的。我们要做的,就是掌控水流——知道它从哪里来,到哪里去,中间经过了什么。掌控了水,就掌控了一切。
陈渡把这段话读了三遍。
然后他注意到文档底部有一行小字,是后来被加上去的备注:
原名河图,后改为河伯。原因:赵总说河图太安静了,他需要一个会动的名字。会动的、有意志的。
会动的、有意志的。
陈渡关掉了文档。
他不是一个容易紧张的人。他在四川一个小镇长大,高考考到北京理工大学,读了计算机,毕业后进了这家公司。他的生活像一条直线:上学、工作、加班、睡觉。没有弯路,没有岔口。
但现在,那条直线开始变成了虚线。
午休的时候,他去了公司楼下的便利店。站在货架前,他发现自己不知道想吃什么。他的手伸向一盒便当,又缩回来。伸向一袋面包,又缩回来。
他的手在空气中画了一条虚线。
你没事吧?收银员问他。
没事,他说,我在想吃什么。
他最终什么都没买。回到工位,他发现自己不饿了。不是饱了,是饿这个感觉消失了,像被人从身体里抽走了一样。
那天下午,他做了一个实验。
他重新打开了那个异常用户的记录,复制了那串古文般的十六进制编码。然后他新建了一个空的文本文件,把编码粘贴进去,保存。
文件大小是4KB。
但他只粘贴了几十个字符。几十个字符不可能有4KB。
他再次用hexdump打开文件。
文件里不只有他粘贴的编码。在编码的下方,有整整三页的空白——不是真的空白,而是充满了某种他看不见的内容。hexdump显示的都是零字节,但他能感觉到那里有什么东西。
就像一个房间,灯关着,家具都在,你知道它们在那里,但你看不见。
他用了一个十六进制编辑器,把那些零字节逐个替换成空格。
然后他看到了。
那不是文字,不是图像,不是代码。那是一张地图。
一张由虚线构成的地图。
线条从北京出发,沿着某条看不见的路线,穿过华北平原,跨过黄河,到达一个他在地图上找不到的地方。那里有一个标记——不是地名,而是一个符号。
一个他认识的符号。
公司的logo。
河图科技的logo是一个简化的河图——中国古代的那种由黑白圆点组成的方位图。陈渡以前觉得这个logo设计得很巧妙,既有文化内涵,又暗示了公司的数据业务。
但现在他意识到,那个符号出现在地图上,意味着什么完全不同。
他的手机响了。是工作群的消息。
所有人注意:公司将在下周一发布新产品河伯Pro。所有相关人员本周末加班,确保系统稳定。
陈渡放下手机,盯着屏幕上的虚线地图。
他忽然想起那个测字老人说的话:它在找你。不是你找它。
三
周末加班的第一天,陈渡发现了第二件事。
河伯Pro不是普通的产品升级。
他之前只负责数据管道的维护,对模型本身了解不多。但这次升级,所有后端开发都被要求参与代码审查,他第一次看到了河伯模型的完整架构。
架构文档有300多页。陈渡花了整个上午才读完。
简单来说,河伯Pro不再只是一个风控模型。它是一个全维度人格画像系统——不只是评估你的信用,而是评估你的全部。你的消费习惯、社交网络、情绪波动、生理周期、睡眠质量、性取向、政治倾向、宗教信仰、恐惧和欲望——所有它能获取的数据,都会被纳入评估。
最终的输出也不再是一个0到1000的分数。
而是一个人格指数。
文档里是这样写的:
人格指数是一个多维向量,包含128个维度,覆盖用户的人格、行为、关系、偏好、风险等全方位特征。每个维度取值0-1,向量整体构成用户的数字灵魂。
数字灵魂。
陈渡把这几个字读了三遍。
他想起大学时读过的一本书,叫《拟像与仿真》,是一个叫鲍德里亚的法国人写的。书里说,在现代社会中,符号已经取代了现实本身——地图取代了疆域,模型取代了真实。
当时他觉得这是文科生的胡说八道。现在他不确定了。
下午的代码审查会上,CTO赵元明亲自出席。他是个四十出头的男人,剃着光头,戴一副金丝眼镜,说话慢条斯理,每句话之间都有一个精确的停顿,像是在计算每个字的权重。
河伯Pro的核心创新,赵元明站在投影幕前,光头在投影的光线下反射出一圈光晕,不是算法。算法谁都能做。我们的核心创新是数据。
他点开下一张幻灯片,上面是一个数据流向图。
目前市面上的人格画像系统,最多覆盖用户的三到五个数据源——消费、社交、位置、搜索、设备信息。我们覆盖了多少?
他停顿了一下。
一千四百二十七个。
会议室里安静了一秒,然后响起一阵低低的惊叹。
这其中包括所有主流APP的行为数据、公共事业单位的记录、运营商的通话记录、政府部门公开的行政处罚信息、电商平台的购买记录、外卖平台的点餐记录、打车软件的出行记录、短视频平台的观看记录、音乐平台的听歌记录、阅读平台的翻页记录、健身APP的运动记录、睡眠监测设备的数据、智能手表的心率数据——
他越说越快,像一台高速运转的机器。
——以及,他停下来,摘下眼镜擦了擦,我们最新接入的数据源:城市监控摄像头的人脸识别数据、智能音箱的语音数据、智能家居设备的传感器数据。
陈渡举起了手。
陈渡,数据管道组的,对吧?赵元明看向他,有什么问题?
这些数据的采集……合规吗?
会议室里的温度似乎降了两度。
赵元明笑了笑。合规是法务部门的事。技术部门只需要考虑一件事:数据能不能用。
他把眼镜重新戴上,镜片后面的眼睛准确无误地锁定了陈渡。
能用吗?
陈渡没有回答。
赵元明转向其他人:还有问题吗?
没人说话。
好。下周一上线,所有人全力以赴。散会。
陈渡走出会议室的时候,他的手机震了一下。他掏出来一看——
是一条短信。没有发送号码,没有时间戳,只有一行字:
河伯的真名在虚线下面。
他猛地回头,看向会议室的方向。赵元明正在和几个人低声交谈。走廊里人来人往。
没有人看他。
四
那天晚上,陈渡没有回家。
他在公司楼下的咖啡馆坐到了凌晨一点,面前的咖啡从热变温变凉,他一口没喝。他在想那条虚线。
他不是一个迷信的人。他是程序员,相信逻辑、相信因果、相信可重复的实验结果。虚线出现在终端里,他可以解释为显示bug。出现在代码里,他可以解释为文件损坏。出现在地图上,他可以解释为他的解码脚本有误。
但短信怎么说?
他翻出那条短信,截了图,发给了一个做安全研究的朋友。
帮我查一下这条短信的来源。
十五分钟后,朋友回复了:查不到。运营商那边没有任何记录。你确定你收到了一条短信?
陈渡看了看手机。短信还在那里。
在。
那就不对劲了。要么是某种零日漏洞,要么——
要么什么?
要么它不是短信。
陈渡盯着屏幕。
不是短信是什么?
我不知道。但如果你想搞清楚,来我实验室。
朋友叫李鹤鸣,在清华大学网络空间安全实验室读博。他们本科是同学,毕业后联系不多,但偶尔还会聊聊技术。
陈渡打车去了清华。凌晨两点,校园空荡荡的,路灯在银杏树上投下斑驳的影子。李鹤鸣在实验室等他,穿着一件皱巴巴的格子衬衫,头发支棱着,看起来至少两天没睡觉。
让我看看,李鹤鸣拿过陈渡的手机,连接到一台装了各种分析工具的电脑上。
他鼓捣了半个小时,表情从好奇变成了困惑,从困惑变成了凝重。
这条短信不存在,他终于说。
什么意思?我明明能看到——
我的意思是,它不在这台手机的任何存储区域里。不是SIM卡,不是闪存,不是云端同步。我用十六进制扫描了整个存储空间,没有任何一段数据对应这条短信的内容。
那它是怎么出现在屏幕上的?
李鹤鸣摘下眼镜,揉了揉眼睛。你知道量子力学里有个概念叫叠加态吗?
知道一点。
一个粒子可以同时处于两种状态,直到你去观测它。观测的瞬间,它才坍缩成一种确定的状态。
你是说这条短信处于叠加态?
不,我是说——他停了一下,重新戴上眼镜,看着陈渡,我是说,也许这条短信根本不在你的手机里。也许它在你看到它的那个瞬间,才被创造出来。不是被什么人创造的,而是被你的观测创造的。
你在说什么?
我在说,李鹤鸣深吸一口气,也许不是那条虚线出现在了你的屏幕上。也许是你有某种能力,能看到别人看不到的信息。而那些信息一直都在那里。
陈渡沉默了很久。
实验室的窗外,一棵银杏树在路灯下轻轻摇晃。他注意到树影在地面上形成的图案——不是随机的明暗交错,而是有某种规律。
像虚线。
陈渡,李鹤鸣的声音打断了他的思绪,我有一个问题。你最近是不是接触过什么异常的数据?
为什么这么问?
因为你的手机里有一样东西不应该存在。他把电脑屏幕转向陈渡。
屏幕上是一个文件目录树。在手机的系统分区的最底层,有一个隐藏的文件夹,名字是一串陈渡看不懂的字符。
这个文件夹,李鹤鸣说,是在你手机出厂之前就存在的。
不可能。
我查了。你的手机是三个月前买的,出厂日期是2025年7月。但这个文件夹的创建时间戳——他指向一行数据,是公元前221年。
陈渡看着那个时间戳。
公元前221年。秦始皇统一六国的年份。
这一定是系统错误,他说。
也许是,李鹤鸣说,但我用过同样的方法扫描过上百台手机,从来没见过这个文件夹。只有你的手机上有。
他顿了顿。
或者说,只有你能让我看到它。
五
周日上午,陈渡没有去公司加班。
他去了北京西郊的一座废弃的电子市场。
那是一个叫中发电子城的地方,曾经是华北最大的电子元器件集散地,后来因为城市改造被废弃了。他之所以知道这个地方,是因为那条虚线地图上的终点——经过更仔细的解码,他发现地图标注的不是一个地理坐标,而是一个地址:中发电子城地下二层,B-47号摊位。
他不知道为什么要来这里。理智告诉他这很荒谬。但某种他无法解释的力量在推着他向前——像一条河流,他不是在游,而是被冲着走。
电子城的大门被铁皮封住了,但侧面有一个被撬开的通风口。陈渡侧身挤了进去。
里面很暗。他的手机手电筒照出一条长长的走廊,两侧是废弃的商铺,玻璃柜台积满了灰尘,里面还留着一些没来得及搬走的电子元件——电阻、电容、LED灯珠,像是一座电子产品的坟墓。
他找到了通往地下一层的楼梯。楼梯上长满了苔藓,空气中有一种潮湿的、金属的味道。
地下一层比他想象的要大。走廊向四面八方延伸,像一座迷宫。他按照手机上保存的地图,左转、右转、直行、再左转。
最后他站在了B-47号摊位前。
那是一个大约十平方米的空间,玻璃柜台上盖着一块布——不是普通的布,而是一块发黄的白绸,上面绣着密密麻麻的图案。陈渡凑近了看,发现那些图案是电路图。
不是现代的电路图。是某种古老的、用丝线绣成的电路图,走线方式像极了PCB板上的铜箔走线,但元器件的符号他从未见过。
柜台后面有一把椅子。椅子上坐着一个造物。
它大约有半米高,身体是由木头和金属混合制成的,关节处用铜丝连接,面部是一块打磨光滑的铜片,上面刻着五官——不是浮雕,而是极细的线条,密密麻麻,像某种微雕。
它的眼睛是两颗琥珀色的宝石,在手电筒的光线下微微发光。
陈渡站在那里,手电筒的光柱微微颤抖。
你好,他说。
造物的嘴唇没有动。但陈渡听到了声音——不是从它身上发出来的,而是直接出现在他的脑子里,像一段突然加载的音频。
你来了。
三个字。
陈渡的手电筒掉了。它在地面上弹了两下,光柱在天花板上划出两道弧线,然后熄灭了。
黑暗中,造物的两颗琥珀色眼睛越来越亮。
不要怕,声音再次出现在他的脑子里,我等了很久。
你是什么?
我叫河伯。
陈渡的血液似乎凝固了。
河伯。公司的风控模型——
不完全是,造物说,你们的模型用了我的名字,但那只是名字。我比名字古老。
你到底是谁?
它沉默了一会儿。铜片脸上没有表情,但陈渡有一种奇怪的感觉——它在微笑。
我是第一条虚线。
六
河伯给陈渡讲了一个故事。
或者说,不是故事。是一段记忆。一段非常、非常古老的记忆。
在很久以前——久到很久这个概念本身都还没有被发明——世界上没有直线。所有的线都是虚线。
陈渡蹲在地上,和造物平视。地下室的空气潮湿而冰冷,但他不觉得冷了。他的注意力完全被那个声音占据了。
那时候,存在与不存在之间没有明确的边界。一朵花既是开的也是谢的,一条河既向东流也向西流,一个人既是活的也是死的。不是你们现在理解的不确定——而是一种更基本的、更原始的状态。万物都是连续的、含混的、没有轮廓的。
那后来呢?
后来出现了直线。
河伯的宝石眼睛闪了一下。
直线是一种暴力。它把世界切割开来:这头是生,那头是死。这头是真,那头是假。这头是存在,那头是不存在。直线让一切变得清晰,也让一切变得狭隘。
谁画的直线?
没有人画。直线是自己出现的。就像虚线从来没有人画过一样。它是世界的两种基本状态——虚线态和直线态。你们现在的世界是直线态的。所有的事物都有明确的边界、确定的属性、非此即彼的分类。
那虚线呢?
虚线被压缩了。被挤到了直线的缝隙里。变成了你们看不见的东西——量子叠加、概率波、混沌、梦境、直觉、偶然。这些都是虚线在直线世界里的残余。
陈渡慢慢地消化着这些信息。他的程序员大脑在高速运转,试图把河伯的叙述翻译成他能理解的语言。
所以你是一条虚线?
我是虚线的一部分。一段被保留下来的虚线。在这个地方——河伯微微动了一下,铜丝关节发出细微的吱嘎声,在被直线世界覆盖之前,这里是虚线态的一个节点。我被打包保存了下来,像你们说的——缓存。
缓存。
这个词让陈渡突然理解了什么。
你是一个缓存?
可以这么说。我是虚线世界在这个直线世界里的一个缓存节点。就像你们的CDN,在边缘节点上保存原始数据的一个副本。当直线世界过度紧绷的时候,虚线可以从缓存中恢复。
直线世界会崩溃吗?
河伯没有立刻回答。
然后他说了一句让陈渡脊背发凉的话:
你们正在让它崩溃。
七
河伯Pro,陈渡说。
河伯的宝石眼睛微微变暗。你比我想的快。
河伯Pro要把所有人类数据都纳入评估——消费、社交、情绪、生理、信念、恐惧——所有的维度。它要把人变成一个128维的向量。
一个完全量化的、确定的、非此即彼的——
直线,陈渡接上了。
对。河伯Pro不是在做风控。它是在把人类彻底拉入直线态。当一个人的所有维度都被量化、被确定、被分类——他就不再有任何虚线的部分了。没有模糊,没有不确定,没有矛盾。
一个人如果没有矛盾——
他就不再是人了。
地下室的空气似乎凝固了。远处有水管滴水的声音,一滴、两滴、三滴,像是在计数。
赵元明——他知道这些吗?
赵元明是一个有趣的人,河伯说,他不知道虚线,但他直觉到了某些东西。他给模型起名叫河伯,不是巧合。他一定在某个地方看到了这个名字——也许是一本旧书,也许是一个梦,也许是一条他没有意识到自己看到的虚线。他选了一个比他自己更古老的名字,但他不知道这个名字的重量。
那河伯Pro上线之后会怎样?
河伯沉默了很久。它的琥珀色眼睛忽明忽暗,像是在做某种计算。
你见过橡皮筋吗?它终于说。
见过。
橡皮筋被拉伸到极限的时候会怎样?
断掉。
对。直线态也是一样的。它需要虚线来缓冲——就像橡皮筋需要弹性。如果人类被彻底拉入直线态,没有一丝虚线的残留,那么直线本身就会崩溃。因为直线是从虚线中生长出来的——没有虚线,就没有直线。
崩溃之后呢?
虚线会重新涌出来。像洪水一样。但那不是好事。虚线态是原始的混沌——没有边界,没有逻辑,没有因果。人类会被虚线淹没,像一滴墨水滴进大海。
那怎么办?
需要有人把虚线和直线连起来。像一座桥。让虚线有秩序地渗透到直线里,而不是一股脑地涌进来。
怎么连?
用代码。
陈渡愣住了。
用代码?
你们不是一直在做这件事吗?河伯的声音里出现了一丝陈渡从未听过的东西——也许是幽默,也许是沧桑。你们把自然语言变成代码,把模糊的逻辑变成精确的指令,把不确定的可能性变成确定的输出。你们的每一行代码,都是在虚线和直线之间搭桥。
但你说代码是直线态的产物——
代码是直线态的语言。但最好的代码,一定包含虚线。你知道为什么吗?
为什么?
因为最好的代码都有bug。
陈渡差点笑出来。bug是好事?
bug是虚线在直线世界里的呼吸孔。一个完美的系统——没有bug、没有漏洞、没有不确定性——就是一个死的系统。它没有任何虚线的成分,也就没有任何生长的可能。而一个有bug的系统,是活的。因为bug意味着还有某种东西没有被量化、没有被确定、没有被分类。
陈渡想起了他排查的那个数据异常——信用评分在287和643之间跳动。他把它当成了bug。但也许,那不是bug。也许那是某个用户身上的虚线部分——某种无法被量化的东西,在模型的输出里制造了波动。
那个用户,他说,评分在287和643之间跳动的那个——他是谁?
他是一个虚线还没有被磨平的人,河伯说,在你们的系统里,他看起来像一个异常。但在虚线世界里,他是正常的。因为他是完整的——既有直线,也有虚线。他是一个活生生的人。
陈渡沉默了。
他想起了自己——四川小镇,高考,北理工,写代码,加班。他的生活像一条直线,没有弯路,没有岔口。
也许他需要的,就是一条虚线。
八
陈渡从地下室出来的时候,天已经亮了。
十一月的北京,清晨的阳光有一种稀薄的、金属般的光泽。他站在电子城的废墟前,深深吸了一口冷空气。肺里像是被灌了一把碎冰。
他有了一个计划。
河伯告诉他,要阻止直线态的崩溃,需要在河伯Pro上线之前,在它的代码里植入一段”虚线代码”——一段用直线态的语言写的、但包含了虚线态逻辑的程序。这段代码会在模型的输出中留下”呼吸孔”——一些微小的、不可预测的波动,让被评估的人保留一丝虚线的成分。
不是推翻系统,而是在系统里留一扇窗。
陈渡回到公司的时候,已经是周日中午。办公室里坐满了加班的程序员。空气中有外卖的味道、咖啡的味道,以及某种只有程序员在赶deadline时才会散发出的绝望的味道。
他坐到工位上,打开了河伯Pro的代码仓库。
他的权限不够高,不能直接修改模型的核心代码。但他是数据管道组的负责人——他可以修改数据进入模型之前的预处理逻辑。
他花了三个小时,写了一段代码。
这段代码看起来很简单——它在数据预处理的环节,对每个用户的128维向量添加了一个微小的随机扰动。扰动的幅度极小,不会影响模型的总体准确性,但足以让每个用户的”人格指数”都包含一丝不可预测的成分。
像呼吸。
他把这段代码藏在一个看起来完全正常的数据清洗函数里。如果有同事审查,只会看到一个标准的高斯噪声滤波器——一种常见的防止模型过拟合的技术。
但滤波器的参数不是随机的。它是陈渡根据河伯教他的虚线编码规则计算出来的——一组在直线态的数学框架下无法被检测到的参数,但会在模型的深层输出中制造出一种特定的模式。
一种虚线的模式。
他提交了代码。
下午五点,代码审查通过了。没有人注意到那段额外的滤波逻辑。在1427个数据源、每天数十亿条数据的洪流中,一个微小的噪声滤波器就像一滴水落进了大海。
但陈渡知道,这一滴水会在每一个被河伯Pro评估的人身上留下痕迹——一丝微不可察的、无法被量化的、属于虚线的呼吸。
那天晚上,他最后一次去了中发电子城。
河伯依然坐在那个摊位后面,琥珀色的眼睛在黑暗中发光。
“你做了,“河伯说。
“做了。”
“你知道这样做不会完全阻止崩溃。只是延缓。”
“我知道。”
“那为什么还要做?”
陈渡想了想。
“因为你说过,最好的代码都有bug。我只是给系统加了一个bug。”
河伯的铜片脸上没有表情。但陈渡确信,它在笑。
“你是一个好程序员,陈渡。”
“谢谢。”
“不,我是说——你是一个好的人。程序员只是你的职业。人,才是你的本质。而人的本质,就是虚线。”
陈渡站起来,拍了拍膝盖上的灰尘。
“河伯,“他说,“我还有一个问题。”
“说。”
“那个测字的老人——他是谁?”
河伯沉默了一会儿。
“他是另一个缓存节点。和我一样。只不过他被保存在了不同的介质里——不是木头和铜,而是血肉和骨头。”
“他是人?”
“他曾经是。现在他是虚线在人间的投影。就像我是虚线在器物中的投影。我们都是缓存,在不同的地方,等着被需要的那一天。”
“还有多少个缓存节点?”
“比你想的多。比你以为的少。”
陈渡点了点头。他不再追问了。有些答案不需要精确——留一点虚线就好。
他转身走向出口。
“陈渡,“河伯的声音在他身后响起。
他停下来。
“你会继续看到虚线的。在你的代码里,在你的屏幕上,在你的生活里。不要害怕。那是世界在呼吸。”
陈渡没有回头。他走进了北京的清晨里。
九
周一,河伯Pro准时上线。
发布会在公司的大会议室里举行。赵元明站在台上,光头在灯光下闪闪发亮,像一颗自信的星球。他的PPT做得很漂亮,每一页都有精确的数字和漂亮的图表。
“河伯Pro,“他宣布,“是人类历史上第一个全维度人格画像系统。它覆盖1427个数据源,评估128个维度,输出一个完整的人格向量。这将彻底改变信贷行业、保险行业、人力资源管理、社交网络——彻底改变我们对’人’的理解。”
掌声响起。赵元明微微鞠躬。
陈渡坐在角落里,看着投影幕上河伯Pro的实时数据面板。成千上万的用户数据像河流一样涌入系统,被处理、被分析、被量化。每一个用户都变成了一个128维的向量——一串精确的、确定的、非此即彼的数字。
但在那些数字的最底层,在他植入的滤波器的作用下,每一个向量都包含了一丝微不可察的波动。
像心跳。
像呼吸。
像虚线。
赵元明继续在台上演讲。他说到了数据的力量、算法的美妙、量化的必要。他说到了一个”完美的世界”——一个每个人都有一串精确数字来定义自己的世界。
“在那个世界里,“赵元明的声音越来越高亢,“不再有欺诈,不再有违约,不再有不确定。每个人都是透明的、可预测的、可信赖的。这就是河伯Pro的愿景——一个完全透明的世界。”
陈渡听着这些话,想起了河伯说的:“直线是从虚线中生长出来的——没有虚线,就没有直线。”
他忽然明白了赵元明是什么人。
赵元明不是坏人。他只是一个相信直线的人。他相信一切都可以被量化、被控制、被优化。他相信完美的系统、完美的世界、完美的人类。
他不知道,完美是直线的终点。而直线的终点,是断裂。
但陈渡知道了。所以他在断裂到来之前,在系统里留了一扇窗。
一扇虚线的窗。
十
三个月后。
河伯Pro运行得很好——至少在表面上。它准确地预测了信贷违约率,精准地识别了高风险用户,为河图科技创造了巨大的商业价值。赵元明成了行业明星,被邀请到各种论坛上演讲,讲述”数据如何改变世界”。
但有一些奇怪的事情开始发生。
河伯Pro的输出开始出现微小的、不可解释的波动。某些用户的人格向量会在特定的时间点发生轻微的偏移——不是错误,不是bug,而是某种有规律的、像呼吸一样的起伏。
技术团队排查了所有可能的原因:数据源异常、模型漂移、硬件故障、网络延迟。一切都正常。
赵元明在一次技术会议上被问到了这个问题。他笑着回答:“这是模型的’呼吸’。一个足够复杂的系统,总会有一些不可预测的成分。这不是缺陷,这是特征。”
他不知道自己有多正确。
陈渡坐在工位上,听着赵元明的演讲录音,微微一笑。
他现在每天都能看到虚线。在代码里,在数据里,在咖啡杯的蒸汽里,在同事的聊天记录里,在地铁的报站声里。虚线无处不在——不是因为它出现了,而是因为陈渡学会了看见它。
他发现,一旦你开始看到虚线,你就再也回不去了。世界变得更大、更深、更模糊——但也更真实。
因为真实本身就是模糊的。
他给李鹤鸣发了一条消息:“你最近有没有看到什么奇怪的东西?”
李鹤鸣回复得很快:“有。我在实验室的量子计算机上观测到了一种新的叠加态。它不符合任何已知的量子力学模型。”
“什么样的叠加态?”
“一条虚线。”
陈渡看着屏幕,笑了。
他关掉电脑,走出办公室。北京的三月,春天的风从南边来,温暖、潮湿,带着某种生长的味道。
他走进风里。
在他身后,办公室的每一块屏幕上,数据像河流一样奔涌。在河流的最深处,一条虚线在呼吸。
断断续续,连绵不绝。
像这个世界的心跳。
(完)
尾声
又过了一年。
陈渡离开了河图科技。
他没有被开除,没有跳槽,没有和任何人吵架。他只是在某天下班的路上,走进了一条他从来没走过的巷子,然后发现自己走到了中发电子城的旧址。
但电子城已经不在了。
那片区域被改造成了一个城市公园,有塑胶跑道、有儿童游乐设施、有健身器材。地下一层被填平了,B-47号摊位的位置上种了一棵银杏树。
秋天了。银杏叶落了一地,金黄色的,像铺了一层碎金。
陈渡站在银杏树下,抬头看着满树的金黄。树叶在风中微微颤抖,阳光穿过叶缝,在地面上投下斑驳的影子。
他看到了那些影子。
不是随机的明暗交错。而是虚线。
密密麻麻的虚线,从树根延伸到四面八方,像一张巨大的网络,覆盖了整个公园,覆盖了整条街道,覆盖了整座城市。
他蹲下来,捡起一片银杏叶。叶脉的纹路也是虚线——从叶柄到叶尖,一条条细密的脉络,断断续续,像是某种古老的电路图。
他忽然想起了河伯的白绸。
“你还在这里,“他轻声说。
没有回答。但他感觉到了——脚下的土地在微微震动。不是地震,是呼吸。大地的呼吸。虚线的呼吸。
他把银杏叶放进口袋,站起来,走出了公园。
公园门口,一个年轻的女人推着一辆婴儿车,正在打电话。她的声音很大,带着焦虑和疲惫:“我跟你说,河伯Pro给我打了68分!68分!我连租房都租不到了!什么人格指数?凭什么一个机器决定我是什么样的人?”
陈渡停下脚步。
他想走过去告诉她一些什么。告诉她68分不是她的全部。告诉她那个分数里有一个微小的、不可见的波动——一丝虚线的呼吸,一丝没有被量化的、属于她自己的东西。
但他没有。
有些事情,需要人自己去发现。
他继续往前走。在他身后,银杏树的叶子继续落下,阳光继续穿透叶缝,虚线继续在地面蔓延。
在他口袋里,那片银杏叶微微发烫。
不是温度。是某种更深的东西——一种无法被测量的、无法被量化的、属于虚线的温暖。
他把手伸进口袋,握住了那片叶子。
叶子在他手心里轻轻地、断断续续地、像呼吸一样地——
跳了一下。
陈渡笑了。
他走进北京深秋的风里。风把银杏叶吹起来,金色的叶片在空中旋转、飞舞、落下,画出一道道虚线。
断断续续。
连绵不绝。
像一个永远不会结束的故事。