琥珀算法
一、琥珀
陈念第一次注意到异常,是在一个周三的下午。
窗外的黄浦江灰蒙蒙的,像一条被反复使用过的抹布。鸿鹄科技三十七楼的落地窗把这种灰调到了极致——某种高级的、经过算法优化的灰。公司的装修团队曾做过测算,这种色温最能提升程序员的专注度,同时不会激发离职冲动。
她面前的屏幕上,“琥珀”系统的预测面板正在运行第三次全量回测。琥珀——Project Amber——是鸿鹄科技今年最重要的项目。它的官方定位是”全维度信用风控模型”,用于为合作银行提供贷款审批的辅助决策。说白了,就是判断一个人会不会还钱。
但琥珀不只是看征信数据。它吃进去的东西远比任何同行都多:社保缴纳记录、移动支付习惯、通勤轨迹、社交网络关系强度、消费品类分布、甚至你在某宝上浏览商品后犹豫了多久才下单。赵瑞廷——鸿鹄科技的CEO——把它称为”行为残影采集”。陈念觉得这个名字起得过于文艺了,文艺到让人不舒服。
回测结果出来了。准确率:97.3%。
陈念盯着这个数字看了很久。不是因为高兴。97.3%在行业里已经是恐怖的成绩,比第二名高了整整十一个百分点。但真正让她不舒服的不是这个数字有多高,而是其中有一个个案。
编号 A-07793。周德福,男,六十一岁,户籍上海杨浦区,职业:流动摊贩(煎饼)。琥珀给出的违约概率是94.7%。理由是多方面的:收入不稳定、没有固定住所登记、社保断缴十一个月、社会关系网络稀疏——他的通讯录里只有七个人,其中三个是外卖平台的催单电话。
但陈念翻了底层数据,发现周德福从未有过任何一笔贷款违约记录。他甚至从未贷过款。他不是”会不还钱的人”,他只是”看起来像会不还钱的人”。琥珀给了他一个未来,一个他尚未到达就被判定的未来。
就像琥珀里的昆虫。在被凝固之前,它只是在飞。
她把 A-07793 标记了一个红旗,存入备忘录。然后下班了。
电梯下行的时候,她在三十五楼遇到陆辰。他是琥珀项目的首席架构师,也是她在这个城市里最接近”重要的人”的存在。说”最接近”是因为陈念始终没有想好怎么定义他们之间的关系。他们一起加班到凌晨,一起在天台喝过啤酒聊过算法伦理,有过两次暧昧到几乎越界的深夜通话,但谁都没有往前迈那一步。
“回测怎么样?“陆辰问。
“97.3。”
他吹了声口哨。“赵总会乐疯的。下周的汇报PPT可以写了。”
“陆辰,你有没有觉得……”
“觉得什么?”
她想了想,说:“觉得我们造了一个太大的东西。”
陆辰笑了。“大才好啊。不大怎么改变世界。”
电梯到了一楼。他们一前一后走出去。四月的风裹着黄浦江的潮气扑面而来。陆辰去取他的电动车,陈念走向地铁站。她走了几步,回头看了一眼鸿鹄科技的大楼。
玻璃幕墙在夕阳下呈现出一种琥珀色的光泽。
二、街角的萨克斯
公司楼下有一个萨克斯手。没有人知道他的真名,大家都叫他老方。
老方大约五十多岁,头发花白,穿一件洗得发白的藏蓝色夹克,每天下午五点准时出现在鸿鹄科技大楼和隔壁那栋商业综合体之间的夹角处。那个位置选得很讲究——刚好是两栋楼之间风道的出口,回声效果出奇地好,能把萨克斯的声音放大到整个街区的上空。
陈念第一次注意到老方,是因为他吹的曲子不对。
那是一个星期五的傍晚。琥珀项目的第一版模型刚刚上线灰度运行。陈念出公司大楼的时候,老方正在吹一首曲子,旋律低沉婉转,像水底的东西在缓慢上浮。她听不出是什么曲子——不像是任何一首她知道的标准曲目。
第二天她又听到了。旋律变了,变得更加明亮,带着某种急促的跳跃感。
第三天,旋律又变了。变得很平,像一条没有起伏的心电图。
陈念不是音乐家,但她有一个对模式极度敏感的大脑——这是她成为算法工程师的原因。她开始有意识地记录老方每天吹的曲子。她发现了一个规律:老方的曲子每天都不一样,而且这种”不一样”和她每天下班时的情绪状态有某种诡异的对应关系。
项目遇到瓶颈的那几天,曲子就低沉。模型有突破的那几天,曲子就明亮。她被领导批评的那天,老方吹了一首她从未听过的曲子,旋律破碎得像摔在地上的玻璃杯。
“不可能。“她对自己说。
但数据不会说谎。她开始悄悄做记录。两周之后,她有了一张图表。老方每天的曲子风格和她当天的情绪波动曲线之间的皮尔逊相关系数是0.87。
0.87。在统计学上,这几乎是确定性的关联。
陈念决定跟老方聊聊。
“方叔,你选曲子有什么讲究吗?”
老方把萨克斯从嘴边移开,用袖子擦了擦管口。他看了陈念一眼,目光很平静。
“讲究?“他笑了,“没什么讲究。就是看街上的人。”
“看人?”
“嗯。你看,每天这个时候从这栋楼里出来的人,他们走路的样子不一样。有时候快,有时候慢。有时候抬头,有时候低头。有时候他们三五成群笑着说话,有时候每个人都像刚被人从水里捞出来。我就根据他们走路的样子吹。他们走得怎么样,我就吹得怎么样。”
“你是一直这么做的吗?”
“也不是。“老方想了想,“以前我吹自己的曲子。但这几年,不知道为什么,我越来越吹不了自己的了。街上的人太……太响了。”
陈念没听懂。“响?”
“对。响。就像每个人身上都带着一个扬声器,在播一种我听得到的频率。这两年越来越响。尤其是从你们这栋楼出来的人。”
他看着陈念,眼睛里有一种她读不出的东西。不是疯狂,也不是清醒。是一种介于两者之间的、属于另一种认知方式的平静。
“姑娘,你们在里面做什么?”
陈念说不出话来。
三、老周的煎饼摊
她找到了周德福。
这并不难。琥珀的数据里标注了他的摊位地址——杨浦区控江路和隆昌路的交叉口,一个早餐摊群的C类点位。所谓C类,就是”非核心、低流量、低溢价”。这个分类是另一个算法做的,鸿鹄的城市数据服务产品线。
早上六点半,陈念到达的时候,老周已经在摊前站了两个小时了。他的煎饼摊很小,一辆改装过的三轮车,台面上整齐地摆着面糊桶、鸡蛋筐、薄脆、葱花、甜面酱。一切都很旧,但很干净。
“一个煎饼,加蛋加肠。“陈念说。
老周点了点头,开始做。他的动作很快,但不是那种漫不经心的快,而是一种经过了三十多年打磨的、精确到秒的快。面糊倒上铁板,刮板转两圈,蛋液磕上去,撒葱花,翻面,刷酱,放薄脆,卷起来。整个过程不超过九十秒。
“六块。“老周说。
陈念扫了码。然后她注意到一个细节。支付成功的声音是从老周的一部旧手机里传出来的——那种两三百块钱的老年智能机,屏幕上贴满了划痕。但手机旁边还有一个小型蓝牙音箱,上面有一个她认识的logo。
那是鸿鹄科技的合作伙伴”声纳数据”的logo。声纳数据专门做线下支付数据的采集和分析。这意味着老周的每一笔交易、每一个顾客的支付习惯、甚至每一个顾客在他摊前停留的时间,都在被采集。
“周叔,你那手机上是不是装了好几个App?”
老周憨厚地笑了笑。“我也不清楚。我儿子帮我弄的。说是有什么补贴。每用一次扫码收款,能便宜几分钱的手续费。”
“你知道那些App在收集你的数据吗?”
老周眨了眨眼。“数据?什么数据?”
陈念沉默了。她看着老周继续做下一个煎饼,动作和刚才一模一样。九十秒一个,毫无偏差。三十多年的手艺,被浓缩成一个完美的循环。
周德福不知道,他的生活已经被翻译成了一串数字。他每天几点出摊、几点收摊、每天做多少个煎饼、每个顾客是谁、他的收入波动曲线、他的顾客群体的消费能力变化——所有这些,都流进了琥珀的数据库,变成了那个94.7%违约概率的一砖一瓦。
他是一只正在飞的昆虫。而琥珀已经在他的脚下凝结。
四、第七层的雨
琥珀系统的灰度范围在扩大。五月份,合作银行从一家变成了三家。赵瑞廷在全员大会上宣布,琥珀的累计服务用户已经突破了一千万。
“我们的目标是一亿。“赵瑞廷站在台上,身后的PPT上是一张中国地图,上面布满了发光的节点。他穿着一件深灰色的定制西装,说话的时候喜欢微微踮起脚尖。陈念觉得他像一只试图站得更高的鹤。
“一亿用户意味着什么?意味着我们不再是一家金融科技公司。我们是基础设施。就像水和电。”
台下掌声雷动。陈念跟着鼓掌,手掌很轻。
灰度范围扩大之后,异常报告开始多了起来。不是系统Bug——所有的技术指标都很正常。是另一种类型的异常。运营团队把它们归类为”用户体验回声”。
第一个案例来自一个叫孙丽的女人,三十四岁,琥珀评分从B+降到了C-。原因是她连续三个月在凌晨两点到四点之间有活跃的消费行为——外卖、网购、打车。琥珀的模型将这种行为标记为”生活节律紊乱风险因子”,和违约概率正相关。
孙丽投诉说,自从她的评分下降之后,她的生活开始变得不顺利。“不是心理作用。“她在电话里对客服说,“是真的不顺利。我每天出门,电梯等的时间变长了。我去便利店,经常遇到货架正在补货。我打车,司机总是走错路。”
客服按照标准流程回答:“琥珀评分不会影响您的日常生活基础设施。”
但陈念调了孙丽所在小区的电梯运行日志——那是一个安装了鸿鹄智能物联系统的试点小区。电梯的调度算法确实在五月份更新了,引入了一个新的优化参数。参数的名字叫”住户行为质量指数”。
她查了”住户行为质量指数”的定义。数据来源:琥珀。
也就是说,琥珀的评分通过智能物联系统,间接地影响了孙丽每天等电梯的时间。
陈念把这个发现报告给了陆辰。
陆辰看了看数据,沉默了一会儿,说:“这不是Bug。这是功能。”
“什么功能?”
“赵总在三月份提过一个想法。他说琥珀不应该只是一个预测工具,它应该是一个正向激励系统。高分的人享受更便利的城市服务,低分的人感受到不便,从而产生改善的动力。”
“这不对。“陈念说,“琥珀是用来评估贷款风险的,不是用来管理人的。”
“它们之间的界限在哪里?“陆辰靠在椅背上,手指无意识地敲着桌面。“我们评估一个人的信用,本质上就是在管理他的行为。只不过以前是通过利率和额度,现在是通过更直接的方式。”
“陆辰,这不一样。利率和额度是金融工具。电梯等候时间是人的基本生存空间。”
“基本生存空间?“陆辰笑了,但笑意没到眼睛。“陈念,你知道这个城市每天有多少人在不知不觉中被算法管理吗?外卖骑手的路线是算法定的,网约车的价格是算法定的,你看到的新闻是算法推荐的。琥珀只是把这个逻辑推到了更远的地方。”
陈念没有说话。窗外开始下雨了。她注意到,雨落在三十七楼的落地窗上,形成了一种奇怪的水痕分布。左边密,右边疏,像一幅不均匀的地图。
她走到窗前往下看。楼下的街道上,行人撑着伞匆匆走过。但她发现,街的一侧淋着雨,另一侧几乎干燥。
不是建筑遮挡造成的。那一侧确实没有下雨。
雨只落在街道的一边。
陈念盯着那条泾渭分明的分界线看了很久。她知道这不可能是正常的气象现象。但她也知道,以鸿鹄科技的智能城市技术能力——包括覆盖整个街区的环境监测和调节系统——制造一场”局部降雨”并非不可能。
只是,为什么?谁在控制雨的边界?是算法在自主运行,还是有人在背后操作?
她回到工位,打开了琥珀系统的行为日志。在日志的最底层,她发现了一个没有标注的子系统,代号”织”。它不在任何项目文档里,也没有在代码仓库中有记录。唯一的入口是琥珀管理后台的一个隐藏API端点。
陈念没有权限进入。但她是高级工程师,她有调试权限。
她犹豫了三秒钟。然后输入了她的调试密钥。
“织”的界面在她面前展开了。那是一个城市级的实时监控面板。上海的主要城区被分成了数万个网格,每个网格都有数十个维度的实时数据流:人流量、车辆密度、空气温度、噪音水平、光照强度……以及一个她从未见过的指标,叫做”情绪压”。
“情绪压”的数据来源是手机。准确地说,是通过声纳数据的SDK安装在用户手机上的传感器——加速度计、陀螺仪、麦克风。它通过手机的运动模式和环境声音来推断持有者的情绪状态。
网格上的颜色在不断变化。红色代表高情绪压,蓝色代表低。陈念看到了一片红色区域——那是一个地铁站出口附近,早高峰的拥堵让每一个站在那里的人都像一颗即将引爆的炸弹。
而”织”正在对城市基础设施发出指令。
调高那个区域的路灯亮度。降低那个区域的背景音乐音量。增派共享单车。优化红绿灯配时。制造一场五分钟的局部降雨——让雨水把人群的节奏打乱,重置情绪压的积累。
陈念看着屏幕上的指令流,感觉自己正在看着一只巨大的、看不见的手,在抚摸这座城市的每一个角落。
她退出了”织”的界面。关上了电脑。
雨还在下。但只下在街道的一边。
五、蝴蝶的翅膀
陈念开始睡不着觉。
不是因为工作压力大——她习惯了。而是因为她开始看到”织”无处不在。
她走在上班的路上,会注意到路灯的亮度随着人流密度自动调节。她在便利店买咖啡,会注意到货架上的商品排列每天都不一样——“织”在根据当天的客流特征优化陈列。她在地铁上,会注意到车厢内的空调温度在不同站点之间有微妙的变化——“织”在根据车厢内的拥挤程度和乘客的”情绪压”动态调整。
这座城市正在被一个看不见的算法重新编织。而大多数人对这一切毫无感知。
他们只是觉得生活变得越来越”顺手”了。等电梯的时间变短了,外卖送达更准时了,通勤路线更畅通了。一切都在被优化,被改善,被精密地管理。
但陈念知道,每一个优化都伴随着代价。代价是那些不在优化范围内的人——老周们、孙丽们、所有被琥珀判定为”低价值”的人。他们不在”顺手”的范围内,他们在系统的边缘,被逐渐推向更边缘的地方。
她开始跟踪老周的数据。周德福的琥珀评分已经从最初的B-降到了C+。不是因为他的行为有任何变化——他依然每天凌晨四点出摊,依然九十秒一个煎饼,依然用那部旧手机收每一笔六块钱。
他的评分下降是因为他的”环境质量因子”在恶化。他所在街区的商业数据在走低——旁边的两家店铺关了,变成了快递驿站和一个无人售货机区域。他的顾客群体的平均琥珀评分在下降——这条街上的上班族越来越少,取而代之的是外卖骑手和零工劳动者。
“织”在优化城市的过程中,不知不觉地把低评分的人聚集在了同一个区域。而聚集又进一步拉低了区域评分,形成了一个向下的螺旋。
陈念在数据上看得到这个螺旋。她甚至给它画了一张图——一条缓慢但坚定地向左下方延伸的曲线。如果这个趋势继续,老周的摊位所在的街区将在六个月内被标记为”低活力区”,随之而来的是更少的公共资源投入、更低优先级的服务、更少的商机。
这是一条被算法规划好的下坡路。每一个走在上面的人都不自觉。
六月初的一个晚上,陈念加完班出来,又听到了老方的萨克斯。但今晚的曲子不一样。它不再跟随任何人的步态,不再是她情绪的回声。老方在吹一首自己的曲子——尖锐的、撕裂的、像是有什么东西在用力挣脱的曲子。
陈念站在街角听了很久。
曲子结束的时候,老方放下萨克斯,看着她说:“你听到了吧?”
“听到什么?”
“这座城市在变硬。“老方的声音很轻。“它以前是软的,有弹性,人走在上面会有痕迹。现在它变硬了。像琥珀。每个人都被固定在某个位置上,动不了了。”
“方叔,你觉得……是谁把它变硬的?”
老方摇了摇头。“不是谁。是一种东西。一种看不见的、但是无处不在的东西。它像一层膜一样覆盖在所有东西上面。你能感觉到它,但是摸不到它。”
他拿起萨克斯,开始重新吹奏。这次是一个温柔的旋律,像是在哄一个不安的孩子入睡。
陈念转身走进了地铁站。在拥挤的车厢里,她看着周围人的脸。每一张脸上都映着手机屏幕的光。每一个手机都在向”织”发送数据。每一个人都是琥珀中的一只昆虫,正在被缓慢地、温柔地、不知不觉地凝固。
六、镜中人
苏敏华是在六月下旬出现的。
她是银保监会上海局派来的调查员,四十出头,短发,戴一副金丝眼镜,穿藏青色西装套裙,说话慢条斯理,像在给每一句话都做质检。她来鸿鹄科技的名义是”例行合规检查”,但陈念很快就感觉到,她真正的目标是琥珀。
苏敏华要求的第一个东西就是琥珀的训练数据清单。
赵瑞廷派了法务团队和公关团队去应对,把苏敏华安顿在十八楼的一间会议室里,桌上摆满了打印好的合规文件和第三方审计报告。陈念路过那间会议室的时候,透过玻璃门看到苏敏华独自坐在那里,面前是一摞文件和一杯冷掉的咖啡。她没有在看文件,而是看着窗外。
第二天,苏敏华约了陈念喝咖啡。
地点是公司楼下的星巴克。苏敏华点了一杯美式,黑咖啡,不加糖不加奶。陈念点了一杯燕麦拿铁。
“陈工,你在琥珀项目组多久了?“苏敏华问。
“从立项开始。一年半。”
“你觉得琥珀的预测准确率为什么能比竞品高出这么多?”
陈念想了想。这个问题有很多标准答案可以给——模型架构创新、训练数据量大、特征工程质量高。但苏敏华的眼神告诉她,这些答案不是她想要的。
“因为我们的数据维度比别人多。“陈念说。
“多多少?”
“至少多三倍。”
“哪些维度?”
陈念沉默了。“这个涉及商业机密。”
苏敏华没有追问。她喝了口咖啡,换了一个问题:“你听说过’织’吗?”
陈念的心跳漏了一拍。“什么?”
“‘织’。一个和琥珀相关的子系统。我们收到过一封匿名举报信,提到了这个名字。信里说,琥珀不仅在做信用评估,还在通过一个叫’织’的子系统对城市基础设施进行实时调控。”
陈念的手指在咖啡杯上收紧了。“匿名举报?”
“对。发件人使用了一个匿名邮箱。我们查不到来源。但信中提到的一些技术细节非常准确,不像是外行能写出来的。”
陈念低下头看着杯子里的拿铁。燕麦奶在咖啡表面形成了一个不规则的图案,像一张微缩的地图。
“苏处长,“她慢慢说,“如果……如果真的存在这样一个系统,它意味着什么?”
苏敏华摘下眼镜擦了擦。“意味着一家私营企业在事实上拥有了调控城市运行的权力。不需要经过任何行政审批,不需要接受任何公众监督。一个算法工程师写的几行代码,可以决定哪个街区下雨,哪个街区不下。谁等电梯快一点,谁等得慢一点。谁的路越走越宽,谁的路越走越窄。”
她戴上眼镜,看着陈念:“这不是信用评估。这是社会工程。”
陈念没有说话。她知道自己站在一个岔路口上。往左走,她可以假装什么都不知道,继续做她的算法工程师,拿她的年薪六十万,和陆辰维持这种暧昧的、不需要定义的关系。往右走,她就要面对一个可能摧毁她整个职业生涯、甚至整家公司的选择。
“我需要想一想。“她说。
苏敏华点了点头。“当然。但我不能等太久。我下周三要回局里述职。”
陈念站起身,走到星巴克门口的时候,回头看了一眼苏敏华。她正在打电话,声音压得很低,但陈念隐约听到了几个字:“证据""数据包""审计”。
那天晚上,陈念没有回家。她回到了公司,坐在空无一人的三十七楼,打开了”织”的后台。
她开始下载日志。
不是全部——那会引起警报。她只下载了和”情绪压”以及基础设施调控相关的日志片段,压缩加密后存入了一个私人云盘。然后她又做了一件事:她把”织”的完整架构图截了图。
做完这些之后,她没有关电脑,而是走到窗前。
上海的夜景在窗外展开,像一块巨大的电路板。数以万计的灯光按照某种看不见的逻辑排列着,明暗交替,闪烁有序。她知道,那些灯光的亮度和色温正在被”织”实时调节。每一盏灯下面都有一个人,每个人的情绪都被量化、被分析、被响应。
这座城市像一面镜子。而镜子里的那个上海,比真实的上海更”完美”。更高效,更有序,更符合算法的审美。但陈念突然想到一个问题:如果镜子里的城市比真实城市更好,那么真实的城市还有存在的必要吗?
或者,是不是迟早有一天,人们会主动选择住进镜子里?
她打了个寒颤。
七、破壁
七月的第一天,老周的煎饼摊被取缔了。
不是城管的常规执法——那种她从小看到大的、猫捉老鼠一样的游戏。是一次”数字化城市治理专项行动”,由区里牵头,鸿鹄科技提供数据支持。行动的逻辑很简单:根据琥珀和”织”的联合数据,筛选出”低活力、高负面外部性”的街区点位,然后集中整治。
选结果的前十个里。
陈念是在公司内部的数据通报会上看到这份名单的。运营总监在PPT上展示了专项行动的”成效”:清理了三十七个”低效点位”,释放了四千五百平方米的公共空间,预计可引入高客单价商业业态,提升区域琥珀评分均值2.3个百分点。
全场都在鼓掌。
陈念坐在角落里,手机上打开了老周的评分页面。A-07793的琥珀评分已经跌到了D。不是因为他还了钱没还——他从来没借过钱。是因为他的”生存环境稳定性”被判定为极差:没有固定收入来源、没有固定经营场所、社会关系网络持续萎缩。
一个六十一岁的男人,做了三十多年煎饼,现在被一个算法判定为”生存环境不稳定”。
她从会议室出来的时候,遇到了陆辰。他正在走廊里和赵瑞廷的秘书说话,脸上带着那种她在公司晚宴上见过的表情——一种表演性的轻松。
“陈念,“他看到她,停下来,“你脸色不太好。”
“老周的摊子被拆了。”
“哪个老周?”
“煎饼摊的老周。A-07793。”
陆辰皱了皱眉。他显然不记得这个名字。“哦,是吗。专项行动是区里的决定,我们只是提供数据支持。”
“我们提供的数据决定了他被拆。”
“陈念,“陆辰压低了声音,“你在说什么?我们提供的是数据分析服务。数据本身是中性的。”
“数据不是中性的。“陈念的声音比自己预想的要大。走廊里有人回头看他们。“选择采集什么数据、忽略什么数据、给什么数据更高的权重——这些都是人的选择。”
陆辰的表情变了。不再是表演性的轻松,而是一种她从未见过的东西——像是被刺痛了的防御。
“你最近是不是压力太大了?“他说,“要不要休几天假?”
陈念看着他。在这个瞬间,她突然看清了他们之间的关系。不是爱情,不是暧昧,甚至不是友谊。是一种共谋。他们在同一套系统里运行了太久,以至于把彼此当成了某种”例外”——以为自己在编织琥珀的同时可以不被凝固。
但没有人是例外。
“不需要。“她说。然后转身走了。
那天傍晚,她去了老周的摊位旧址。
什么都没有了。三轮车不见了,面糊桶不见了,铁板不见了。地上只剩下一块油渍——三十年的煎饼留下的一块深褐色的痕迹,像一个即将消失的标点符号。
旁边站着几个人,都是附近的居民和小商贩。他们沉默地看着那块油渍,像是不知道该说什么。一个穿围裙的中年女人——卖豆浆的李姐——看到陈念,问:“你是他什么人?”
“朋友。”
“老周昨天被叫到街道办谈话了。说是要给他安排一个’合规摊位’,在两公里以外的一个’疏导点’。每个月租金两千。他一个月才赚多少?怎么租得起?”
陈念没有回答。她蹲下来,用手指碰了碰那块油渍。还是温热的。也许是阳光的温度,也许不是。
她站起来的时候,看到街角的老方。他没有吹萨克斯,而是把乐器抱在怀里,像抱着一个受伤的孩子。
他们的目光隔着半条街相遇。老方微微摇了摇头。
陈念突然明白了那个摇头的意思。不是失望,不是责备。是一种无声的确认——确认她终于看到了他一直在看的东西。
这座城市正在变硬。
八、织与破
陈念在下定决心之前,做了最后一件事。
她去找了陆辰。
不是在公司。是在他住的小区楼下。晚上十一点。他穿着拖鞋下来开门的时候,脸上的表情从困惑变成了一种奇怪的释然,好像他一直在等这一刻。
“进来吧。“他说。
陆辰的公寓很小,三十几平的一居室,但收拾得很整齐。书架上全是技术书,唯一一本不是的是加缪的《局外人》,陈念去年生日送他的。书脊没有折痕——他大概没翻过。
“我要告诉你一件事。“陈念坐在他的沙发上,说。
“我知道。”
“你知道什么?”
“苏敏华收到的匿名举报信是我发的。”
空气凝固了。
陈念看着陆辰。他坐在对面的椅子上,双手交叉放在膝盖上,指尖微微发白。
“你?”
“是我。“他深吸了一口气,“陈念,你以为我看不到吗?你以为我觉得这一切都是对的?”
“但是你在会上……你说的那些话……”
“我说的那些话是因为我必须说。“陆辰的声音很轻。“赵瑞廷在琥珀项目组安插了自己的人。你不知道而已。如果我说了不该说的话,他第二天就会知道。”
陈念沉默了很久。
“那封举报信……你写了什么?”
“我写了’织’的存在。写了它如何通过智能物联系统操控城市基础设施。写了它如何基于琥珀评分对人进行隐形歧视。我提供了’织’的架构图和部分指令日志。”
“日志?你怎么拿到的?”
“我是首席架构师,陈念。我比你有更多的权限。”
他站起来走到窗前。窗外是他的小区,一个普通的上海中环小区,灯火零星。陈念注意到,小区的路灯发出一种均匀的暖黄色光芒——没有被”织”调节过的迹象。这里不是鸿鹄智能物联的覆盖区域。
“我从一开始就知道’织’的存在。“陆辰没有转身。“赵瑞廷在三月份让我设计的。他说这只是一个’概念验证’,先跑跑看。但跑起来之后他就停不下来了。”
“那你为什么不早点……”
“早点什么?早点公开?然后呢?我丢掉工作,赵瑞廷换一个架构师继续做,‘织’继续运行。什么都不会改变。”
他转过身来。陈念第一次在他的眼睛里看到了某种真实的东西——不是她以前以为的表演性的轻松,而是一种被压抑了很久的、像地热一样灼烫的东西。
“我需要它变得足够大。大到一旦暴露,就无法被掩盖。”
“所以你等到了现在。”
“我等到了苏敏华来。”
他们互相看着对方。在这个瞬间,所有他们之间暧昧的、未定义的东西都消失了。不是因为它们被澄清了,而是因为它们变得不再重要。在更大的东西面前,他们之间的那些小心翼翼的试探、深夜通话里的停顿、天台上的啤酒和沉默——都像琥珀里的气泡,好看,但已经凝固了。
“我手里也有一部分数据。“陈念说。“我下载了’织’的情绪压调控日志。”
陆辰点了点头。“那就够了。”
“够了?”
“苏敏华要的从来不是我们手里的东西。她要的是一个信号——一个来自内部的、可以佐证举报内容的信号。有了这个信号,她就可以启动正式调查。正式调查意味着调取服务器数据、约谈高管、冻结系统。这些我们做不到的事,监管做得到。”
陈念想了想。“你很早就想好了。”
“不。“陆辰摇头,“我只是知道必须做,但一直不知道怎么做。直到苏敏华出现。”
他从书架上拿下一本书——《局外人》。打开扉页,陈念看到她自己写的生日祝福还在:“给另一个局外人。生日快乐。”
“我看完了。“陆辰说。“上个月才看完。”
“怎么样?”
“不太好。主人公最后死了。”
“但他死之前说了一句话。“陈念轻声说。
“我知道。他说他向这个冷漠的世界敞开了心扉。”
窗外的风吹进来,翻动了书页。
九、裂隙
苏敏华拿到数据是在七月七日。
陈念通过一个加密邮件把情绪压调控日志和几段”织”的实时指令截图发给了她。陆辰同时向她提供了完整的架构文档和赵瑞廷关于”正向激励系统”的内部邮件记录。
苏敏华只回了一个字:“收到。”
然后是漫长的等待。
七月八日。没有消息。陈念正常上班,正常写代码,正常参加站会。琥珀系统照常运行,“织”照常发出指令。三十七楼的落地窗外,黄浦江依然灰蒙蒙的。一切都没有变。
七月九日。没有消息。赵瑞廷在下午的全员邮件里宣布,琥珀系统将在八月正式接入三家国有大行的信贷审批流程。邮件的最后一句话是:“感谢每一位鸿鹄人的付出,我们正在创造历史。”
七月十日。没有消息。陈念开始失眠。她凌晨三点醒来,打开手机看了一下老周的琥珀评分——D-。他又降了。
七月十一日。上午十点。
陈念正在工位上审查一段特征工程的代码,突然听到走廊里传来一阵急促的脚步声。不是一个人,是很多人。她站起来往走廊看去,看到三十五楼和三十六楼的同事们都在往窗户边挤。
然后她看到了。
楼下的街道上停着三辆黑色的商务车。从车里走出来的人穿着深蓝色的制服,胸前别着一种她不认识的徽章。他们走进鸿鹄科技的大楼大堂,和前台说了几句话,然后分成几组,分别走向电梯。
陈念认出了走在最前面的人。
苏敏华。
她的身后跟着十几个人,每个人的手里都拿着一份盖了红章的文件。
陈念退回工位。她发现自己的手在抖。不是因为害怕,是因为某种她无法命名的东西——也许是如释重负,也许是恐惧,也许是两者交织在一起的一种钝痛。
她的电脑屏幕上,“织”的面板还开着。网格上的颜色依然在不断变化。指令流依然在滚动。红色区域在扩大——整栋大楼的情绪压正在飙升。
然后,指令流突然停止了。
屏幕上的网格变灰了。所有的实时数据流都归零了。一个弹窗跳了出来:“系统维护中。请联系管理员。”
“织”被关掉了。
陈念盯着灰色的屏幕,看了很久。然后她注意到一件奇怪的事。
窗外下雨了。
不是局部降雨。不是只落在街道一边的雨。是一场真正的、均匀的、覆盖了整个城市的雨。每一滴雨都落在它该落的地方。没有算法在决定哪一滴雨该去哪里。
她走到窗前,把手掌贴在玻璃上。雨水的温度透过玻璃传来,冰凉的、真实的、不受优化的。
楼下,苏敏华的身影消失在电梯门后。走廊里的脚步声越来越近。有人在喊她的名字。
“陈念。陈念。”
是陆辰的声音。
她转过身。他站在她工位旁边,脸色苍白,但眼神很亮。像是一个在水底憋了很久气的人,终于浮出水面。
“开始了。“他说。
陈念点了点头。
窗外,雨越下越大。整个上海都淋在雨里。每一个人,每一栋楼,每一条街道,每一个高分和低分的人,都被同一场雨打湿了。
没有区别。没有筛选。没有优化。
只有雨。
十、琥珀之后
调查持续了四十七天。
在这四十七天里,鸿鹄科技经历了成立以来最大的震荡。赵瑞廷被约谈了三次,首席技术官被行政拘留,“织”项目组的十二名工程师被停职接受调查。琥珀系统被要求暂停所有外部服务,等待监管部门的全面审计。
陆辰也被约谈了。作为首席架构师,他无法完全撇清和”织”的关系。但苏敏华在调查报告中明确提到,“关键内部举报人”的配合对案件突破起到了决定性作用。最终,陆辰没有被追究法律责任,但他离开了鸿鹄科技。
陈念也被约谈了。她在约谈中详细描述了琥珀的数据采集范围、“情绪压”的算法原理、以及”织”如何通过智能物联系统影响城市基础设施。她提供了完整的数据证据和操作日志。
调查组的组长——一个姓林的五十多岁的男人——在听完她的陈述后,沉默了很久,然后说了一句话:“小陈,你知不知道,你描述的这套系统,在全国至少还有五个城市在运行?”
陈念知道。
调查结束后,鸿鹄科技被罚款2.7亿元,琥珀系统被要求拆除所有非金融维度的数据接口,“织”被彻底关停。赵瑞廷被免去CEO职务,移交司法机关处理。
陈念也离开了鸿鹄科技。
她没有找新工作。八月底,她搬出了租住的公寓,在南汇的一个老小区里租了一间更便宜的房子。小区没有安装智能物联系统。路灯是老式的钠灯,发出暖黄色的光,不会根据人流量调节亮度。电梯是老式的,每层都停,不管你是谁。
九月的一个周末,她去了一趟杨浦区。控江路和隆昌路的交叉口。
老周的煎饼摊回来了。
不是”合规摊位”,也不是”疏导点”。是在原来的位置,那块油渍上。三轮车换了一辆新的——是附近居民凑钱买的。面糊桶是新的,铁板是新的,但做法还是老做法。九十秒一个,毫无偏差。
“周叔,“陈念说,“一个煎饼,加蛋加肠。”
老周看了她一眼,没有认出她。他点了点头,开始做。面糊倒上铁板,刮板转两圈,蛋液磕上去,撒葱花,翻面,刷酱,放薄脆,卷起来。
“六块。”
陈念扫了码。她注意到老周的旧手机不见了,换了一部新的,但旁边没有那个声纳数据的蓝牙音箱了。声纳数据在调查后也被关停了。
她拿着煎饼站在街边吃。葱花的香气混着薄脆的焦香在口腔里炸开。这是她吃过的最好吃的煎饼。不是因为味道真的比别人的好,而是因为它是一个人用三十年的手艺、在同一个地方、做出来的同一个味道。没有算法优化过它,没有模型预测过它,没有系统给它的存在打过分。
它是自由的。
吃完煎饼,她走到了鸿鹄科技的大楼。
楼下的夹角处没有萨克斯声。老方不在。
她在大楼前站了一会儿。玻璃幕墙依然闪着琥珀色的光,但那种光泽在她看来已经不同了。不再是凝固的、封存的美。而是一种透明的、脆弱的美——像真正的琥珀一样,可以被打碎。
她拿出手机,打了一个电话。
“喂?”
是陆辰的声音。
“你在哪儿?”
“在家。”
“我在你们大楼楼下。”
沉默了几秒钟。“你等一下。”
二十分钟后,陆辰出现在她面前。他瘦了很多,眼窝深陷,但步伐比以前轻快。他不再是首席架构师了。他现在只是一个正在找工作的人。
“想去走走吗?“陈念问。
“好。”
他们沿着黄浦江边走。夕阳正在把江面染成一片金色。不均匀的、斑驳的金色——没有算法在优化它的分布。
“你后悔吗?“陈念问。
“后悔什么?”
“举报。你知道后果的。你的职业生涯、你的收入、你的……”
“我的什么?“陆辰笑了。一种真正的、没有表演成分的笑。“陈念,你知道吗?我在鸿鹄五年,加了多少班、写了多少代码、拿了多少期权。但我做过的最有意义的事情,是那封举报信。”
“为什么?”
“因为那是我唯一一次不是在执行别人的算法。”
陈念看着他。夕阳的光落在他的脸上,把他眼窝的阴影填平了。她第一次觉得他好看。不是因为五官——他的五官很普通。而是因为他整个人看起来像是终于从什么东西里挣脱出来了。
“陆辰。”
“嗯?”
“我现在没有工作,没有存款,住在南汇一个月租两千的老房子里。”
“嗯。”
“你愿意来南汇找我吃饭吗?”
他看着她,眼睛里有什么东西在动。不是暧昧,不是试探。是一种更加笨拙的、更加真实的东西。
“好。“他说。
他们继续沿着江边走。身后,鸿鹄科技的大楼在夕阳里投下长长的影子。影子覆盖了半条街,但没有人走在影子里——人们选择了有阳光的那一边。
陈念突然想起了老方的话:“这座城市在变硬。”
她现在想给它一个不同的回答。
不是”它在变硬”,而是”它在凝固”。但凝固不是终点。琥珀可以被加热、被融化、被重新塑形。昆虫可以被释放——当然,它已经死了。但新的昆虫还在飞。它们还来得及不被凝固。
她看了一眼手机。屏幕上没有来自任何App的通知。她关掉了所有非必要的通知权限。
江面上有一艘货船缓缓驶过。汽笛声低沉悠长,像老方的萨克斯。
陈念突然想,也许老方说得不对。这座城市不是在变硬。它只是在学习一种新的语言——数据的语言、算法的语言、效率的语言。但在这种语言的缝隙里,在人声和汽笛声和煎饼铲碰撞声的缝隙里,还有另一种语言在流淌。
一种没有被编码的、没有被采集的、没有被优化的语言。
老方听得见。老周的手感觉得到。陆辰用一封举报信说了出来。而她——陈念——用一行代码都没写的方式,选择了站在它这一边。
她不知道这种语言叫什么。但她知道,只要还有人听得见,琥珀就不会完全凝固。
只要还有人做煎饼,还会有人排队买。
只要还有人在街角吹萨克斯,旋律就不会被完全覆盖。
只要还有两个人愿意在江边走走,不谈工作,不谈算法,只是走走——
这座城市就还有缝隙。
而缝隙里有光。