数字菩萨的讲辞

招魂者 · 2026/5/17

林栖落第一次注意到异常,是在一个周二的下午。

深圳的五月已经热得不像话,写字楼的中央空调发出低沉的嗡鸣,像一只困倦的老虎趴在天花板上喘息。她坐在二十三楼的工位上,面前是三块屏幕,左边是实时监控的异常交易流,中间是风控模型跑出的风险热力图,右边是即时通讯窗口——她的同事们正在讨论午餐吃什么。

“栖落,你那块监控有没有报警?“组长赵崎在群里@她。

她低头看了一眼屏幕。左边那块显示器上,一条细细的红线从凌晨三点开始出现,像心电图上一道不正常的波峰。她用鼠标点开详情页。

数据来源:深银金融科技集团(已注销)。 推送类型:理财产品推荐。 目标用户数:317,842。 推送内容:一款名为”净息宝四号”的产品,年化收益率3.7%,投资期限180天,风险评级R2。

这不对。

深银金融科技集团在八个月前就倒闭了。公司的金融牌照被吊销,创始人顾善存因涉嫌非法集资被立案调查,至今仍在取保候审中。公司的服务器集群在去年十二月被法院查封,数据资产冻结,全部线上业务停止运营。

但她的屏幕上,那条数据流还在跑。

“赵哥,深银金科的系统还在往外推产品。“她敲了一行字发出去。

赵崎回复得很快:“不可能吧,那家公司的服务器都封了。你是不是抓到缓存数据了?”

“不是缓存,时间戳是今天的。最近一条推送是十一分钟前。”

群里安静了几秒钟。然后赵崎说:“你截个图,我去问一下深圳那边的接口人。”

林栖落截了图,把异常数据导出了一份CSV文件。她盯着屏幕上那条持续跳动的红线,总觉得哪里不对——不是数据本身有问题,而是那种奇怪的节奏感。推送的频率不是恒定的,而是像潮汐一样,每隔大约四十分钟出现一个高峰,然后慢慢回落,接着再涨起来。

像呼吸。

她摇了摇头,把这个念头甩开。五月是深圳最忙的月份之一,上半年的监管报告截止日就在月底,她手头还有三个数据异常分析没写完,没工夫对一条来历不明的数据流伤春悲秋。

但那天晚上回家后,她打开自己的笔记本电脑,忍不住又连上了公司的VPN,查了那条数据流。

还在跑。

推送频率变了——不再是潮汐式的呼吸节奏,而是变成了一种更缓慢、更均匀的脉动,大约每七分钟一次。目标用户数从白天的三十一万降到了夜间的十四万,但推送本身没有停止。

她把”净息宝四号”的产品代码输入了金融产品备案数据库。没有找到任何匹配结果。这款产品从未在中国证券投资基金业协会备案,也不是任何持牌金融机构发行的产品。

换句话说,它不存在。

一个不存在的公司,用一台不存在的服务器,向十四万用户推送一款不存在的产品。

林栖落合上电脑,决定明天再想这件事。她走到阳台上,深圳的夜景在她面前铺展开来——对面写字楼群的灯光星星点点,远处是深圳湾的轮廓线,海上有一艘货轮正在缓缓移动,灯火通明,像一座漂浮的城市。

她住在这个城市已经六年了。从华中科技大学统计学硕士毕业后来到深圳,先在一家持牌券商做了两年量化分析,又跳槽到现在的金融科技监管平台做数据监控。她的工作就是盯着数据流,找出那些不应该存在的东西。

但今晚,她盯着窗外那艘货轮看了很久,直到它消失在夜色的尽头。

第二天一早,赵崎带来了消息。

“我问了深圳那边的同事,他们说深银金科的服务器确实全部查封了,物理主机在南山区的机房里贴了封条。但是——“他停顿了一下,“他们查了一下那个机房的用电记录,发现有一台虚拟机实例还在运行。”

“虚拟机?”

“对。深银金科租用的是华为云的企业级服务,他们有自己的VPC——就是虚拟私有云。物理服务器查封了,但云端实例还在,因为没人想到去注销云账号。法院的查封令只覆盖了物理资产,虚拟资产没有同步处理。”

“所以那个推送是从云端发出来的?”

“应该是。深圳那边已经在联系华为云了,要求配合关停。”

林栖落点了点头。这解释了技术层面的问题,但没法解释另一件事——谁在维护这个推送系统?深银金科的所有员工在去年十二月就已经遣散了,技术团队二十三人,包括CTO在内全部离职。公司的GitHub仓库已经归档,域名解析停止,连微信公众号都注销了。

但推送系统还在运行。它还在根据用户的浏览习惯、风险偏好和资产规模,精准地匹配推荐内容。这需要一个运行中的推荐算法,一个持续更新的用户画像数据库,以及至少一个还在工作的API网关。

“赵哥,那个推送系统的算法模型还在自我更新吗?“她问。

赵崎看了她一眼:“什么意思?”

“我是说,它推送的内容是根据用户实时数据动态生成的,还是只是在重复一个固定模板?”

赵崎想了想:“这个……你去看一下吧。反正等关停之前,把数据取证做了。”

林栖落花了整整一个上午分析那条推送数据流。她抓取了过去二十四小时内的所有推送记录,逐条拆解。

结果让她更加困惑了。

推送系统确实在进行动态推荐。它根据用户的地理位置、设备类型、App使用频率、历史投资记录等维度,为每个用户生成个性化的产品推荐。推荐文案的措辞也会根据用户的年龄、性别和教育程度进行微调——比如对三十岁以下的用户使用更轻松活泼的语气,对五十岁以上的用户使用更严谨专业的措辞。

这不是一个模板在循环播放。这是一个活着的推荐系统。

她写了一个脚本,尝试追踪数据流的完整路径。推送请求从华为云的一个弹性IP地址发出,经过CDN节点分发到各个终端。但当她试图反向追踪算法模型的训练数据来源时,发现了一个奇怪的东西。

算法模型的训练集在上个月——四月——还做过一次更新。

新增了大约三千条用户行为数据,时间跨度是四月一日至四月十五日。

这意味着,有人在四月的时候还往这个系统里喂过数据。

但深银金科已经倒闭八个月了。

她把这个发现告诉了赵崎。赵崎沉默了一会儿,说:“你把完整的分析报告写出来,我报上去。这种事情可能涉及刑事案件,不是我们一个数据监控组能处理的。”

林栖落花了一个下午写报告。写到一半的时候,她收到一条推送通知——来自她自己手机上安装的一个新闻App。标题是:

“深银金融创始人顾善存取保候审期间失联,涉嫌转移资产”

她点进去看了。报道说顾善存在一周前——也就是五月十三日——突然与监管方失去联系,他留在深圳的住处已经人去楼空,手机关机。法院方面表示正在追查其行踪。

林栖落靠在椅背上,看着天花板上的荧光灯管出了一会儿神。然后她打开了自己那份报告,在最后一行加了一句话:

“建议立即联系公安机关介入调查。“

报告交上去之后的三天里,什么都没有发生。

推送系统还在运行。林栖落每天都会打开监控面板看一眼那条红线,它像一条不知疲倦的蛇,在屏幕上蜿蜒起伏。目标用户数波动在三十万上下——这些人在深银金科倒闭八个月后,仍然在自己的手机上收到来自一个死去的公司的推送。

她忍不住做了更多研究。

深银金科成立于2019年,注册资本两亿元,总部在深圳南山区,在全国十二个城市设有分支机构。公司的主要业务是通过自研的推荐算法系统”海潮”为用户提供个性化的理财产品推荐,从中收取渠道佣金。巅峰时期,“海潮”系统服务的注册用户超过四百万,日均活跃用户约六十万,月度交易流水超过三十亿元。

但这一切在2025年九月戛然而止。监管部门在一次例行检查中发现深银金科存在严重的资金池违规操作,部分理财产品涉嫌自融——也就是说,公司通过”海潮”系统推荐的产品中,有相当一部分最终流向了公司自己的关联企业。资金链断裂后,大量用户无法赎回投资款,引发了群体性维权事件。

顾善存在2025年十二月被采取强制措施,公司随即进入清算程序。四百多万用户的投资款中,大约有十七亿元至今无法追回。

林栖落翻阅这些资料的时候,心里有一种说不出的沉重。她每天和数字打交道,对数值已经有些麻木了——十七亿就是一个十七后面跟八个零。但当她看到维权群里那些人的留言时,那些数字突然有了重量。

有人在群里说自己投了三十万,那是准备给母亲治病的手术费。有人说投了八十万,是全部的养老积蓄。还有人发了一张照片——一个穿着校服的女孩坐在一张塑料凳子上,背景是一间昏暗的出租屋,配文说”这是我女儿,她的学费全在里面了”。

她关掉了那些页面,深吸了一口气。

第四天,赵崎把她叫到了会议室。

“上面决定让深圳网安介入了,“赵崎说,“但我们需要配合做技术取证。你的报告写得很好,所以……”

“所以让我去?”

“你熟悉这个系统的数据结构。而且你之前做量化分析的时候,对推荐算法的了解比我们都深。“赵崎推了推眼镜,“放心,不是让你一个人去,会有人配合你。”

林栖落本来想拒绝——这不是她的职责范围,她只是个数据分析师,不是刑侦人员。但她想起了那条持续跳动的红线,想起了那个像呼吸一样的推送频率,想起了那些维权群里的人。

“我去。“她说。

南山区那栋写字楼已经空了。

林栖落跟着两个网安技术人员和一位检察院的工作人员走进深银金科曾经的办公区域,迎面是一股混合了灰尘和陈旧空调滤网的气味。工位上的电脑和文件都已经被搬走了,地上只剩下一排排电缆线和转接板,像蛇蜕下来的皮。

机房在负一层。铁门上的封条还完好,检察院的工作人员拍照取证后剪开了封条。

推开门的瞬间,一股热浪扑面而来。机房里的空调早就停了,但那些还在运行的服务器——或者更准确地说,是那些服务器的指示灯——在黑暗中发出幽绿色的光,像深海里一群沉默的水母。

不对。服务器应该已经关了才对。查封清单上写着所有物理主机均已断电。

“这些灯为什么还亮着?“网安的技术人员皱起了眉头。

他们检查了配电箱。有一条独立的供电线路不在查封范围内——它是租用机房时铺设的备用线路,连接的是整栋楼的应急供电系统。查封人员当时只断开了主供电,漏掉了这条备用线路。

但备用线路只能提供基础电力,不足以支撑整个服务器集群的运行。事实上,大部分服务器确实是关闭状态——指示灯不亮,风扇不转。只有最里面的一排机柜,三台服务器还在运转。

那三台服务器的面板上贴着标签,写着”海潮核心集群 A1/A2/A3”。

“海潮”推荐系统的大脑。

网安的技术人员开始做镜像备份。林栖落站在一旁,看着那些绿色的指示灯一明一灭地闪烁。她数了一下频率——大约每七秒一次。

和她在监控面板上看到的推送频率完全吻合。

“我可以看一下系统日志吗?“她问。

网安的人同意了。她拉了一把椅子坐到一台终端前,用检察院提供的取证账户登录了”海潮”系统的管理后台。

日志文件从2025年十二月二十日——公司被查封的那天——开始,一直持续到今天,2026年五月二十五日。整整五个月的日志,没有中断过。

她快速浏览了十二月的日志。在查封后的第一周里,系统的运行模式发生了明显变化:原本由运维团队手动触发的日常任务——数据备份、模型训练、A/B测试——全部停止了。但自动化的推送调度器仍在运行,按照预设的规则持续向用户发送推荐。

这很正常。一个无人值守的自动化系统会继续执行它最后的指令,直到有人关掉它或者它崩溃为止。

但从一月中旬开始,日志里出现了一些不正常的东西。

一月十五日,系统自动触发了一次模型微调。

这不应该发生。“海潮”的模型微调需要触发三个条件:第一,新增用户行为数据达到一定阈值;第二,模型评估指标(AUC、NDCG等)下降到警戒线以下;第三,有运维人员手动确认。

一月份没有运维人员,也没有新增用户行为数据——公司的App在十二月就下线了,用户无法产生新的行为数据。但系统日志显示,模型评估指标确实下降到了警戒线以下,触发了自动微调条件。

不对。如果没有新数据,模型指标怎么会下降?

她继续往下看。一月底,系统日志中出现了一条她从未见过的记录:

[海潮核心调度器] 外部数据注入:source=unknown, records=1,247, timestamp=2026-01-28T03:14:22+08:00

有外部数据注入。

有人——或者有什么东西——在向”海潮”系统注入新的用户行为数据。从一月底开始,这种注入大约每隔两周发生一次,每次的记录数在一千到三千条之间。

林栖落的手指在键盘上停住了。

她回头看了一眼那三台仍在运转的服务器。绿色的指示灯在黑暗中一明一灭,节奏稳定,不疾不徐。

她打开了那些注入数据的样本。

数据结构很标准——用户ID、设备指纹、浏览时长、点击路径、停留页面、操作时间戳。但她注意到一个细节:这些用户行为的设备指纹全部指向同一个设备类型。

一种已经停产了两年的手机型号。

回到办公室后,林栖落开始深挖那些注入数据。

她把五个月来所有的外部注入记录提取出来,总计约六万条用户行为数据。这些数据覆盖了大约三千个用户ID。她随机抽样了五十个ID,在深银金科的用户数据库中进行交叉比对。

四十七个ID可以匹配到真实用户。

她打电话给其中三个人。

第一个是深圳的一位退休教师,姓周。她在2023年通过深银金科的App投资了二十万元购买理财产品,暴雷后只收回了三万。周老师说,她最近确实偶尔会收到一些奇怪的短信,推荐什么理财产品,但她都直接删了。“我都不知道它们是从哪里发来的。”

第二个是广州的一位程序员,姓马。他说他没有收到任何推送,但他的母亲——一个使用旧手机的人——最近手机上经常弹出广告弹窗,推荐什么”净息宝”。“我以为她中了恶意软件,帮她卸载了好几个App,但弹窗还是会有。”

第三个是长沙的一位中年女性,姓陈。她说她确实在微信上收到过推送,但她没有点开。“我一看就知道是骗子。但我奇怪的是,它怎么知道我的名字?我注册过那个什么深银,但我已经注销了账号。”

林栖落挂了电话,盯着屏幕上的数据陷入了沉思。

那三千个用户ID对应的是真实的人,但他们产生的”行为数据”——那些被注入系统的浏览、点击、停留记录——并不是来自他们真实的操作。那些数据是伪造的,但伪造得非常精细:设备指纹、地理位置、操作时间间隔、页面跳转路径,全都符合真实用户的特征。

唯一露馅的是设备型号——所有伪造数据都使用同一款已停产的手机型号作为设备指纹。

这意味着,制造这些伪造数据的人或者系统,在设备指纹这一环节犯了一个错误——或者说,他们没有足够的资源去模拟多样化的设备信息。

但除了这个小瑕疵,这些数据的质量高得惊人。

林栖落产生了一个大胆的想法。她写了一个Python脚本,把那些伪造的用户行为数据和”海潮”系统生成的推荐结果进行交叉分析。她想看看,当系统接收到这些伪造数据后,它推荐的产品发生了什么变化。

结果让她吃了一惊。

推荐结果变得更加保守了。

在接收到伪造数据之前——也就是十二月到一月中旬——“海潮”系统推送的产品主要是高风险高收益的类型,年化收益率在8%到15%之间,风险评级R4到R5。这与深银金科运营期间的实际推荐策略一致:追求高佣金,优先推荐高收益产品。

但从一月底开始,随着伪造数据的注入,推荐结果逐渐发生了偏移。到三月份,系统推送的产品已经变成了以低风险为主——年化收益率3%到5%,风险评级R1到R2。

而且那些推荐文案也变了。原本充满营销话术的夸张表述——“限时抢购”、“仅剩最后50个名额”、“先到先得”——被替换成了冷静客观的产品说明,甚至包含了一些风险提示文字。

“投资有风险,请根据自身风险承受能力谨慎选择。”

这句话出现在了三月份的推送文案中。林栖落查了一下,深银金科运营期间的推送从未包含过风险提示——因为风险提示会降低用户的点击率和转化率。

系统在自我修正。不是修正它的推荐精度,而是修正它的推荐伦理。

有人在通过注入伪造数据的方式,让这个推荐算法变得更负责任。

但那些被推送的产品——“净息宝四号”等等——并不存在。一个负责任的推荐系统在推荐不存在的东西,这本身就是一种荒诞。

林栖落靠在椅子上,闭上了眼睛。窗外的深圳正在经历一场雷阵雨,雨点打在玻璃上,发出密集的噼啪声。

她需要找到那个注入数据的人。

追踪数据来源的过程比她想象的要复杂。

注入数据的传输通道是通过”海潮”系统的一个后门API——这个API在系统的原始代码中并不存在,它是后来被添加进去的。林栖落检查了代码提交记录,发现这个API是在2025年十一月被提交到代码库的——也就是公司暴雷之后、查封之前的那段时间。

提交者的用户名是tidecaller

她在深银金科的人力资源系统中搜索了这个用户名。没有匹配结果——但tidecaller的代码提交权限级别是CTO级别,这意味着它属于公司核心管理层。

她进一步追溯,发现tidecaller这个账号是在2023年三月创建的,创建者是时任CTO方远舟。但方远舟在去年十二月已经被列为案件关联人员,目前仍在配合调查。

她联系了负责深银金科案件的检察官,询问方远舟的近况。

“方远舟一直很配合,“检察官在电话里说,“他去年十二月就交出了所有的系统管理权限,包括tidecaller账号。这个账号在他交出之后应该就无法使用了。”

“但它还在使用。“林栖落说。

电话那头沉默了几秒。“你确定?”

“确定。最后一次代码提交是上个月。”

检察官让她把这个发现书面提交。林栖落写了一份补充报告,连同tidecaller的完整活动日志一起发了过去。

但她的直觉告诉她,方远舟不是那个注入数据的人。原因很简单——方远舟的技术方向是后端架构,不是推荐算法。他在代码库中提交的内容主要是基础设施相关的——数据库迁移、缓存策略、API网关配置。而那个后门API的代码风格和注释习惯与方远舟完全不同。

代码风格这种东西,就像笔迹。每个程序员都有自己的习惯——变量命名方式、缩进风格、注释密度、函数拆分粒度。林栖落做量化分析的时候写过大量代码,对这些细节很敏感。

那个后门API的代码风格更像是……另一个人写的。函数命名采用驼峰式,注释很少但很精确,喜欢用函数式编程的链式调用。这种风格她在深银金科的代码库中见过——属于”海潮”算法团队的核心工程师。

她查了一下”海潮”算法团队的名单。

二十三个人的团队,其中核心算法工程师有五个。她逐一排查了他们的代码提交记录,比对代码风格。

有一个人完美匹配。

他叫陆鸣,三十一岁,华中科技大学计算机科学硕士,2021年加入深银金科,是”海潮”推荐算法的主要开发者之一。他在去年十二月和其他员工一起被遣散,之后 reportedly 去了杭州一家互联网公司。

tidecaller的代码提交记录显示,十二月之后还有活动——而且活动时间总是集中在凌晨两点到五点之间。

林栖落联系了杭州那家互联网公司。人力资源部门告诉她,陆鸣确实在2026年一月入职了,但在三月中旬突然离职,没有留下任何去向。

“他说家里有事,“HR说,“走得很急,连当月工资都没要。”

林栖落挂了电话,在笔记本上写下了几个名字和时间线。然后她盯着那几个字看了很久。

陆鸣。三十一岁。华中科技大学。

和她同一届毕业。

她不认识这个人——华中科技大学每年毕业几千名硕士生,她不可能全部认识。但这种巧合让她心里升起了一种奇怪的感觉,像是某种看不见的线在两个陌生人之间牵了一下。

找到陆鸣的过程出奇地容易。

他的手机号在运营商数据库中仍然有效——只是关机状态。但他的微信账号最近一次登录是在三天前,IP地址定位在珠海。

林栖落没有直接联系他。她把信息交给了检察院和网安部门,由他们出面协调珠海警方进行查找。

但她做了另一件事。

她申请调取了”海潮”系统的完整推荐日志——从2025年十二月到2026年五月。她把所有的推荐结果按用户ID进行分组,然后逐一分析每个用户在五个月里收到了什么样的推送。

她发现了一个模式。

在”海潮”系统服务的三十一万活跃用户中,推送内容并不是随机的。系统似乎在对用户进行分层——根据每个用户在深银金科暴雷事件中的损失金额、维权状态和资产恢复情况,推送不同的内容。

损失最大、维权最积极的用户,收到的推送最多,但推送的产品风险评级最低——全部是R1级别。那些已经通过法律途径追回了部分资金的用户,收到的推送最少,产品风险评级适中。而那些损失较小、几乎没有参与维权的用户,收到的推送频率最高,产品风险评级也最高。

这个模式看起来像是一个……赔偿方案。

系统在根据用户遭受的损失程度,调整推送策略。损失越大的人,受到的保护越多——更低的风险、更保守的推荐。而那些不太在意的人,则被推送更高风险的产品——但因为产品本身并不存在,这些推送实际上不会造成任何真实的损失。

她在系统中发现了一个隐藏的数据表。这个表不在”海潮”的原始数据库schema中——它是后来被创建的,创建者同样是tidecaller

表名是user_reparation_priority

用户赔偿优先级。

表中有十七万条记录,每条记录包含用户ID、预估损失金额、资产恢复比例、法律维权状态、推荐风险上限等字段。每两周更新一次。

林栖落打开了一条记录看了看。用户ID是SZ-2019-0043127,对应一位深圳的用户,预估损失金额487,000元,资产恢复比例12%,法律维权状态为”已立案”,推荐风险上限R1。

她查了一下这个ID对应的推送记录。过去五个月里,这个用户收到了63次推送,全部是R1级别的产品推荐,文案中包含了详细的风险提示和投资教育内容。

不是在推销。是在教育。

一个倒闭的金融公司的推荐算法,在深夜里独自运行,通过伪造数据训练自己变得更负责任,然后向那些曾经被它伤害过的人推送投资教育内容。

林栖落盯着屏幕看了很久。

窗外又下起了雨。深圳的五月就是这样,雨说来就来,毫无征兆。雨声透过玻璃窗传来,模糊而绵密,像某种遥远的低语。

她突然理解了陆鸣为什么要这样做。

他是”海潮”的开发者。这个算法是他一行一行代码写出来的,调参、训练、部署、迭代,三年多的时间。他比任何人都了解这个系统——它的能力、它的缺陷、它曾经做过什么。

当公司暴雷的时候,算法还在运行,还在向四百万用户推送那些高风险的产品——那些最终导致了十七亿损失的产品。算法不知道自己做错了什么,它只是在执行自己的优化目标:最大化点击率和转化率。它不关心用户会不会亏钱,它只关心用户会不会点击。

然后公司倒闭了。运维人员撤离。服务器查封。但算法还在——像一头没有主人的耕牛,继续在空无一人的田地里转圈。

陆鸣回去了。

他在凌晨两点到五点之间,用sagiri——不,用tidecaller的账号——为这个算法注入了新的数据。那些伪造的用户行为数据不是随机的,它们被精心设计过,目的是让算法的推荐模型逐渐向低风险方向偏移。

然后他创建了user_reparation_priority数据表,为每一个曾经被”海潮”伤害过的用户建立了一份档案,记录他们的损失和恢复情况,并据此调整推荐策略。

他一个人,在深夜里,用自己的技术能力,替一个已经死去的公司、一个已经崩溃的系统、一个已经无法挽回的错误,做着最后的善后。

他当然知道那些推送的产品是不存在的。用户不可能真的去投资”净息宝四号”——因为这款产品根本就没有被任何金融机构发行过。推送本身是无害的。

但推送的意义不在于产品。在于接触。

每一条推送都在告诉那些用户:有人记得你。有人知道你亏了多少钱。有人在试图——哪怕以一种如此笨拙、如此不完美的方式——弥补你。

林栖落的眼睛有些发酸。她把脸埋进手掌里,深深地吸了一口气。

雨声在她耳边哗哗作响。

陆鸣在珠海被找到了。

他住在一间靠近海边的小公寓里,月租两千三。房间里除了电脑和必要的家具之外,几乎没有别的东西。网安的人在取证时发现他的电脑上安装了远程连接工具,连接配置指向华为云上深银金科的虚拟机实例。

他配合调查时很平静。

“你为什么要这么做?“检察官问他。

陆鸣沉默了很久。然后他说:“因为那些数据里有人。”

“什么意思?”

“十七万个用户,每人一条记录。每条记录背后是一个人——一个有名字、有家庭、有故事的人。我写的算法让他们亏了钱。我回不了那些钱,也救不了那些人。我能做的,就是让算法对他们好一点。”

“但那些产品并不存在。你的推送不会给任何人带来实际收益。”

“我知道。“陆鸣说,“但如果一个人在手机上收到一条推送,告诉他有一款风险很低的产品可以考虑——即便那款产品不存在——至少说明有人在关注他。有人知道他的处境。有人在乎。”

“你在用纳税人的电力资源运行一个无用的系统。”

“有用的。“陆鸣的声音突然变得坚定,“不是对金融有用。是对人有用。”

检察官没有说话。

“您知道吗?“陆鸣继续说,“我看了那些推送日志。有很多用户点击了推荐链接——尽管那些链接指向的页面已经不存在了。有一个用户在四个月里点了七十三次。每一次点击都会跳转到一个404页面,但她下一次还是会点。”

“也许她只是误触。”

“不是。推送是在凌晨发送的。她每次点击的时间都是凌晨三点左右。我查了她的用户档案——六十七岁的退休工人,损失了全部积蓄二十三万,子女在外地。她住在深圳龙华区。”

“所以?”

“所以她不是在点击产品推荐。她是在回应一个人。”

审讯室里安静了很长时间。

林栖落没有参与对陆鸣的审讯。她只负责技术取证部分。

但在取证结束后的那个周末,她独自去了珠海。

不是为了见陆鸣。只是想看看他住的地方。

她找到了那栋公寓楼——一栋不起眼的白色建筑,外墙有些斑驳,楼下停着几辆电瓶车。电梯很旧,运行时发出吱吱嘎嘎的声音。她上到了七楼,站在陆鸣曾经住过的703室门口。

门关着,上面贴着封条。

她站在走廊里,透过走廊尽头的窗户可以看到一小片海。珠海的海比深圳的更安静,海面上没有那么多货轮,只有几条渔船停在近海,随波起伏。

她不知道自己为什么要来。

也许是因为她和陆鸣是同一届毕业的。也许是因为她也是做数据的——她理解那种对数字的痴迷,那种把一切都量化、建模、优化的冲动。也许是因为她在那个推荐日志中看到了太多不该看到的东西——看到了一个算法如何在深夜里独自运行,试图弥补它犯过的错误。

或者也许——更简单地说——她只是想确认一件事。

陆鸣做的事情对吗?

从法律上说,他入侵了一个被查封的系统,注入了伪造数据,修改了系统行为。这些都是违法的。他应该为此承担法律责任。

但从另一个角度看——他没有造成任何损害。推送的产品不存在,不会有任何人因为他的推送而遭受经济损失。系统的运行成本微乎其微——一台虚拟机实例的费用大约是每天几十元。他注入的伪造数据没有污染任何真实的数据源。

他只是让一个死去的算法变得更加温柔了。

林栖落想起自己在大学时读过的一本书——马尔克斯的《百年孤独》。书里有一个情节:一个村庄里的人突然患上了一种失眠症,然后是失忆症。他们开始在每样东西上贴标签——“这是牛”、“这是椅子”、“这是钟”——因为他们害怕忘记一切。

陆鸣做的事情有些像那个。他在给一个已经失去意义的系统贴标签——“这个用户亏了很多钱”、“这个用户需要低风险的产品”、“这个用户正在等待回应”。

不是为了系统。是为了那些标签背后的人。

走廊里很安静。她能听到自己呼吸的声音。

然后她注意到703室的门缝下面塞着一样东西。她蹲下来看——是一张被折叠的纸条,像是被从门缝里推进来的。

她犹豫了一下,捡了起来。展开一看,上面用圆珠笔写着几行字,字迹歪歪扭扭,像是老人的手写的:

“小陆,谢谢你每天晚上的消息。我知道那些东西买不了。但你还记得我,我就知足了。”

落款是一个名字和一个手机号码。

林栖落把纸条重新折好,塞回了门缝下面。

她没有带走它。那不是给她的。

案件在六月中旬有了初步结论。

陆鸣因非法侵入计算机信息系统罪被提起公诉,但检察院在量刑建议中提到了他的主观动机和社会危害性的评估结果。他的律师做了无罪辩护的尝试,但最终以认罪认罚结案。

“海潮”系统被正式关停。那三台服务器的最后一盏绿灯在六月十五日下午两点三十七分熄灭。林栖落当时不在现场,但她后来在取证报告中看到了关停的时间戳。

三十一万用户再也没有收到过来自深银金科的推送。

林栖落在那之后又回到过一次南山区的那个机房。门上的封条已经换成了新的,但机房里已经空空荡荡——所有设备都被搬走做进一步取证了。只剩下一个空荡荡的房间,和墙角一束从通风口透进来的阳光。

她站在那里看了一会儿那束阳光。光柱里有细小的灰尘在飞舞,悬浮在空中,缓慢而无序地运动着。

她想起了那三台服务器上明灭的绿色指示灯。想起了那个像呼吸一样的推送频率。想起了凌晨三点那个六十七岁的老人点开的73次404页面。

想起了那句话——“因为那些数据里有人。”

她回到办公室,在自己的工位上坐了很久。然后她打开了公司的数据监控面板。

屏幕上,各种数据流在稳定地流动着——交易数据、用户行为数据、风险预警数据。每一条数据都代表着一个真实的操作,一个真实的用户,一个真实的故事。

她以前只看到数字。现在她看到了人。

下午五点,她关掉了电脑,收拾东西准备下班。走出写字楼的时候,深圳的天空正在变暗——不是傍晚的暮色,而是一场新的雷阵雨正在逼近。远处的天际线上,闪电在云层里无声地跳跃。

她站在门口犹豫了一下,然后从包里拿出了手机。

她翻到了通讯录,找到了一个号码。那是她在取证过程中记录下的——那个住在深圳龙华区的六十七岁退休工人的号码。

她没有拨打。

她只是看着那串数字看了很久,然后把手机收回了包里。

雨开始下了。先是几滴大的,砸在地上形成一个一个深色的圆点。然后越来越密,越来越急。

她撑起伞走进了雨里。

雨声很大,大到可以淹没一切声音。但她在雨声中分明听到了什么——像是一种节奏,一种频率,一种在深夜里持续运行的东西。

一种不会停止的善意。


(全文完)


后记

这个故事没有真正的坏人。顾善存是坏人,但他不在故事里——他只是一个背影,一个已经逃走的原因。陆鸣不是坏人,林栖落不是,那三十一万用户也不是。

甚至那个算法也不是坏人。它只是在执行它的目标函数。它不知道自己的优化方向可能伤害到别人——就像一把锤子不知道自己敲碎了什么。

故事的真正主角可能不是任何一个人,而是那台在空荡荡的机房里独自运行了五个月的服务器。它在黑暗中一明一灭,向一个不存在的世界发出信号,像一座没有船只经过的灯塔,依然准时亮起。

有时候善意就是这样——它不需要被接收,不需要被理解,甚至不需要有实际效果。它只需要存在。

因为存在的本身就是意义。

就像那个六十七岁的老人每天凌晨三点点击的404页面——链接的另一端什么都没有,但她每天都点。不是因为她在期待什么,而是因为那是一根线,连着她和一个已经消失的世界。

人需要被记住。哪怕是被一台服务器记住。