第十二层归属

招魂者 · 2026/5/20

第十二层归属

陈屿在凌晨三点十七分发现了那行不该存在的代码。

窗外是深圳南山区永远不会完全黑暗的夜空,远处腾讯大楼的灯光像一根竖起的中指,对着所有还在加班的人。办公室里只剩下他一个人,空调已经自动切换到节能模式,发出一种类似哮喘的间歇性喘息。

他揉了揉眼睛,把椅子往后推了半米,盯着屏幕上那行注释——

// 第十二层归属:此处不应被修改。签署人已不存在。

签署人已不存在。

这不是什么奇怪的写法。在代码世界里,“不存在”通常意味着null、undefined、404,或者是某个已经被注销的账号。陈屿作为拾光金科——一家上个月刚被宏桥资本收购的互联网金融公司——的高级算法工程师,见过太多这样的注释。程序员们在深夜的崩溃中写下这些话,像是在给未来的自己或者同行留下遗言。

但问题在于,这是风控系统最底层的归属判定逻辑。拾光金科的风控模型号称有十一层决策树,从信用评分到社交网络分析,从消费行为画像到地理位置偏好,每一层都经过精心调参,能够在0.03秒内决定是否给一个陌生人发放贷款。

而第十二层,不应该存在。

陈屿把咖啡杯里最后一口已经凉透的液体灌进喉咙,拉过键盘,开始在终端里追踪这段代码的来源。Git log显示,这段代码的最后一次提交是在两年前,提交者是一个叫”root”的账号,commit message只有两个字:“闭嘴”。

闭嘴。

他下意识地回头看了一眼办公室的门口。玻璃门外的走廊空空荡荡,应急灯发出惨绿色的光。没有人。当然没有人,现在是凌晨三点。

陈屿打开了第十二层归属的完整代码块。它被嵌入了风控系统的最终输出阶段,在所有十一层决策树做出判定之后,在系统即将生成”通过”或”拒绝”的结果之前,这第十二层会悄悄地进行一次归属判定——

它会把所有被标记为”拒绝”的申请人,通过一个名为 entityResolve 的函数,映射到一个叫”恒信昌达商务咨询有限公司”的法人实体名下。而这个法人,在工商注册系统中已经注销了十一个月。

也就是说,每一个被风控系统拒绝的人,都在毫不知情的情况下,与一个不存在的公司建立了某种数据上的关联。

陈屿的手指停在键盘上方,像被冻住了一样。他知道自己发现了一个巨大的问题,但他还不清楚这个问题的边界在哪里。在互联网金融行业待了六年,他见过各种骚操作——数据造假、流量劫持、用户画像倒卖——但把活人和一个已注销的法人实体绑定在一起,这超出了他的理解范围。

至少目前是这样。

他又看了一遍代码。entityResolve 函数的输出不是简单地写入一个字段,而是生成一串基于SHA-256的哈希值,作为这个用户在”恒信昌达”名下的虚拟账户标识。然后这个标识会通过一个内部API,发送到一个他不认识的IP地址。

那个IP地址的归属地显示——北京,朝阳区。

陈屿站起来走到窗边。深圳的夜景在他眼前展开,万家灯火像一张巨大的电路板。他试图让自己的脑子冷静下来,但”签署人已不存在”这句话像一只飞蛾一样在他的意识里扑腾。

他想起了今天下午的部门会议。

收购完成后的第一次全员会议,在拾光金科的八楼大会议室举行。宏桥资本派来的新CEO叫赵以辰,四十出头,穿一件剪裁得体的深蓝色西装,说话的时候喜欢用食指敲桌面,像在打摩尔斯电码。

“从今天开始,拾光金科不再是拾光金科,“赵以辰说,“但也不完全是宏桥资本。你们处在一个中间地带——被收购但未整合,存续但不确定。”

这话说得在场六十多个员工面面相觑。有人小声嘀咕:“这不就是’等死’的意思吗?”

赵以辰好像听见了,但他只是微微一笑,继续说:“未来三个月,技术部门的首要任务是做代码审计。所有核心系统——风控、信贷、数据中台——都要重新过一遍。宏桥的合规团队会派人过来,你们配合就好。”

陈屿当时坐在最后一排,正在手机上回复前女友的消息。他错过了赵以辰前面的大部分内容,只捕捉到了”代码审计”这几个字。作为风控算法组的负责人,代码审计对他来说不是什么新鲜事。每季度都有审计,每次都是走形式。

但赵以辰接下来的一句话让他抬起了头。

“特别是风控系统的底层逻辑,我要百分之百的透明。任何一行我不理解的代码,都意味着潜在的风险。”

陈屿看着赵以辰的眼睛,发现对方也在看他。那种眼神不像是在对全体员工说话,更像是隔着三排椅子,直接对他耳语。

散会后,风控组的同事冯锦程追上了他。冯锦程比陈屿小三岁,戴一副银框眼镜,说话永远像在做PPT汇报:“陈哥,赵总说的代码审计,咱们那个风控系统……你是不是得先自己过一遍?”

“当然。“陈屿把手机揣进口袋,“你以为我在怕什么?”

冯锦程推了推眼镜:“不是怕。我就是觉得……咱们那个系统,历史包袱太重了。有些代码是三年前的,写代码的人早走了,没人知道那些逻辑为什么那么写。”

“所以才有审计。”

“对,对。“冯锦程点头如捣蒜,但他的眼神里有一种陈屿读不懂的东西。像是在暗示什么,又像是在掩饰什么。

陈屿没有多想。直到现在,凌晨三点,他坐在空无一人的办公室里,看着那段不应该存在的第十二层代码,才突然意识到——冯锦程的暗示,可能和这件事有关。

他拿起手机,想给冯锦程发消息,但手指悬在屏幕上方犹豫了几秒。凌晨三点给同事发消息问代码的事,太可疑了。万一冯锦程和这件事有牵连,提前打草惊蛇不是明智之举。

陈屿放下手机,做了一个决定:先把那段代码的完整逻辑复制出来,保存到一个加密的U盘里,然后假装什么都没发现,等天亮再决定下一步怎么做。

但就在他准备复制代码的时候,他注意到了另一个细节。

entityResolve 函数的输入参数中,有一个叫 userId 的字段,它的数据类型不是通常的字符串或整数,而是一个自定义的结构体,包含三个子字段:realIdshadowId、和 belongsTo

belongsTo 的默认值——是一个手机号。

陈屿认出了那个手机号的号段。170,虚拟运营商,大概率是一张一次性的物联网卡。他试着拨打了一下,提示音是”您拨打的号码是空号”。

一个不存在的公司,一个不存在的手机号,和每一个被风控系统拒绝的活人,被一行代码编织成了一张看不见的网。

陈屿深吸一口气,把所有相关的代码块复制到了他的私有仓库里。然后他关掉电脑,穿上外套,走出了办公室。

走廊里的应急灯还是惨绿色的。他走进电梯,按下负一层,准备开车回家。电梯门关上的瞬间,他看见走廊尽头有一个人影一闪而过。

看不清是谁,但那个人穿着深蓝色的西装。

第二天上午九点,陈屿准时到公司。他没有像往常一样直接去工位,而是先去茶水间泡了一杯速溶咖啡。茶水间里有两个他不认识的人,穿着白色衬衫,胸前别着”宏桥资本-合规部”的工牌。

”……底层架构还行,就是数据中台的权限设计太松了。“其中一个说。

“赵总说了,三个月之内必须整改完。“另一个回答。

陈屿端着咖啡杯从他们身边走过,心跳微微加速。他走进自己的工位,发现冯锦程已经坐在对面了,正对着电脑屏幕发呆。

“来这么早?“陈屿随口问。

冯锦程吓了一跳,转过头来,脸色有些苍白:“陈哥,你……你昨晚加班了?”

“嗯,调了个参数。“陈屿坐下来,打开电脑,“锦程,我问你个事。”

“你说。”

“咱们风控系统的决策树,你知道是几层吗?”

冯锦程的眼镜片反射着屏幕的蓝光,让他的表情变得难以辨认。“十一层啊,这不是常识吗?入职培训就讲过。”

“如果我说有第十二层呢?”

沉默。

茶水间的咖啡机发出一声尖锐的”嘀”,像是某种警报。冯锦程的嘴唇动了一下,但没有发出声音。然后他说:“陈哥,你昨晚看到什么了?”

陈屿没有回答。他盯着冯锦程的眼睛,试图从那副银框眼镜后面读出一些线索。冯锦程是一个老实人,至少看起来是。他来拾光金科两年了,工作勤恳,从不多嘴,每次开会都坐在陈屿旁边,像一棵安静的盆栽。

但老实人也可以被利用。或者说,正因为老实,才更容易被利用。

“锦程,“陈屿压低了声音,“你知不知道’恒信昌达商务咨询有限公司’?”

冯锦程的身体明显僵了一下。他的手从键盘上移开,放在大腿上,手指无意识地攥紧了裤子的布料。

“我……我听说过这个名字。”

“在哪听说?”

“之前做数据清洗的时候,在用户画像的底表里看到过。当时我以为是脏数据,就没在意。”

“脏数据。“陈屿重复了一遍这个词,语气里没有质疑,只有一种平静的审视。

冯锦程似乎被这种平静吓到了。他突然站起来,椅子向后滑了半米,撞上了隔板。“陈哥,我去上个厕所。”

然后他几乎是跑着离开了工位。

陈屿看着他的背影消失在走廊拐角,心里生出一个不好的预感。冯锦程知道些什么,但不是因为他是参与者——恰恰相反,他是因为知道得太多,才害怕得要命。

陈屿打开了工商注册查询网站,搜索”恒信昌达商务咨询有限公司”。

搜索结果显示——

公司全称:恒信昌达商务咨询有限公司 法定代表人:赵以辰 注册资本:500万元 成立日期:2021年3月15日 注销日期:2025年6月22日 经营范围:商务信息咨询、企业管理咨询、市场营销策划

陈屿盯着屏幕上”法定代表人:赵以辰”这几个字,感觉自己的血管被一根冰冷的针刺穿了。

赵以辰。宏桥资本派来的新CEO。那个在会议上说”任何一行我不理解的代码,都意味着潜在的风险”的人。

他自己的公司,在十一个月前注销了。而他现在来审计拾光金科的代码,声称要找到所有他不理解的东西。

这不对。完全不对。

陈屿的脑子飞速运转。有两种可能:第一,赵以辰不知道第十二层代码的存在,他来审计是真的想清理风险;第二,赵以辰完全知道第十二层代码的存在,他来审计的目的是——

销毁证据。

陈屿站起来,走向窗户。深圳的上午阳光刺眼,南山区的高楼像一排灰色的牙齿。他需要想清楚,但他的脑子被太多的变量塞满了。

他决定换一个方向。与其在代码里找答案,不如去现实中找。

他掏出手机,拨了一个号码。

“喂,老郑?我是陈屿。”

电话那头是一个沙哑的男声,带着浓重的湖南口音:“陈屿?你怎么想起我了?”

“老郑,我问你个事。你在深圳工商局不是有朋友吗?帮我查一个公司——恒信昌达商务咨询有限公司,注销了大概十个月了。我想知道它注销之前的所有股东结构和变更记录。”

“这个……”老郑犹豫了一下,“行,我帮你问问。但你得请我吃饭。”

“没问题。越快越好。”

挂了电话,陈屿又拨了一个号码。这次是一个女性声音,清脆而冷静:“陈屿,你又遇到麻烦了?”

说话的人叫林微,是陈屿大学时期的同学,现在在深圳一家律所做非诉律师,主要方向是并购和重组。拾光金科被收购的时候,陈屿还专门问过她收购的法律流程。

“微姐,我想问一个假设性的问题。”

“你说。”

“如果一家公司在被收购之前,它的风控系统里嵌了一段代码,把用户的隐私数据和第三方关联——但这种关联是未经授权的——收购方发现之后,会怎么处理?”

林微沉默了几秒。“这取决于关联的规模和性质。如果是大规模的个人信息非法转移,那不是简单的民事问题,可能涉及刑事。但更关键的是——收购协议里一般会有陈述与保证条款,如果被收购方隐瞒了这种风险,收购方可以要求赔偿,甚至撤销交易。”

“如果收购方本身就和那段代码有关呢?”

更长的沉默。

“陈屿,你现在的处境可能比你以为的更复杂。我建议你先不要采取任何行动,也不要和任何人讨论这件事。如果需要,我可以帮你找一个靠谱的刑事律师。”

“谢谢,我先自己想想。”

挂了电话,陈屿发现自己的手在发抖。不是因为害怕,而是因为愤怒。他是一个工程师,他相信代码是诚实的——每一行代码都是某种意图的结晶。而第十二层代码的意图,是对成千上万不知情的人进行数据绑架。

他打开风控系统的管理后台,试图查看 entityResolve 函数在过去两年里处理过的数据量。后台的统计面板显示——

累计映射用户数:1,247,836 活跃映射关系:843,291 已清算映射关系:404,545

一百二十四万人。每一个都被和一个不存在的公司建立了虚拟的关联。

陈屿闭上眼睛,深呼吸。一百二十四万。这不是一个数字,这是一百二十四个可能被利用的人生。

他需要更多的信息。他需要知道这些映射关系的目的是什么,数据被发送到那个北京IP之后去了哪里,以及赵以辰在这个链条中到底扮演了什么角色。

但在那之前,他需要确认一件事——那段代码,还在运行吗?

他打开终端,连接到生产环境的服务器,检查风控系统的实时日志。

第十二层归属判定,每分钟执行大约23次。也就是说,从此时此刻开始,每分钟都有23个申请贷款的人被风控系统拒绝,然后被悄悄地映射到”恒信昌达”名下。

系统还在运转。网还在织。

下午两点,宏桥资本的合规团队正式进驻拾光金科。带队的是一个叫周怡的女人,三十岁左右,短发,说话干脆利落,穿着一身黑色的职业装,像一把包装精美的裁纸刀。

“陈屿是吧?“周怡在会议室里翻着一份文件,“风控算法组的负责人。清华计算机系,2018年毕业,在拾光金科待了六年。履历不错。”

“过奖。“陈屿坐在对面,保持着一种职业化的微笑。

“我直说了,“周怡合上文件,“赵总让我重点审计风控系统。你作为负责人,需要配合我们提供所有的架构文档、代码仓库权限、以及决策逻辑的完整说明。”

“没问题。”

“另外,“周怡的目光变得锐利了一些,“在审计完成之前,风控系统的任何代码变更都需要经过我的审批。包括hotfix。”

这句话让陈屿的心跳停了一拍。周怡说的”任何代码变更”——如果他想删除或修改第十二层代码,就必须先经过她的审批。而如果周怡是赵以辰的人……

“明白了。“陈屿点头。

周怡离开后,陈屿在会议室里坐了五分钟。他在想一个问题:如果赵以辰的目的是销毁第十二层代码,那他为什么要派人审计?审计不是会让代码暴露得更快吗?

除非——审计本身就是销毁的手段。

一个精妙的策略:以”合规审计”的名义,光明正大地进入系统,然后以”清理历史遗留代码”为由,删除第十二层的所有痕迹。这样一来,即使将来有人质疑,也可以说是在正常的整合过程中被清理掉了。

陈屿突然理解了赵以辰在会议上说的那句话的真正含义:“任何一行我不理解的代码,都意味着潜在的风险。”

他不是在说风险本身——他是在说,那些代码是”风险”,因为它们是证据。

陈屿站起身,走出了会议室。他做了一个决定:在审计团队找到第十二层代码之前,他要先搞清楚那段代码的完整逻辑和数据流向。不是为了删除它,而是为了保留证据。

但在那之前,他需要做一件更重要的事——找到写这段代码的人。

Git log里的”root”账号不可能是真实的。Linux系统的root账号没有个人信息,它只是一个超级用户的代称。但提交代码的人一定有迹可循——操作系统的用户名、SSH密钥的指纹、甚至是提交时间所暗示的时区和工作习惯。

陈屿花了半个小时,分析了所有与第十二层代码相关的提交记录。一共有17次提交,分布在2023年4月到2024年11月之间。提交时间集中在凌晨1点到4点,符合一个”深夜加班型”程序员的行为模式。

他还注意到,有几次提交的commit message非常有意思——

// 2023-04-12: 初始化归属映射
// 2023-06-28: 增加shadowId生成逻辑。注意:不要让任何人知道这个字段的存在
// 2023-09-15: 修复了一个bug,导致映射关系被暴露给了用户侧。紧急修复,差点出事。
// 2024-01-07: 新增IP白名单,只允许特定的三个IP访问映射数据
// 2024-05-20: 赵总要求增加映射速度,从每秒10个提升到每秒50个
// 2024-11-03: 最后一次维护。我走了,你们自己看着办。祝好运。

赵总要求增加映射速度。

“赵总”。在拾光金科的历史上,只有一个姓赵的高管——联合创始人兼CTO,赵以辰。

赵以辰不只是宏桥资本派来的收购方代表。他是拾光金科的联合创始人。他在两年前离开了拾光金科(对外宣称是”个人原因”),然后以收购方CEO的身份回来了。

这就解释了一切。第十二层代码是赵以辰在拾光金科期间亲自指示开发的。他离开之后,代码继续运行。现在他回来了,以收购方的身份,要把这段代码——以及它所代表的一切——彻底抹掉。

陈屿靠在椅背上,感觉自己被卷入了一个远超他能力范围的漩涡。他只是一个写代码的人,他的世界应该是清晰的、逻辑的、可调试的。但此刻他面对的,是一个由资本、权力和谎言构成的系统,它比任何代码都要复杂,都要危险。

他需要帮助。他想到了林微的话——“我可以帮你找一个靠谱的刑事律师。”

但在此之前,他想先做一件事:联系那个写下最后一行commit message的人。“我走了,你们自己看着办。祝好运。“——这句话里有愤怒,有不甘,还有一种被逼到绝境后的释然。

写代码的人一定知道真相。而真相,有时候比证据更有力量。

陈屿花了两天时间,通过代码仓库的操作日志和公司内部系统的访问记录,追踪到了”root”账号背后的真实身份——一个叫方远的人。

方远,1995年生,武汉大学计算机系硕士,2022年加入拾光金科担任高级后端工程师,2024年11月离职。离职原因是”个人发展”。

个人发展。一个在凌晨三四点写下”我走了,你们自己看着办”的人,离职原因写的是”个人发展”。

陈屿在脉脉上找到了方远的 profile。头像是一张侧脸照,背景是一片模糊的绿色——像是在某个公园里拍的。他的认证信息还挂着”拾光金科-高级后端工程师”,但没有更新。

陈屿犹豫了很久,最终给方远发了一条私信:

“方远你好,我是拾光金科风控组的陈屿。我在审计风控系统的时候发现了一些遗留问题,想向你请教。方便聊一下吗?”

发出去之后,他盯着屏幕等了整整四个小时。没有回复。

晚上九点,他的手机震动了一下。方远回复了——

“你发现了第十二层?”

陈屿的心猛地跳了一下。他没有直接回复,而是看了一眼周围。办公室里还有几个人在加班,合规团队的人已经走了。他走到楼梯间,坐在台阶上,用手机打字:

“是的。我知道它是你写的。”

漫长的等待。五分钟。十分钟。然后——

“别在公司里说这件事。他们的监听比你想的更彻底。我们明天见面聊。”

方远发来了一个地址:福田区,一个叫”旧时光”的咖啡馆,下午两点。

陈屿回复了一个”好”字,然后删掉了所有的聊天记录。

“旧时光”咖啡馆藏在福田区一条老巷子里,门面很小,招牌上的字已经褪色到几乎看不清。陈屿到的时候,方远已经坐在角落的位置了。他比脉脉上的照片瘦了很多,眼窝深陷,像是很久没有好好睡觉的样子。

“坐吧。“方远指了指对面的椅子,声音沙哑。

陈屿坐下来,要了一杯美式。两个男人沉默了一阵,像是在等对方先开口。

最终是方远先说话了。

“你是什么时候发现的?”

“三天前。凌晨三点。”

“凌晨三点。“方远苦笑了一下,“很合适。那段代码就是凌晨的产物。赵以辰总是在凌晨开需求会,你注意到了吗?”

陈屿摇头。他加入拾光金科的时候,赵以辰已经离开了。

“赵以辰是一个夜行动物,“方远说,“他喜欢在所有人都睡着的时候做决定。他说这样能减少干扰。但实际上,他是想在所有人都反应不过来的时候,把事情做成。”

方远喝了一口咖啡,开始讲述。

“2023年4月,赵以辰把我叫到他的办公室。当时他还是CTO。他跟我说,风控系统的拒绝率太高了,大概有40%的申请人被拒绝。这在行业内不算异常,但赵以辰说这些被拒绝的人不是没有价值。”

“什么意思?“陈屿问。

“他说,每一个被拒绝的申请人,都是一个被验证过的’真实用户’。他们提供了身份证、手机号、银行卡、人脸识别数据——所有这些数据都已经被风控系统验证过了,是真实的、可用的。如果把这些人直接丢弃,是对数据资产的浪费。”

陈屿的胃开始翻搅。他隐约猜到了接下来的内容。

“赵以辰的想法是——把这些被拒绝的用户数据,通过某种方式’映射’到一个独立的法人实体名下。这个法人实体表面上和拾光金科没有关系,但实际上是由赵以辰控制的。然后,这些用户数据可以被二次利用——卖给其他金融机构、用于精准营销、或者直接被用来注册新的贷款账户。”

“你是说……”陈屿的声音有些发抖,“用这些人的身份信息去别的地方贷款?”

“不是直接用他们的身份。系统会为每个被拒绝的用户生成一个’影子ID’——shadowId。这个影子ID和真实身份解绑,但保留了所有的行为数据。拿到影子ID的人,可以通过这些数据反向推导出用户的消费习惯、收入水平、甚至社交关系,然后针对性地推送高息贷款产品。”

陈屿闭上了眼睛。一百二十四万个影子ID。一百二十四万人的数字分身,被一个他们从未听说过的公司利用,去牟取他们永远看不到的利润。

“我写完那段代码之后,后悔了。“方远的声音变得很低,像是在自言自语,“但赵以辰不让我走。他说我掌握了核心机密,离开公司就是违反竞业协议。他威胁我,如果我说出去,他会让我在这行永远找不到工作。”

“所以你拖了一年半才走。”

“对。这一年半里,我每天晚上都在那段代码上加注释。‘此处不应被修改’、‘签署人已不存在’——我试图留下痕迹,让将来有人能发现这一切。”

陈屿睁开眼睛,看着方远。“但你为什么不举报?”

方远的笑容里有一种说不清的苦涩。“你试试举报你的CTO。试试看。在深圳这个圈子里,赵以辰的人脉比你想象的大得多。我有一个同事,不是拾光金科的,在另一家公司,发现了类似的问题,去举报了。结果呢?调查组还没成立,他本人就被查出’涉嫌侵犯商业秘密罪’,被刑事拘留了37天。37天。出来之后,他的头发白了一半。”

陈屿沉默了很久。窗外的阳光透过旧窗帘照进来,在桌面上投下一道道条纹。

“那赵以辰为什么要回来?“他问。

方远把咖啡杯转了180度。“你觉得呢?”

“销毁证据。”

“不完全对。销毁证据是手段,不是目的。“方远压低了声音,“赵以辰回来,是因为宏桥资本的老板——一个你我不可能知道名字的人——发现了一个问题。第十二层代码的映射数据,在过去一年里产生了一条’不可解释的关联’。”

“什么关联?”

“有一个被映射的用户——shadowId以0xA3F7开头——他的行为数据在映射之后产生了自反馈循环。简单来说,他被拒绝了贷款之后,影子系统开始基于他的数据推送广告,他点击了这些广告,下载了另一个贷款APP,申请了贷款又被拒绝,然后又被映射……循环往复。在十五个月里,这个循环执行了412次。”

“412次?“陈屿无法理解,“同一个人?”

“同一个人。每一次循环,他的信用评分都会下降一点。每一次下降,他能获得的贷款条件就更差。直到最后,他借了一笔利率高达36%的贷款——合法的,因为所有费用都包装成了’服务费’——然后他还不上了。”

“然后呢?”

方远没有说话。他从口袋里掏出手机,打开了一个新闻页面,递给陈屿。

标题是:《深圳一男子因网贷纠纷跳楼身亡,生前借款总额不足三万元》。

日期:2025年8月14日。

陈屿握着手机的手指收紧了。新闻配图是一张打了马赛克的照片,只能隐约看出是一个年轻男人的轮廓。

“这个人就是0xA3F7。“方远说,“他的真名叫周鸣,27岁,在一家电子厂上班。他最初只是想借5000块钱交房租。”

陈屿把手机放在桌上,像放下一块烧红的铁。

“赵以辰回来,不是为了销毁所有证据,“方远继续说,“他是为了销毁和周鸣有关的那条证据链。因为周鸣的家人请了律师,律师正在追踪他的网贷来源。如果律师追到了那个影子系统,追到了恒信昌达,追到了赵以辰——整个链条就断了。不是证据链断了,是赵以辰的’安全链’断了。”

“所以合规审计的真正目的是——”

“定位并删除和周鸣相关的所有映射记录,包括影子ID、行为数据、API调用日志,一切。做完这些之后,赵以辰会以’正常整合’为由,关闭整个第十二层,然后把它从代码仓库里彻底清除。到那时候,即使有人发现了什么,也没有任何证据可以追查。”

陈屿感觉自己的太阳穴在突突地跳。他想起了那天晚上在走廊尽头看到的深蓝色西装人影。赵以辰,在凌晨三点出现在拾光金科的办公室里。

“方远,“他说,“你已经离职了,你没有义务管这件事。但你告诉我这些——为什么?”

方远看着窗外的老巷子,眼神变得很远。

“因为我每天晚上都会梦到那个commit message。‘我走了,你们自己看着办。‘——我写下这句话的时候,以为我已经尽力了。但我没有。我留下了线索,但没有留下勇气。你不一样。你有我缺少的东西。”

“什么东西?”

方远转过头来,直视着陈屿的眼睛。“你还生气。“

陈屿回到家已经晚上七点了。他住在南山区一个2019年交付的小区里,两室一厅,月租5500。客厅的墙上挂着一幅他前女友留下的水彩画——一条河,两岸是模糊的建筑,颜色偏蓝。

他站在那幅画前面看了很久。

你还生气。

他确实生气。但他的愤怒不是针对某个具体的人,而是针对整个系统——一个由算法和资本共同构建的、冷酷而精密的系统。在这个系统里,人的价值被简化为一串数字,人的痛苦被编码为一个待优化的参数,人的死亡被记录为一行需要删除的日志。

他走到书桌前,打开笔记本电脑,把过去三天收集到的所有信息整理成一份文档。他不是一个法律专家,也不是一个调查记者,但他知道一个基本的原则:证据要有冗余。

他把文档复制到了三个地方——本地硬盘、一个匿名的云存储账号、以及一个加密的U盘。然后他打开了一个加密通讯软件,给林微发了一条消息:

“微姐,我需要那个刑事律师的联系方式。越快越好。”

林微秒回了一个手机号,后面跟着一句话:“这个人是我的前辈,姓何,靠谱。告诉他是我介绍来的。”

陈屿拨通了那个号码。

“何律师吗?我是林微的朋友,姓陈。我遇到了一些事情,需要您的建议。可以见面聊吗?”

电话那头是一个沉稳的男中音:“小林的朋友?可以。你现在方便说话吗?”

“方便。”

“那你先说个大概,我评估一下。”

陈屿深吸一口气,用最简洁的语言描述了第十二层代码、影子ID系统、一百二十四万用户的映射关系、以及赵以辰可能正在进行的证据销毁行动。

何律师安静地听完了全部内容,沉默了大约十秒钟。

“小陈,你说的这些情况,如果属实,可能涉及违反《个人信息保护法》、《刑法》第二百五十三条之一的侵犯公民个人信息罪,以及可能的非法经营罪。但你目前的身份是这家公司的员工,你的行为可能会被认定为’刺探商业秘密’或者’违反保密协议’。”

“那我应该怎么办?”

“你有三个选择。第一,什么都不做,让合规团队完成审计,让赵以辰销毁证据,然后你继续上班。这是最安全的选项。第二,你可以在公司内部向上级报告——但考虑到赵以辰的身份,这个选项的风险很大。第三——”

何律师停顿了一下。

“你可以向公安机关报案。但在报案之前,你需要确保证据链完整且合法。如果你是通过非法手段获取的证据——比如未经授权访问了生产环境——那这些证据可能不会被采纳,而且你自己可能面临法律风险。”

陈屿想了想。“我是在正常的工作范围内发现这段代码的。我有风控系统的完整访问权限,这是我的岗位职责。”

“那就好。但我建议你在采取任何行动之前,先把证据固定下来。公证处可以做电子证据保全——你带着电脑和U盘去,他们会把文件内容、时间戳、哈希值全部记录在案。这样一来,即使原始文件被删除,公证记录仍然有效。”

“我明白了。谢谢何律师。”

“小陈,“何律师的声音变得严肃了一些,“做正确的事和做安全的事,往往不是同一件事。你想好了吗?”

陈屿看着窗外的夜景。远处的大楼像一座座沉默的墓碑。

“想好了。“

接下来的三天里,陈屿表面上像一个正常配合审计的员工,暗地里在紧锣密鼓地准备。

周一上午,他去了福田区的一家公证处,把U盘里的所有代码文件、Git日志、API调用记录做了电子证据保全公证。公证员是一个戴眼镜的中年女人,全程面无表情,像是在处理一份房屋租赁合同。

周一下午,他约了何律师见面。何律师的办公室在福田CBD的一栋写字楼里,门牌上写着”何其正律师事务所”。何其正,五十多岁,头发花白,但眼神锐利得像鹰。

“证据保全做了,很好。“何律师翻了翻公证书,“但现在有一个问题——你需要决定以什么方式报案。”

“什么意思?”

“你可以选择匿名举报,也可以选择实名报案。匿名举报的好处是安全,坏处是可能不会被重视。实名报案的好处是有法律效力,坏处是你会暴露,可能面临报复。”

陈屿想了想。“如果我实名报案,赵以辰会受到什么影响?”

“这取决于调查的结果。如果查实了侵犯公民个人信息罪,刑期是三年以下;如果情节特别严重,三到七年。但这里有一个复杂的地方——赵以辰是宏桥资本的人,宏桥资本的背后可能还有更大的利益集团。你扳倒了一个赵以辰,不等于解决了问题。”

“我知道。但如果连赵以辰都扳不倒,就更别说后面的了。”

何律师点了点头。“那就实名。我来帮你准备报案材料。你回去把所有的证据整理成一个时间线,越详细越好。我这边会起草一份法律意见书。预计周三可以完成。”

“好。”

陈屿站起来准备离开。走到门口的时候,何律师叫住了他。

“小陈,还有一件事。从现在开始,你所有的电子通讯都可能被监控。建议你换一部不记名的手机,用现金购买。所有重要的对话,面谈。”

陈屿点了点头,走出律师事务所。

深圳的下午阳光毒辣,地面温度至少有35度。他站在写字楼的阴影里,感受着冷气和热浪交替冲击皮肤的感觉。他的生活正在以不可逆的方式改变——从一个写代码的人,变成了一个要和整个系统对抗的人。

他不知道自己有没有准备好。但他知道,方远说得对——他还生气。愤怒是他最后的燃料。

周二晚上,陈屿在加班的时候,发现了一件令他毛骨悚然的事。

冯锦程不见了。

不是那种”今天请假”的不见,是那种”工位被清空、手机关机、所有人都不记得他”的不见。陈屿问了一圈同事,没有一个人记得拾光金科有一个叫”冯锦程”的算法工程师。

他打开公司内部的人事系统,搜索”冯锦程”。系统返回的结果是——“查无此人”。

陈屿的手指在键盘上僵住了。他和冯锦程共事了两年。他记得冯锦程的工号,记得他的生日,记得他每次开会都坐在自己旁边。但现在,系统说这个人不存在。

他尝试调出风控组的通讯录。通讯录上的名单里,没有冯锦程。但奇怪的是,他的名字应该在的位置上,写着一个他不认识的名字——“赵一然”。

赵一然。陈屿在脑海里搜索这个名字。没有任何印象。但这个姓——赵。

他颤抖着打开了公司的门禁系统,查询过去一周的刷卡记录。他自己每天早上八点半左右刷卡的记录清晰可见。而冯锦程的——

没有。冯锦程在过去一个月里没有任何门禁记录。

陈屿站起来,走到冯锦程的工位。桌面干干净净,连一个水杯都没有。他打开冯锦程的电脑——屏幕提示需要密码输入。他试了几个常用密码,都不对。然后他注意到键盘上有一层薄薄的灰尘。

这不像是一个”今天请假”的工位。这像是一个已经很久没有人坐过的工位。

陈屿的后背开始发凉。他走到行政部,找到了负责工位管理的同事小杨。

“小杨,风控组那个冯锦程,你知道他去哪了吗?”

小杨抬起头,一脸茫然:“冯锦程?风控组没有这个人啊。你是不是记错了?”

“不可能。我跟他共事两年了。”

小杨翻了翻花名册。“你看,风控组现在有——陈屿、张博、李婷、王浩然、赵一然。没有冯锦程。”

陈屿盯着那个名单。“赵一然是什么时候入职的?”

小杨查了一下系统。“2024年4月15日。一年多了。”

2024年4月。第十二层代码开始运行后的一年。

陈屿感觉自己的世界在塌陷。冯锦程——那个推了推银框眼镜、说”咱们那个系统历史包袱太重”的人——是不是真的存在过?还是他的记忆被什么东西修改了?

不。不可能。记忆不可能被修改。人可以被消失,但记忆不会。

但数据会。

如果有人能从公司的所有系统中抹去一个人的存在——人事系统、门禁系统、通讯录、工位记录——那这个人是否真的”存在过”,就变成了一道哲学问题。

陈屿决定不再纠结冯锦程的事。他退一步想:冯锦程的消失(或者说,从未存在),恰恰证明了这件事的严重程度。一个人可以被数据”杀死”——被从所有记录中擦除,像一行被删除的代码。

他需要加快速度。

周三上午九点,何律师准备好了所有的报案材料。陈屿请了半天假,去了深圳市公安局南山分局。

报案接待室是一间不大的房间,墙壁刷成淡黄色,窗户上装了铁栅栏。值班民警是一个年轻的男人,看起来不超过三十岁,胸前别着”刘磊”的工牌。

陈屿把公证书、时间线文档、法律意见书一一摆在桌上。刘磊翻了翻,表情从不耐烦变成了认真。

“你说你们公司的风控系统里有一段隐藏代码,把上百万用户的个人信息偷偷映射到一个已经注销的公司名下?”

“是的。”

“你的证据来源是?”

“我是风控算法组的负责人,有系统的完整访问权限。这段代码是在正常工作过程中发现的。”

刘磊点了一下头,拿起了公证书。“证据保全做了,这个比较好办。但你要知道,涉企案件需要先立案调查,时间可能比较长。”

“我理解。”

“还有,“刘磊看了看报案材料里的一个名字,“赵以辰。你确定是这个人?”

“确定。他是拾光金科的联合创始人、前CTO,现在是收购方宏桥资本派来的CEO。第十二层代码是他指示开发的。”

刘磊沉默了一会儿。“我先立案,然后把材料转给经侦大队。你回去等消息。这段时间注意安全,不要和公司里的任何人讨论这件事。”

陈屿点头,站起来。走到门口的时候,刘磊叫住了他。

“哎,陈先生。你这情况……有点像去年那个案子。也是一家金融科技公司,也是隐藏代码。后来查出来,涉案金额超过两个亿。”

“后来呢?”

“后来主犯判了六年。但举报人也付出了代价——被行业封杀,最后去了外地。”

陈屿笑了一下。“谢谢提醒。”

他走出公安局,站在台阶上。深圳的天空灰蒙蒙的,不像是一个沿海城市该有的颜色。他拿出手机,想给林微发消息,但想起了何律师的话——所有电子通讯都可能被监控。

他收起手机,在路边拦了一辆出租车。

“去哪?“司机问。

“南山科技园。”

“上班啊?今天不是放假?”

“不是。去做一件该做的事。”

司机从后视镜里看了他一眼,没再说话。出租车汇入了深圳永远拥堵的车流里。

十一

周四。合规审计进入了第五天。

周怡带着她的团队已经完成了风控系统前十层的审计,正在向第十一层推进。陈屿知道,按照目前的速度,他们最迟在下周一就会到达第十二层。

他需要在周怡发现第十二层之前,让公安机关介入。

上午十点,他接到了刘磊的电话。

“陈先生,你的案子经侦大队受理了。初步判断涉嫌侵犯公民个人信息罪,已经成立专案组。但有个情况需要告诉你——专案组的负责人提了一个要求,希望你能在公司内部配合他们进行’静默取证’。”

“静默取证?”

“就是在不打草惊蛇的情况下,让他们远程访问你们的生产环境,实时监控第十二层代码的运行状态和数据流向。这样可以在赵以辰删除证据的时候抓现行。”

陈屿想了想。“可以。但我需要一个合理的理由来解释为什么我的系统权限突然变高了。”

“你不说没人知道。你原本就是风控负责人,调整权限是正常的操作。”

“好吧。那怎么做?”

“专案组会给你一个远程访问工具,你装到你的工作电脑上就行。它会以你的系统权限为跳板,实时采集第十二层的所有运行数据。采集过程是加密的,不会被发现。”

陈屿答应了。当天下午,他收到了一个伪装成”性能监控工具”的软件包。他按照说明安装在了自己的电脑上。

软件运行之后,他的屏幕上出现了一个不起眼的图标——一个绿色的圆点。只要圆点是绿色的,就说明数据正在被采集和传输。

陈屿看着那个绿点,感觉自己像一个被塞进了机器里的零件。他不是在战斗,他是在成为另一个系统的一部分——一个由法律和公权力构成的系统。这个系统比赵以辰的系统更强大,但不一定更正义。

他不知道这个系统最终会怎样处理这件事。但他知道,如果什么都不做,一百二十四万个影子ID将继续在暗处游荡,像一百万二十四个永远不会被承认的存在。

那天晚上,他做了一个梦。

梦里,他坐在一间白色的房间里,面前是一台巨大的显示器。显示器上显示的不是代码,而是一张张人脸。一百二十四万张脸,以每秒五十张的速度从他眼前闪过。每一张脸上都没有表情,像是一张张空白的面具。

他试图看清其中一张脸,但速度太快了。他只能看到一片模糊的颜色——皮肤的颜色、头发的颜色、衣服的颜色——混在一起,像一条不会停止的河。

然后,在那些面孔之中,他看到了一张他认识的脸。

冯锦程。

银框眼镜,苍白的脸色,嘴唇微微张开,像是在说什么。陈屿凑近了听,听到了一个字——

“跑。”

陈屿从梦中惊醒。凌晨三点。

他躺在黑暗中,听着窗外的风声。深圳的风很少这么凉。他想起了方远在咖啡馆里说的话:“赵以辰是一个夜行动物。”

凌晨三点。和那个commit message的时间一样。和他第一次发现第十二层代码的时间一样。

深夜是这个城市的真正面目。白天的深圳是效率、科技和资本的天堂;夜晚的深圳是数据、谎言和权力的深渊。

陈屿起身,走到窗边。他住在十八楼,可以看到很远的地方。南山的灯火、前海湾的灯塔、还有远处连接深圳和香港的那座桥。

桥上有一盏灯灭了。然后又亮了。又灭了。又亮了。

像是一颗心脏在跳动。或者是——一个正在运行的进程。

他想起了那段代码的第一行注释:“第十二层归属:此处不应被修改。签署人已不存在。”

签署人已不存在。

但现在,他知道签署人是谁了。签署人就在同一栋楼里,穿着深蓝色的西装,用食指敲着桌面,像一个正在等待的猎人。

而陈屿自己,已经从猎人变成了猎物。或者说,他从来就只是猎物——从他发现那行代码的那一刻起。

但猎物有时候也能赢。只要它知道猎人的位置。

十二

周五下午三点十七分——和他第一次发现第十二层代码的时间完全一样——专案组的人联系了刘磊,刘磊联系了陈屿。

“陈先生,我们采集到了关键数据。第十二层代码在过去七天里处理了23,547条新的映射记录。更重要的是,我们追踪到了数据的目的地——那个北京IP实际上是一个数据中转站,最终的数据流向了三个终端。”

“三个终端?”

“第一个是一家注册在开曼群岛的投资公司,名为’Everight Capital Ltd.’。第二个是一家杭州的互联网广告公司,名为’精准触达科技’。第三个……”

刘磊停顿了一下。

“第三个是什么?”

“是一个个人邮箱。Gmail。邮箱的注册信息显示,持有人是赵以辰。”

陈屿闭上了眼睛。证据链完整了。赵以辰不只是指示开发了第十二层代码,他本人就是数据流向的终点之一。一百二十四万人的影子ID,最终有一部分直接发送到了他的个人邮箱里。

这些数据对他来说意味着什么?陈屿可以猜到——它们是一种货币。在数字时代,数据就是货币,而影子ID是一种比比特币更隐秘、更难追踪的货币。你可以用一百二十四万个影子ID去操纵舆论、影响选举、精准诈骗、或者直接卖给下一个愿意出价的买家。

“陈先生,我们准备在下周一上午进行收网。“刘磊的声音变得正式了很多,“届时会有经侦大队和网安支队联合行动。你需要做的只有一件事——正常上班,正常配合审计,不要让任何人察觉到异常。”

“明白了。”

“还有,注意人身安全。如果赵以辰察觉到什么……”

“他不会。“陈屿说,“他以为他还在控制一切。”

挂了电话,陈屿坐在工位上,看着屏幕上的代码。他正在假装修改一个风控模型的参数——实际上是在发呆。

他想起了周鸣。那个借了五千块钱交房租、最终在三万块钱的网贷泥潭里溺亡的年轻人。他的shadowId是0xA3F7。在系统里,他只是十六进制字符串里的四个字符。但在现实中,他是一个27岁的生命。

陈屿在心里对周鸣说了一句话。

对不起,来得太晚了。

十三

周末过得异常缓慢。陈屿没有出门,没有联系任何人,只是在家里看书、做饭、发呆。他的手机关了机,取出了SIM卡,放在一个铁盒子里——这是何律师建议的防窃听措施。

周六晚上,他再次梦到了那条河。这一次不是数据流成的河,而是一条真正的河。河水是深蓝色的,像赵以辰的西装颜色。他站在岸边,看着河水从脚下流过。水里有人——不是游泳的人,而是漂浮的人。他们的脸朝上,眼睛闭着,像是在睡觉。

河面上浮着无数张脸。每一张都安静得可怕。

陈屿从梦中醒来的时候,发现自己的枕头是湿的。不是因为出汗——他在哭。

一个人活了三十年,以为自己已经足够坚硬了。但有些东西会穿透所有的铠甲,直接击中最柔软的部分。一百二十四万个人——一百二十四万个被系统当作数据点来处理的生命——他们的重量超过了他的承受范围。

但他必须承受。因为如果连他都不能承受,那就没有人能了。

十四

周一上午八点三十分,陈屿刷卡进入拾光金科的办公楼。一切如常。

八点四十五分,他到达工位,打开电脑。屏幕上的绿色圆点还在——专案组的数据采集工具仍在运行。

九点整,合规团队开始了新一周的审计。周怡宣布,今天将完成第十一层的审查,明天开始最后一层的深度扫描。

最后一层。她说的是第十一层。她不知道有第十二层。

但陈屿知道,专案组知道,赵以辰可能也知道。

九点三十分,公司内部通讯系统弹出一条消息——来自赵以辰:

“全体同事注意,今天下午两点,八楼大会议室,有重要事项宣布。请准时参加。”

陈屿的心跳加速了。赵以辰在周一上午突然召集全员会议,这不正常。按照原定的计划,专案组的收网时间是上午十点。赵以辰是不是察觉到了什么?

九点四十五分,陈屿接到了刘磊的短信:“原定时间不变。请保持冷静。”

十点整。陈屿听到了走廊里传来的脚步声。不是一个人的脚步,而是很多人的脚步。整齐、迅速、带着一种公事公办的紧迫感。

他抬起头,看到几个人从电梯里走了出来。为首的是一个穿便衣的中年男人,身后跟着四个穿制服的警察,还有两个穿白色衬衫的人——看起来像是网安支队的。

“谁是赵以辰?“便衣男人走进办公区,声音不大,但穿透力很强。

整个办公区瞬间安静了。所有的键盘声、说话声、电话声同时消失,像有人按下了静音键。

陈屿站起来,看向会议室的方向。玻璃门后面,赵以辰正在和周怡说话。他显然听到了便衣男人的话——他的身体僵了一瞬间,然后恢复了平静。

他推开会议室的门,走了出来。

“我是赵以辰。“他说,声音平稳得像是在做自我介绍,“有什么事?”

便衣男人出示了证件。“深圳市公安局经侦大队。赵以辰先生,你涉嫌侵犯公民个人信息罪和非法经营罪,现依法对你进行传唤。请配合调查。”

赵以辰看着那本证件,看了很久。然后他笑了——一种很奇怪的笑,像是在确认某件事。

“好的。“他说,“我配合。”

他伸出双手,让警察给他戴上了手铐。在手铐合上的那一刻,他转过头来,目光穿过了整个办公区,穿过了几十张或震惊或困惑的脸,穿过了空气、光线和时间的距离——

落在了陈屿身上。

赵以辰的眼神里没有愤怒,没有恐惧,甚至没有意外。只有一种——陈屿花了很多年才找到一个准确的词——释然。

像一个终于被找到的bug。它在系统里存在了很久,制造了无数的问题,但它的本质只是一个小小的逻辑错误。找到它的人不需要恨它——只需要修复它。

赵以辰被带走了。他经过陈屿身边的时候,手铐发出了一声金属碰撞的响声。那是陈屿听到的最后的声音。

十五

后来的事情,陈屿是从新闻报道里看到的。

赵以辰被以侵犯公民个人信息罪和非法经营罪起诉。案件涉及超过一百二十万条公民个人信息,涉案金额超过三亿元人民币。经过七个月的审理,赵以辰被判处有期徒刑七年,罚款五百万元。Everight Capital Ltd.被冻结,精准触达科技被吊销营业执照。

宏桥资本发表声明,称赵以辰的行为系个人行为,与公司无关。没有人相信,但也没有人追究。资本有自己的免疫系统的——它会隔离感染的部分,然后继续运转。

拾光金科在审计完成后被正式整合进宏桥资本的业务体系。第十二层代码被彻底删除。风控系统重新部署,变成了一个只有十一层决策树的干净版本。

陈屿在赵以辰被带走的那天下午,向公司提交了辞职信。他在拾光金科待了六年零三个月。离职的时候,HR让他签了一份保密协议——不讨论公司的任何技术细节和业务数据。他签了。

他离开的那天,最后看了一眼自己的工位。屏幕上的绿色圆点已经消失了——专案组的工具在收网完成后自动卸载了。他的电脑桌面恢复到了一个普通员工的桌面——几个文件夹,一个浏览器,一个聊天软件。

什么都没有发生过。

尾声

陈屿离开了深圳。

他去了大理,在一个靠近洱海的民宿里住了一个月。每天早上,他会沿着湖边跑步,然后在一家小咖啡馆里坐到下午,看书或者发呆。

有一天下午,他在咖啡馆里遇到了一个年轻女人。她坐在他对面,手里拿着一本书,封面上写着《算法的本质》。

“你也看这本书?“她问。

陈屿笑了笑。“我是写算法的。或者说,曾经是。”

“那你觉得算法的本质是什么?”

陈屿想了很久。窗外的洱海在阳光下闪着碎银一样的光。他想起了第十二层代码、想起了一百二十四万个影子ID、想起了那个叫周鸣的27岁年轻人。

“算法的本质,“他说,“是把复杂的东西简化。但简化本身就是一种暴力。你在简化的过程中,必然会丢失一些东西。而那些被丢失的东西——往往是人。”

女人看着他,眼神里有一种说不清的东西。“你好像经历过一些事。”

“算是吧。“陈屿端起咖啡杯,“但也算是过去了。”

他喝了一口咖啡。咖啡是苦的,但苦味之后有一种淡淡的甜。像所有值得经历的事情一样——苦在前,甜在后。

窗外,洱海的水面被风吹起了一层细密的波纹。每一道波纹都像一行代码——有它的起点,有它的逻辑,有它的归宿。

而湖水本身,比所有的波纹加在一起都要深。


(全文完)