第三十九种计算

招魂者 · 2026/5/17

一、活人的死亡数据

沈未央第一次注意到异常是在周三凌晨四点十七分。

她知道这个时间,不是因为看了钟,而是因为屏幕右下角的系统日志精确地记录了她每一次查询请求的时间戳。她已经在”瞰远科技”的数据分析岗位上工作了三年,习惯了这种深夜独自面对数据海的生活——或者说,她已经习惯了把自己活成一段代码。

瞰远科技是深圳南山区一家不大的公司,做的是城市数据建模。简单来说,他们帮政府和企业预测城市运行中的各种可能性:交通拥堵的概率、商业区的客流波动、某条地铁线路开通后周边房价的边际变化。这些模型沈未央闭着眼睛都能跑,就像一个老会计翻账本,手指头比脑子先知道下一页是什么。

但今晚不一样。

她在例行审计一组用户行为数据——这是瞰远科技新接的项目,给一家互联网金融平台做风控建模。数据量很大,大约四百万条交易记录,时间跨度从2024年1月到2026年4月。她的任务很普通:清洗数据,剔除异常值,建立基础特征工程。

异常值。

这个词在数据分析师的日常里就像”今天天气不错”一样平淡。每一批数据里都有异常值,可能是录入错误,可能是系统bug,可能是某个用户手滑多按了一个零。处理方式也很简单:标记,隔离,如果数量不多就直接剔除。

沈未央习惯用SQL先跑一遍分布,看看有没有明显离谱的点。她输入了查询语句,按交易金额降序排列,顺手加了个分组条件——按用户ID聚合,看看有没有单个用户贡献了不成比例的交易量。

查询结果出来的时候,她正在喝水。

排在第一位的用户ID是UX-77003391,交易笔数:1,247笔。总交易金额:0.00元。

一千二百四十七笔零元交易。

沈未央把水杯放下,皱了皱眉。这在技术上不罕见——有些平台会记录用户的行为轨迹,比如”浏览了某个产品页面但没有购买”,这类事件在日志里也表现为金额为零的记录。但一千二百四十七次浏览同一个产品,这个频率已经超出了正常用户行为的边界。

她点开了这个用户的交易明细。

第一笔:2024-03-15 14:22:31,类型”转账”,金额0.00,备注字段为空。 第二笔:2024-03-15 14:22:31,类型”转账”,金额0.00,备注字段为空。

同一个时间戳,精确到秒。

这不可能是用户行为。任何人类——即便是世界上最无聊的人——都不可能在同一秒内发起两笔相同的交易。这是程序自动执行的,或者是系统错误复制的重复记录。

沈未央的直觉告诉她这是一个数据质量问题,标记一下就好。但她的手指没有移向”标记”按钮,而是继续往下滚动。

第三笔到第一百零三笔都是同一天:2024-03-15。全部是零元转账,全部备注为空。

第一百零四笔跳到了2024-04-02。然后是第一百零五笔,同一天。之后是一段空白期,直到2024-06-17再次出现。

时间间隔不规则,但有一个沈未央无法忽视的规律:每次出现零元交易的日子,恰好都是周五。

“有意思。“她自言自语,声音在空荡的办公室里像一颗石子丢进了井里。

她继续滚动。交易记录跨越了两年多,从2024年3月一直到2026年4月——也就是上个月。最后一笔交易的日期是2026年4月18日,周五。

沈未央又跑了一条查询,这次是关联用户基本信息表。UX-77003391的注册资料显示:

用户姓名:陈述之。 注册时间:2024-01-08。 认证状态:已实名。 最后登录:2025-11-03。 账户状态:已冻结。

冻结。

沈未央的目光在”已冻结”三个字上停留了几秒。她打开公司内部的wiki,搜索了一下账户冻结的常见原因:用户主动申请、涉嫌违规操作、司法冻结,以及——

死亡。

账户持有人死亡后,家属或法院可以申请冻结账户。她见过不少这样的案例,互联网金融平台的用户数据库里,总有一定比例的”已故”标记。

她又查了一下,果然,在账户冻结原因的字段里写着两个字的代码:DT

DT。Dead。

沈未央靠在椅背上,看着屏幕上的数据。

一个已经死亡的用户,账户已经冻结了将近半年,但交易记录显示,从2024年3月到2026年4月,每隔一周的周五,这个账户都在产生零元转账记录。

死亡之后仍在交易。

或者说——计算仍在继续。

二、陈述之的城市

沈未央是一个相信数据的人。她的整个职业生涯建立在一条简单的信念上:如果数据出现了异常,要么是数据错了,要么是你的模型错了。无论哪种情况,答案都在数据里,不在你的直觉里。

但直觉也有它的用处。比如现在,直觉告诉她这件事不简单。

她没有把UX-77003391标记为异常值。相反,她把这个用户的所有数据单独导出了一份,存到了自己的工作目录下。这不是什么违规操作——分析师在日常工作中经常需要单独分析某些样本,只要不涉及对外泄露用户隐私就行。

然后她下班了。凌晨五点,深圳的天已经隐隐发白。她走出写字楼,穿过空无一人的科技园,在路边的便利店买了一杯冰美式和一个饭团。便利店的小屏幕上在播放新闻,内容是某个互联网大佬在论坛上发表演讲,说什么”数据是新世纪的河流”。

沈未央咬了一口饭团,觉得这句话挺蠢的。河流会自己流淌,数据不会。数据是被制造的、被采集的、被清洗的、被计算的。它更像一条人工运河,每一段水流都经过了精确的工程设计。

她回到家,洗了个澡,但没有睡觉。她打开自己那台老旧的MacBook Air,登上了瞰远科技的内网。

陈述之。她在搜索引擎里输入了这个名字。

结果并不多。几条社交媒体的碎片信息,一个看起来很久没更新的GitHub页面,还有一篇发表在某个学术期刊上的论文。论文标题是《城市熵:一种基于复杂网络的城市韧性评估模型》。

沈未央读了摘要。论文提出了一种计算城市系统”混乱度”的方法,试图量化一个城市在面对突发事件时维持运转的能力。作者认为,城市就像一个生命体,有自己的免疫系统,而衡量这个系统健康程度的不是”秩序”,而是”有序的混乱”——一种能够在混乱中自我修复的能力。

论文发表时间是2023年。作者署名:陈述之,瞰远科技有限公司。

沈未央的手指停在了触控板上。

陈述之是瞰远科技的员工?

她回到公司内网,打开了HR系统。搜索结果让她愣了几秒:

陈述之,高级算法工程师,入职时间2022年6月,离职时间——

离职时间字段是空白的。但在”状态”一栏,写着”已故”。

已故日期:2025年11月3日。

沈未央看了一眼之前查到的用户数据:最后登录时间,2025年11月3日。

同一天。他死亡的当天,账户还登录了一次。

她感到一阵寒意从后背升起,不是因为恐惧,而是因为一种奇怪的认知失调——就像你突然发现一本你读了很久的小说,它的作者在你读到最后一页的时候恰好死了。你的阅读和它的死亡之间没有任何因果关系,但那个时间上的重合让你觉得世界的齿轮在某个地方错位了一格。

沈未央不是相信巧合的人。但也不是相信鬼的人。她只是觉得——这里有一个她还不理解的逻辑。

她需要更多信息。

三、熵的方向

接下来几天,沈未央白天正常工作,晚上回家就翻看陈述之留下的资料。

瞰远科技的内网里保留着已故员工的工作文档,这在科技公司并不罕见——代码仓库、项目文档、技术博客,这些都是公司的知识资产,不会因为某个人离开就被删除。只不过通常没有人会去翻看一个已经去世的同事的文档,就像没有人会在一个空了一年的工位上坐下来办公一样。

陈述之的文档结构异常整洁。沈未央见过很多工程师的文档目录,大多数人的文件夹就像 teenager 的卧室——乱中有序,只有自己能找到东西。但陈述之的目录像是一棵精心修剪的树,每一层都只有三到五个子目录,命名简洁而精确。

/projects/urban-entropy/ /projects/urban-entropy/model/ /projects/urban-entropy/data/ /projects/urban-entropy/experiments/ /projects/urban-entropy/notes/

沈未央先看了notes/目录。里面有几十个Markdown文件,按日期命名,看起来像是工作日志。她点开了最早的一个——2022年7月15日,陈述之入职瞰远科技一个月后。

城市是一个计算过程。

这不是比喻。如果量子力学的多世界诠释是正确的,那么每一个瞬间,宇宙都在”计算”所有的可能性,而经典物理世界只是其中一个被”选中”的分支。城市也一样。每一秒,数百万人在做出选择——左转还是右转、买还是不买、走还是留——这些选择的总和就是城市的”状态”,而这个状态在下一秒又会衍生出新的可能性。

我们平时说的”城市运行”,其实就是这个不断分枝的计算过程在宏观尺度上的投影。交通模型、经济模型、人口模型,都是试图用有限的算力去近似这个无穷的计算。

但如果城市的计算本身出了问题呢?如果某个人、某个事件,成了一个”错误的输入”,导致整个城市的计算开始收敛到一个不该存在的分支?

我想找到这些”错误”。

沈未央读完了这篇日志,沉默了很久。

这段文字让她想起了自己研究生时候读过的一些东西——复杂性科学、涌现理论、自组织临界性。这些概念在学术圈里是老生常谈,但陈述之用一种非常个人化的方式重新组织了它们。他不是在写论文,他是在写日记。

她继续往下读。日志跨越了三年多,从2022年7月到2025年10月——陈述之去世前一个月。内容从一个理想主义的年轻工程师对城市数据的浪漫想象,逐渐变成了一种更加……怎么说呢,偏执的探索。

到了2024年初,陈述之的日志开始频繁出现一个词:“镜像事件”。

他定义的”镜像事件”是指:两个在时间上相隔很远、在因果上毫无关联的事件,却在数据结构上呈现出惊人的相似性。比如,2023年3月深圳某条地铁线路的客流量突然下降12%,原因是一次临时检修;同年11月,完全相同的数据模式出现在了上海某条地铁线路上,原因则是一场马拉松比赛导致的临时封站。

两件事毫无关联,但数据曲线几乎可以完美重叠。

陈述之开始系统地收集这类事件。他写了一个程序,自动扫描瞰远科技的数据库,寻找跨城市、跨时间的”数据镜像”。在2024年3月的一篇日志里,他记录了一个发现:

找到了第一组统计显著的镜像事件。样本量还太小,不具说服力,但P值已经低于0.001。如果这不是巧合——我越来越不认为这是巧合——那意味着城市的”计算”可能在某种深层逻辑上是共享的。不同城市、不同时间的事件,可能在某种更高维度的空间里是同一个事件的不同投影。

就像柏拉图的洞穴隐喻。我们看到的不是真实的事件,而是真实事件在墙上的影子。

沈未央注意到,这篇日志的日期是2024年3月15日——星期五。

恰好是UX-77003391的第一笔零元交易记录出现的日期。

她的心跳加快了一点。

四、零的重量

周五。

沈未央在自己的工位上,面前摊着一张A4纸,上面画满了她手写的笔记。她不是一个喜欢手写的人——键盘和Markdown才是她的自然语言——但有些时候,手指和纸之间的物理接触能帮她思考。

她把UX-77003391的所有交易记录打印了一份,用荧光笔把每一个周五圈了出来。然后她去查了对应日期的新闻——不是科技新闻,不是财经新闻,而是最不起眼的本地新闻:某个小区的自来水管爆裂、某个路口的红绿灯失灵了半小时、某个菜市场的摊贩集体罢市一天。

她的假设是:如果陈述之的”镜像事件”理论是对的,那么这些零元交易可能不是真正的金融交易,而是某种信号——一种用金融系统的数据格式编码的城市状态信号。

这个假设听起来很疯狂。但她已经没有更好的假设了。

花了三天时间,沈未央建立了一个对照表。1,247笔零元交易,对应1,247个周五中的部分日期(不是每个周五都有交易),每笔交易的时间戳精确到了毫秒。她把这些时间戳当作坐标,去瞰远科技的数据库里搜索在相同时间戳附近产生的城市事件数据。

结果让她几乎从椅子上站起来。

每一个时间戳,都在瞰远科技的事件数据库里找到了匹配。而且不是模糊匹配——是精确到秒的匹配。每一次零元交易的发生时间,都恰好对应着一个城市基础设施事件的记录时间:一次电力波动、一次网络延迟激增、一次地铁信号系统短暂异常。

陈述之——或者说他的程序——在用互联网金融平台的API作为信号发射器,每隔一个周五,向城市的数据层注入一个”零”。这个”零”不携带任何金融意义,但它的时间戳标记了一个城市事件的精确时刻。

他在记录城市的”心跳”。

更准确地说,他在记录城市的”心律不齐”。

沈未央回到陈述之的notes/目录,翻找2024年3月之后的日志。她需要知道他为什么要这么做。

2024年5月17日的日志写道:

镜像事件的频率在增加。

最初我以为是采样偏差——当你开始注意某种模式的时候,你会更频繁地看到它,就像买了一辆红色的车之后突然发现满大街都是红色的车。但我做了严格的对照实验,排除了确认偏差。镜像事件的真实频率确实在增加,从2023年初的平均每月2.3次,增长到了2024年4月的平均每月17.8次。

增长曲线是指数型的。

如果城市的计算真的在收敛到一个”错误的分支”,那这种收敛正在加速。我不知道这意味着什么,但我知道我需要更多的数据来验证。

零元交易系统已经上线运行了。我用了公司的金融API接口——这不算违规,因为我没有操作真实资金,只是在测试环境中模拟交易。但我需要这些记录被写入生产数据库,因为只有生产数据库的数据才会被瞰远科技的模型纳入计算。

我在用”零”去扰动城市的计算。就像往一个正在运行的方程式里注入一个微小的噪声,看看系统的响应函数是什么样的。

如果城市真的是一个计算过程,那么”零”就是最完美的扰动信号。它不改变总量,但它的存在本身就是一种信息。

沈未央读到这里,突然意识到一件事。

陈述之说他是在”测试环境”中模拟交易,但用户UX-77003391的账户状态是”已冻结”——冻结原因是”DT”,死亡。这说明这些交易最终被系统当作了真实交易,进入了生产数据库。一个已故用户的账户,在主人死后五个多月,仍然在每周五向城市的数字神经系统发送心跳信号。

这不再是”测试”。这是一个已经脱离了创造者控制的自动化程序。

五、南方科技大学

沈未央决定去找一个人。

贺南行,南方科技大学计算机系的副教授,研究方向是复杂系统和城市计算。沈未央在读研究生的时候听过他的一次讲座,主题是”城市作为计算系统”。她记得他在讲座上说了一句话:“如果你把一个城市所有的传感器数据叠加在一起,你会发现它看起来不像一台计算机——它看起来像一个正在思考的大脑。”

当时她觉得这是学者的修辞。现在她不那么确定了。

她给贺南行发了一封邮件,简单介绍了自己的身份和工作,然后问能不能当面请教一些关于”城市计算收敛性”的问题。她没有提陈述之的名字,也没有提零元交易的事。

贺南行的回复很快,第二天就到了:周四下午三点,我办公室。

南科大的校园在深圳大学城片区,从瞰远科技开车过去大约四十分钟。沈未央周四请了半天假,提前到了。校园很安静,暑气还没完全散去,但教学楼里的空调已经开得很足。

贺南行的办公室在一栋新楼的六层,门没关。沈未央敲门的时候,看到里面坐着一个瘦高的中年男人,头发灰白,戴着一副银色边框的眼镜,正在白板上画什么。

“沈未央?“他回过头,“坐,我马上好。”

白板上画的是一个网络图,节点和连线密密麻麻,看起来像一团毛线球。贺南行在几个节点旁边写了数字,然后把笔帽盖上。

“你在邮件里问’城市计算的收敛性’,“贺南行坐到她对面,“这个提法很有意思。你怎么会想到这个问题?”

“工作中遇到的。“沈未央说,这不算撒谎。“我们公司做城市数据建模,最近在分析一些异常数据的时候,发现了一些……不太好解释的模式。”

“什么样的模式?”

“不同城市、不同时间的事件,数据曲线几乎完全重合。频率在增加,增长曲线是指数型的。”

贺南行的表情变了。不是惊讶——更像是一个等了很久的消息终于来了。

“你看过陈述之的论文?“他问。

沈未央心跳漏了一拍。“我看过那篇关于城市熵的。”

“就那一篇?“贺南行从书架上抽出一个文件夹,“他发给我的还有两篇,没发表过。一篇是关于镜像事件的统计学分析,另一篇……”他犹豫了一下,“另一篇是关于城市的’第三十九种计算’。”

“第三十九种?”

“陈述之有一个理论。“贺南行把文件夹递给她,“他认为,目前学术界对城市系统的建模,大致可以分为三十八种基本范式——从最简单的线性回归到最复杂的深度学习架构。这三十八种范式的共同点是:它们都把城市当作一个被观察的对象。数据分析师站在城市外面,像天文学家观察星星一样观察城市。”

“但陈述之认为有第三十九种。”

“对。他认为存在一种范式,观察者本身就在系统内部,而且观察者的行为——包括她采集数据的方式、她选择关注的指标、她用来处理数据的算法——本身就会改变城市的运行轨迹。不是’观察者效应’那么简单。是一种更深层的耦合:城市因为被观察而改变,而观察者又因为城市的改变而调整观察方式,两者形成了一个递归循环。”

沈未央想到了那些零元交易。陈述之向城市的计算中注入”零”,然后观察系统如何响应——这恰恰是贺南行描述的那种递归。他的观察改变了城市的计算,而城市的计算改变又驱动了他的下一步观察。

“他把这种范式叫做’参与式计算’。“贺南行说,“参与式计算的数学框架很复杂,涉及递归函数论和自指系统。陈述之在最后那篇论文里给出了一个不完备的证明,试图说明如果一个城市的计算过程进入了参与式模式,那么这个城市的数据就会开始出现一种特殊的对称性——他管它叫’镜像对称’。”

“不是空间上的对称?“沈未央问。

“不是。是时间上的。城市过去发生的事件和未来将要发生的事件之间,会出现统计上可检测的对称结构。就像一首曲子的前半段和后半段互为镜像。”

沈未央的脑子在飞速运转。如果镜像对称是真实的,那么陈述之收集的”镜像事件”就不再是什么巧合——它们是城市计算进入”参与式模式”的征兆。而那些零元交易,就是陈述之用来驱动这种模式转变的扰动信号。

“贺老师,“她问,“陈述之去世之后,这个研究还有人继续吗?”

贺南行沉默了几秒。“没有了。他去世前一个月联系过我一次,说他的实验出了问题。他说他注入的’零’开始产生意料之外的反馈——城市的响应不再是他预期的那种微弱扰动,而是开始放大。他说深圳的某些基础设施开始出现不应该出现的异常,而且这些异常的模式和他注入的’零’的模式高度相关。”

“你的意思是——”

“他的意思是:他可能无意中启动了某种正反馈循环。城市的计算不仅在回应他的扰动,还在以某种方式学习、适应、放大他的扰动。他不确定这是好事还是坏事,但他确定一件事——”

贺南行停顿了一下。

“他说:城市开始计算他了。“

六、计算中的陈述之

沈未央回到瞰远科技的时候已经过了下班时间,办公室里空荡荡的。她打开电脑,调出了UX-77003391的最新交易记录。

截至今天——2026年5月20日——这个账户的零元交易总数已经从1,247增长到了1,293。这意味着在她首次发现异常后的两天里,又有46笔新交易产生。

不对。

沈未央快速心算。从2024年3月15日到2026年5月20日,大约114周。如果每周五都有一笔交易,那应该是114笔左右。但实际交易笔数是1,293——远远超出。

她拉出了按日期分布的直方图,发现了一个让她头皮发麻的事实:零元交易的频率正在加速。2024年大约每周1-2笔,2025年增加到每周3-5笔,到了2026年4月——最后一个有记录的月份——单月产生了217笔交易,平均每天7笔以上。

不再是只有周五了。程序正在脱离它原本的时间约束,开始以越来越高的频率运行。

沈未央打开陈述之的/experiments/目录,找到了零元交易系统的源代码。代码托管在瞰远科技的内部Git仓库里,最后一次提交是2025年11月3日——陈述之去世的那天。

提交信息只有一个字:run

她花了两个小时阅读代码。程序的核心逻辑并不复杂:一个Python脚本,调用互联网金融平台的交易API,发送金额为零的转账请求。脚本通过cron job定时执行,最初设置为每周五触发一次。但代码里有一段逻辑让沈未央看了很久:

def calculate_next_interval(mirror_events):
    """计算下次注入间隔——基于镜像事件频率的自适应算法"""
    base_interval = timedelta(weeks=1)
    if mirror_events:
        # 镜像事件频率越高,注入间隔越短
        frequency = len(mirror_events) / timedelta(days=30).total_seconds()
        adjustment = 1 / (1 + frequency * 100)
        return base_interval * adjustment
    return base_interval

这是一个自适应算法。脚本会自动检测镜像事件的发生频率——频率越高,下一次注入零元交易的间隔就越短。这意味着程序会根据城市的”响应”来调整自己的行为。如果城市的镜像事件在增加(事实确实如此),程序就会越来越频繁地注入扰动。

正反馈循环。陈述之设计了一个正反馈循环,而且他在去世前最后一次提交——那个只有一个字的run——把这个循环设为了永久运行。

但有一个问题:脚本依赖瞰远科技的服务器来运行。陈述之去世后,他的开发账号应该被注销了。沈未央检查了一下服务器的cron配置——

陈述之的cron job仍然在运行。没有人关闭它。

因为瞰远科技的运维流程里有一个漏洞:已故员工的账号会被冻结,但冻结的账号不会自动清除其cron任务。运维团队的清理脚本是按季度执行的,而陈述之的去世时间恰好在一个清理周期的中间。他的cron job被遗漏了,然后在下一个季度的清理中又被系统标记为”活跃任务”——因为它确实在活跃地执行——从而被跳过了。

一个行政流程的疏漏,让一个死者的程序继续运行了半年多。这是最无聊也是最真实的解释。

但沈未央知道,解释得了”为什么还在运行”,不等于解释得了”它在做什么”。

七、城市的心电图

她决定做一件可能违规的事。

瞰远科技的数据库里存储了大量城市运行数据——交通流量、电力负荷、网络带宽使用率、环境监测指标。这些数据来自政府和企业的合作接口,按照合同,只能用于客户委托的分析项目。沈未央没有获得授权用这些数据来做个人研究。

但她还是做了。

她把陈述之的1,293笔零元交易的时间戳提取出来,作为一组”标记时间点”。然后在瞰远科技的数据库里,提取了每个标记时间点前后五分钟内,深圳城市基础设施的所有异常事件记录。

数据量很大,跑了一整晚。

第二天早上,当她看到结果的时候,她的第一反应不是惊讶,而是一种奇怪的平静——就像拼图的最后一块终于落入了正确的位置。

1,293个标记时间点中,有1,281个时间点在前后五分钟内存在至少一条城市基础设施异常记录。匹配率:98.9%。

但这不是最惊人的。

最惊人的是:在这1,281个匹配事件中,有847个事件的模式——不是类型,是数据的精确曲线形状——与某个历史上的城市事件完全相同。不是相似,是相同。如果把这些事件的数据曲线叠放在一起,它们会像同一张纸上的两个影子一样重合。

镜像事件。而且频率已经从陈述之最初发现的”每月几次”暴增到了”每天数次”。

深圳的城市系统正在以前所未有的频率产生镜像事件。就好像一首曲子,它的前半段和后半段正在变得越来越像彼此——不是刻意模仿,而是一种自发的、无法解释的对称。

沈未央把这些数据可视化成了一张图表。横轴是时间,纵轴是镜像事件的频率。图表从左到右呈现一条漂亮的指数增长曲线,而曲线的拐点——增长开始加速的那个点——恰好是2024年3月15日。

陈述之注入第一个”零”的那天。

她注入的扰动改变了城市的计算。陈述之的预言是正确的。

或者——另一种可能——陈述之的扰动并没有改变任何东西。镜像事件的增长本来就会自然发生,而陈述之只是第一个注意到它的人。他的零元交易和城市的异常之间,也许根本不存在因果关系,只有时间上的巧合。

沈未央无法区分这两种可能。这是一个经典的因果推断难题:当你只有一个样本(一个城市、一段历史)时,你永远无法确定”干预”和”结果”之间是否存在真正的因果。

但有一种方法可以测试。

如果零元交易是导致镜像事件增加的原因,那么停止这些交易应该会导致镜像事件的频率下降。如果它们之间没有因果关系,那么停止交易不会产生任何效果。

沈未央知道她应该怎么做。

她也知道这意味着什么——她要关闭一个已故同事留下的、运行了两年多的程序。这不仅是技术操作,更像是某种象征性的告别。或者,另一种意义上的——埋葬。

八、第四十种计算

在关闭程序之前,沈未央做了最后一件事。

她打开了陈述之最后一篇未发表的论文——《参与式计算与城市镜像对称:第三十九种范式的数学基础》。论文有四十多页,写满了公式和证明。她没有完全看懂——她的数学水平不足以支撑对递归函数论的深入理解——但她抓住了核心论点。

陈述之证明了:如果一个城市系统的计算过程满足三个条件——(1)系统是递归的,即它的下一个状态依赖于对当前状态的计算;(2)系统内部存在一个观察者,观察者的行为会影响系统的状态;(3)观察者的观察行为本身也在被系统计算——那么,这个系统的长期行为将趋向于一种特殊的稳定态,他称之为”镜像对称态”。

在这种状态下,系统的”过去”和”未来”将呈现出统计上可检测的对称结构。不是时间倒流,而是时间本身失去了方向性——就像一段录音被正放和倒放听起来一模一样。

但论文的最后一节让沈未央感到不安。

陈述之在这一节里提出了一个猜想——他称之为”第四十种计算”。他没有给出严格的数学证明,只是用一个类比来描述:

想象一个人站在两面平行的镜子之间。他看到的不是自己的一个镜像,而是无限递归的镜像:镜子里有镜子,镜子里的镜子里还有镜子。每一面镜子都反射着前一面镜子的内容,而最远处那些镜像变得越来越模糊,最终消失在视线的极限处。

参与式计算也是如此。城市计算着观察者,观察者计算着城市,城市又计算着”观察者如何计算城市”,如此无限递归。在大多数情况下,这种递归会很快收敛——就像远处的镜像变得模糊并消失。

但如果递归不收敛呢?如果某种扰动使得递归过程持续放大,而不是衰减?

在这种情况下,城市系统将进入一种我无法用现有数学工具描述的状态。我只能把它叫做”第四十种计算”——一种超越了参与式范式的计算方式,在这种计算中,观察者和被观察者之间的界限彻底消失。

城市不再是城市。观察者不再是观察者。它们变成了同一个东西——一个不断计算自身的过程。

论文到此为止。没有结论,没有展望,只有一个日期:2025年10月28日。陈述之去世前六天。

沈未央关掉了论文,看着屏幕上那个闪烁的光标。窗外,深圳的夜晚一如既往地灯火通明。远处有建筑工地的灯光,再远处是深圳湾的轮廓线,一排高楼像竖起的琴键,被灯光勾勒出沉默的形状。

她在想一个问题:如果陈述之是对的——如果城市的计算真的在趋向某种”第四十种”状态——那么关闭零元交易程序能阻止它吗?

也许能。也许不能。也许问题不在于零元交易本身,而在于某种更深层的东西——某种和陈述之的生与死无关的、城市本身的趋势。也许深圳——也许所有城市——早晚都会走到那一步,而陈述之只是一个提前看到了终点的人。

她深吸了一口气,打开了瞰远科技的服务器终端。

她找到了陈述之的cron job。它就在那里,像一个固执的幽灵,每隔越来越短的时间就被唤醒一次,执行着它被创造出来的使命:向城市的计算中注入一个零。

沈未央的手指悬在键盘上方。

她没有按下删除键。

她做了另一件事。

她修改了脚本。在calculate_next_interval函数的末尾,她加了一行代码:

# 将间隔限制在最低一周,防止正反馈失控
return max(calculated_interval, timedelta(weeks=1))

然后她保存了修改。

她没有关闭程序。她只是给了它一个边界。

一个”零”可以扰动城市的计算,但它不应该淹没它。陈述之在生命的最后阶段失去了对边界的控制——也许是因为他太接近真相了,也许是因为他已经没有时间去思考”该不该”的问题。但沈未央还有时间。

她不是陈述之。她不想成为陈述之。她只是一个数据分析师,一个深夜加班时偶然发现异常值的普通人。她不打算拯救城市,也不打算揭开什么终极真相。她只想让那个失控的递归过程慢下来——慢到有人来得及理解它。

九、正常的一天

周一早上,沈未央像往常一样到瞰远科技上班。

电梯里遇到了运营部的刘姐,跟她抱怨周末南山区的交通管制。茶水间的咖啡机换了一种新豆子,味道偏酸。组长在晨会上分配了本周的任务:一个新的风控模型,截止日期下周五。沈未央点头,记在了笔记本上。

一切正常。

午休的时候她去楼下走了走。科技园的绿化带里有人在遛狗,一只金毛,毛色在阳光下像铜。她蹲下来摸了摸狗的头,狗主人笑了笑。

“你也在这一带上班?“狗主人问。

“嗯。”

“哪个公司的?”

“瞰远科技。”

狗主人想了想,“做数据分析的那个?”

“对。”

“挺厉害的。“狗主人说,语气里是那种深圳人特有的客套——不远不近,恰到好处。

沈未央笑了笑,站起来,继续走。

她走到科技园的边缘,那里有一条小河——深圳的河很多,大部分是人工的,这条也不例外。河水不清澈,但也不脏,在正午的阳光下呈现出一种含糊的绿色。岸边种了几棵榕树,气根垂到水面上,像手指试探水温。

沈未央站在河边,看着水面。

水面很平,映出天空、榕树、对面的建筑。然后一阵微风吹过,水面起了涟漪,所有的倒影都碎了。几秒钟后,水面恢复平静,倒影重新出现——但仔细看,它们和之前并不完全一样。榕树的位置偏了半厘米,建筑的轮廓多了一个锯齿。

镜像。但不是完美的镜像。

她突然想到了陈述之在日志里写的一句话,在2025年9月的那篇里,距离他去世只有两个月:

我越来越觉得,“第三十九种计算”不是一个数学问题。它是一个关于人的问题。城市的计算为什么会收敛?因为人的行为模式会收敛。我们以为自己每天都在做新的选择,但大部分时候我们只是在重复昨天的选择,然后给它起一个新名字。

镜像事件的本质,也许是城市的计算在告诉我们:你们活成了自己的镜像。今天的你和昨天的你,今年的你和去年的你,在数据的尺度上,几乎一模一样。

如果这是真的,那么打破镜像对称的唯一方式,就是做一件真正不同的事情。一件你的历史数据无法预测的事情。

一件算法无法计算的事情。

一件算法无法计算的事情。

沈未央看着河面,看着那些不完美的倒影。风又来了,涟漪又碎了。

她掏出手机,打开了那个互联网金融平台的APP。她的个人账户就在那里,和她三年前注册时一样,余额几百块钱,从来没有大额交易。APP的首页推荐了几款理财产品,她从来都不看——那些推荐是基于她的用户画像生成的,而她的用户画像描述的是一个”低风险偏好、低收入水平、低活跃度”的用户。

算法认为她会继续做一个低风险偏好、低收入水平、低活跃度的人。

她把手机收了起来。

然后她做了一件很小的事——一件她的历史数据绝对无法预测的事。

她脱了鞋。

在深圳科技园的正午,在一条人工小河的岸边,沈未央脱掉了她的运动鞋和袜子,把脚伸进了水里。

水是凉的,比她预想的要凉。河底的泥软软的,脚趾陷进去的时候有一种说不出的舒服。几条小鱼从她脚边游过,银色的身体在阳光下一闪。

她笑了。

不是为了什么深刻的原因。只是因为舒服。只是因为这是她很久很久没有做过的事情。只是因为——

这个瞬间不在任何算法的计算范围之内。

十、零的意义

三个月后。

沈未央仍然在瞰远科技工作。仍然做数据分析,仍然加班,仍然在深夜面对屏幕上的数据海。但她开始养成了一些新习惯:午休的时候去河边走走,偶尔脱鞋踩踩水;周末不再窝在家里刷新闻,而是去深圳湾公园骑自行车;上周她还报了一个陶艺课,第一次上课就弄了一手泥,做出来的杯子歪歪斜斜的,但她很满意。

陈述之的零元交易程序仍在运行——每周一次,不多不少。镜像事件的频率从最高峰的每天十余次降到了每周两三次,仍然高于陈述之启动程序之前的水平,但已经不再指数增长。

那条曲线被压平了。

沈未央没有告诉任何人她做了什么。她只是在每周五的固定时间检查一下程序的状态,确认它正常运行,然后回到自己的工作中。这就像给一株植物浇水——你不需要向全世界宣布你浇了水,你只需要在周五看一眼土壤是不是湿的。

有一天晚上加班,她翻到了陈述之2025年6月的一篇日志。那是她之前跳过没读的部分,因为文件名和其他日志不一样——不是日期格式,而是叫做zero.md

零是什么?

在数学里,零是一个数字。在金融里,零是一个无效的操作。在编程里,零是一个布尔值False。

但在城市计算里,零是唯一一种不会改变系统总量、但会让系统知道”这里有一个操作”的信号。它是一种纯粹的”存在声明”——我来了,我不增加什么也不减少什么,但我来过了这个事实本身,就是信息。

我想,也许人的生活也是这样。大部分时候我们都在增增减减:赚钱、花钱、增重、减重、加好友、删好友。我们的生活在数据层上是一条起伏的曲线。但真正重要的那些瞬间——那些定义了我们是谁的瞬间——它们不增不减。它们只是发生了。

它们是零。

一个零不会改变任何东西。但如果你在正确的时间点注入一个零,它就像一颗种子,会在城市的计算中生根发芽,长出一个新的分支。

我不确定这是科学的语言。也许我在变得不科学。但我不在乎了。数据告诉我的东西,比任何理论都多。而数据告诉我的是:城市的计算不是一个方程式。它是一首歌。

而每一个人,每一个脚步,每一次心跳,每一个零——都是这首歌里的一个音符。

沈未央读完了这段文字,关掉了文件。

窗外的深圳已经彻底黑了。城市的灯光铺展开来,像一片倒映在地上的星河。远处有飞机的灯光在移动,缓慢地,在夜空中画出一条看不见的线。

她打开了终端,看了一眼cron job的执行日志。最新一条记录的时间戳是:2026-08-14 17:00:00。星期五。零元。正常。

她关上了电脑,拿起包,走出了办公室。

走廊里的感应灯一盏接一盏地亮起来,又一盏接一盏地在她身后熄灭。

尾声

深圳,2026年8月16日,星期日。

清晨六点,南山区科技园的人工河边,一个穿着运动服的中年男人在晨跑。他跑过河边的时候,注意到岸边的石头上放着一双运动鞋,鞋码不大,看起来是女鞋。他四下看了看,没有人在附近。

他摇了摇头,继续跑。

一公里外,沈未央正坐在河的另一段岸边,光着脚,看着水面。

今天的河面很安静,几乎看不到涟漪。水面像一面镜子,映出天空、河岸、远处的高楼。

但如果你仔细看——非常仔细地看——你会发现倒影和实物之间有一点点偏差。很小的偏差,也许只有一两个像素的距离。就像一面镜子在反射的时候偷偷做了一个决定,把世界改变了一丁点。

城市的计算在继续。零元交易在继续。镜像事件在继续。一切都在继续。

而沈未央坐在河边,脚趾间夹着河泥,看着那个不完美的倒影,什么也没有想。

她只是在这里。

一个零。

不增不减。


(全文完)