崩塌的结构 书架

第 14 章 / 共 15 章

第14章 · 崩塌的通用配方

前面十三章,我们像拆一台烧坏的机器一样,把两场大火拆开看了。特洛伊——传说中位于今天土耳其西北海岸的一座青铜时代城邦,荷马史诗里希腊联军围攻十年、最后靠木马破城的地方——它的陷落卡在神话和考古之间。洛阳——东汉的都城,公元190年被军阀董卓一把火烧掉、逼着朝廷迁都长安的地方——它的陷落有《后汉书》《三国志》这样的正史撑着。两件事隔着一千三百年、隔着半个地球,谁也没听说过谁。

但拆到最后,你会发现零件是一样的。这一章的任务,就是把这些零件摆到桌面上,拼成一张清单。

说白了:前面是"这两座城怎么倒的",这一章是"任何一个复杂系统要倒,通常都得凑齐哪几样"。像事故报告最后那页——不是讲故事,是列故障项。

先说清楚:这是"配方",不是"诅咒"

我要先挡住一个误会。把崩塌讲成一张清单,不是说"凑齐这几条就必倒、缺一条就没事"。真实系统没这么听话。这更像做菜的配方——不是保证你一定能做出这道菜,而是告诉你这道菜通常靠哪几味料。少一味,味道就不对;全齐了,火候一到就成。

崩塌也是。下面五条,每一条单独出现,系统多半还能扛。真正致命的是它们同时在场、而且互相喂饭:一条恶化会让另一条更容易恶化。工程师对这种情况有个词,叫正反馈——不是"表扬"的意思,而是"结果反过来推动原因,越滚越大",像话筒离音箱太近发出的那声尖啸。五条配料一旦进入正反馈,几小时内就能把十年的秩序烧成灰。

配料一:过度集中

第一味料,是把太多东西压在一个点上。

工程上叫单点故障(single point of failure)——整个系统里有那么一个零件,它一坏,全盘停摆,没有备用件顶上。一根保险丝烧了整栋楼黑灯,就是单点故障。

洛阳就是东汉的那根保险丝。协调全国的政令、皇帝这个"正统符号"、几百年积累的财富和档案、以及"天下的中心在这里"的共识——全压在这一座城、这一个天子身上。所以董卓不需要征服全国,他只要控制住洛阳和皇帝,就等于一只手掐住了整个系统的总闸。特洛伊那一侧,传说里也是同一个逻辑:城破,则一国的抵抗、财富、王室血脉一夜清零,没有第二座城能接手。

集中省成本,但集中也把所有鸡蛋放进了一个篮子。平时它高效——一个中心发号施令,比一百个中心各说各话快得多。可一旦这个中心被拿下,你没有 plan B。

配料二:信任无验证

第二味料,是信任省掉了检查这一步——而省掉的那一步,正好是攻击者要钻的洞。

任何系统能高效运转,都靠信任省下大量验证成本。你不会每次进城门都被从头搜到脚,守卫认得你、或者认得你的令牌,就放你过。这很聪明,因为逐一核验太慢、太贵。但信任同时是最大的攻击面——就是系统上所有可能被攻击的入口的总和。你信任谁,谁就能不经检查地走进你的核心。

木马就是冲着这个洞来的。特洛伊木马在传说里不是攻城器械,是一次骗局:希腊人假装撤退,留下一只巨大的木马,特洛伊人把它当战利品、亲手拖进城,夜里藏在里面的士兵爬出来开了城门。攻击者根本没打墙——他让守方相信这东西"安全、该放进来",然后守方自己把墙拆了。

今天你收到一封看似来自公司IT部的邮件,点了链接、输了密码——一模一样的套路。攻击者不砸防火墙,他骗你替他开门。两千多年,漏洞没变。

董卓那一侧,虽然史实和木马故事很不同,但漏洞是同一个。据《后汉书》《三国志》,外戚何进(皇帝的舅舅、掌兵权的大将军)为了铲除宫里的宦官,召边将董卓带兵进京助阵。董卓是被"请"进洛阳的——他走的是正门,凭的是"我方阵营"这层信任。等他进了城,谁也没法再把他请出去。信任被反向利用:不是被攻破,是被借用。

配料三:合法性透支

第三味料,是"谁说了算"这件事已经没人真信了。

一个政权凭什么让千万人服从?靠的不是每个角落都站着士兵,而是合法性——大家普遍相信"这个统治是该被服从的"。而这种相信有个微妙的结构:我服从,一半是因为我信,另一半是因为我觉得别人也信、也会服从。它是一种共识协议——大家都遵守同一套规矩,前提是大家都相信别人也会遵守。

汉朝的这套协议叫天命——通俗说就是"老天选定了这一家来当天子,所以该听他的"。问题在于,东汉末年这套说法已经被透支得差不多了:外戚和宦官轮流把持朝政、皇帝年幼或短命、天灾人祸不断。当"老天还站在汉室这边吗"成了公开可以问的问题,天子这个符号就开始悬空。

合法性像信用卡额度:平时看不见,但每一次滥用都在悄悄扣。等到董卓可以随意废立皇帝、诸侯可以各立山头,说明额度早就刷爆了——他们只是第一批公开承认"这钱是假的"的人。特洛伊那一侧,神话把秩序寄托在宙斯代表的神界安排上;史实层面我们无从核对当时人心里信不信,但可以肯定:当一座城连神都护不住它,"该服从谁"的共识也就跟着城墙一起塌了。

配料四:联盟脆弱

第四味料,是那些看起来在合作的人,其实只是暂时被同一个敌人绑在一起。

希腊联军也好,讨伐董卓的关东诸侯也好,都不是一个整体。它们是联盟——一群各有各盘算的人,为了一个共同目标临时对齐。工程上可以把每一方看成一个指向不同方向的力,联盟就是这些力恰好在某一刻凑到了同一个方向上。

让它们对齐的,几乎只有一样东西:共同的威胁。威胁在,大家勉强朝一个方向使劲;威胁一消失,或者一方发现"让别人去拼、我保存实力更划算",向量立刻各自散开。据史书记载,关东诸侯起兵讨董,声势浩大,可真到该出力时互相观望、各怀吞并之心,董卓火烧洛阳、退守长安之后,这个联盟很快就自己散了、转头彼此攻伐。神话里的希腊联军同样貌合神离,内部为战利品和荣誉争吵不断。

关键一句:合作不是因为大家是朋友,是因为有个共同的敌人。敌人一倒,黏合剂就干了。这不是道德问题,是结构问题——临时对齐的东西,本来就不牢。

配料五:无回滚设计

第五味料,也是最狠的一味:出了事,回不去。

好的系统会给自己留后路。程序员每天都在用回滚——把系统恢复到出错之前那个好的状态,像文档的撤销键、像游戏的存档。有回滚,一次事故就只是虚惊;没有回滚,一次事故就是终点。

火,恰恰是回滚的反义词。烧掉特洛伊、烧掉洛阳,都不只是破坏,而是删除——档案、宗庙、记事的连续性被一把火抹掉。这里藏着一个物理学的道理:,通俗说就是"混乱程度",而自然界里混乱只会自己增加,不会自己减少。一座城的秩序是几百年一点点垒起来的低混乱状态,烧掉只要一夜,而灰烬没法自己再拼回城墙。有些崩塌之所以不可逆,不是因为没人想修,而是修所需要的信息本身被烧没了。没有存档,就没有读档。

为什么这张清单在任何时代都成立

你可能会问:青铜时代的城邦和东汉的朝廷差了十万八千里,凭什么故障清单一样?

因为这五条都不是历史细节,而是"任何让很多人协同运转的复杂系统"共有的结构性弱点。只要你为了效率而集中、为了速度而信任、为了服从而依赖共识、为了对抗而结盟、为了轻装而不留备份——你就同时把这五个洞装了进来。它们是效率的影子:每一条让系统平时更好用的设计,都在崩塌那天变成它的死因。

所以你会在完全无关的地方反复看到同一张脸:一家把所有数据放在一个机房、员工随手点开钓鱼邮件、靠一位创始人的个人权威维系、和对手只是临时结盟、又没做异地备份的公司,和公元前1200年的特洛伊、公元190年的洛阳,得的是同一种病。时代、语言、技术全不同,故障模式却像指纹一样重合。

把这张清单记牢,下一章我们就反过来问一个更有用的问题:既然崩塌可以拆成五味料,那韧性——不那么容易倒的秩序——能不能照着反方向,一味一味地设计出来?

崩塌的结构 · 王建硕
面向对世界有好奇心的人 · 费曼式写法 · 由多个 AI 代理撰写与互相审校