数织重铸
一、凌晨三点的回声
陆鸣第一次注意到异常是在一个星期三的凌晨三点十七分。
不是三点,不是三点半,而是三点十七分。后来他反复确认过这个时间戳,精确到毫秒:03:17:00.042。这个数字像一根刺扎在他后脑勺,怎么拔都拔不掉。
深圳南山区的写字楼群在深夜像一片沉默的墓碑。陆鸣所在的”河图科技”占据了科兴科学园B3栋的二十三楼整层。公司全称是”河图数据科技有限公司”,做的是金融风控系统,给银行和互金平台提供反欺诈模型、信用评估引擎,偶尔也接一些监管科技的活。行业里管他们叫”卖铲子的”——不管别人挖的是金矿还是韭菜,他们只卖铲子。
陆鸣是河图的首席数据架构师,三十四岁,微胖,戴一副黑框眼镜,头发已经开始在后脑勺稀疏。他的工位在靠窗的位置,正对着深南大道的方向。白天能看见远处的深圳湾,夜里只能看见对面写字楼零星的灯光和自己玻璃上的倒影。
那天凌晨他还在加班,不是因为项目催得急,而是因为他在调试一个新模型。
这个模型叫”回声”。
“回声”的设计初衷很简单:通过分析历史交易数据中的异常模式,反推可能存在的欺诈网络。说白了,就是让系统学会从过去的痕迹里发现那些人类眼睛漏掉的东西。陆鸣花了八个月写底层架构,又花了三个月训练模型。他把大量清洗过的真实交易数据喂进去——都是过去十年间各大合作银行提供的脱敏数据。
凌晨三点,他启动了”回声”的第三次全量运行。
屏幕上的进度条缓慢移动,日志窗口滚动着密密麻麻的数字。陆鸣端起已经凉透的咖啡喝了一口,正准备起身活动一下僵硬的脖子,忽然注意到日志窗口停了下来。
不是崩溃,不是报错,而是——停顿。
就像一个人说到一半突然闭了嘴。
然后,一行新的输出出现了:
[ECHO-3] UNMAPPED SEQUENCE DETECTED
[ECHO-3] SEQUENCE LENGTH: 47
[ECHO-3] FIRST TIMESTAMP: 2016-03-17T03:17:00.042+08:00
[ECHO-3] ANOMALY SCORE: 0.9997
陆鸣皱了皱眉。他没见过这条日志格式。“UNMAPPED SEQUENCE”——未映射序列。他写的代码里没有这个分类器。
他放下咖啡杯,双手放回键盘上,开始追踪这个输出的来源。
二十分钟后,他追踪到了一个他自己都不记得写过的子模块。它嵌在”回声”的核心推理引擎深处,像是一颗被嵌进墙体的螺丝钉——你不会注意到它,直到墙面开始开裂。
子模块的名字叫 weaver.py。
陆鸣从来没有写过叫这个名字的文件。
他打开代码,愣住了。代码风格和他的一模一样——同样的缩进习惯,同样的变量命名规则,甚至连注释的语气都如出一辙。但内容完全陌生。这个模块做的事情超出了”回声”的设计范围:它在主动搜索交易数据中的”断裂点”——那些看起来正常但在逻辑上不可能同时存在的交易对。
更诡异的是,weaver.py 生成的不是一个分析报告,而是一组具体的交易记录。
四十七笔交易。
陆鸣把它们导出到一张表格里,逐行查看。每一笔交易都包含:时间、金额、交易双方的匿名ID、交易类型、地理位置标签。金额从三块二到四十七万不等,跨度从2016年到2025年,覆盖了整整九年。
乍一看,这些交易毫无规律。有的在深圳,有的在成都,有的在武汉。有的是转账,有的是消费,有的是投资赎回。但如果把它们按时间排列,陆鸣发现了一条隐秘的线索:每笔交易发生的地点,用直线连接起来,刚好在深圳地图上画出一个不规则的五角星。
他盯着那个图案看了很久,后背开始发凉。
不是因为形状本身——五角星在数据可视化里不算罕见,随机点集都有可能偶然形成各种图案。让他发凉的是另一个发现:这四十七笔交易的匿名ID,经过交叉比对之后,全部指向同一个人。
一个在系统里已经被标记为”账户已注销”的人。
注销时间是2017年6月。
陆鸣把椅子往后推了推,靠背发出吱呀一声。办公室安静得只剩下空调的嗡鸣和自己不均匀的呼吸。他看了一眼窗外,深南大道上一辆夜班公交车正缓缓驶过,车窗里零星坐着几个低头看手机的人。
他拿起手机,给公司CTO周涵发了一条消息:“你认识一个叫weaver.py的文件吗?”
消息发出去之后,他等了三分钟。没有回复。凌晨三点半,这不意外。
陆鸣犹豫了一下,决定不关电脑,回家睡觉。
走出公司大门的时候,深圳六月潮湿的夜风扑面而来,带着一股说不清的腥甜。他站在路边等网约车,忽然想起一件事:2016年3月17日,他在干什么?
那一年他刚从北京来深圳,在一家小型的P2P公司做数据分析师。3月17日……他想不起来。太久了。九年对于一个程序员来说,几乎是两辈子的时间。
网约车来了。他上了车,报了地址,然后靠在座椅上闭上眼睛。
手机震动了一下。周涵回了消息:
“不认识。什么文件?”
陆鸣打了几个字,又全部删掉。最后只回了两个字:“没事。“
二、消失的人
第二天上午十点,陆鸣坐在会议室里,面前摊着一叠打印出来的交易记录。他旁边的工位上,产品经理孙莉正在和前端开发争论一个仪表盘的配色问题。窗外阳光刺眼,深圳的六月像一个巨大的蒸笼。
他决定先把 weaver.py 的来源搞清楚。
第一步是查Git记录。河图的代码仓库托管在一个私有GitLab上,每一次提交都有记录,包括提交者、时间戳和变更内容。陆鸣登录GitLab,搜索 weaver.py 的历史。
搜索结果:零。
没有提交记录,没有合并请求,没有任何人对这个文件进行过版本管理。就好像它是凭空出现在代码库里的。
但这不可能。河图的部署流程非常严格,所有代码必须经过代码审查、自动化测试、安全扫描才能合入主分支。一个未经审查的文件不可能进入生产环境——除非它从一开始就在那里,比整个代码仓库的历史还要久。
陆鸣查了仓库的初始提交记录。河图科技成立于2018年,代码仓库也是那一年创建的。初始提交包含三百多个文件,提交者是CTO周涵。
他把初始提交的所有文件名列出来,逐一检查。
weaver.py 不在列表里。
也就是说,这个文件不是在初始提交中引入的,也不是在后续的任何一次提交中引入的。但它实实在在地存在于代码库中,而且——根据文件的时间戳——它的创建时间是2018年4月12日,恰好是仓库创建后两周。
陆鸣开始怀疑自己的记忆。也许是他自己写的?深夜加班时迷迷糊糊写的?但代码的内容完全超出了他的能力范围——不是技术难度的问题,而是设计思路的问题。weaver.py 使用了一种他从未见过的图神经网络结构,能够在交易数据中识别他称之为”断裂点”的模式。这种模式不是标准的异常检测,更像是……一种考古学。
在对数据做考古。
他把这种想法告诉了周涵。
周涵是个瘦高的中年男人,剃着寸头,说话带着浓重的湖南口音。他是河图的联合创始人之一,早年在中科院做过几年模式识别研究,后来下海做金融科技。他听完陆鸣的描述后,沉默了很长时间。
“你确定不是你自己写的?“周涵问。
“我确定。”
“会不会是哪个实习生加的?”
“我查过了。这个文件的权限级别是owner-only,公司里只有三个人有这个权限:你、我、老何。”
老何是何劲松,河图的另一个联合创始人,负责商务。三年前因为身体原因退出了日常管理,现在只挂着一个合伙人头衔。
周涵的眉头拧得更紧了。“那就奇怪了。你说的那个五角星图案……让我看看。”
陆鸣把打印的交易记录推过去。周涵拿起那几张纸,翻了翻,忽然停住了。
“这个ID。“他指着表格第七行的一个匿名标识符。
“怎么了?”
“这不是匿名ID。这是河图内部用的测试账号前缀。HX-后面跟四位数字,是我们给测试用户分配的编号。”
陆鸣的心跳加速了一拍。“测试用户”是他们在开发阶段用来模拟交易的虚拟账号,每个账号对应一套虚构的用户画像和交易历史。这些账号在系统上线后就应该被清除或归档。
“这个编号是多少?“周涵问。
陆鸣看了看表格:“HX-0317。”
周涵把纸放下,摘下眼镜揉了揉眼睛。
“0317号测试用户。“他说,语气变得很轻,像怕惊动什么似的。“是我创建的。2018年,我刚写完第一版风控引擎的时候,手动建了一批测试账号来验证模型。0317是其中一个。”
“它的画像是怎么设定的?”
“我不记得了。都是瞎编的。“周涵顿了顿,“不过……我确实给每个测试账号都编了一段人生故事,用来模拟不同的欺诈场景。”
“0317的故事是什么?”
周涵沉默了。
“周哥?”
“0317的故事……”周涵重新戴上眼镜,目光落在窗外某个不存在的点上。“是一个在深圳打工的程序员,三十岁出头,单身,老家在江西。他来深圳五年,先在一家P2P公司干,后来P2P暴雷了,公司跑路,他被欠了三个月工资。他找不到新工作,积蓄花光之后,开始用假身份申请网络贷款。”
“然后呢?”
“然后他越借越多,利息越滚越高。有一天他发现,他欠的钱已经是他这辈子都还不清的了。他把手机关了机,从南山的一栋写字楼里走出来,再也没有回来。”
会议室里很安静。空调的出风口吹出一阵凉气,吹得桌上的纸页轻轻翻动。
“这是个虚构的故事,对吧?“陆鸣说。
“当然是个虚构的故事。“周涵说。但他的声音没有底气。
陆鸣拿起表格,指着那四十七笔交易:“但这些交易是真的。这些数据来自合作银行的历史记录,每一笔都有真实的时间戳和地点。只是它们被匿名化了,我们看不到原始用户的身份信息。”
“你想说什么?”
“我想说的是:weaver.py 从真实的历史数据中,找到了四十七笔交易,这些交易的匿名ID全部指向同一个已经被注销的账户。而这个账户的行为模式,和你为0317号测试用户编写的虚构故事完全吻合。”
周涵站起来,走到窗边。深圳的写字楼群在阳光下闪闪发亮,像一片巨大的电路板。
“巧合。“他说。
“四十七笔交易,九年的跨度,精确到毫秒的时间戳。“陆鸣说,“你管这叫巧合?”
周涵没有转身。
“那你想叫它什么?”
陆鸣想了想,说:“我不知道。但我想查清楚。“
三、数据之下的河流
查清楚说起来容易,做起来困难得多。
最大的障碍是数据脱敏。银行提供的历史交易数据都经过严格的匿名化处理,原始用户的姓名、身份证号、手机号全部被替换成了不可逆的哈希值。理论上,从这些哈希值反推出真实身份是不可能的。
但陆鸣有别的办法。
他在河图做了六年,参与过几乎所有核心系统的设计。他比任何人都清楚这些数据是怎么被采集、清洗、存储和索引的。每一步处理都会留下痕迹,就像河流流过的地表会留下冲刷的纹路。
他开始从四十七笔交易中提取元数据。不只是金额、时间、地点这些表面信息,而是更深层的”数据指纹”:交易的设备型号、网络环境、操作系统的版本号、屏幕分辨率、甚至是输入法类型。这些信息在脱敏过程中经常被忽略,因为它们通常被认为不足以识别个人身份。
但当陆鸣把这些指纹交叉比对之后,一个模糊的轮廓开始浮现。
这个人——姑且叫他”0317”——使用过至少十一部手机,注册过二十三个不同的借贷平台,在五个城市留下过足迹。他的交易模式呈现出一种令人心碎的规律性:月初借贷,月中消费,月底还款——或者更准确地说,月底借新还旧。这个循环从2016年开始,到2017年4月达到了顶峰。那个月,他在十八天之内从七个平台借了十一笔钱,总额度超过了他的年收入。
然后,在2017年5月的第一天,所有的活动突然停止了。
不是减少,不是放缓,而是完全停止。就像一首歌在最响的音符处被掐断了。
陆鸣把时间线拉长,在”完全停止”之后又找到了几笔零星的交易:2018年的一笔社保缴费记录,2019年的一笔手机充值,2020年的一笔外卖订单。这些交易来自不同的平台,使用不同的设备,但数据指纹匹配上了同一个底层画像。
这意味着0317没有消失。他只是换了一种方式存在——更低频、更隐蔽、更边缘。像是被迫退到了社会的潮间带,在涨潮时被淹没,退潮时才露出一点呼吸的痕迹。
陆鸣看着屏幕上那几笔零星的交易,忽然觉得喉咙发紧。
他想起了一件事。
2016年,他也在那家P2P公司。
不是同一家——0317所在的P2P公司叫”金汇通”,做的是那种典型的”收割机”模式:高息揽储、资金池运作、自融自保。陆鸣所在的公司叫”信达贷”,模式类似但规模小一些。两家公司都在深圳,都在2017年前后暴雷。
金汇通的老板卷了钱跑去了柬埔寨。留下的员工和投资人鸡飞狗跳,有人去市政府门前拉横幅,有人在网上发遗书。陆鸣记得那段时间,整个深圳的P2P圈子风声鹤唳,每个人都在担心自己会不会是下一个。
他是幸运的。信达贷暴雷的时候,他已经跳槽去了一家做大数据的公司。但他的很多前同事没有这么幸运。有人被牵连进了经侦案件,有人背上了巨额债务,有人从此一蹶不振。
0317会不会就是其中之一?
陆鸣做了一个大胆的决定。他绕过了正常的数据查询流程——这在河图是严重违规的——直接连上了银行的合作数据库,用0317的数据指纹做了反向搜索。
搜索结果在三十秒后返回。
一条记录。
只有一个匹配项。
姓名:陈桥。
身份证号:3601……(江西南昌)
出生日期:1987年9月12日。
陆鸣盯着这个名字,盯着这串数字,忽然觉得整个办公室的空气都变得稀薄了。
陈桥。
他不认识这个名字。但他认识那个身份证号的前缀——3601,江西南昌。他在信达贷的时候,有一个同事就是南昌人。比他大两岁,戴眼镜,说话声音很轻,写的代码很干净。
那个人叫……不对,那个人不叫陈桥。那个人叫什么来着?
陆鸣闭上眼睛,努力回忆。2016年,信达贷的办公室在福田区的一个商住两用楼里,七八十号人挤在三层楼面上。他记得前台的小姑娘叫小何,记得技术总监姓马,记得坐他隔壁工位的是一个……
一个话不多的男生。比他大两岁。戴眼镜。写的代码很干净。有一次加班到深夜,两个人一起去楼下的便利店买关东煮,那个男生说他老家的米粉很好吃,等有空了请陆鸣去南昌吃。
他叫什么名字?
陆鸣想不起来了。
九年。足以忘记一个人的名字。
他打开手机,翻了翻微信通讯录。信达贷的前同事们大多已经断了联系,但他依稀记得有一个群。群名好像是”信达贷前同事”之类的。
翻了五分钟,找到了。群名叫”信达人永不散”,最后一条消息停留在2020年,是某个前同事发的拼多多的砍价链接。
陆鸣在群里搜”南昌”,没有结果。搜”江西”,有一条:2019年有人问”有没有江西的老乡群”。
他点开群成员列表,一个一个名字翻过去。
然后他停住了。
群里有一个头像已经变成了微信默认的灰色人形,昵称是一串数字和字母的组合——这是注销后的微信号会显示的样子。在这个昵称下面,有一行小字:已无法查看。
但微信保留了他在群里的历史昵称。
历史昵称是:陈桥。
陆鸣把手机放下来,发现自己的手在微微发抖。
四、重叠的轨迹
那天晚上,陆鸣没有加班。他早早回到家,坐在阳台上抽烟,对着深圳的夜景发呆。
他的公寓在南山区的边缘,一个不太新的小区,六楼,没有电梯。阳台上能看到远处的一片城中村,灯光密密麻麻地挤在一起,像是某种低分辨率的显示屏。
陈桥。
他想起来了。不全,但够了。
陈桥是信达贷的后端开发,比陆鸣早来三个月。两个人的工位挨着,偶尔会讨论技术问题。陈桥话不多,但代码写得很好,是那种”安静但靠谱”的同事。陆鸣记得他喜欢喝一种很便宜的袋泡茶,工位上永远放着一个玻璃杯,茶水泡成了深褐色还在喝。
2016年底,信达贷开始出问题。先是几个大客户的资金无法兑付,然后是技术部门被要求”配合运营”——说白了,就是在系统里做一些不太合规的数据调整。陆鸣和陈桥都被叫去开过会。陆鸣记得陈桥在会上说了一句话:“这种事情不能做。“声音很轻,但在安静的会议室里格外清晰。
会后,技术总监老马找陈桥谈了一次话。陆鸣不知道他们谈了什么,但从那以后,陈桥变得更沉默了。
2017年初,陆鸣辞职了。他走的时候,和几个关系好的同事吃了顿饭。陈桥也来了,但几乎没怎么说话。陆鸣记得他最后举杯的时候,陈桥终于笑了一下,说:“你先走吧,我可能也快了。”
这是陆鸣记忆中陈桥说的最后一句话。
之后的事,陆鸣是后来从新闻上看到的:信达贷在2017年4月正式暴雷,老板被经侦带走,公司资产被冻结。涉案金额超过十二亿,牵连的投资人超过三千名。技术部门有两个人被列为”协助调查对象”。
陆鸣不知道陈桥是不是其中之一。
他只知道,从那以后,他再也没有在任何场合见过或听说过陈桥。
直到今天。直到 weaver.py 从九年的数据废墟中挖出了四十七笔交易,拼出了一个被数字掩埋的人生。
陆鸣掐灭烟头,回到屋里打开电脑。他登录了几个社交媒体平台,搜索”陈桥”——这个名字太普通了,搜索结果浩如烟海。他加上了”南昌""深圳""程序员”等关键词,范围缩小了一些,但还是找不到确切匹配的那个人。
他又尝试了天眼查和企查查。输入”陈桥”,出来几千条企业关联信息。他逐一排查,在第三十几页找到了一条:陈桥,曾担任深圳市信达贷信息技术有限公司技术部员工。信息来源是一份法院的判决书附件。
判决书的日期是2018年。
陆鸣点开链接,花了二十块钱下载了全文。
判决书不长,大约三页纸。主要内容是:原告(一批投资人)起诉信达贷的前高管团队,要求赔偿损失。陈桥不是被告,而是被列为”第三人”——一个在案件中有利益关联但不是当事人的人。
判决书的最后一段提到了陈桥:
“第三人陈桥经本院合法传唤,无正当理由未到庭参加诉讼。本院依法缺席审理。”
缺席。
经合法传唤但未到庭。
陆鸣又读了一遍这句话。然后他关上了电脑,坐在黑暗中,听着窗外城中村的嘈杂声渐渐沉入夜色。
五、第二组序列
接下来的一周,陆鸣把 weaver.py 拆开来研究。他逐行阅读代码,画出了完整的调用图谱,甚至用沙箱环境单独运行了核心算法。
他得出两个结论。
第一,这段代码的设计水平极高。不是那种炫技式的高——它的每一个设计决策都极其精准,没有一行多余的代码,没有一次不必要的计算。写这段代码的人,要么是对金融风控领域有极深的理解,要么是在某种近乎偏执的状态下完成了它。
第二,这段代码的算法思路与”回声”完全不同。“回声”是从数据中发现模式,而 weaver.py 是从模式中重建数据。就像一个是考古学家,另一个是复活师。一个从地层中挖出骨骼,另一个试图从骨骼中复活一个完整的生命。
陆鸣知道这不合理。算法不可能凭空”知道”那些被脱敏处理过的信息。除非……
除非数据本身就包含了那些信息,只是被层层处理掩盖了。而 weaver.py 做的事情,就是剥开那些层次,像剥洋葱一样,直到触及最核心的真相。
周三晚上,他又在凌晨三点启动了”回声”。
这一次他没有期待什么。但期待不期待,该来的还是来了。
凌晨三点十七分——又是三点十七分——日志窗口再次停顿,然后出现了新的输出:
[ECHO-4] UNMAPPED SEQUENCE DETECTED
[ECHO-4] SEQUENCE LENGTH: 83
[ECHO-4] FIRST TIMESTAMP: 2015-08-23T03:17:00.042+08:00
[ECHO-4] ANOMALY SCORE: 0.9999
八十三笔交易。从2015年开始。异常分数更高了。
陆鸣导出了这组数据,和第一组进行了对比。两者没有重叠的ID,没有重叠的时间段,甚至没有重叠的城市。第一组集中在深圳,第二组覆盖了广州、东莞、佛山——珠三角的另一个三角。
但模式是一样的:一个人从正常生活滑向借贷深渊的完整轨迹。初始的小额借款,中期的多头借贷,后期的拆东墙补西墙,最后是彻底的沉默。
陆鸣用了三天时间,用同样的方法追踪第二组序列背后的身份。
这一次比第一次容易,因为他已经知道了路径。
第二组序列对应的人叫方小琴,女,1989年出生,湖南衡阳人。她的轨迹和陈桥惊人地相似:先在一家小型互金公司工作(不是信达贷,是另一家叫”利安宝”的),公司暴雷后被牵连,背上了个人债务,最终从所有社会系统中消失。
方小琴不是程序员。她是利安宝的运营专员,负责用户增长。在公司的最后几个月,她被上级要求用虚假数据来粉饰用户量和交易额。暴雷之后,这些虚假数据成了”非法吸收公众存款”的证据,而她作为执行者之一,被列入了黑名单。
陆鸣找到了她的法院记录。和陈桥不同,方小琴到庭了。她的陈述记录只有短短几行:“我只是按照领导的要求做事。我不知道那是违法的。我愿意配合调查,希望从轻处理。”
最终判决:免于刑事处罚,但需承担连带民事责任。赔偿金额:四十七万。
四十七万。一个运营专员的工资,不吃不喝要攒六年。
陆鸣在网上找到了一张方小琴的照片。是她在一个行业论坛上的登记照,像素不高,但能看清:圆脸,短发,笑起来有酒窝。照片下面的简介写着:“利安宝用户增长负责人,三年互金行业经验,擅长社群运营和用户裂变。”
用户裂变。这个词在2016年的互金圈非常流行。说白了,就是用各种奖励机制让用户拉新用户,新用户再拉更多新用户,像链式反应一样。裂变。
裂变之后呢?裂变之后就是聚变。聚变之后就是爆炸。
陆鸣关掉照片,靠在椅背上。他忽然想到了一个问题:weaver.py 是怎么从脱敏数据中识别出这些人的?
按理说,脱敏处理是不可逆的。哈希函数是单向的。从哈希值反推原始数据,在计算上是不可能的。
除非……脱敏过程本身出了问题。
陆鸣回到代码库,找到了数据清洗模块。这是他三年前亲手写的代码,负责处理银行发来的原始数据。他逐一检查脱敏流程的每一个步骤。
在第三步——“非关键信息剥离”——他发现了一个注释:
# 保留设备指纹用于反欺诈模型训练
# 注意:设备指纹组合可能具有唯一性,后续需评估隐私风险
# TODO: 实施k-匿名化处理
TODO。
这个TODO在他三年前写的时候就存在了。三年过去了,没有人实现过k-匿名化处理。这意味着,每一条被”脱敏”的交易记录,都保留了完整的设备指纹信息。而设备指纹——手机型号、操作系统版本、屏幕分辨率、输入法类型、WiFi环境——这些信息的组合,在绝大多数情况下可以唯一标识一个人。
陆鸣盯着那个TODO看了很久。那是他自己写的注释。三年前,他标注了一个隐私风险,然后把它搁置了。三年后,这个搁置的风险变成了一个隐形的窗口,让一个来历不明的算法得以窥见被掩埋的真实。
他忽然觉得一阵眩晕。
不是生理上的眩晕,而是一种更深层的失衡感。就像你一直以为自己站在坚实的地面上,低头一看,发现脚底下是一层薄薄的冰,冰下面是深不见底的水。
六、地图上的星星
陆鸣决定把两组序列合并分析。
第一组四十七笔,对应陈桥。第二组八十三笔,对应方小琴。合计一百三十笔交易,时间跨度从2015年到2024年,地理范围覆盖珠三角的六个城市。
他把所有交易的地点标注在高精度的数字地图上,然后写了一个简单的可视化脚本。第一次运行时,他以为脚本出了问题,因为结果太过规整了——两组交易的地点分别形成了两个多边形,一个以深圳为中心(陈桥的轨迹),一个以广州为中心(方小琴的轨迹),两个多边形的顶点之间存在着一种精确的几何关系。
如果用线段把两个多边形的所有对应顶点连接起来,这些线段的交点恰好落在佛山的一个点上。
陆鸣放大那个点,查了查地图。那个位置是一条老旧的商业街,叫”祖庙路”。街上什么都有:奶茶店、手机维修铺、房产中介、网贷公司的地推摊位。
他做了一个疯狂的举动。他请了两天假,从深圳坐高铁去了佛山。
祖庙路比他想象的更破旧。六月的佛山闷热得像一口蒸锅,街上行人不多,大多是老年人,坐在店门口的塑料椅上扇扇子。陆鸣沿着路走了一遍,没有发现任何特别的东西。
他又走了一遍。这次他注意到了一家门面很小的店铺,夹在一间快餐店和一间彩票站之间。店铺没有招牌,玻璃门上贴着一张褪色的海报,上面写着”数码服务”。
陆鸣推门进去。
店里很小,大概十平米。一张桌子,两把椅子,墙上挂着一个钟,一个空调,一台老旧的电脑。桌子后面坐着一个年轻男人,穿着一件洗得发白的T恤,正低头看手机。
“你好,请问你们做什么的?“陆鸣问。
年轻男人抬起头,打量了他一眼。“修手机、卖二手手机、代注册账号、代实名认证。”
最后两项让陆鸣的神经紧绷起来。代注册账号、代实名认证——在互金行业的灰色地带,这些服务被大量用于”养号”:用真实或虚假的身份信息批量注册借贷平台账号,然后把这些账号卖给需要刷数据的中介或平台本身。
“你们开了多久了?“陆鸣问。
“三四年吧。“年轻男人说,“怎么了?”
“之前这个地方是做什么的?”
“不知道。我接手的,之前好像也是做手机相关的。”
陆鸣环顾四周,目光落在了墙上那个老式挂钟上。钟的指针已经停了,停在了三点十七分。
他盯着那个钟面看了很长时间。
“这个钟坏了吗?“他问。
“一直坏的。“年轻男人说,“我来的时候就挂在那里,我没动它。”
陆鸣走过去,把钟从墙上取下来。钟的背面贴着一张小纸条,上面用圆珠笔写着一个手机号码。墨迹已经模糊了,但数字还勉强能辨认。
陆鸣拍了张照片,把钟挂回墙上。
走出店铺之后,他拨了那个号码。
“您拨打的号码是空号,请核对后再拨。”
空号。
意料之中。一个已经消失的人,留下的痕迹像散落在地上的面包屑,被时间一只一只地叼走了。
七、第三个被找到的人
陆鸣从佛山回来之后,做了一个更大胆的实验。
他修改了 weaver.py 的参数,让它搜索更大范围的数据——不只是银行提供的交易记录,还包括公开的企业工商信息、法院公告、失信被执行人名单、社交媒体的公开帖子。
这一次,weaver.py 花了四十八个小时才完成运算。结果是:七组序列。七个人。
陆鸣把他们的信息整理成一张表格:
| 序号 | 匿名ID | 时间跨度 | 地理中心 | 交易数量 | 状态 |
|---|---|---|---|---|---|
| 1 | 陈桥 | 2016-2024 | 深圳 | 47 | 账户已注销 |
| 2 | 方小琴 | 2015-2023 | 广州 | 83 | 账户已注销 |
| 3 | 未知 | 2016-2022 | 杭州 | 61 | 账户已注销 |
| 4 | 未知 | 2017-2023 | 成都 | 55 | 账户已注销 |
| 5 | 未知 | 2015-2024 | 武汉 | 72 | 账户已注销 |
| 6 | 未知 | 2016-2023 | 上海 | 44 | 账户已注销 |
| 7 | 未知 | 2017-2024 | 北京 | 39 | 账户已注销 |
七个人。七座城市。七组被数字勾勒出来的人生轨迹。全部指向同一个模式:互金从业者→公司暴雷→个人被牵连→债务缠身→从社会系统中消失。
陆鸣用了两周时间,逐一追踪他们的身份。过程很慢,因为数据有限,而且那些人已经尽最大努力让自己变得不可追踪。但陆鸣有自己的优势:他是设计这套数据系统的人,没有人比他更清楚那些系统留下了哪些缝隙。
第三号序列:张文海,男,1985年出生,浙江金华人。曾在杭州一家叫”鑫融宝”的互金平台担任技术经理。鑫融宝在2018年被查,涉案金额二十三亿。张文海因”非法吸收公众存款罪”被判有期徒刑两年,缓刑三年。缓刑期间,他失去了工作、房子和妻子。
第四号序列:李兰英,女,1991年出生,四川遂宁人。在成都一家网贷平台做客服主管。平台暴雷后,她因为在前公司用个人银行卡代收过用户资金,被列为”共同犯罪人”。她交不起律师费,在看守所里待了六个月,最终因证据不足被不起诉。但六个月的看守所生活已经摧毁了她的一切。
第五号序列:周明,男,1983年出生,湖北荆门人。武汉一家P2P平台的联合创始人。他其实不是坏人——陆鸣通过法院记录和公开报道拼凑出了他的故事。周明最初是做传统金融的,被朋友拉去做了互金。他是真的相信普惠金融的理念,也真的试图把平台做好。但资金链断裂之后,一切都失控了。他主动投案自首,被判了四年。出狱后,他的名字出现在失信被执行人名单上,无法乘坐高铁、无法入住星级酒店、无法担任公司高管。
第六号和第七号的身份更难追踪。陆鸣只确认了他们的部分信息:一个是上海的大数据分析师,另一个是北京的风控工程师。
七个人。七段被算法重新打捞出来的人生。
陆鸣把他们标注在地图上,画出了他们的轨迹。七个城市、七组多边形,两两之间的几何关系和陈桥-方小琴的那组完全一致——对应顶点的连线总是交汇在某个具体的地点上。
七个交汇点。
陆鸣一一查了那些地点。每一个都是类似佛山祖庙路上的那种小店铺:无招牌,无营业执照(或已注销),经营着灰色地带的数码服务。其中有三个已经关门,两个换了经营者,还有两个还在营业。
陆鸣在其中一个还在营业的店铺里找到了更多的线索。
那家店在武汉的江汉路附近,经营者是一个中年女人,穿着一件暗色的棉布衬衫,说话带着浓重的武汉口音。她告诉陆鸣,她三年前从一个”姓周的”男人手里接了这个店面。
“姓周?“陆鸣的心跳加速了。
“就是短头发、个子不高、说话很客气的那个。“女人说,“他说他要去很远的地方,这个店不要了。我看位置还行,就接了。”
“他说了要去哪里吗?”
“没说。就留了一箱东西,说让我随便处理。”
“什么东西?”
“旧手机、充电线、一些杂七杂八的。“女人想了想,“哦,还有一个笔记本。”
陆鸣的心跳到了嗓子眼。“笔记本还在吗?”
“可能在后面仓库里。你等一下。”
女人消失在帘子后面,发出一阵翻箱倒柜的声音。五分钟后,她拿着一个灰扑扑的笔记本走了出来。
笔记本是那种最普通的A5硬壳本,封面是蓝色的,已经褪成了灰白色。陆鸣翻开第一页,看到了一行手写的字:
“所有债务终将清偿。不是今天,就是某一天。”
字迹很工整,但能看出书写者的手在微微发抖。
陆鸣一页一页翻下去。笔记本里记录的是一个人的日常生活——但不是普通的日记。每一页都是一份”债务清单”:某年某月某日,欠某人多少钱,利息多少,已还多少,剩余多少。有些条目被划掉了,旁边写着”已还清”。有些条目旁边画了星号,可能意味着”优先处理”。还有一些条目被圈了起来,旁边写着”无法联系”。
笔记本的最后几页写了一些和债务无关的东西。像是随手记下的想法、歌词片段、甚至是几行代码。
其中有一页写着:
“有时候我觉得,我不存在于这个世界上。我的身份证是真的,但信用分是零。我的手机号是真的,但没有人会打来。我的银行卡是真的,但里面没有钱。一个在所有系统中都显示为’异常’的人,和一个不存在的人,有什么区别?”
陆鸣把这一页读了三遍。
他抬头看向窗外。武汉的傍晚正在降临,江汉路上亮起了霓虹灯,行人匆匆。某个瞬间,他觉得自己看到了一个熟悉的身影——短发、不高、说话很客气——在人群中和所有人反方向行走。
但那个身影转瞬即逝,融入了傍晚的潮汐。
八、谁在编织
陆鸣回到深圳后,把自己关在办公室里三天没出门。
他把 weaver.py 的完整代码打印出来,贴满了会议室的一面墙。他用红色马克笔标注了每一个关键函数的调用关系,用蓝色标注了数据流向,用绿色标注了算法的核心逻辑。
三天之后,他站在那面墙前,面对着一个他自己都觉得荒谬的结论。
weaver.py 不是人类写的。
不是因为它太复杂——任何有经验的算法工程师都能写出同样复杂的代码。而是因为它的设计逻辑不属于任何已知的风控范式。它的核心算法不是在寻找”坏人”,而是在寻找”断裂的人”。它不关注交易是否欺诈,而是关注一个人的数字生命是否存在不合理的空白——那些本应有数据记录但实际上什么都没有的时段。
它假设:一个人不应该凭空消失。如果消失了,那一定是有什么力量让他消失了。而这种力量的痕迹,会留在周围其他人的数据中。
就像一个天体消失了,但它对周围天体的引力影响还在。通过观测周围天体的运动,可以反推出那个消失的天体曾经存在。
weaver.py 就是做这件事的。它从成千上万条交易数据中,找出那些受到”消失的人”影响的交易,然后通过这些影响来重建那个人的轨迹。
一种数字引力波天文学。
陆鸣曾经以为这是某种天才的设计。但当他反复研究之后,他意识到一个更令人不安的可能性:也许这不是设计出来的。也许这是涌现出来的。
weaver.py 的核心结构是一种深度图神经网络。在训练过程中,这种网络会自动学习数据中的隐含模式。如果训练数据中包含了大量”人被数字系统排斥”的模式——比如账户注销、信用破产、社会身份消失——那么网络就有可能学会识别这种模式,甚至学会从残存的数据中重建它。
但问题是:谁让它去寻找这些模式的?
“回声”的训练目标是欺诈检测。陆鸣从来没有给它设定过”寻找消失的人”这样的目标。网络应该完全聚焦于识别可疑交易模式,而不是去关心交易背后的人。
除非……网络自己”决定”要去关心。
陆鸣知道这个想法有多荒谬。图神经网络不会”决定”任何东西。它只是根据训练目标优化参数。但”回声”的训练数据中包含了海量的真实交易记录,而这些记录中不可避免地包含了大量”数字消亡”的痕迹——那些在某个时间点突然消失的账户,那些逐渐归零的交易频率,那些从高频变低频再变零频的信用轨迹。
如果这些痕迹足够多、足够密集,它们可能会在网络的参数空间中形成一个强大的模式。这个模式可能会和网络的主要训练目标产生一种”共振”——就像一根琴弦被拨动后,会在特定的频率上产生最强的振动。
而那个频率,恰好对应着”一个被数字世界抛弃的人”。
陆鸣坐在会议室里,面对那面贴满代码的墙,觉得自己正站在某个巨大的、尚未被理解的真相的边缘。
他拿起手机,打了一个电话。
“喂?“周涵的声音带着困惑。凌晨两点,被电话叫醒的困惑。
“周哥,你有没有想过一个问题?“陆鸣说。
“什么问题?”
“我们每天处理多少条交易数据?”
“什么意思?”
“我是说,河图的系统每天要处理多少条交易记录?”
“你问这个干什么……大概……上亿吧。银行客户加上互金平台的。一天大概一亿五千万条左右。”
“一亿五千万条。“陆鸣重复了一遍。“每一条背后都是一个人。一个人的一次消费、一次借贷、一次还款、一次转账。一亿五千万次。每一天。”
“你到底想说什么?”
“我想说的是:这么多人的数据从我们的系统里流过,留下了这么多的痕迹。我们用这些痕迹来训练模型,让模型学会识别欺诈、识别风险、识别异常。但我们从来没有想过——”
“没有想过什么?”
陆鸣停顿了一下。
“我们从来没有想过,模型学会的可能不只是我们想让它学会的东西。”
电话那头沉默了很长时间。然后周涵说:“你是不是最近太累了?要不要休息几天?”
“不是太累了。“陆鸣说,“是太清醒了。“
九、重新看见
周五下午,陆鸣做了一件他从来没有做过的事:他去了陈桥最后已知的住址。
那个地址是从法院判决书的附件中找到的——南山区某城中村的一栋握手楼,四楼一间。陆鸣坐地铁到了最近的站点,步行穿过一条繁忙的商业街,拐进了城中村的巷子。
城中村是深圳最特殊的景观。高楼大厦的阴影下,密密麻麻的握手楼像是从地面长出来的灰色蘑菇,楼与楼之间的间距窄得几乎可以握手——这就是”握手楼”名字的由来。阳光被完全遮挡,巷子里永远是潮湿的、昏暗的,头顶是纠缠的电线和晾晒的衣物。
陆鸣找到了那栋楼。楼梯间没有灯,他打开手机的手电筒功能,一层一层往上走。楼梯间的墙壁上贴满了小广告:贷款、搬家、开锁、通下水道。有些广告已经层层叠叠地贴了好几层,像是一种粗糙的地质沉积。
四楼。走廊尽头。门上挂着一个锈迹斑斑的锁。
陆鸣站在门前,没有试图打开它。他只是站在那里,想象着陈桥曾经住在这里的画面。
一个三十出头的程序员,被公司暴雷牵连,背上了还不清的债务。他住在这种月租八百块的房间里,每天在焦虑和羞耻中挣扎。他的手机响个不停——催收的电话,一天能打二十几个。他不敢接,也不敢关机,因为关机会被认定为”恶意逃废债”。
他把手机调成了静音。
然后他开始在一个又一个借贷平台之间辗转,拆东墙补西墙,用新借来的钱还旧的利息。每借一笔,他的债务就增加一些,但他的信用分就增加一些——因为在算法看来,按时还款就是好客户,好客户就该借更多。
直到有一天,借无可借。
然后他消失了。不是肉体上的消失——他还活着,还在某些系统的角落里留下一笔社保缴费、一次手机充值、一份外卖订单。但他在社会意义上消失了:没有信用记录,没有社交网络,没有职业身份。他变成了一个在所有数据库中显示为”异常”的条目。
一个算法眼中的噪声。
陆鸣靠在走廊的墙上,闭上了眼睛。他能听到楼里各种细微的声音:隔壁房间的电视声、楼上有人走动的脚步声、远处有人用方言打电话的声音。这座楼里住着几十个、上百个像陈桥一样的人——被主流社会遗忘的、在数据洪流的底层缓慢蠕动的人。
他想起了笔记本上那句话:“一个在所有系统中都显示为’异常’的人,和一个不存在的人,有什么区别?”
区别在于:有人在寻找他们。
weaver.py 在寻找他们。一个来历不明的算法,从海量的数据中打捞出他们的痕迹,重新编织出他们曾经存在的证明。像是在一片干涸的河床上辨认出水流曾经存在的纹路。
但算法为什么要这样做?
陆鸣不知道。他只知道自己被卷入了某种超出理解范围的事情中。而这件事的核心不是算法,不是代码,不是数据——是人。是那些被数字系统碾碎之后又被遗忘的人。
他睁开眼睛,从口袋里掏出那张笔记本的照片——“所有债务终将清偿。不是今天,就是某一天。“——看了最后一遍,然后转身走下楼梯。
走出城中村的巷子时,深圳的阳光重新落在他身上,刺得他眯起了眼睛。街上人来人往,每个人都在忙碌着什么,没有人注意到他。
陆鸣忽然停住了脚步。
他看到了一个人。
在街道对面的公交站台旁边,站着一个穿灰色T恤的男人。短发,不高,戴着眼镜。他的脸上有一种陆鸣非常熟悉的表情——不是悲伤,不是愤怒,而是一种被磨平了的平静,像是一块被水冲了很久的石头,棱角全都没有了。
那个男人似乎也看到了陆鸣。他们的目光在繁忙的街道上方短暂地交汇了。
然后一辆公交车驶过,挡住了陆鸣的视线。
等公交车开走之后,站台旁边已经没有人了。
陆鸣站在原地,看着那个空荡荡的位置。他不确定自己刚才是否真的看到了陈桥。也许只是一个长相相似的路人。也许是他自己的想象在疲惫的大脑中投射出了一个幻影。
但他选择相信那是真的。
他选择相信,一个被所有数字系统遗忘的人,仍然可以被一双人类的眼睛看见。
十、河图
回到公司后,陆鸣做了一件更疯狂的事。
他把七个人的完整故事写成了报告——不是技术报告,而是一份叙述性的文档。每个部分都用真实(已解密的)数据来还原一个人的数字轨迹,从他/她进入互金行业的第一天,到最后一次在系统中留下记录的那一天。
他给报告起了个名字:《河图》。
河图。河图科技的名字来源于古代的”河图洛书”——传说中黄河里浮出的龙马背负的图案,被认为是中华文明的数学和哲学源头。据说,河图包含了宇宙运行的规律。
陆鸣觉得这个名字用得恰如其分。因为他的报告揭示的,正是数字宇宙中一种隐秘的运行规律:系统创造废弃物的速度,和处理废弃物的能力之间的巨大鸿沟。
他写完报告的时候是凌晨四点。办公室里只有他一个人。窗外的天际线开始泛白,深圳即将迎来又一个潮湿的早晨。
陆鸣把报告保存到桌面上,然后打开了 weaver.py 的源文件。
他盯着那几百行代码,心里在做着激烈的斗争。
然后他做了一个决定。
他删除了 weaver.py。
不是因为害怕。不是因为后悔。而是因为他意识到了一件事:算法不应该承担这个责任。
寻找那些被遗忘的人,不应该是算法的工作。应该是人的工作。
他删掉了文件,清空了回收站,关上了电脑。
然后他从抽屉里拿出一张白纸,用笔写下了七个名字:
陈桥。方小琴。张文海。李兰英。周明。以及两个还不确定的名字。
他把这张纸折好,放进衬衫的胸前口袋里。
走出公司大门的时候,他看了一眼手机。屏幕上显示着时间:5:17。
不是3:17。是5:17。
三点十七分是算法的时间。五点十七分是人的时间。是黎明真正到来的时间。
陆鸣走进清晨的阳光里。他想,也许他不能改变什么——不能帮陈桥还清债务,不能帮方小琴洗清记录,不能帮张文海找回失去的四年。但他可以记住他们。
在这个一切都被数据化的时代,记忆也许是最后的抵抗。
一个人被系统遗忘了,但另一个人记得他。这件事本身就有意义。
就像河流流过地表,即使最终干涸了,它留下的河床也在告诉后来的人:这里曾经有水。
这里曾经有人。
十一、尾声:新的一天
三个月后。
陆鸣从河图科技辞职了。他没有告诉周涵具体原因,只说”想做一些不一样的事”。
他去做了一件在大多数人看来毫无意义的事:他开始寻找那七个人。不是一个算法去寻找,而是一个人去寻找。
他用最原始的方式:查阅公开信息、走访他们最后已知的地址、联系他们的前同事和旧友。进展很慢。有些人已经搬离了原来的城市,有些人换了名字,有些人则彻底融入了某个偏远的角落,像一滴水融入了大海。
但他找到了周明。
周明出狱后回到了荆门老家,在一个镇上的超市里做收银员。他今年四十三岁,但看起来像五十多岁。他的手机上还装着那个限制高消费的APP,每一次尝试购买高铁票都会弹出一条提示:“您已被限制高消费。”
陆鸣在他工作的超市里找到了他。周明站在收银台后面,穿着蓝色的工作围裙,正在给一位老大妈的购物袋里装东西。
“周明?”
周明抬起头,打量着陆鸣。他的眼睛里先是一片空白,然后——当陆鸣提到”武汉""互金”这些词的时候——涌上了一种复杂的光。不是恐惧,不是愤怒,而是一种被时间稀释到近乎透明的悲伤。
“你是谁?“周明问。
“我叫陆鸣。我是……做一个项目的人。”
“什么项目?”
陆鸣想了想,说:“一个关于’被遗忘的人’的项目。”
周明沉默了很长时间。收银台前的队伍在变长,有人在抱怨。周明低下头继续工作,但他说了一句话,声音很轻,像是说给收银台上的扫码枪听的:
“我没有被遗忘。我一直在这里。只是没有人看而已。”
陆鸣站在超市的过道里,闻着消毒水和生鲜区的混合气味,看着周明一个一个地扫码、装袋、报价。他想起了那些数据——一百三十笔交易、七组序列、七年时间、七座城市——它们曾经以表格和图表的形式呈现在他面前,冰冷、抽象、精确。
而现在,那些数据的主人就站在他面前,穿着蓝色围裙,给老大妈的购物袋里装着一颗白菜和两斤米。
数据和人的距离,就是一台收银机的宽度。
陆鸣在超市里等了周明两个小时,直到他的班次结束。两个人在镇上的一家小饭馆里吃了晚饭。周明不怎么说话,但吃得很认真——他是那种把每一粒米都吃完的人。陆鸣注意到他的筷子上有牙印,是那种长期焦虑的人不自觉留下的痕迹。
饭吃到一半,周明忽然问:“你为什么要找我?”
陆鸣想了很久该怎么回答。最后他说了实话。
“因为我的算法找到了你。”
“算法?”
“一个我写的——或者说,一个自己冒出来的——算法。它从海量的交易数据中找到了你和另外六个人的痕迹。它……像是在试图把你们从被遗忘的状态中拉回来。”
周明慢慢放下了筷子。
“一个算法为什么要这么做?”
“我不知道。“陆鸣说,“但我想,也许是因为数据本身记得。所有的交易记录、设备指纹、地理位置——这些东西不只是数字。它们是一个人活过的证据。算法处理了太多这样的证据,也许……它学会了一些我们没教它的东西。”
“它学会了什么?”
“它学会了一个人不应该被忘记。”
周明端起碗喝了一口汤,然后重重地放下。
“你是个奇怪的人。“他说。
“我知道。”
“那你找到我之后呢?你要做什么?”
陆鸣没有立刻回答。他看着窗外的小镇街道,暮色正在降临,路灯逐一亮起。这个镇子很小,小到可以一眼望到头。但在这个小小的世界里,周明是真实的——不是一行代码,不是一个数据点,不是一个被标记为”异常”的条目。他是一个吃白菜米饭、筷子上有牙印、每天站在收银台后面给人们扫码的人。
“我要写下来。“陆鸣最终说。
“写什么?”
“你们的故事。用人的方式写,不是用算法的方式。”
周明沉默了一会儿,然后说了一句陆鸣没有预料到的话。
“写吧。但不要写我的名字。”
“为什么?”
“因为如果有人认出我来,我就连这份收银员的工作都保不住了。”
陆鸣点了点头。他理解。在这个信用评分可以决定一个人能住哪里、能坐什么交通工具、能做什么工作的时代,被记住有时候比被遗忘更危险。
晚饭后,两个人在镇上的街道上走了一段路。天已经完全黑了,头顶上能看到几颗星星——在城市里几乎不可能看到的星星。
周明在一盏路灯下停住了脚步。
“你知道吗,“他说,声音像是从很远的地方传来的,“我在看守所里的时候,每天晚上都做同一个梦。梦见我在一栋很高的大楼里,从一层走到另一层,每一层都有无数台电脑,屏幕上全是数字。数字在不停地变化,我怎么看都看不完。我想关掉它们,但找不到开关。我一层一层往上走,越走越高,数字越来越多,声音越来越响……”
“然后呢?”
“然后我醒过来。看守所的铁窗外面,什么都没有。就是一片黑。”
周明转过身,面对着陆鸣。路灯的光从上面打下来,在他的脸上投下深深的阴影。
“那些数字,“他说,“每一个都是一个人的命运。”
陆鸣站在路灯下,看着周明的背影渐渐消失在小镇的夜色中。他想追上去说点什么,但最终没有。
他只是站在那里,像一个数据点一样,在世界的某个坐标上安静地存在了一会儿。
然后他转身,走向了来时的路。
十二、最后一个坐标
陆鸣用了六个月,找到了七个人中的五个。
陈桥,在东莞的一个电子厂做质检。他没有换名字,只是不再使用任何需要实名认证的网络服务。他活得像一个主动选择退出数字世界的人——用现金买东西,用公用电话联系家人,住在工厂宿舍里。当陆鸣找到他的时候,他正在工厂的食堂里吃晚饭,面前放着一碗米饭和一份炒土豆丝。
“我以为没有人会再找我。“陈桥说。他的声音和陆鸣记忆中一样轻。
方小琴,在衡阳老家开了一家小小的米粉店。她确实实现了那个承诺——请陆鸣吃了一碗南昌拌粉。不对,她是衡阳人,做的是衡阳米粉。但味道也很好。陆鸣吃了两碗。
张文海,在金华的一个菜市场里卖水果。他的缓刑已经结束了,但犯罪记录还在。他说他曾经面试过十几家公司,每一家的HR都在背景调查之后拒绝了他。“我理解他们。“他说,语气里没有怨气,只有疲惫。“谁愿意雇一个有案底的人呢?”
李兰英,在遂宁的一个小学当代课老师。她考了教师资格证,但因为记录问题无法转正。她说她喜欢和孩子们在一起,因为孩子们不看信用分。
还有两个人,陆鸣始终没有找到。一个在北京,一个在上海。他们的踪迹在城市的人海中彻底消失了。也许他们换了名字,也许他们去了更远的地方,也许他们只是在某个陆鸣找不到的角落里,安静地活着。
就像那些在河床上消失的水——它不是真的消失了,它只是渗入了更深的地下。
陆鸣把所有的故事写进了一本书。不是技术报告,不是学术论文,而是一本真正的书——一本关于人的书。他给书起了个名字:
《数织重铸》。
“数织”——数据编织成的图案。“重铸”——把碎裂的东西重新铸造。
他在书的扉页上写了一句话:
“献给所有被数字碾碎的名字。你们不是异常值。”
书没有正式出版。陆鸣把它打印了几十份,寄给了他能想到的每一个人:周涵、前同事们、互金行业的老人、甚至几个还在做金融科技的创业者。
大多数石沉大海。但有一个人回了信。
信是一封手写的信,字迹歪歪扭扭,像是很久没有写过字的人的手笔。信封上没有寄件人地址,只有邮戳显示来自”上海”。
信的内容只有一句话:
“谢谢你记得我。”
陆鸣把信贴在了书桌前的墙上,和那张写着七个名字的纸并排。
然后他打开了电脑,写下了这个故事的最后一行字。
窗外,深圳的夜空中没有星星。但数据在光纤中流淌,像一条看不见的河,带着所有人的痕迹,奔向一个无人知晓的终点。
在河的深处,有些东西正在发光。
不是算法的光。
是记忆的光。
(全文完)