责任的重量
责任的重量
一
陈默觉得自己大概是全北京最失败的算法工程师。
不是因为被裁员——2026年初,北京互联网大厂的裁员潮已经像冬天的北风一样寻常,大家早就习惯了。他认识的前同事里,有人在三十五岁被优化后去开了网约车,有人回老家考了公务员,有人在望京的咖啡馆里一遍遍改简历,投出去像扔进黑洞。
陈默不一样。他是主动辞职的。
准确地说,是在一个凌晨三点的加班夜,他盯着自己写的推荐算法的运行报告,忽然感到一阵强烈的恶心。报告显示,过去三个月,他负责优化的信贷推荐模型让十二万用户平均负债率提升了百分之二十三。其中,年龄在二十到二十五岁之间的用户群体,逾期率翻了一倍。
十二万人。每一个百分点的提升背后,都是真实的人,真实的账单,真实的催收电话,真实的失眠和焦虑。
他的直属领导老周看到这份报告后,拍了拍他的肩膀说:“数据不错,下个季度的OKR稳了。”
陈默第二天就提了离职。
离职后他没有去找新工作,而是搬到了海淀区一个老旧小区的地下室里住。房租一千二,潮湿,隔音差,楼上住户的脚步声像踩在他头顶。但他不在乎。他把自己关在那间不到十平米的屋子里,用了整整两个月,试图理解自己到底做了什么。
他写了一个算法。这个算法通过分析用户的消费习惯、社交行为、地理位置和浏览器历史,精确地计算出每个人能承受的最大信贷额度——不是银行认为的安全额度,而是算法推测的”心理承受极限”。换句话说,它能算出一个人在被债务压垮之前,还能再借多少钱。
这个模型被应用到了公司最大的消费信贷产品上。三个月,十二万人的负债率上升百分之二十三。六个月,他不知道。他已经不在那里了。
四月的北京还冷。地下室里没有暖气,陈默裹着军大衣坐在电脑前,屏幕上是他离职前拷贝的最后一份模型运行日志。他知道自己不该拷贝这些数据——保密协议、竞业条款、法律责任——但他还是拷了。他需要知道。
日志里全是数字。用户ID、推荐额度、点击率、转化率、逾期天数。他把用户ID匿名化了,但每个ID背后仍然是一个活生生的人。他试着想象他们的生活:那些刚毕业的大学生,月薪六千,却被推荐了三万的信用额度;那些在工厂流水线上用手机刷短视频的工人,被算法识别为”低风险高收益”的目标客群。
他想起自己刚入职时写的第一行代码。那时候他二十三岁,刚从北邮毕业,觉得写算法是一件很酷的事。改变世界嘛。连接人与信息。让技术服务于人。
六年后他明白了,技术也可以压在人身上,像一块石板,缓慢而均匀地施压,直到你感觉不到痛——只剩麻木。
五月的一个下午,陈默的手机响了。是他的前同事赵锐。
“默哥,你在哪呢?有个事想找你帮忙。”
“说。”
“你还记得咱们之前用的那批训练服务器吗?就是西北旺数据中心B3机房那批。公司迁移到新机房之后,老机房准备报废处理。我负责这边的资产清理。”
“嗯。”
“我在一台服务器里发现了个奇怪的东西。一个还在运行的进程。”
陈默沉默了几秒。“什么进程?”
“说不清楚。不是咱们业务系统的代码,也不是运维工具。我看了下代码结构……像是有人在那台服务器上偷偷部署了一个独立项目。而且——“赵锐压低了声音,“这个进程好像一直在往外写数据。”
“写给谁?”
“不知道。数据是加密的。但最诡异的是,这个进程已经运行了两年多,没人发现过。”
陈默想了想。“你把IP和访问方式发给我,我远程看看。”
“别,这种事远程说不清楚。你如果有空,来一趟吧。机房下周就要拆了。”
陈默看了看窗外灰蒙蒙的天。地下室只有一扇巴掌大的气窗,透进来的光永远是灰色的,像蒙了一层塑料膜。
“行。明天下午。”
挂了电话,他坐了很久。然后他打开抽屉,翻出了自己的工牌。工牌上的照片还是他入职那天拍的,笑得一脸灿烂。他把工牌塞进口袋,关了灯,在黑暗中躺下。楼上的脚步声又响起来了,一下一下,像某种缓慢的倒计时。
二
西北旺数据中心就在百度科技园往北两公里的地方,一栋灰色的建筑,外表像仓库,门口有保安。赵锐在门口接他。
赵锐比陈默小两岁,头发已经稀疏了,戴着厚厚的眼镜,笑起来还是那副技术宅的模样。“默哥,好久不见。你瘦了好多。”
“地下室住久了,见不到太阳。“陈默开了个玩笑,但笑不出来。
他们穿过走廊,进了B3机房。机房里冷气轰鸣,一排排服务器机柜像图书馆的书架一样整齐排列,蓝色和绿色的指示灯在黑暗中闪烁。空气里有一股金属和臭氧的味道,干燥,冰冷,像被技术净化的停尸间。
“在这儿。“赵锐带他走到最里面的一排机柜,指着其中一台。“就这台。编号B3-2847。”
陈默蹲下来,接上笔记本电脑,登录系统。果然,进程列表里有一个奇怪的条目,名字叫 responsibility.exe。他差点笑出来——谁会给一个偷跑的进程起名叫”责任”?
“我查了一下部署时间,“赵锐站在后面说,“2023年11月17号。那时候咱们团队还在用这批服务器跑模型。”
2023年11月。那时候陈默还在公司,正在开发第一版信贷推荐算法。
他打开代码目录,开始阅读。
代码是用Python写的,结构很清晰,甚至有注释——这在互联网公司里简直是奇迹。核心模块有三个:一个数据采集器,一个分析引擎,一个输出模块。数据采集器连接着公司内部的用户行为数据库——这意味着部署它的人有高级权限。分析引擎用的是一套陈默从未见过的算法架构,不是常规的机器学习模型,更像是一种……规则系统?一种基于伦理逻辑的判断框架。
他越看越心惊。
“这东西……”他喃喃道,“它在给用户打道德标签。”
“什么?“赵锐凑过来。
“你看这段代码。它不是在分析用户的消费能力,而是在分析用户的’责任承受能力’——不是经济上的,是道德上的。它在计算每个人在做出损害他人的行为时,会承受多大的心理负担。”
赵锐的表情变得困惑。“为什么有人要写这种东西?”
陈默没有回答。他继续往下看。
输出模块将分析结果写入了一个独立的数据库,加密存储。他尝试解密,发现加密密钥竟然硬编码在代码里——写这个程序的人并不担心被破解。或者说,他希望有人能找到它。
数据库里有记录。十三万条。每一条对应一个用户ID,以及一个分数——0到100之间的数值,名为”道德重量指数”。
陈默的手开始发抖。
因为他认识这个分数的分布曲线。它和他在信贷推荐算法里使用的”心理承受极限”模型……恰好是镜像关系。
一个人的道德重量指数越高,他在信贷推荐模型里被评估为”低风险高收益”的概率就越大。因为算法的逻辑是:道德感强的人更害怕违约,所以可以给他们更高的额度——他们会咬着牙还钱的。
两套算法,像齿轮一样咬合在一起。一个寻找脆弱的人,一个解释为什么这些人最容易被利用。
“默哥?你脸色不太好。“赵锐说。
陈默关上笔记本电脑。“这台服务器的数据,能拷出来吗?”
“你是说……整盘拷贝?”
“对。包括那个神秘进程的所有文件和数据库。”
赵锐犹豫了一下。“这不太合规……”
“我知道。但我们需要知道这是谁写的。”
赵锐看了他一眼,没再说话,转身去拿移动硬盘了。
陈默独自蹲在冰冷的服务器机柜前,听着风扇的嗡嗡声。他忽然觉得,这台机器像一座坟墓,埋葬着一个他尚未理解的故事。
而那个写代码的人,他知道这一切。他留下了一个名字——不,他没有留下名字。他留下的是一个问题,藏在代码的注释里,只有程序员才能读懂的那种注释:
# 如果你知道这段代码在做什么,请替我完成它。
# 我已经没有时间了。
三
拷贝花了一整夜。陈默回到地下室后,把数据导入了自己的电脑,开始逐行分析。
他先找到了数据采集模块的权限配置。能访问用户行为数据库高级接口的人,在公司内部不超过二十个。再排除运维和产品线的人,算法团队里只有五个人有这个权限:他自己、赵锐、老周,以及两个早已离职的同事。
其中一个叫林远。
林远是陈默入职时的导师,比他大五岁,北大学计算机出身,写代码像写诗——这是团队里公认的。但他在2024年初突然离职了,没有任何预兆。辞职信上只写了一行字:“个人原因。“之后联系方式全换了,没人知道他去了哪里。
陈默记得林远离开前的那段时间,行为确实有些异常。他开始频繁地在白板上画一种奇怪的图表——不是算法架构图,而是一种类似伦理决策树的东西。有一次陈默问他画的什么,他笑了笑说:“在想一个问题。如果我们能计算出一个人做坏事后会多痛苦,我们是不是就能阻止坏事发生?”
陈默当时以为他在开玩笑。
现在他不这么想了。
林远的”责任算法”并不复杂——至少在技术层面上。它分析的数据维度包括:用户的还款历史、社交网络中与债务相关的讨论频率、搜索关键词(“逾期”、“催收”、“自杀”等)的出现频率,以及一个很特殊的数据源——用户在信贷APP中的交互行为。比如,一个用户在点击”确认借款”之前的犹豫时间;他在阅读借款条款时的滚动速度;他在额度提升弹窗出现时的瞳孔变化——如果摄像头权限被打开的话。
这些数据被输入到那个伦理规则引擎中,最终输出一个”道德重量指数”。指数越高,说明这个人在道德上越敏感,违约对他的心理伤害越大。
而陈默的信贷推荐算法,恰好把这些道德敏感的人当作最佳目标。
两套算法形成了一个完美的收割闭环。
但林远为什么要在服务器上偷跑这个分析程序?他在调查什么?更重要的是——他的注释说”我已经没有时间了”,是什么意思?
陈默决定去找答案。
他先联系了林远的前女友苏小晴。苏小晴在一家互联网教育公司做产品经理,和林远分手后就没了联系。但陈默还是找到了她的微信。
苏小晴的回复出乎意料地快。
“我一直在等有人来问这件事。”
他们约在了五道口的一家咖啡馆见面。苏小晴三十出头,短发,戴着一副银色框架眼镜,说话干脆利落。她见到陈默的第一句话是:“林远还活着,但他不希望被找到。”
“为什么?”
苏小晴搅了搅咖啡,沉默了一会儿。“你知道他离职的真正原因吗?”
“不知道。”
“他在公司内部发现了一些东西。关于信贷推荐算法的——不是你写的那一版,是更早的版本。2022年的时候,公司的信贷业务还在用一套外部采购的算法,那套算法里有一个隐藏模块。”
“什么隐藏模块?”
“用户筛选模块。它不只是在推荐额度,它在筛选特定的用户群体——那些心理脆弱、社会支持网络薄弱、不太可能寻求法律帮助的人。大学生、外来务工者、单亲妈妈、刚离婚的中年人。算法把他们标记为’优质目标’,然后精准推送高额信贷产品。”
陈默的胃里翻涌了一下。“这……这不对。监管要求信贷产品必须做风险适配……”
“风险适配是针对银行的。那套算法跑在一个互联网小贷公司的壳子里,监管灰色地带。后来公司为了上市合规,才自己开发了一套新算法替换了外购的——就是你写的那个版本。”
陈默愣住了。他的算法虽然是新写的,但训练数据来自旧系统。如果旧系统的数据本身就是被污染过的——专门针对弱势群体的——那他的模型只不过是在延续同样的逻辑,只是披上了一层更干净的外衣。
“林远发现了这件事,“苏小晴继续说,“他去跟老周反映,老周让他别管。他又去找了合规部门,合规部门说这件事已经’历史处理过了’。他不信,就自己在服务器上部署了那个分析程序,想收集证据。”
“证据?”
“他要证明公司的算法在系统性地剥削特定人群。道德重量指数就是他的证据。他需要一个量化指标来证明:算法不是在服务用户,而是在精准地伤害那些最不擅长保护自己的人。”
“然后呢?”
苏小晴的表情变了。“然后他收到了一份律师函。公司说他窃取商业机密,要起诉他。他这才意识到,这件事比他想的要大得多。不是某个团队的问题,是整个商业模式的问题——信贷业务百分之四十的利润来自那百分之十五的’高价值用户’。砍掉这部分,公司的估值要掉一半。”
“所以他离职了。”
“他跑了。换了个城市,换了身份。他怕公司真的起诉他——不是怕输,是怕在诉讼过程中,他收集的那些数据会被销毁。所以他留了那个程序在服务器上。他知道迟早会有人发现的。”
陈默想了想那个注释:如果你知道这段代码在做什么,请替我完成它。
“他要我做什么?“他问。
苏小晴从包里掏出一个U盘,推到桌上。“这里面有林远留给你的东西。他说,如果来找他的人是你——陈默——就把这个给你。他说你是唯一一个会因为算法伤害了人而辞职的人。”
陈默拿起U盘。很小,很轻,但握在手里却像握着一块石头。
“他还在收集数据吗?“他问。
苏小晴摇了摇头。“我不知道。他走了之后,我就再也没联系过他。但我猜……他还在。因为那些被他算法标记过的人——十三万人——他们的生活正在被一点一点地改变。有些在变好。有些已经来不及了。“
四
陈默回到地下室,插上U盘。
里面只有一个文件夹,命名为”letters”。文件夹里有三十个文本文件,每个文件以一个人名命名。打开第一个,他立刻明白了这些是什么——信。林远写给那三十个人的信。
每一封信都附有一个用户ID,对应着”责任算法”数据库里的一条记录。信的内容是一个陌生人——林远——写给另一个陌生人的,讲述他们如何被算法影响,以及林远为此感到的歉意。
第一封信写给一个叫”王秀兰”的人。
王秀兰女士:
你不认识我,但我知道你的生活。
我知道你在2023年4月第一次点击了那个”最高可借5万”的广告。那时候你在河北保定的一家电子厂上班,月薪四千二。你丈夫两年前出了车祸,躺在家里,每个月的医药费要三千多。你有一个正在读高中的女儿,成绩很好,你想给她攒大学学费。
算法知道这一切。它知道你的收入、你的支出、你的搜索记录——你搜过”助学贷款怎么申请”,搜过”兼职日结”,搜过”看病报销比例”。它还知道你每天晚上十一点下班后,会刷四十分钟的短视频,因为你太累了,不想思考。
它在那个时间点给你推送了信贷广告。
你第一次借了八千块,用来交丈夫的医药费。三个月后,你借了第二笔,一万二。然后是第三笔、第四笔。到2024年春节,你的总负债已经超过六万。你不敢告诉女儿,不敢告诉任何认识的人。你开始失眠,开始头疼,开始在你的手机备忘录里写一些让算法无法理解的东西——“活着好累”。
我是写那个算法的人之一。不是直接推送给你广告的那个人,而是设计底层模型的那个人。我写了一段代码,这段代码分析了你的行为数据,把你标记为”高转化潜力用户”。这个标签意味着,系统会优先向你推荐更高额度的信贷产品。
我不知道怎么弥补。我不是在请求你的原谅——你没有理由原谅我。我只是想让你知道,在某个服务器的某个数据库里,有一个人曾经试图理解你经历了什么。
我给这封信起了一个标题,叫”道德重量”。因为在你的案例中,算法利用的不是你的贪婪,而是你的善良——你愿意负债来照顾家人。你越善良,算法就越能从你身上获取利润。
这就是这个系统的逻辑:善良是一种可被量化的资源,而算法是开采它的工具。
我很抱歉。
一个你永远不需要认识的人
陈默读完这封信,坐在黑暗的地下室里,很久没有动。
然后他打开了第二封。第三封。第四封。
每一封信都是同样的结构:一个人的真实生活,一段算法如何精准地找到他们的弱点并加以利用的描述,以及林远的分析和道歉。有些信很长,有些只有几段。但每一封都精确到令人发寒——不是跟踪狂的精确,而是统计学家面对数据时的精确,带着一种冷静而痛苦的诚实。
第十二封信写给一个叫”赵磊”的人。二十三岁,刚从二本大学毕业,在一家小公司做新媒体运营,月薪五千。他被推荐了一个”校园贷”的升级产品——“青年创业贷”,额度八万,利率年化百分之三十六。他用这笔钱开了一个网店,三个月亏光了。然后他又借了第二笔。
信里有一句话让陈默停住了:
你在借款协议的最后一页,用手机截了图。你在图片上标注了”月供2847元”这个数字,然后存到了一个叫”计划”的相册里。算法分析到了你的这个行为,把它标记为”高计划性用户”——这意味着你更可能按时还款,因为你在认真规划。系统因此给了你更高的信用评分。
但算法不知道的是,你存那张图的那天晚上,你在搜索框里输入了”人死了贷款还要还吗”。
陈默关上了电脑。
他坐在地下室里,听着楼上住户的脚步声,水管里水流的声音,远处什么地方传来的电视声。这些声音来自真实的人,活生生的人,他们各自背负着各自的重量,走在各自的路上。
而他和林远,曾经写代码帮助机器去找到这些人,计算他们的重量,然后以此为依据,在他们身上加更多的重量。
“责任的重量。“他喃喃地重复着那个进程的名字。
林远留下了一个未完成的任务。那些信,三十封,但数据库里有十三万人。林远不可能给每个人都写一封信——他只是用这三十个样本,证明了一种可能性:每一个被算法影响的人,都值得被看见。
“请替我完成它。”
完成什么?给十三万人每人写一封信?不可能。把数据交给媒体?也许可以,但证据的合法性存疑——这些数据是林远用非法手段获取的。交给监管部门?他不确定监管会不会在意。
陈默想了三天。
第三天晚上,他做了一个决定。
五
他找到了王秀兰。
不是通过数据库里的信息——那不合法。他通过公开渠道搜索,发现保定的那家电子厂在2025年倒闭了。他在本地论坛上发了一个帖子,问有没有人认识曾经在厂里上班的王秀兰。三天后有人回复了,给了他一个手机号。
他犹豫了很久,最终拨了出去。
“喂?“对方是一个中年女人的声音,沙哑,疲惫。
“请问是王秀兰女士吗?”
“是我。你是谁?”
“我叫陈默。我……曾经是一家互联网公司的算法工程师。我有一些事情想跟您聊聊。关于您在网上借的那些贷款。”
电话那头沉默了很长时间。长到陈默以为她挂断了。
“你怎么知道的?“她的声音变了,变得警惕。
“因为……是我写的算法,推荐了那些贷款给您。”
又一阵沉默。然后王秀兰说了一句话,声音平静得让陈默心碎:“你是来道歉的?”
“不是。我是来还债的。”
王秀兰笑了。那笑声很轻,很短,像一片枯叶落在地上。“我的债已经还清了。去年还清的。我女儿没去上大学,她出去打工了,帮我还的。”
陈默说不出话。
“你不用觉得内疚,“王秀兰说,“你也只是打工的。真正坏的不是写算法的人,是决定用算法做什么的人。”
“但如果没有我写的算法……”
“如果没有你,也会有别人写。“她的声音又平静下来,像是在陈述一个她早就接受了的事实。“这个世界就是这样,有人负责发明刀,有人负责用刀。你不能因为刀伤了人就去怪打铁的。”
陈默握着手机,坐在地下室的黑暗里,听着这个素未谋面的女人用最朴素的语言解构了他花了六个月构建的道德困境。
“但是,“他说,“打铁的可以选择不打刀。”
王秀兰又沉默了一会儿。“你打过刀?”
“打过。”
“以后还打吗?”
“不打了。”
“那就行了。“她说。然后她挂了电话。
陈默坐在那里,握着已经挂断的手机,感觉有什么东西在胸腔里松动了。不是释然,不是原谅。是一种更复杂的东西——也许是一种确认:他和王秀兰之间存在着一种不对等的责任关系。他造成了伤害,但她承担了后果。他可以选择不打刀了,但她女儿已经不能去上大学了。
这种不对等无法被弥补。但可以被承认。
他开始写信。
不是像林远那样写给具体的个人——他没有林远的数据权限,也没有权利去接触那些人。他写的是一封公开信,发在GitHub上,附带了他能公开的技术分析:信贷推荐算法如何通过分析用户行为来精准定向弱势群体,如何利用道德感作为赢利指标,以及整个行业的通用做法。
他没有指名任何公司。他只是把技术原理讲清楚,然后用最通俗的语言解释了这些原理意味着什么。
他给这封公开信起的标题是:《责任的重量:一个算法工程师的忏悔与告解》。
六
公开信发布后的反应超出了他的预期。
三天内,阅读量突破了五十万。技术社区里炸了锅——不是因为他说了什么惊人的秘密,而是因为他把一件所有人都隐约知道、但没人愿意说出来的事情,用最直白的方式讲了出来。算法不仅在推荐商品——它在推荐债务。它不仅在分析偏好——它在分析弱点。它不仅在做生意——它在做一种精密的、系统性的收割,收割的对象是那些最善良、最负责任、最不愿意让别人失望的人。
评论区里有人贴出了自己的经历。一个来自河南的年轻人说,他在读大三的时候被推荐了第一笔消费贷,用来给母亲买生日礼物。五千块。到毕业的时候,加上利息和各种费用,他欠了三万二。他现在在一家工厂做质检员,每个月还一千五,还要还两年。
一个单亲妈妈说她被推荐了”亲子教育贷”,用来给儿子报课外班。她以为自己在做对的事——投资孩子的教育。但算法知道她会这么做,因为她的搜索记录里全是”儿童编程班""幼升小准备""最好学区房”。它不是在帮她做选择,而是在等她自己走进陷阱。
还有一条评论让陈默看了很久。评论者只写了四个字:“我也是人。”
公开信也引来了一些不同的声音。有人说他在甩锅——作为算法工程师,他明明可以在设计时就加入保护机制,而不是等出了事再来忏悔。有人说他在炒作——写了害人的代码,然后靠揭发这些代码来赚名声。还有人说他在做梦——一个算法工程师能改变什么?行业不会因为你的一封公开信就停止运转。资本不会因为你的愧疚就放弃利润。
这些批评,陈默觉得都有道理。
他确实可以在设计时就加入保护机制。他确实有炒作的嫌疑——尽管他不知道自己在炒作什么。他确实改变不了什么。
但他还是写了。
因为林远的三十封信教会了他一件事:有些事情做出来,不是为了改变世界,而是为了让自己配得上这个世界。不是为了让系统变得更好——系统可能永远不会变好——而是为了让自己的手保持干净。
干净不是不沾泥。干净是沾了泥之后,知道去洗手。
公开信发布后的第五天,陈默接到了一个意想不到的电话。
电话来自一个叫方芳的女人。她说她是林远的妹妹。
“我哥让我联系你的,“她的声音很轻,像是怕被谁听到。“他说你找到了那些东西。”
“他还好吗?”
“他生病了。去年查出胃癌晚期。他一直在一个小城市里治疗,不想让任何人知道。”
陈默沉默了。林远的注释——“我已经没有时间了”——不是一句修辞。是事实。
“他想见你,“方芳说,“但他说不用去。他让我把一样东西转交给你。”
“什么东西?”
“一个地址。一个数据库的云端备份地址。他说里面有完整的数据——不只是十三万条记录,还有每个记录对应的……他说叫’干预日志’。他这两年一直在做一件事:根据道德重量指数,给那些分数最高、受到伤害最大的人发送匿名的债务管理建议。不是直接帮他们还钱——他没有那么多钱——而是通过一些匿名渠道,推送债务咨询和法律援助的信息。”
陈默愣住了。“两年?他在做这个做了两年?”
“对。他说他能做的很少,但他至少可以让那些人知道,有人在关注他们。哪怕他们永远不知道这个人是谁。”
“效果怎么样?”
方芳沉默了一会儿。“他统计过。在他干预过的案例里,大约百分之十二的人最终寻求了专业帮助。百分之六的人通过法律途径减免了不合理利息。还有……”她停顿了一下,“有三个人,他说如果不是那条推送及时到达,他们可能不会在这里了。”
三个人。在十三万人的样本里,三个人因为一条匿名的推送信息而活了下来。
这个数字太小了。小到可以忽略不计。但陈默知道,对那三个人来说,这个数字就是全部。
“地址发给我吧,“他说。
挂了电话后,陈默坐在地下室里,盯着手机屏幕上的地址。它是一个加密的云存储链接,需要密钥才能访问。密钥是林远的工号——那个他在公司用了三年、从未换过的工号。
陈默输入密钥,登录了数据库。
里面的数据比他想象的要完整得多。不仅有林远的干预日志,还有一套完整的分析工具——林远自己写的,用来持续监控那些高道德重量指数用户的信用状况变化。工具的名字叫 care.py。
关心。Python脚本的名字叫关心。
陈默盯着屏幕上的代码,忽然笑了。不是觉得好笑,而是觉得荒诞。一个算法工程师,用编程语言写了一个叫”关心”的程序,偷偷运行在公司即将报废的服务器上,用数据的方式关注着十三万个陌生人的生活。
这是他能想到的、最笨拙的善良。
也是最真实的。
七
陈默用了两个星期研究林远的数据库和工具。
他发现林远的干预方式非常克制——只是通过一些公开的渠道,向目标用户推送债务管理的资讯。有时候是一篇关于合理消费的文章,有时候是一个法律援助热线的号码,有时候是一则关于信贷消费者权益的新闻。这些推送被伪装成普通的信息流内容,看起来就像普通的资讯推荐。
但推送的时机是精心设计的。林远的工具会监控目标用户的信用行为:如果一个人的借贷频率突然上升,如果他的搜索记录里出现了”还不上怎么办”之类的关键词,如果他的APP使用时长在深夜显著增加——这些都是危险信号。工具会在检测到这些信号后的二十四小时内,向用户推送一条看似无关的债务管理信息。
不是每个信号都会触发干预。林远设置了严格的阈值,避免过度打扰。他的代码注释里写道:
# 不要让关心变成另一种打扰。
# 一个人最脆弱的时候,不需要又一个陌生人告诉他该怎么做。
# 他需要的是知道:这个世界上,有人在意他是否会摔倒。
陈默决定继续这个项目。
但他知道自己不能像林远那样做——他没有数据权限,也没有服务器。他能做的,是把林远的发现公之于众,让更多人知道算法是如何被用来剥削弱势群体的。
他开始写第二封公开信。这一次不是忏悔,而是揭露。他用林远收集的数据——经过脱敏处理——写了一份详细的技术报告,分析了信贷推荐算法如何利用”道德重量”来精准收割善良的人。
报告里没有指名道姓,但业内人一看就知道他说的是哪家公司。发布后不到二十四小时,陈默就收到了律师函。
不是来自他的前公司——他没点名那家公司。而是来自三家不同的金融科技公司,都说他的报告损害了它们的商业声誉。
陈默把律师函拍了照,附在报告后面,又发了一篇更新。
更新里他写道:
“三封律师函。三家公司。我一份报告没指名任何一家,但三家都觉得我在说它们。这说明什么?说明这个行业里的每一家都在做同样的事。它们心知肚明。”
这篇更新又被转发了三十万次。
然后事情开始变得不可控了。几家媒体开始联系他,想做深度报道。一个纪录片导演想拍他的故事。一个法学教授联系他,说愿意帮他做法律辩护。还有一个金融监管部门的官员通过中间人传话,说想跟他”私下聊聊”。
陈默一一拒绝了。
不是因为不想——是因为他知道,一旦这件事变成了媒体事件,焦点就会从”算法在做什么”转移到”陈默是谁”。人们会讨论他的动机、他的背景、他的道德品质。他会变成一个符号,而不是一个做了一件事的人。
他不想成为符号。
他只想把那台服务器里的东西带出黑暗。
八
六月的一个雨夜,陈默接到了方芳的电话。
“我哥今天凌晨走了。”
陈默握着手机,站在地下室的气窗前。外面在下雨,雨水顺着气窗的边缘渗进来,打湿了他的手背。
“他走之前清醒了一会儿,“方芳的声音在颤抖,“他说了一句话。他说:‘告诉陈默,责任不是一个数字。’”
陈默没有说话。
“他还说……他说他知道自己做的那些干预,杯水车薪。十三万人里,他只帮到了很小很小的一部分。他说这不够。远远不够。但他不知道还能做什么了。”
“够了,“陈默说,声音很轻,“他做的够了。”
“他让我问你——你还会继续吗?”
陈默看着窗外。雨丝在路灯的光线里像无数条金色的线,从天而降,落在这个庞大的、冰冷的、充满算法的城市里。
“会的。”
挂了电话后,他坐回电脑前,打开了 care.py 的源代码。
他花了一整夜重写了这个程序。不是修改林远的逻辑——那个逻辑是完美的,不需要改。他改的是技术架构:把原本依赖公司内部数据库的数据采集模块,替换成了一套完全基于公开数据的分析系统。不再是窥探隐私,而是通过公开可获取的信息——新闻报道、法院判决文书、消费者投诉平台的数据——来识别那些可能正在被算法收割的人。
新版本的程序不再叫 care.py。他给它取了一个新名字:weight.py。
重量。
凌晨四点,程序写完了。陈默把它部署在一个便宜的云服务器上,设置了定时任务。它每天会扫描一次公开数据,识别潜在的受害者,然后通过匿名渠道推送帮助信息。
它能覆盖的范围很小。也许几百人,也许几千人。和十三万比起来,微不足道。
但林远说的对——责任不是一个数字。
一个人就够了。一个因为收到了一条推送信息而拨通了法律援助热线的人,一个在深夜看到了一篇债务管理文章而决定再撑一天的人,一个因为知道有人在意而没有放弃的人。
一个人就够了。
陈默关上电脑,在黑暗中躺下。楼上的脚步声没有响。雨停了。地下室里安静得像一台关机的服务器。
他闭上眼睛。
九
七月。
陈默的新生活逐渐成形。他白天在一家小型数据安全公司做技术顾问——不涉及任何推荐算法,只做数据加密和隐私保护。晚上,他继续维护 weight.py,同时经营一个匿名的技术博客,专门分析算法伦理问题。
博客的关注者不多,大约三千人。但其中有一些特别的人——来自全国各地的算法工程师,他们看到了陈默的公开信后,开始反思自己的工作。有人在博客下留言说,他修改了自己负责的推荐系统,加入了”脆弱用户保护”机制。有人说他在公司内部推动了算法伦理审查流程。还有人只是说:“谢谢你让我知道,我不是唯一一个觉得不对劲的人。”
陈默把这些留言都保存了下来。不是作为成就——而是作为证据。证明在这个庞大的、以利润为唯一目标的系统里,仍然有人在试图从内部做出改变。
这些改变微乎其微。一个推荐系统里加入的保护机制,可能会被下一个季度的OKR冲掉。一个伦理审查流程,可能在业务压力下变成走过场。但它们是种子。种子不需要长成大树才有意义——它只需要存在。
七月中旬,陈默收到了一封邮件。
发件人是一串随机的字母和数字,邮件标题是空的。正文只有一句话:
“你好,陈默。我是赵磊。你之前的同事联系过我,告诉我有人知道我的故事。我想说,我还活着。网店关了,贷款还在还,但我在学编程。我想写不会伤害人的算法。如果可以的话。”
陈默看着这封邮件,看了很久。
然后他回复了:
“可以的话。一定可以。”
发完邮件,他走到地下室的气窗前,把脸凑过去。七月的北京很热,但地下室的气窗外只有一小片天空,被对面楼房挡住了大半。他能看到的,只有一截灰色的墙、一根生了锈的排水管,和一小块深蓝色的夜空。
但那一小块天空里,有星星。
不多。两三颗。在这个充满灯光和算法的城市里,能看到两三颗星星已经是一种奢侈。
陈默看着那几颗星星,想起了林远的代码注释:
# 如果你知道这段代码在做什么,请替我完成它。
他完成了。
不是完成了任务——这个任务永远不会完成。十三万人的数据里,还有十二万九千九百七十个人的故事没有被讲述。还有更多的、不在数据库里的人,正在被新的算法分析、标记、收割。这场战争没有终点。
但他完成了林远对他的期望。他没有放弃。他选择了承担责任——不是作为一个算法工程师的责任,不是作为一个吹哨者的责任,而是作为一个人的责任。
一个普通的、会犯错、会内疚、会在地下室里失眠的人的责任。
十
八月的第一天,陈默搬出了地下室。
他租了一间有窗户的房间,在六楼,朝南。阳光照进来的时候,整个房间都是暖的。他在窗台上放了一盆绿萝,每天早上浇一次水。
他依然在维护 weight.py。程序已经迭代到了第三个版本,覆盖的范围从几百人扩大到了两千人。有一位法律援助律师志愿加入了项目,帮助处理被识别出来的高风险案例。还有三位前互联网公司的算法工程师,匿名提供了技术支持。
这个项目没有名字。没有组织。没有融资。没有商业计划。它只是几个人,几台电脑,和一种共同的信念:技术应该减轻人的重量,而不是增加它。
八月的一天晚上,陈默在整理林远留下的数据时,发现了一个他之前没注意到的文件。文件名叫 README.md——程序员的习惯,在每个项目的根目录下放一个说明文件。
他打开它。里面只有一段话:
这个项目不是关于算法的。
它是关于人的。
关于那些在深夜对着手机屏幕犹豫要不要点击"确认借款"的人。
关于那些把月供金额截图存进相册、认真做计划的人。
关于那些在搜索框里输入了"人死了贷款还要还吗"的人。
他们不是数据点。
他们是人。
如果你正在读这个文件,请记住:
你写的每一行代码,最终都会落在某个人的肩上。
请确保它是一双手,而不是一块石头。
——林远
2024年3月
陈默读完这段话,关上了文件。
他走到窗前,打开窗户。八月的风吹进来,带着北京夏天特有的味道——热气、尘土、远处什么地方飘来的烤串香。楼下有人在遛狗,有人在打电话,有人在吵架。城市的声音涌上来,嘈杂、混乱、真实。
他想起王秀兰的话:“真正坏的不是写算法的人,是决定用算法做什么的人。”
他也想起自己说过的话:“打铁的可以选择不打刀。”
两句话都对。也都不够对。
真正的问题不是”谁坏”,也不是”谁可以选择”。真正的问题是:在一个以效率为导向的系统里,善良是一种低效的品质。负责任是一种低效的策略。关心他人是一种低效的行为。
而算法,是效率的终极工具。
所以算法天然地站在善良的对立面。不是因为写算法的人坏——而是因为算法的目标函数里,没有”善良”这个变量。
林远试图把这个变量加进去。他发明了”道德重量指数”,试图让算法”看见”人的善良,从而不再利用它。
但这个尝试失败了。不是因为技术不够好——而是因为系统的目标函数不允许。在一个以利润最大化为目标的公司里,道德重量指数只会被用作另一种收割工具——不是用来保护善良的人,而是用来更精准地找到他们。
林远明白这一点。所以他选择了另一条路:不改变算法,而是绕过它。用一个更小的、更笨拙的、更人性化的系统,去对抗那个庞大的、高效的、冰冷的算法。
care.py。weight.py。
它们不是算法。它们是关怀。
关怀不需要高效。它只需要真诚。
尾声
2026年的秋天,陈默在技术博客上写了最后一篇文章。
文章不长。他没有再谈算法,没有再谈信贷,没有再谈道德重量指数。他只讲了一个故事:
去年冬天,我在一个废弃的服务器机房里发现了一段代码。代码的名字叫”责任”。写这段代码的人已经不在了。他用了生命中最后的两年,偷偷运行这段代码,关注十三万个他不认识的人的生活。
他做不到太多。十三万人里,他只帮到了很小一部分。但那一小部分里,有人拨通了法律援助热线,有人通过法律途径减免了不合理的利息,有人决定再撑一天。
他教会了我一件事:责任不是一个数字,不是一个百分比,不是一个OKR指标。责任是一个人选择把另一个人当作人——而不是数据点——的那个瞬间。
那个瞬间很小。小到几乎看不见。
但它很重。
文章发出后,陈默关上了电脑。
他走到阳台上,看着北京的天际线。无数的高楼,无数的窗户,无数的屏幕。每一个屏幕后面,都有一个人。每一个人身上,都背负着某种重量——债务、责任、期望、恐惧、爱。
他不知道那些人正在看什么。也许在刷短视频,也许在看贷款账单,也许在搜索”人死了贷款还要还吗”,也许只是在发呆。
但他知道,在这座城市的某个角落,一个叫 weight.py 的程序正在运行。它每天扫描一次公开数据,寻找那些可能需要帮助的人,然后悄悄推送一条信息。
信息的内容很简单:
“你不是一个人。”
这四个字改变不了任何人的债务。它不能还钱,不能降低利率,不能让催收电话停止。
但它可以改变一个人的夜晚。
而有时候,一个人的夜晚,就是全部。
陈默站在阳台上,感受着秋天的风。风吹过来的时候,他闻到了桂花的味道——不知道是从哪个小区飘来的,在这个以混凝土和代码构成的城市里,桂花的香气显得格外不真实。
但它是真实的。
就像善良一样。
在这个算法的世界里,善良也许是最不真实的东西。但只要你选择相信它——选择把它写进代码里,或者写进生活里——它就是最真实的力量。
不是因为它强大。
而是因为它重。
(全文完)