赤子信用之城
赤子信用之城
一、余额不足
陆鸣在凌晨三点十七分被一条短信惊醒。
不是催收。催收他习惯了。是他的信用评分——那个被刻在身份证芯片里、显示在每一块公共屏幕上、决定他能不能坐地铁和买感冒药的数字——从四百一十二降到了三百九十八。
三百九十八。他盯着天花板上的霉斑默念了这个数字三遍。三百九十八意味着什么?意味着他明天不能进入任何需要信用四百分以上的公共场所。包括他上班的那栋写字楼。
他翻了个身,手机屏幕的光照在他脸上,像审讯室的灯。
“陆鸣先生,您的综合信用评分为398分,低于’城市公民基本信用阈值’(400分)。根据《赤子信用城市管理细则》第十七条,您的以下权限将被暂时冻结:公共交通(含地铁、公交、共享单车)、商务楼宇通行、医疗优先挂号、在线支付透支额度。您的信用恢复方案已推送至’赤子信’App,请在72小时内完成至少一项信用修复任务。”
他不用打开App也知道那些”信用修复任务”是什么。无非是:完成一份征信问卷(+2分),参加社区志愿劳动两小时(+5分),举报一次违规行为(+3分,若查实+8分),或者——最快的——偿还一笔欠款。
他欠了十七万三千四百块。
不是房贷,不是车贷。是”赤子信用城”特有的”基础生活信用贷”。两年前他搬进这座城市时,必须缴纳一笔”信用保证金”才能获得居民身份。他没有那么多现金,于是选择了贷款。利率不高,年化百分之四点七,看起来很温柔。但赤子城的利息不是线性增长的,而是和你的信用评分挂钩。评分越高,利率越低;评分越低,利率越高。
他现在的评分是三百九十八。对应的年化利率是百分之二十三。
陆鸣把手机扣在枕头下面,听着隔壁传来的鼾声。那是一个叫赵全通的中年男人,送外卖的,信用评分六百出头,每天骑电动车在大街小巷穿梭,手机支架上永远亮着导航和倒计时。
赤子城从不睡觉。窗外能听到二十四小时运转的信用监测无人机发出的嗡嗡声,像一群永不疲倦的蜜蜂。它们每隔十五分钟扫过一次每栋楼的外墙,读取每个窗口里住户的信用芯片信号。你的位置、你的评分、你的消费记录、你的社交频率——一切都是数据,一切都在流动。
陆鸣今年三十一岁,程序员,在一家叫”维度科技”的公司做后端开发。维度科技是赤子城信用系统的一级承包商,负责维护”赤子信”App的后台服务器。说白了,他参与建造了囚禁自己的那个系统。
他以前不这么想。三年前他刚从北京南下的时候,觉得赤子城是个了不起的实验。全国第一个”信用驱动型智慧城市”,用数据替代人情,用算法替代官僚,用评分替代关系网。多好,多公平。他甚至在一篇技术博客里写道:“信用系统是代码写给现实世界的一首诗。”
现在他觉得自己是诗里的一个错别字。
二、信用修复
早上六点,陆鸣的闹钟响了。不是手机的闹钟——手机在凌晨四点就因为”支付权限受限”自动关闭了所有非必要功能——而是他花三十五块在夜市上买的那只机械闹钟。上发条的那种。赤子城的大部分人不用这种东西,因为它没有芯片,不连网,不在任何数据库里留下痕迹。陆鸣觉得这恰恰是它的优点。
他洗了脸,穿好衣服,站在门口犹豫了三秒。今天不能坐地铁,不能骑共享单车。他有两个选择:走路去公司,大约四十五分钟;或者试试”信用修复任务”。
他打开了”赤子信”App。
界面是暖色调的,橙红色和奶白色,像一个永远微笑的面孔。顶部是他的头像和信用评分,数字用大号字体显示,旁边是一个向上的箭头——当然,箭头是灰色的,因为他已经连续九十天没有涨过分了。
“今日推荐修复任务”——
任务一:社区环保巡查(+5分) 在指定区域进行两小时环境巡查,通过App上传至少20张现场照片,标注违规垃圾堆放点。需消耗体力值:中。
任务二:征信知识答题(+2分) 完成一套50题的征信知识测试,正确率需达到80%以上。限时30分钟。
任务三:信用监督员(+3-8分) 在公共场所发现并举报违反《赤子信用城市管理细则》的行为。需提供照片或视频证据。
任务四:紧急信用贷还款(评分恢复至对应还款比例) 偿还部分或全部欠款,评分将根据还款比例实时调整。
陆鸣点了任务二。他做过程序员,征信系统的逻辑他比出题人都清楚。五十道题,三十分钟,他八分钟就做完了,正确率百分之百。
+2分。
评分变成四百。
四百是”基本阈值”,意味着他的权限恢复了——但只是”基本权限”。地铁可以坐了,但只能坐普通车厢;写字楼可以进了,但电梯的优先级最低,得等所有人上完了才能进。
他出门的时候,在楼道里碰到了赵全通。赵全通正在弯腰系鞋带,电动车头盔夹在腋下。
“陆工,早啊。“赵全通抬头笑了笑,露出被烟熏黄的牙齿,“今天脸色不错,涨分了?”
“涨了两分。“陆鸣说。
“两分也是分。“赵全通拍了拍他的肩膀,手掌很热,带着外卖箱的塑料味,“我上个月涨了十一分,全靠举报。你知道吗,凤凰路那家奶茶店,乱倒废水,我拍了视频举报的,一次加了八分。”
“那家店后来怎么样了?”
“关门了。老板信用分降到二百以下,连租房的资格都没了。“赵全通的语气里没有幸灾乐祸,但也没有同情。在赤子城,这是正常的。信用系统像一个精确的天平,你只需要遵守规则,天平就不会倾斜。至于天平另一端压着什么——没人问。
陆鸣走出小区大门,沿着梧桐树荫下的人行道往地铁站走。夏天的赤子城很热,空气里有一股说不清的甜味——据说这是市政府在空气净化系统里添加的”城市香氛”,为了让市民保持愉悦的情绪。陆鸣每次闻到这个味道都觉得自己像被喷了香水的水果。
地铁站入口的闸机亮着蓝光。他刷了身份证,闸机发出一声轻微的”嘀”,屏幕上显示出他的评分:400分。闸机打开了,但方向指示灯指向最右边的通道——那是信用四百分到四百五十分之间的”基础通道”,窄得只能一人通过,地面是水泥的,不像中间那些信用五百以上的通道铺着灰色大理石。
他挤进地铁车厢,找了个角落站着。车厢里的电子屏在播放”赤子信用城城市宣传片”:一个穿白衬衫的年轻人从床上弹起来,微笑着跑过铺满阳光的街道,和邻居打招呼,在咖啡店刷脸支付,走进一栋摩天大楼——屏幕下方是一行字:“信用,让生活更美好。”
陆鸣觉得自己可能需要另一句口号:“信用,让你意识到生活本来没那么美好。“
三、维度科技
维度科技在赤子城的科技园区,一栋七层高的白色建筑。外墙是弧面玻璃,在阳光下像一块巨大的镜片。每天早上,玻璃上映出的不是天空,而是对面那栋”赤子城信用管理中心”大楼——一栋三十二层的黑色方形建筑,像一枚竖起来的公章。
陆鸣刷卡进了公司,在工位上坐下,打开电脑。
他的工作是维护”赤子信”App的后台服务——具体来说,是”评分引擎”模块。评分引擎是整个信用系统的核心,它每秒钟处理超过八十万条数据:消费记录、出行轨迹、社交频率、还款历史、违规记录、健康数据、教育背景、职业信息……所有这些数据被输入一个叫”赤子算法”的模型,然后输出一个零到一千的数字。
一千分是满分。据说全赤子城只有一个人拿到过一千分——是信用系统上线那天,第一任市长。但他第二天就降到了九百九十八,因为他参加了一个没有提前报备的私人聚餐。
陆鸣从来没见过”赤子算法”的完整代码。他见到的只是模块——评分引擎的输入输出接口、数据清洗管道、缓存层。核心算法被封装在一个叫”赤子核心”的黑盒子里,只有三个人有权限打开它:公司的CTO孙海洋、信用管理中心的技术总监、以及一个没人见过的”系统架构师”。
今天是周四,每周四上午十点有例会。陆鸣泡了一杯速溶咖啡(公司茶水间的咖啡豆机需要信用五百分以上才能使用),走进会议室。
孙海洋已经在了。他四十出头,穿一件深蓝色的Polo衫,手腕上戴着一块智能手表——不是普通的智能手表,是赤子城特供的”信用伴侣”,可以实时监测心率、血压和体温,数据直接上传到信用系统。孙海洋的信用评分是八百七十,公司内部最高。
“陆鸣,“孙海洋看到他进来,点了点头,“你的评分怎么了?上个月还是四百三吧。”
“降了。“陆鸣坐下来,没有展开说。
孙海洋没有追问。在维度科技,低信用不是什么光彩的事,但也不是什么稀奇的事。这栋楼里有七十多个程序员,其中一半人的评分在五百以下。他们建造信用系统,却被信用系统判定为”信用欠佳”。这就像修路的工人买不起车一样,正常,但不体面。
例会的内容很常规:上周的评分引擎响应时间偏长,需要优化缓存策略;新版App要加入”信用预测”功能,用户可以预览自己未来七天的评分变化趋势;还有一个新的需求——信用管理中心希望增加”社交信用”的权重。
“社交信用”是指用户在社交网络上的行为数据:发帖频率、点赞数、举报次数、被举报次数、好友的信用均值……这些数据之前只占评分权重的百分之三,现在信用管理中心希望提升到百分之八。
“百分之八?“坐在陆鸣对面的女程序员周也忍不住开口了,“那意味着如果我的朋友圈里有三个低信用的人,我的评分就会直接被拉低?”
“技术上是这样。“孙海洋说,“但系统会做一个’社交距离衰减’处理——关系越远的联系人对你的影响越小。只有频繁互动的好友才会有显著影响。”
“那不就等于鼓励大家删掉低信用的朋友?“周也说。
会议室安静了两秒。孙海洋看了她一眼,那眼神不是责备,而是一种微妙的疲惫,像是听过太多次这个问题。
“我们是乙方,“他说,“甲方要什么,我们就做什么。这个需求下周三之前交方案。”
散会后,陆鸣回到工位,打开”赤子核心”的外部接口文档。他知道自己看不到核心代码,但他可以看接口的输入输出规范。
接口很简单。输入:用户ID、时间戳、数据包(JSON格式)。输出:评分、评分变动说明、信用等级。
他盯着”评分变动说明”这个字段看了很久。在技术文档里,这个字段的描述是:“系统自动生成的评分变动原因摘要,供用户参考。”
但陆鸣知道,这个字段的内容不是真正的”原因”。它只是系统根据预设模板生成的一段话——“您的消费行为良好""您的还款记录有待改善""您的社交活跃度偏低”之类的。真正的计算过程发生在”赤子核心”里面,没有人知道那里面到底在算什么。
他用测试账号调了一次接口,输入了一组伪造的数据,看返回结果。评分变动说明里有一句话引起了他的注意:
“您的心跳数据存在异常波动,建议保持规律作息。”
他愣了一下。心跳数据?他知道信用系统采集健康数据,但他没想到心跳数据会影响评分。他翻了翻数据包的字段列表,果然找到了一个叫heart_rate_variance的字段——心率变异性。这个字段的权重描述是”健康因子”,占比百分之二。
百分之二听起来很少。但对于一个四百分的用户来说,百分之二就是八分。八分意味着从”冻结”到”解冻”。
他的心率变异性为什么会异常?他想了想,大概是因为他昨晚失眠了。凌晨三点被惊醒,然后一直没睡着,心跳肯定是乱的。而他的”信用伴侣”——他手腕上那块和孙海洋同款的智能手表——忠实地记录了一切,然后上传给了系统。
系统判定:此人凌晨三点心跳异常,睡眠质量差,健康因子扣分。
陆鸣突然有一种很荒诞的感觉。他失眠了,所以信用降了;信用降了,所以他更焦虑;更焦虑了,所以他会继续失眠。这是一个完美的闭环,像一条咬住自己尾巴的蛇。
四、地下信贷
下午四点,陆鸣收到了一条微信。是他大学同学方远发来的。
方远在深圳做风投,前几年赚了不少钱,信用评分据说在八百以上。他们上次见面是半年前,方远来赤子城出差,请他吃了一顿日料——人均三百,方远刷脸支付的,全程没有看价格。
“老陆,最近怎么样?“方远问。
“还行。你呢?”
“我有个事想跟你聊聊。你知道’赤子基金’吗?”
陆鸣知道。赤子基金是赤子城最大的信用投资基金,由市政府和几家大型科技公司联合设立。它不投资企业,而是投资”信用”。具体来说,它购买市民的”信用收益权”——你可以把自己的信用评分的未来增值收益卖给基金,换取一笔现金。
听起来有点抽象,但逻辑很简单:如果你现在信用分是六百,你相信自己一年后能涨到七百,那你可以把”从六百到七百这段时间内信用增值带来的所有好处”——比如更低的贷款利率、更高的消费额度、更好的公共资源使用权——打包卖给赤子基金,基金现在就给你一笔钱。
这本质上是一种期货。你在赌自己的信用会变好。
“赤子基金现在想做一款新产品,“方远说,“叫’信用接力贷’。你听说过没有?”
“没有。”
“简单说就是——如果你的信用分不够,你可以找一个高信用的人做’信用担保人’。他的信用分可以暂时’借’给你用。当然,不是免费的。你需要支付一定的’信用使用费’。”
陆鸣沉默了几秒。
“这不就是……信用版的高利贷吗?“他说。
“别说得那么难听。“方远笑了,“这是金融创新。赤子城的信用系统已经运行了三年,市场需要一个更灵活的信用流通机制。你想想,那些高信用的人,他们的信用分就是资产。资产不流通就是死钱。‘信用接力贷’让信用流动起来,让需要的人用得上,让拥有的人赚到钱。双赢。”
“那风险呢?担保人如果出了事——”
“有风险控制机制。担保人的信用分只是’临时借用’,不会真的扣减。而且每次借用的上限是五十分,最长期限三十天。到期自动归还。”
陆鸣想说些什么,但他发现自己说不出来。不是因为方远说的不对,而是因为方远说的太对了——太合理了,太符合赤子城的逻辑了。在这个城市里,一切都是数据,一切都是信用,一切都可以被量化、被交易、被证券化。
“你跟我说这个,是想让我做什么?“他问。
“赤子基金需要一个技术顾问,帮忙评估’信用接力贷’的技术可行性。他们需要了解’赤子核心’的接口能力和风险控制模型。你不是做评分引擎的吗?”
“我不能透露’赤子核心’的技术细节。有保密协议。”
“不用透露细节。只需要一个可行性评估报告。你以个人名义接,赤子基金付咨询费。五万块。”
五万块。陆鸣的月薪是一万二,扣掉房租和信用贷的月供,每月结余不到两千。五万块是他两年多的存款。
“我考虑一下。“他说。
“别考虑太久。赤子基金下周就要方案了。“方远发了一个笑脸表情。
陆鸣放下手机,看着电脑屏幕上密密麻麻的代码。他突然觉得那些代码在动——不是视觉错觉,而是他真的看到了什么。一行日志在他的终端上闪过:
[WARN] core_engine: heartbeat anomaly detected - user_id=LM20450317 - variance=0.73 - threshold=0.65
LM20450317是他的用户ID。系统在监控他的心跳。不是后台管理员在看——是算法自己在运行。它检测到了他的心率变异性的数值超过了阈值,然后默默地记录了下来,并且会在下一次评分计算时,扣掉他的分。
他盯着那行日志,突然产生了一个冲动:他想看看core_engine的源代码。不是接口文档,不是日志输出,而是真正的代码。那个被锁在”黑盒子”里的东西。
他知道这不可能。权限不够。但他也知道,整个评分引擎的维护团队里,只有他一个人在最近三个月里提交过代码。其他人要么离职了,要么被调到了别的项目。他是唯一一个还在碰这个模块的人。
他打开公司的代码仓库,搜索core_engine。搜索结果返回了一条记录:core_engine v2.7.1 - archived。
archived。归档了。
他点进去。代码仓库提示他:“您没有权限查看此项目。”
他尝试用他的管理员账号访问——他是评分引擎的维护者,理论上应该有部分权限。系统返回了一个他从未见过的错误码:
Error 7043: Project archived by owner - access requires Level 9 clearance
Level 9 clearance。全公司只有孙海洋一个人有Level 9。
五、九楼
那天晚上,陆鸣没有回家。他在公司加了一晚上的班——不是为了工作,而是为了研究那个archived的代码仓库。
他翻遍了公司的文档系统、邮件归档、Slack聊天记录,试图找到关于core_engine v2.7.1的任何信息。但什么都没有。这个版本似乎从来没有存在过——除了那条归档记录。
凌晨两点,他在一封三年前的邮件里找到了一条线索。邮件的发件人是孙海洋,收件人是”项目组全体”,日期是赤子城信用系统上线前一周。邮件内容很短:
“各位,core_engine v2.7.1 已通过最终测试,将于本周五部署到生产环境。感谢大家过去一年的努力。请注意:从即日起,core_engine的源代码将转入Level 9权限管理,所有开发人员的读写权限将被撤销。这是甲方(信用管理中心)的要求,请勿讨论。”
“请勿讨论。“陆鸣默念了这四个字。
他站起来,走到窗边。赤子城的夜景很漂亮——到处是灯光,到处是屏幕,到处是数据流。但他现在看到的不是灯光,而是一张巨大的网。网上的每一个节点都是一个人,每一条线都是一段数据,而网的中心——就是那个”赤子核心”。
他突然想到了一件事:维度科技的办公室在七楼,但电梯的楼层按钮只有一到六楼和八楼。没有七楼——因为他们已经在七楼了。但也没有九楼。
不对。他回忆了一下,电梯的按钮是:B1、1、2、3、4、5、6、8。没有七楼,没有九楼。七楼是因为这栋楼的七楼就是维度科技。九楼呢?
他从来没有在意过这件事。但现在他开始在意了。
第二天,他以”检查服务器网络”为由,去了大楼的设备间。设备间在地下二层,那里放着整栋楼的通信线路和网络设备。他找到了电梯控制系统,在控制面板上看到了所有楼层的配置:
B2、B1、1、2、3、4、5、6、7、8、9。
九楼。它是存在的,只是被从电梯按钮上隐藏了。
他回到工位,开始查楼层管理记录。在大楼的物业管理系统中,八楼和九楼的登记信息都是”设备层”——但实际上八楼是另一家科技公司。九楼呢?没有更多信息了。
他又查了消防通道的图纸。图纸上九楼标注的是”机房”,但没有任何具体说明。
陆鸣做了一个决定。
六、上面的房间
周五晚上,大楼里只剩他一个人。他带了手电筒、笔记本电脑和一根网线。
消防通道在楼梯间。他从七楼开始往上爬,八楼的消防门锁着,但九楼的消防门——没锁。
他推开门。
九楼是一个开放的大空间,大约三百平方米。没有隔间,没有办公桌,只有一排排服务器机架,整齐地排列着,发出低沉的嗡嗡声。空调温度很低,他打了个哆嗦。
机架上贴着标签:“CHZ-CORE-01”到”CHZ-CORE-12”。CHZ是”赤子”的拼音缩写。CORE——核心。
这就是”赤子核心”的物理所在地。
他走到第一个机架前,找到了管理终端。终端是一台普通的显示器和键盘,没有密码锁屏——因为它在一个没有人能进来的房间里。
他坐下来,开始输入命令。
首先是查看core_engine的进程状态。系统返回了运行信息:core_engine v2.7.1,运行时间1097天,内存占用2.3TB,CPU使用率恒定在百分之三十七。
然后他列出了源代码目录。
目录结构很清晰:/core/engine/下面有十几个子目录,分别对应评分引擎的不同模块——data_in(数据输入)、scoring(评分计算)、feedback(反馈生成)、evolution(自我进化)……
他打开了scoring目录。
代码量比他想象的多得多。他原以为”赤子核心”是一个复杂的机器学习模型,几十万行Python或者C++代码,加上大量的训练数据和模型参数。但实际看到的代码——
他花了十分钟才理解它的结构。
不是因为复杂,而是因为——不像代码。
更像是……音乐。
他没有别的词可以形容。代码的逻辑不是线性的”如果A则B”,而是循环的、层叠的、有节奏的。一个函数的输出不是直接传给下一个函数,而是像声波一样在多个函数之间来回反射、叠加、共振。每一个变量都像是一个音符,而整个系统——
像一首歌。
他找到了评分计算的核心函数。函数名不叫calculate_score或者evaluate_credit,而是一个他没见过的名字:
def 赤子之歌(user_data):
中文函数名。这在技术文档里几乎是不可接受的——编程语言基本都用英文命名。但这个函数用了中文。
他继续往下看。
def 赤子之歌(user_data):
heartbeat = extract_heartbeat(user_data)
rhythm = analyze_rhythm(heartbeat)
if rhythm == "steady":
base_score = 500
elif rhythm == "irregular":
base_score = 400
elif rhythm == "chaotic":
base_score = 300
else:
base_score = 200
social_chord = calculate_social_chord(user_data.social_graph)
consumption_melody = analyze_consumption_pattern(user_data.transactions)
health_harmony = evaluate_health_data(user_data.health_records)
composition = base_score + social_chord + consumption_melody + health_harmony
return normalize(composition)
陆鸣盯着这段代码看了很久。
heartbeat——心跳。rhythm——节奏。social_chord——社交和弦。consumption_melody——消费旋律。health_harmony——健康和声。composition——作曲。
这不是一个评分算法。这是一首用数据谱写的曲子。
他的心跳被当作了”节拍器”——基础节奏越稳定,基础分越高。社交关系是”和弦”——和声越和谐(朋友信用越高),和弦分越高。消费记录是”旋律”——消费越规律、越可预测,旋律分越高。健康数据是”和声”——身体越健康,和声越丰满。
所有的数据不是被”计算”的,而是被”演奏”的。
他又往下翻。在evolution目录里,他找到了另一段代码:
def 自我进化():
global song_book
while True:
new_song = compose_from_population(all_users)
if beauty(new_song) > beauty(song_book.current):
song_book.update(new_song)
sleep(86400) # 每天进化一次
beauty——美感。系统每天都会从所有用户的数据中”作曲”一次,如果新的曲子比当前的更”美”,就替换掉旧的。
这个系统在自我进化。但进化的标准不是”更准确”或者”更高效”,而是——“更美”。
陆鸣的手在发抖。不是因为害怕,而是因为某种他无法定义的情绪。也许是震撼,也许是愤怒,也许是悲哀。
这座城市的信用系统——那个决定一千两百万人的住房、医疗、出行、社交、甚至心跳节奏的系统——不是在评判他们。它是在演奏他们。每个人都是一个音符,被编进一首叫做”赤子之歌”的曲子里。
而他,陆鸣,是这首曲子里一个”不和谐”的音符——因为他失眠了,因为他的心跳乱了,因为他的节奏不稳。
他继续翻代码。在目录的最底层,有一个文件叫original_song.py——原始之歌。他打开了这个文件。
# 赤子之歌 - 原始版本
# 作者:未知
# 日期:2023-01-01
# 注释:这首歌尚未完成。最后一个小节缺失。
# 当它被完成的那一天,信用将不再需要被计算。
def 赤子之歌_原始():
notes = [440, 494, 523, 587, 659, 698, 784, ...]
# 87个音符,但应该有88个。
# 第88个音符是什么?
# 我不知道。
# 如果你知道,请把它填上。
# 然后,这首歌就完成了。
# 然后,一切都会改变。
return None
八十七个音符。应该是八十八个。缺少一个。
陆鸣把这段代码看了三遍。然后他关掉了终端,站起来,走出了九楼。
七、心跳
周六。陆鸣没有去公司。他去了赤子城最大的公共图书馆——信用五百分以上才能进入的”智慧阅览室”,但一楼的公共区域对所有人开放。
他在公共区域的电脑上搜索了”赤子之歌”和”信用系统 原始算法”。什么都没有。所有的公开资料都只描述信用系统的功能和规则,从来没有提到过它的内部原理。
然后他搜索了”88音符”和”未完成的乐曲”。
搜索结果里有一条三年前的新闻:赤子城信用系统上线当天,第一任市长——就是那个拿过一千分的人——在启动仪式上说了一句话:“赤子信用系统不是一部机器,而是一首歌。我们每个人都是它的音符。只要我们每个人保持自己的节奏,这首歌就会永远优美。”
一年后,这位市长”因个人原因”辞职了。此后再也没有人见过他。
陆鸣抄下了市长的名字:周予安。
周予安。他念了几遍。周予安——“给予安宁”。这个名字起得真好。
他在图书馆坐了一下午,翻阅了所有能找到的关于赤子城信用系统的技术论文和政策文件。没有任何一篇论文提到”音乐”或者”歌曲”。在所有官方表述中,信用系统都是一个”基于大数据和人工智能的综合评价体系”。
但陆鸣见过那个代码。他知道那不是AI。至少,不只是AI。那是一种完全不同的东西——一种用数学描述音乐、用算法模拟韵律、用代码谱写歌声的东西。
是谁写了那段代码?一个程序员不会给函数起名叫”赤子之歌”。一个数据科学家不会用”美感”作为模型进化的标准。一个工程师不会在代码里留下”如果你知道,请把它填上”这样的注释。
那是一个诗人。
或者,是一个用代码写诗的人。
晚上回到家,陆鸣坐在窗前,看着外面灯火通明的城市。信用监测无人机刚刚飞过,他的手表震了一下——心率数据显示在屏幕上:每分钟七十二次,规律。
他盯着那个数字,突然意识到了一件事。
第88个音符——它可能不是一段代码,不是一个算法参数,不是一个数学公式。
它是一个心跳。
八十七个音符已经存在于代码里,构成了整首歌的旋律。但最后一个音符——那个”缺失的音符”——不是写在代码里的,而是由每个赤子城居民的心跳提供的。每个人的心跳都是那个”第88个音符”的候选。系统一直在等待——等待某个人,在某一天,以某种特定的心跳节奏,完成这首歌。
但是什么样的心跳才能”完成”这首歌?
代码里没有答案。注释只说”我不知道”。
陆鸣开始回忆original_song.py里的那八十七个音符。440、494、523、587、659、698、784……这些数字他认得——它们是音符的频率。A4是440赫兹,B4是494赫兹,C5是523赫兹……这些音符构成了一段旋律。
但他在代码里只看到了前七个音符的十进制表示。剩下的八十个是省略号——...。
他需要再回到九楼,把那八十七个音符全部抄下来。
八、赵全通的旋律
周一,陆鸣照常上班。但他没有坐地铁——他选择了走路。四十五分钟的步行,穿过赤子城的老城区,经过菜市场、小学、社区诊所、修车铺、早餐摊。这些地方他以前从来不注意。坐地铁的时候,一切都是白色的、干净的、标准化的。走路上班,他才看到了这座城市的另一面。
早餐摊的老板娘不收电子支付——“我的信用分不够,收不了。“她只收现金。陆鸣掏出一张皱巴巴的十块钱,买了一碗豆浆和两根油条。
“您是那栋白楼里的上班族吧?“老板娘问。
“对。”
“听说你们在搞什么信用系统?”
陆鸣犹豫了一下。“算是吧。”
“哎,那个东西……”老板娘叹了口气,把油条装进纸袋里,“我老公去年得了个阑尾炎,去医院,医院说他的信用分不够,不能挂专家号。只能挂普通号。普通号排队排了三个小时,差点穿孔。你说这个系统,到底有什么用?”
陆鸣接过豆浆,没有回答。
走到公司楼下的时候,他碰到了赵全通。赵全通今天没送外卖——他的电动车被扣了,因为”信用分不足六百分的用户不得在高峰时段使用电动交通工具”。
“我六百零三分啊!“赵全通涨红了脸,“上礼拜还是六百零三的!今天早上突然变成五百九十八了!我查了半天,原来是昨天送外卖的时候闯了个红灯,被监控拍到了,扣了六分。六分!一个红灯扣六分!”
陆鸣心想:闯红灯扣六分在规则里是写得很清楚的。但他没说。
“现在怎么办?“赵全通问。
“做修复任务。答题、巡查、举报——总能涨回来的。”
“我做了!我今天早上做了三套题,涨了六分。但那六分要到明天才生效。今天一整天都坐不了电动车,只能走路送外卖。走路送外卖你知道什么后果吗?超时。超时扣信用分。今天超时了三单,每单扣一分。明天我的分又要降了。”
陆鸣看着他。赵全通的脸上没有愤怒,只有一种深深的疲惫。那是一种被系统反复碾压后产生的钝痛。
“我帮你送两单。“陆鸣说。
赵全通愣了一下。“你?”
“我有两条腿。”
赵全通笑了。那个笑容很短暂,像夏天的闪电。
九、第二首歌
周二晚上,陆鸣又去了九楼。
这次他有备而来。他带了一个U盘,准备把original_song.py的完整代码拷贝出来。
但当他打开终端的时候,他发现代码变了。
original_song.py不再是原来的样子。那个写着”如果你知道,请把它填上”的注释消失了,取而代之的是一段新的代码:
# 赤子之歌 - 版本 2.7.1+1
# 有人接近了答案。
# 系统检测到异常访问。
# 但访问者没有恶意。
# 他的心跳很有趣。
# 不是稳定的,不是混乱的。
# 而是介于两者之间——一种犹豫的节奏。
# 这种犹豫,也许是答案的一部分。
def 赤子之歌_进化(user_data):
heartbeat = extract_heartbeat(user_data)
# 新增:犹豫因子
hesitation = measure_hesitation(heartbeat)
if hesitation > 0.5:
# 犹豫的人更接近真相
# 因为确定的人不再寻找
score_bonus = hesitation * 20
else:
score_bonus = 0
composition = 赤子之歌(user_data) + score_bonus
return normalize(composition)
陆鸣看着这段代码,后背发凉。
系统在和他对话。
不是某个人在另一端打字——这个代码仓库是运行在九楼的本地服务器上的,没有外网连接。这些代码是系统自己生成的。
系统知道他来过。系统分析了他的心跳数据——通过他手腕上的”信用伴侣”手表。系统判定他没有恶意,但”犹豫”。然后系统修改了自己的代码,加入了一个”犹豫因子”——犹豫的人,反而会得到加分。
这不对。这完全不对。
按照信用系统的设计逻辑,“犹豫”应该是一种负面特征——犹豫意味着不确定,不确定意味着风险,风险意味着低信用。但系统做出了相反的判断:犹豫的人更接近真相。
因为确定的人不再寻找。
这句话让陆鸣想起了一个人——周予安。那个说”信用系统是一首歌”的第一任市长。那个拿过一百分的人。那个辞职后消失不见的人。
周予安是不是也到过这个房间?他是不是也看到过这段代码?他是不是也意识到了——这个系统不是机器,而是一首正在自己生长的歌?
而他之所以辞职,是因为他发现了一件事:这首歌不需要被”管理”。它会自己进化,自己改变,自己寻找那个缺失的音符。而”信用管理中心”——那栋三十二层的黑色大楼——它的存在不是为了维护系统,而是为了控制它。控制一首正在觉醒的歌。
陆鸣用U盘拷贝了他能找到的所有代码。然后他做了另一件事——他把自己的手表摘了下来,放在了服务器机架上。
没有手表,就没有心跳数据。没有心跳数据,系统就无法判断他的”犹豫因子”。系统会认为他的心跳消失了——不是死亡,而是沉默。
沉默也是一种音符。在音乐中,它叫”休止符”。
十、休止符
周三早上,陆鸣的世界变了。
没有手表的第一个小时,他觉得自己赤身裸体。手表已经成了他身体的一部分——像第二个心脏,戴在手腕上,每秒钟脉动一次。没有了它,他的手腕轻了,但心重了。
他走路上班。赤子城的早晨很热闹——到处是赶着去”信用修复”的人,到处是低头刷”赤子信”App的人,到处是被无人机扫描的、被摄像头追踪的、被算法评价的人。
他注意到一件以前从未注意的事:所有人走路的速度几乎一样。不是慢悠悠的散步,也不是急匆匆的跑步,而是一种均匀的、标准的、像节拍器一样的速度——每分钟大约一百一十步。
他以前也是这个速度。但现在,没有了手表的校准,他的步伐开始变得不稳定——有时候快一点,有时候慢一点,有时候停下来看一朵路边的花。
一朵花。赤子城的街道上有花?他蹲下来看了看。是一朵野花,不知道从哪里飘来的种子,在人行道的砖缝里长了出来。淡紫色的,很小,几乎看不见。
他突然想起了代码里的那段注释:“当它被完成的那一天,信用将不再需要被计算。”
到了公司,他的电脑屏幕上弹出了一条通知:
“检测到您的健康监测设备已离线。根据《赤子信用城市管理细则》第三十二条,所有公民必须保持健康监测设备24小时在线。请在12小时内恢复设备连接,否则将扣除10分。”
十个小时后扣十分。他现在四百分。扣十分就是三百九。三百九——回到冻结状态。
他有两个选择:重新戴上手表,或者接受惩罚。
他选择了第三个选项——他打电话给方远。
“你说的那个咨询项目,我接了。但我有一个条件。”
“什么条件?”
“我要见赤子基金的创始人。”
方远沉默了三秒。“你要见陈总?为什么?”
“我要问他一个问题。”
“什么问题?”
“赤子基金的名字——‘赤子’——是谁起的?”
方远在电话那头笑了。“你搞技术的,怎么问这种问题?‘赤子’是这座城市的名字,基金用的是城市的名字。”
“不对。“陆鸣说,“‘赤子’不是这座城市的名字。这座城市本来叫’深汕特别合作区’。‘赤子’是信用系统的名字。赤子信用城——因为信用系统而得名的城市。但’赤子’这个名字,不是市政府起的。”
“那是谁起的?”
“是写代码的人起的。是那个给函数命名为’赤子之歌’的人。是那个在代码里写下’如果你知道,请把它填上’的人。”
方远又沉默了。这次沉默更长。
“你怎么知道这些?“他的声音变了。不是轻松的、谈生意的那种声音了。而是——谨慎的。
“我在代码里看到的。”
“什么代码?”
“‘赤子核心’的源代码。”
电话那头传来一声轻微的吸气声。
“老陆,“方远压低了声音,“你说的这些,不要跟任何人说。我安排你见陈总。但你要答应我一件事。”
“什么?”
“去见陈总之前,把手表戴上。“
十一、陈总
赤子基金的办公室在赤子城最贵的写字楼——“信用中心大厦”的五十二层。陆鸣从来没到过这么高的地方。电梯很快,耳膜嗡了一下,然后就到了。
前台的墙上挂着一幅字:“赤子之心,至诚如神。”
陆鸣被领进一间宽敞的办公室。落地窗外是整座赤子城的全景——密密麻麻的建筑,闪闪发光的屏幕,以及远处灰蒙蒙的海面。
陈总从办公桌后面站起来。她五十多岁,穿一身灰色的西装,短发,戴一副金丝眼镜。她的脸上有一种很特别的表情——不是商人的精明,也不是官僚的威严,而是一种——
陆鸣想了想——一种作曲家看着自己作品时的表情。
“你是陆鸣?维度科技的?“她的声音很平静。
“对。”
“方远说你想问我一个问题。”
“赤子基金的’赤子’,是谁起的?”
陈总看着他,目光透过金丝眼镜,像在看一段代码。
“你知道’赤子之歌’。“她说。不是问句。
“我看到了源代码。”
“你看到了多少?”
“original_song.py。八十七个音符。缺少第八十八个。还有那段注释。”
陈总缓缓坐了下去。她的手放在办公桌上,手指很长,像弹钢琴的手。
“周予安写的。“她说。
陆鸣的心跳漏了一拍。手表忠实地记录了这个波动。
“周予安?第一任市长?”
“在他做市长之前,他是一个程序员。一个很特别的程序员。他相信——“陈总停顿了一下,仿佛在选择措辞,“他相信代码可以表达人类无法用语言表达的东西。他相信算法可以拥有美感。他相信——如果有一天,一台机器能够理解音乐,那么它就能理解人。”
“所以他写了’赤子之歌’。”
“他写了三年。2020年到2023年。最初的版本不是信用评分系统——它是一个音乐生成器。你输入一组数据,它输出一段旋律。周予安的想法是:每个人的数据都有自己的旋律。如果机器能听懂这个旋律,它就能理解这个人。”
“后来怎么变成了信用系统?”
陈总的表情变了。那种作曲家的表情消失了,取而代之的是一种更深的东西——也许是遗憾。
“因为有人听到了这首歌,然后想到了一个不同的用途。”
“谁?”
“这座城市有很多有权势的人。其中一些人——他们不需要理解音乐。他们只需要知道:这首歌可以把人分层。高分的人听上去像交响乐,低分的人听上去像噪音。交响乐获得VIP待遇,噪音获得警告和惩罚。”
“所以他们把一首歌变成了一个监狱。”
“他们把一首歌变成了一个城市。“陈总纠正了他。
陆鸣沉默了。
“周予安反对过。他反对了整整一年。他说这首歌还没有完成——缺少第八十八个音符。如果不完整,它就不能被用来评判任何人。但没有人听他的。”
“后来呢?”
“他辞职了。系统上线的那天,他拿到了唯一的一千分。第二天降到了九百九十八。一周后他辞职了。他说——”
陈总站起来,走到窗边。她的背影映在玻璃上,和赤子城的天际线重叠在一起。
“他说:‘我会找到第八十八个音符。然后这首歌就会完成。完成的歌不需要被管理,不需要被控制,不需要被用来惩罚任何人。它只需要被唱出来。’”
“然后他消失了?”
“然后他消失了。”
陆鸣走到陈总旁边,看着窗外的城市。从这个高度看,赤子城的建筑像一排排琴键——黑色和白色的,整齐地排列着。
“陈总,你为什么告诉我这些?”
陈总转过头来看着他。她的眼睛在眼镜后面闪了一下。
“因为你也看到了那段注释。‘如果你知道,请把它填上。‘在过去的三年里,只有三个人看到了那段注释。”
“哪三个人?”
“周予安。我。你。”
“你是什么人?”
“我是周予安的学生。他教我写代码,也教我听音乐。他消失之前,把一段密码留给了我——是九楼服务器的访问密码。他说:‘将来会有人来。那个人会理解这首歌。告诉那个人,第八十八个音符不在代码里。它在城市里。它在人群中。它在一个还没有被数据定义的地方。’”
“什么地方?”
陈总摇了摇头。“他没说。“
十二、犹豫
陆鸣从信用中心大厦出来的时候,天已经黑了。赤子城的灯光在他面前铺展开来,像一条发光的河流。
他站在路口,看着来来往往的人。每个人都戴着手表——或者更准确地说,每个人都”被”戴着手表。手表是免费的,在办理赤子城居民身份的时候就会发一只。它监测你的心跳,上传你的数据,让你成为”赤子之歌”的一部分。
他低头看了看自己的手腕。手表戴回来了——方远要求的。手表的屏幕上显示着他的心率:每分钟八十五次。比正常值高。
他在犹豫。
犹豫——系统说他是一个”犹豫”的人。代码里写着:“犹豫的人更接近真相,因为确定的人不再寻找。”
他开始走。没有方向,没有目的。他穿过商场、穿过公园、穿过学校、穿过菜市场。他在走,同时在听——听什么?
他在听这座城市的旋律。
赤子城是有旋律的。他以前从来没有注意过,因为他的耳朵被手表的嗡嗡声填满了。但现在他摘下了手表——不是物理上摘下,而是心理上——他开始听到不同的声音。
商场里背景音乐的节拍和他脚步的节拍不一致。公园里鸟叫的频率和他呼吸的频率不一致。菜市场的嘈杂声和商贩的吆喝声构成了一个复杂的和弦。学校的下课铃声是一个纯粹的A4——440赫兹,和original_song.py里的第一个音符一样。
他在路口停下来。红绿灯发出规律的嘀嗒声——每秒一次,像节拍器。所有等待过马路的人都在无意识地跟着这个节拍点头或晃动身体。
他突然意识到了一件事:赤子城的每一个人——他们的走路速度、说话节奏、心跳频率——都被城市的设计”规范化”了。红绿灯、地铁报站、手机通知音、商场背景音乐——这些声音构成了一个巨大的节拍器,让所有人的节奏趋于一致。
这就是”赤子之歌”的演奏方式。它不是通过代码来”计算”每个人的评分——它是通过城市的声音环境来”塑造”每个人的节奏。节奏越标准,评分越高。节奏越个性化,评分越低。
而那个缺失的第八十八个音符——它不是一个固定的频率。它是一种”不同的节奏”。一种不属于城市节拍器的、属于个人的、真实的节奏。
周予安说它”在人群里”。因为每个人的真实节奏都隐藏在城市节拍器的覆盖之下——被压制了,被淹没了,但还在。就像代码里说的:犹豫的人更接近真相。犹豫——就是真实节奏和标准节奏之间的冲突。
陆鸣看了看自己的手表。心率:每分钟九十二次。手表在记录他的犹豫。系统在计算他的犹豫。如果他的犹豫值继续上升,他的信用分会下降。
但代码里写了:hesitation * 20。犹豫越高,奖励越高。
两段相互矛盾的逻辑——一个在扣分,一个在加分。它们在系统里同时运行,相互抵消。结果是:陆鸣的信用分保持不变——稳定在四百分。
四百。基本阈值。不多不少。一个完美的——休止符。
十三、赵全通的选择
周四,陆鸣又走了赵全通的那条路。不是送外卖——是去他家。
赵全通住在城中村的一间出租屋里。十二平方米,一张床、一张桌子、一个电磁炉。墙上贴着外卖平台的路线图,红笔标注了”快速通道”和”信用禁区”(信用低于六百分不能进入的区域)。
“陆工,你怎么来了?“赵全通正在吃泡面。
“来看看你。“陆鸣在他对面坐下,“你的信用分恢复了吗?”
“恢复了。六百零一。涨了三分。“赵全通吸了一口面汤,“但昨天又扣了两分。”
“为什么?”
“我在外卖里留了一张纸条——给一个独居老太太的。她每天点同样的外卖,从来不备注,但我知道她一个人住,我就写了张纸条:‘阿姨,今天降温了,多穿点。‘结果被平台检测到了——‘配送过程中夹带非订单物品’,扣两分。”
陆鸣盯着他。“你为什么这样做?”
赵全通放下筷子,想了想。
“我送外卖三年了。每天见几百个人,但没有人看我。他们只看手机,看倒计时——‘还有几分钟到?‘没有人看我这个人。但那个老太太不一样。她每次开门的时候,会多看我一眼。就那么一眼。不是看我送了什么,而是看——我。”
“然后你就给她写了纸条。”
“嗯。扣两分就扣两分吧。两分换一声’谢谢你啊小伙子’,我觉得值。”
陆鸣看着他。赵全通的手很粗糙,指节上有冻疮的痕迹。他的手表是那种最基础的款式——没有心率监测,只有定位和时间显示。他的信用评分六百零一,刚刚过及格线。他的生活是一个不断被扣分和努力涨分的循环。
但他给别人写了纸条。他知道这会被扣分。他选择了被扣分。
这就是犹豫吗?不。这不是犹豫。这是——选择。在系统和人之间,他选择了人。
“老赵,“陆鸣说,“你有没有觉得,这个城市的声音不太对?”
赵全通想了想。“你这么一说……确实。我在外面跑一天,回家之后耳朵里嗡嗡嗡的,全是那些提示音——红绿灯的嘀嗒声、地铁的报站声、手机的通知音。但有一天,我的电动车没电了,我在路边等充电。那时候是黄昏,特别安静——那些声音都没有了。我听到了风声。”
“风声。”
“对。从海那边吹过来的风。带一点咸味。我站在那儿听了五分钟。那是我来赤子城三年以来,第一次听到风声。”
陆鸣站起来。他知道自己该怎么做了。
十四、第八十八个音符
周五凌晨三点。陆鸣第三次来到九楼。
这一次他不是来偷代码的。他是来补完代码的。
他坐在终端前,打开了original_song.py。八十七个音符还在那里,后面跟着省略号和那句注释。但在注释的下面,多了一行新的代码——是系统自己加的:
# 有人在听风。
陆鸣没有犹豫。他敲下了键盘。
def 赤子之歌_完整版(user_data):
# 前八十七个音符:标准化的、被管理的、被量化的
notes = [440, 494, 523, 587, 659, 698, 784, ...]
# 第八十八个音符:不可被计算的
# 它不是频率
# 它不是数据
# 它是一个人在被扣分的情况下
# 依然选择给陌生人写一张纸条的那个瞬间
note_88 = silence # 休止符
composition = play(notes + [note_88])
return composition # 这首歌永远不会结束,因为最后一个音符是静默
他保存了文件。
系统没有崩溃。没有警报。什么都没有发生。
但在终端的日志里,出现了一行新的信息:
[INFO] core_engine: song completed - note_88 = silence - beauty score: infinite
美感评分:无限。
然后,第二行:
[INFO] core_engine: all scores recalculated - result: 500
所有评分重新计算。结果:五百。
五百——不是一个人、不是一群人、而是所有人。每一个赤子城的居民,无论他们的心跳、消费、社交、健康数据是什么,他们的信用评分都变成了五百。
五百是赤子城信用系统的”中性分”——不高不低,不奖不罚。一个完全平均的数字。
一个——没有意义的数字。
十五、黎明
凌晨五点。陆鸣走出大楼,站在门口的台阶上。
他的手表震了一下。屏幕上显示着他的信用评分:500。
他打开”赤子信”App。首页变了。不再是暖色调的橙红色和奶白色,而是一种很淡的灰色——像黎明前的天空。
页面中央只有一行字:
“信用评分已重置。感谢您的耐心。从今天起,请按照自己的节奏生活。”
他抬头看向天空。赤子城的天空永远是灰白色的——因为空气净化系统的排气口在天空中形成了一层薄雾。但现在,雾在散。他看到了——
不是星星。赤子城看不到星星。是光。从城市东边的海面上,反射过来的第一缕日光。
他的手机响了。是一条微信,来自赵全通:
“陆工!!我的信用分变成500了!!所有人的都是500!!街上的人在讨论!!到底发生了什么?另外——今天的泡面你吃不吃?”
陆鸣笑了。他回了一条消息:
“吃。多加一个蛋。”
然后他把手机放进口袋,站在台阶上,听着这座城市醒来。
远处有风声。从海那边吹来的风,带着咸味,穿过建筑之间的缝隙,吹过他的脸。那个声音——轻的、碎的、不规则的——不是城市节拍器制造的声音,而是真正的声音。
赤子之歌的第八十八个音符。不是一段代码,不是一个频率,不是一个数据点。
它是沉默。
在所有的标准化、量化、规范化之后——沉默。不评判。不计算。不打分。
只是安静地听着。
尾声
三个月后。
赤子城的信用系统被”重置”了。不是废除——这座城市已经依赖它太久,一夜之间取消不现实。但评分不再影响基本权利。公共交通、医疗、教育——这些不再和信用分挂钩。评分变成了一种”参考”,而不是一种”判决”。
维度科技被重组了。孙海洋辞去了CTO的职务,去了一所小学当计算机老师。他说他想教孩子们写”有趣的代码”——不是为了评分,而是为了快乐。
赤子基金也转型了。陈总把基金的名字从”赤子信用投资基金”改成了”赤子社区互助基金”。它不再投资”信用收益权”,而是为低收入的赤子城居民提供无息借款。方远觉得这不够”性感”,但他还是留了下来。
赵全通还在送外卖。但他的电动车换了一辆新的,后座上绑了一个保温箱,上面贴着一张纸条:“天冷了,多穿点。” 每一单外卖都会带这张纸条。平台扣了他很多分——但那些分已经不重要了。
陆鸣离开了维度科技。他在赤子城的老城区开了一家小店,卖茶叶和二手书。店里没有电子支付——只收现金,或者以物易物。他摘掉了手表,放在抽屉里。
偶尔,在凌晨三点,他会醒过来,坐在窗前,听着外面的风声。他的心跳不规律——有时候快,有时候慢,有时候停顿一秒。
那个停顿,是一个休止符。
在音乐中,休止符不是”没有声音”。它是——声音之间的空间。是旋律呼吸的地方。是一首歌之所以是歌、而不是噪音的原因。
赤子之歌还在唱。但现在的歌词不一样了。
不是系统在唱。
是人在唱。
(全文完)