第十六章 什么是”感知通道禁闭”

这一章不讲义、不列条,全程是墨叔和你的对话。墨叔是那种在机房里泡了二十年的老兵架构师,说话喜欢绕着弯子把你逼到墙角;你是十年 Go 后端,不是捧哏,该顶就顶。


墨叔:先别翻页。我问你一个特别朴素、幼儿园水平的问题——你信”眼见为实”吗?

你:这还用问?我亲眼看见的东西,还能有假?

墨叔:好。那你现在看得见你头顶上飘着的 WiFi 信号吗?

你:看不……行吧,我知道你要说什么。看不见不等于不存在。

墨叔:这只是热身,我要推得更狠。你先自己估一下:你眼睛能接收的光,占整个电磁波谱的多大比例?

你:可见光只是一小段,这个我有点印象。红外、紫外都在外面。

墨叔:“一小段”三个字太客气了。整个电磁波谱,从波长按千米算的无线电波,到微波、红外、可见光、紫外、X 射线,一直到伽马射线,横跨几十个数量级。你的通道卡在 380 到 780 纳米之间,中间极窄的一条缝。你以为你”看见了世界”,其实你只看见了世界恰好落进这条缝里的那一点投影。

你:几十个数量级里的一条缝……这么算下来,我这双眼睛是不是接近于瞎?

墨叔:从”信息完备”的角度看,跟瞎差不多。而且不只是眼睛。你的耳朵大概只覆盖 20Hz 到 20000Hz。蝙蝠拿上万赫兹的超声波在你头顶导航,你听不见;大象和鲸用低于 20Hz 的次声波跨几十公里对话,你也听不见。你坐在一间你觉得”很安静”的屋子里,可能正有一堆信号从你身体里穿过去,你的接收器一个都没解出来。

你:所以”安静”这个词,本身就是我这台接收器的输出,不是世界的状态。

墨叔:说到点子上了。嗅觉和味觉更窄,而且它们压根不是通用化学分析仪,它们高度定制,只回答三个问题:能不能吃、有没有毒、是不是配偶。触觉呢,只能感知接触面上的压力、温度和疼,磁场、电场、电离辐射,一概不采。你被泡在辐射里都可以毫无感觉地站着聊天,这事你想过吗?

你:想过,但没往这个方向想。这么一说,我每一条感官都是一个有严格频带限制的滤波器。

墨叔:王东岳给这件事起了个很冷的名字:感知通道禁闭。你的认知被死死关在这几条生物通道的频带里,像一台只焊死了几个频道的收音机,却自信地宣布”我已经听到了全部广播”。注意,这不是你马虎,是硬件规格。你改不了,就像你改不了一块网卡只支持它支持的那几个协议。

你:但别的动物开的缝不一样吧?

墨叔:正是这一点最要命。蜜蜂能看见紫外偏振,靠它在阴天导航;很多鸟类和爬行动物有四种视锥细胞,多出一种紫外通道,它们眼里的世界比你的鲜艳得多;蛇有颊窝器,能感知红外热辐射,在漆黑里”看”到温血猎物的热像;鲨鱼有罗伦瓮,能感知极微弱的电场,在泥沙下面定位一颗跳动的心脏;连植物都在用你完全采不到的化学和电信号维度互通消息。

你:所以每个物种都只开了自己活命需要的那几条缝。

墨叔:这句话值钱,你自己说出来的。你不是”全知观察者”,你是”被生态位裁剪过的、规格固定的接收器”。你作为热带草原上裸猿的后代,开的是”可见光 + 可听声 + 基础化学 + 触觉”这几条够你找果子、躲狮子、辨同伴的缝。其余频段,对你这个物种而言,等于不存在。你的”世界”,从来只是”对你这个物种有意义的那部分世界”。

你:这个”等于不存在”,听着有点刺耳。

墨叔:它就该刺耳。程序员对这事本该最敏感,因为你们有个现成的定理:奈奎斯特。采样率必须高于信号最高频率的两倍,否则混叠失真、信息直接丢。你的感官是采样率极低的传感器,而在红外、紫外、超声、次声、电场、磁场这些维度上,你的采样率是零。零采样率意味着什么?意味着那些维度上的信号不是”模糊”,是”根本没进来过”。

你:混叠这事我还真被坑过。我们的指标采集间隔是六十秒,有一次接口每隔几秒抖一次尖刺,每次两百毫秒,在六十秒的聚合里被平均成一条平的线。图上什么都没有,用户那边已经在骂了。

墨叔:这就是最漂亮的活体案例。你的监控在那个频率上的采样率不够,于是那段真实信号不是”看起来小”,是被折叠、被抹平、干脆变成了另一个东西——这正是混叠的定义。注意这里的哲学味道:那道尖刺客观存在,你的仪表盘客观地显示”无异常”,两句话同时为真,因为它们说的是两个不同的世界——一个是世界,一个是你的采样输出。

你:所以我后来加了 P99.9 和滑动窗口最大值。

墨叔:你干的事,翻译成这一章的语言就是:你给系统外接了一条新的感知通道,把原来落在禁闭外的那一段频率拉进了禁闭内。你不是”看得更仔细了”,你是”多开了一条缝”。这两句话的区别,是这一章的全部要点。


你先答:

墨叔:那我把这事拽到你工位上。一个工程师说”我本地能跑就是对的”,另一个说”日志里没报错就是没故障”——他们犯的错,和”我看不见红外所以红外不存在”,是一回事吗?先自己想三十秒,别急着看下面。

你:直觉上像,但我说不清像在哪。

我的参考答案(供你对照): 是同一类错,而且是同一个句式。三句话都是把”我的通道没收到”偷换成”信号不存在”。你的本地机器是一个通道:它的内核版本、时区、文件系统、时钟、网络延迟分布,全是一套特定规格;生产环境是另一套规格,那套规格上的维度你压根没采。你的日志同样是一个通道:它只记录了你当初想到要打的那几行,你没想到的失效模式,在日志里连一个字节都不会出现。SRE 的第一课就是这个——可观测性被你的埋点规格限死了;你采不到的维度上的故障,对你”不存在”,直到它把你干翻的那一刻,它才通过”事故”这条极其昂贵的通道,第一次进入你的感知。


墨叔:但老哥,接下来这个点是反直觉的,你得听清:这条窄缝不是设计缺陷,是生存优化。

你:优化?瞎了大半个世界还叫优化?

墨叔:你换个位置想。假如你的感官是全频段、全息的,会发生什么?你每一秒都会被海量无关信号淹没——四面八方的电磁噪声、地壳的次声、空气里无数分子的碰撞、每个人身上的静电场。你的大脑要先从这一坨里筛出”哪颗果子熟了""哪个方向有大猫”,等你筛完,你已经被吃了。

你:所以演化替我做了特征选择。

墨叔:对,而且是极其吝啬的特征选择:只留对存活最关键的那几条通道,其余一律不采。换来的是求生必需的两样东西——实时性和低功耗。你的大脑本来就烧掉全身两成的能量,再宽的带宽根本供不起。

你:这我太熟了。我不会让监控系统采集每一个 CPU 周期,我会聚合、降采样、只留关键指标,否则存储和算力先崩的是我自己。全量 trace 我也只在排障窗口开,平时按比例采样。

墨叔:一模一样。工程和演化用了同一招:用”窄”换”快”和”省”。所以感知禁闭的第一课不是”我好可怜我被关起来了”,而是:窄缝既是恩赐也是牢笼,你既靠它活,也被它困。这笔账对物种是划算的;但对一个想追究真实、想建可靠系统的人来说,这笔账要被反复清算。

你:那空间维度我认了。还有别的维度吗?

墨叔:有,时间维度,而且更容易被忽略。你的视觉暂留大约二十四分之一秒,所以你眼里的世界本质是一部帧率二十四的动画片。子弹穿过苹果的过程、水滴溅起王冠的瞬间、分子的布朗运动——这些事在比你的帧间隔更细的粒度上发生完了,对你只剩一团模糊。你的时间采样率也低得可怜。

你:高速相机就是给我外接了一个高帧率传感器。

墨叔:对,热像仪是外接更宽的频段,高速相机是外接更高的帧率,示波器是外接更细的电信号时间轴。科学仪器的本质,就是给这台低带宽接收器外挂高带宽传感器,再把数据降维、翻译回你那条可见光缝里。但你记住一句话:外接传感器仍然是模型化翻译,不是让你直接体验真实。你永远在禁闭里,只是禁闭被代偿得越来越宽。

你:这话让我想到可观测性三支柱。日志、指标、链路,其实就是我给系统外接的三种感官。

墨叔:而且你选了哪三种、漏了哪几种,就直接划定了这个系统的禁闭边界。很多人以为”上了 APM 就全看见了”,可 APM 只采了你配置的那些 span;业务语义层的错——比如金额算对了但算的是错的那个用户——它照样全盲。禁闭不可破,只能不断拓维。

你:好,第一道墙我服了。你刚才说”这只是第一道”?

墨叔:第二道更狠。就算信号老老实实进了你的眼睛,它还得过你大脑的生化处理。而这一步,已经不是”如实成像”,是”按生存需要重新建构”。

你:建构?这词有点大。

墨叔:那我们拆开看。你”看见”一个苹果,不是光线直接印在你的意识里。是视网膜把光子转成电信号,经视神经送到视觉皮层,皮层做边缘检测、运动检测、颜色常量化、面孔识别、深度重建……最后在你的意识里”合成”出一个统一的、立体的、带颜色的苹果。中间任何一环出问题,你看到的就变样:色觉缺陷者看到的苹果是另一种颜色,视觉皮层特定区域受损的人看到的是碎片,甚至能看见运动却认不出物体。

你:所以”苹果”这个体验,是渲染出来的产物。

墨叔:你的视觉系统就是一个跑在肉上的实时 3D 渲染引擎。输入是零散的光电脉冲,输出是你意识里那幅画面。而且这个引擎不老实,它会主动补全,也会主动扭曲。

你:等一下,我想抠一个细节。颜色算不算真实的?红苹果的”红”,总归是它自己的属性吧?

墨叔:不算。物体上没有红,只有一段被反射出来的波长分布。“红”是你的三种视锥细胞的响应比例,被大脑映射成的一个内部标签。证据很硬:同一个苹果,在钨丝灯下和在阴天窗边,反射的光谱差别巨大,可你两次都判它是”红的”——这叫颜色常量化,是你的引擎在做白平衡。你不是在读取颜色,你是在解一道方程,然后把解出来的结果当成”物体的属性”。

你:那疼呢?疼总在伤口里吧?

墨叔:疼不在伤口里,疼在你的大脑里。伤口传上来的只是一串电脉冲,疼是大脑评估之后生成的输出。所以幻肢疼这种事才可能存在——腿都没了,疼还在,因为生成疼的那个模块还在。你把这两个例子摆一起就明白了:你以为自己在读世界的属性,其实你在读自己模型的输出字段。红、疼、甜、响,全是输出字段名,不是世界的字段名。

你:补全我知道一个——盲点?

墨叔:对。视神经出口那块没有感光细胞,你两只眼睛各有一个洞。可你活了三十多年,从来没看见世界上有洞,因为大脑拿周围的信息把它糊上了。你盯着快速旋转的轮子会觉得它在倒转,那是采样帧率和处理延迟凑出来的错觉。这些编辑不为求真,只为够用——帮你更快认出食物、天敌、同伴,活下来。

你:等等,这个我真有个特别对味的类比。前端拿到服务端的 JSON——已经被序列化过、裁剪过、脱敏过了——然后框架再把它渲染成屏幕上的界面。中间还有缓存、还有乐观更新、数据没到先画个骨架屏。我”看到”的界面,根本不是业务本身,是两层转换后的投影。

墨叔:(点头)你这个类比比教科书到位。你的感官就是一个自带缓存、自带补全、自带乐观渲染的”认知客户端”;你以为的”真实世界”,是它渲染出来的界面,不是服务端那个本体。康德管那个本体叫物自体,你永远拿不到它的返回值。

你:可我总觉得,补全归补全,好歹是”够用”的吧?

墨叔:够用,非常够用。但现代神经科学把这套机制讲得比”补全”更绝。大脑不是被动接收信号,它是主动预测世界:它先根据经验生成一份”世界应该长什么样”的预测——也就是先验——再拿感官信号去校验这份预测,然后只把”预测和信号不符的那部分残差”往上层传,用来修正模型。这叫预测编码。

你:只传残差……这不就是增量同步吗?

墨叔:本质上就是。带宽有限,所以只传 diff。可它的推论很残酷:你意识里那个”看见”,大部分是大脑用记忆和经验猜出来的,只有一小部分来自当下的真实信号。你在楼道里认出一个熟人,脸上真正被你采到的像素少得可怜,剩下的全是模型补的。

你:所以我经验到的是”模型 + 残差”,而且模型占大头。

墨叔:对。你以为你在观察世界,其实你在用模型生成世界,再拿信号去微调模型。这就是王东岳说的生化禁闭:你的感知不是世界的镜像,是你的生物脑为了生存,用一套生化算法建模出来的世界投影。物理禁闭限的是”采什么”,生化禁闭限的是”怎么采、采成什么样”。两层叠加,你和世界之间隔了整整一条生物渲染管线。


又停一下:

墨叔:把预测编码搬进工程,你其实天天在对抗同一套机制。你做的异常检测系统,也是”基线预测 + 残差告警”:先学”正常流量长什么样”,再把偏离基线的部分当异常报出来。跟人脑一个路子。那你说,如果它的基线先验全部来自太平时期,一只黑天鹅飞过来,会被当成什么?

你:……会被当成噪声吧。

我的参考答案(供你对照): 会被当成”残差”,然后被平滑掉、被降级、被当成抖动忽略。更糟的一层是”脑补”:AIOps 用历史数据去补全缺失指标,和大脑用记忆补全盲点,犯的可能是同一类错——它补进去的是”它以为该有的值”,不是”真实发生的值”。而下游所有基于这份补全数据做的判断,全都建在一段虚构上。所以结论很硬:任何基于先验的观测系统,都内置了”看不见先验之外的真实”这个盲区,必须配一组无先验的探针来兜底——原始日志、全量 trace、裸指标、甚至一条不聪明的阈值告警。你最信的那条”智能告警”,有时候只是你模型的脑补;而你最看不上的那条傻阈值,可能是黑天鹅唯一能进来的门。


你:物理禁闭、生化禁闭,两层。还有第三层吗?

墨叔:有一层半,而且它是这套书里贯穿好几章的那条线——符号的禁闭。你采到的、渲染出来的东西,最后还得装进语言和概念才能被你自己思考、被别人接收。而语言这一层同样是有规格的:你的母语有哪些词、这些词把世界切成哪些块,直接决定了你能想清楚哪些事。王东岳一直强调文字符号塑造思维方式,讲的就是这一层。

你:这我有体感。我团队里的人一开始只有”卡了”这个词,什么都叫卡了;后来学会区分”排队延迟""GC 停顿""锁等待""上游超时”,同一批现象立刻被切成四类,排障速度翻倍。

墨叔:漂亮。你不是变聪明了,你是给自己的概念系统多开了三条缝。反过来说,你词汇表里没有的那种失效模式,你连描述它的能力都没有,更别说去查它——它会以”玄学问题""偶发抖动”的名义活很多年。所以三层加起来:物理层限你采什么,生化层限你渲染成什么,符号层限你能想清楚什么。你和世界之间,隔着三道翻译。

墨叔:讲到这,你八成有点绝望了:几层禁闭叠着,人类岂不是永远蹲在井里?

你:是啊。那科学还有什么用?它不是号称在逼近真理吗?

墨叔:王东岳的回答是:是,永远在井里;但也正是这个困境逼出了科学。禁闭的另一面,叫代偿。我们够不着红外,就用”红外模型”造热像仪,把红外强度映射成你可见的颜色梯度;我们听不见超声,就让声呐把回波转成图像;我们摸不到磁场,就让霍尔传感器把磁场变成一个读数;我们看不见原子,但薛定谔方程能精确预测原子的行为,我们据此造出了你现在用的这颗芯片。

你:可这些都没让我”真的看见”红外啊。热像仪给我的是一张假色图。

墨叔:关键就在这里,你抓住了本章最重要的一句话:科学没有打破禁闭,科学只是在禁闭内用模型代偿了禁闭。你永远看不见红外本身,你只是造了一套”把禁闭外的信号翻译进禁闭内可感维度”的符号系统。热像仪没让你长出蛇的颊窝,它只是做了一次单位换算和一次调色。

你:那我凭什么相信红外真的存在?

墨叔:你不是靠”看见”相信的,你是靠”模型精确预测”相信的。麦克斯韦方程组精确预测了你天线上收到的每一点信号、你微波炉里水分子的每一次翻转、你手机基站的每一次握手。霍金把这套立场叫”依赖模型的实在论”,一句话总结就是”模型即实在”。科学从头到尾没声称抵达真实,它只提供”在禁闭内足够好用、能精确预测”的模型。

你:那有没有那种极端例子?纯靠模型硬撑,感官一点都插不上手的。

墨叔:多得是,而且越现代越极端。引力波:它到达地球时引起的长度变化,量级小到比一个质子直径还小几个数量级。你不可能”感觉”到它,甚至没有任何一条生物通道跟它有半点接口。人类是先用广义相对论算出”它应该存在、应该长这样、频率应该在这个区间”,然后花几十年造出四公里长的干涉仪,专门去接那个理论预言的波形。二〇一五年真接到了,波形和理论算出来的曲线几乎重合。

你:这等于是先画好了答案,再去世界里对答案。

墨叔:而中微子更狠。它几乎不跟任何东西作用,每秒有上万亿颗穿过你的身体,你一无所知。为了”看见”它,人类把探测器埋到地下几千米,或者干脆用一整座南极冰盖当靶子,靠捕捉极偶然的一次相互作用产生的微光来倒推。你注意这里的结构:从头到尾,你的感官只做了最后一步——看一眼屏幕上的曲线。中间所有的”看见”,全是符号系统替你完成的。

你:所以现代科学的”看见”,基本等于”数学替我看了,然后把结果打印成我能看的样子”。

墨叔:这句话你可以直接抄进笔记本。而且这恰好解释了一个现象:为什么越往后的科学越难懂、越像天书。不是科学家爱装神秘,是他们代偿到的那些维度,跟你的可见光缝之间已经隔了七八层翻译,每一层都得用符号来搭。你抱怨”量子力学不讲人话”,本质上是在抱怨”你的禁闭太窄”。

你:那科学的进步呢?不是越来越接近真理?

墨叔:王东岳恰恰说反。科学的进步,是人类用越来越复杂的模型,把禁闭越代偿越宽——宽到你自己都想象不出模型在说什么,只能信符号。你看这条链:牛顿力学在你这个物种的宏观低速禁闭内完美代偿,你扔石头、造桥、发卫星全够;它露馅在两个极端,极高速和极强引力。相对论把禁闭拓宽到那两个尺度,代价是数学复杂度暴涨、直觉彻底失效——你根本”想象”不出弯曲时空,你只能推符号。可相对论又在极小尺度露馅。量子力学再把禁闭拓宽到微观,代价是”实在性”这个概念本身被动摇:叠加、纠缠、测不准。

你:每一次代偿都更复杂、更反直觉、更依赖符号。

墨叔:这就是”递弱代偿”在认识论上的样子:越晚出的代偿越强,同时越脆弱——因为它越依赖你驾驭符号的能力——也离可感真实越远。你今天用 GPS,是因为卫星上的钟得做相对论修正,牛顿模型的精度在那个尺度不够用了。你手里那部手机,靠的是三层禁闭外的符号系统联合供养。

你:等等,你这条链我越听越熟。我做架构走的是同一条路。

墨叔:说下去。

你:单体应用在团队小、业务窄的时候完美代偿,它露馅在组织规模和耦合上;微服务把禁闭拓宽到多团队并行开发,代偿了单体的盲区,代价是分布式复杂度、运维黑洞、调试地狱;然后微服务又在一致性和可观测性上露馅,我们再加服务网格、再加全链路追踪、再加混沌工程——每一层都更复杂、更反直觉、更依赖人。

墨叔:所以你以为你在”进化架构”,王东岳会说你在”递弱代偿”。你的系统越晚出越复杂,不是因为你更强了,是因为你底下那道禁闭(单体扛不住的规模)越深,逼你长出更复杂的代偿来。

你:那我是不是该退回单体?

墨叔:别急着跳结论,这是全章最容易被误读的地方。代偿基本不可逆——你的业务规模不会因为你怀旧就缩回去。清醒的架构师认的是另一件事:每一层代偿都会引入新的盲区。所以别神话微服务,别神话云原生,别神话任何一个当下最时髦的词。它们只是当下这一层代偿,下一道露馅已经在路上了,而且大概率露在你没埋点的那个维度上。

你:新盲区能不能举个具体的?

墨叔:你上服务网格,为的是把重试、熔断、加密、可观测性从业务代码里抽出来,这是实打实的代偿。但你同时凭空多出了一批全新的失效模式:边车自己挂了算谁的故障;证书到期导致所有服务之间互相不认,而这类故障在你原来的监控维度里根本没有对应指标;控制面下发了一份错配置,几百个实例同时改变行为,比一次代码上线的爆炸半径大得多。

你:这些故障,在单体时代压根不存在。

墨叔:它们不是”以前藏着”,是”以前不存在”——是你的代偿把它们造出来的。这就是递弱代偿最狠的一层意思:你每加一层来补上一道盲区,这层自己又长出一道新的盲区,而且新盲区通常更抽象、更难想象、更依赖你的符号能力去理解。你不是在消灭盲区,你是在把盲区往越来越高的抽象层上搬。

你:那我图什么?

墨叔:图能活着走到下一层。这就跟演化一个道理:脊椎动物长出复杂免疫系统,是为了扛住病原体,代价是自身免疫病这种”以前根本没有的病”。代偿从来不是免费的升级包,它是一笔用新脆弱换旧生存的交易。你签这笔合同的时候,至少要知道自己签的是什么。


最后一道,也是最要命的一道:

墨叔:把物理禁闭和生化禁闭合起来,会炸掉一个你从小信到大的信念——“客观真实是可以直接抵达的,科学正在逼近它”。王东岳、康德、霍金三个人从三个方向给出的是同一个版本:物自体永远不可达,你所有的”真实”都是禁闭内的模型。那我问你:这件事落到你做技术决策上,具体意味着什么?先自己答。

你:我大概能说出一半:别太自信。

我的参考答案(供你对照): 至少三件事。第一,别信”我本地能跑就是对的”——你本地只是你这台机器的禁闭视角,生产环境有一堆维度你根本没采到,包括你想不到的那些。第二,别信”这个方案是终极方案”——任何模型都有适用域,超出适用域就换,跟物理从牛顿换到相对论一个道理;你要做的不是”选对”,是”标清边界并留下换模型的接口”。第三,也是最能救人的一条:别等”绝对正确”才拍板。很多工程师卡在”我没法证明这个架构绝对正确,所以我不敢动”,这是把哲学上的不可能当成了工程上的义务。你本来就不可能证明真实,你只能证明”在当前可见的禁闭维度内,这个模型的预测和一致性都过关,边界我标清了,换模型的成本我算过了”。把”求真”的执念,换成”建好模型、标清边界、持续代偿”的节奏——这条能直接把你从”想不清所以不敢动”的内耗里拽出来。


你:所以”客观”这个词也得打引号?

墨叔:得打。你觉得”太阳从东边升起”是客观真理,可它依赖你的时空框架和你的观测位置;换个参照系,既没有”东”,也没有”升起”。科学讲的”客观”,实际含义是”在给定模型内,对所有禁闭内的观察者一致”——它是一致性,不是对物自体的命中。

你:这个我立刻能对上:所谓”客观测试通过”,是在给定的测试框架和输入分布内一致,不是证明了真实正确。

墨叔:对,而且这句话应该刻在每个人的显示器边框上。于是确定性让位给有效性:一个模型被接受,不是因为它”是真的”,是因为它”在适用域内代偿成功”。你和知识的关系也跟着变——你不再追问”这是不是终极真理”,你改问”这个模型在哪儿有效、边界在哪儿、失效的先兆是什么”。

你:那第三个后果呢?我猜是谦卑。

墨叔:是谦卑,但不是道德意义上的谦卑,是工程意义上的。感知禁闭最大的礼物,是让你从”我看到了真相”的傲慢里走出来,默认自己看到的只是可采维度里、被自己的渲染引擎编辑过的投影。这种谦卑立刻能兑换成三个具体动作:架构上留接口,探索上保怀疑,协作上容异见。

你:容异见这条,为什么也算?

墨叔:因为别人的禁闭跟你的不一样,他的可见光缝可能正好覆盖了你的盲区。你把这事拉到组织层面看会更清楚:一家公司里,CEO 的禁闭是战略和融资维度,一线工程师的禁闭是代码和故障维度,销售的禁闭是客户和现金流维度,各自都只采到一部分真实,而且各自都觉得自己看到了全局——这就是王东岳讲的遮蔽效应,每一种视角都自洽、都封闭、都以为自己是全景。

你:所以老板一个人说了算,和技术独裁,本质是同一个毛病。

墨叔:都是”只信单一禁闭视角”。但你注意,解法也不是民主投票——那会把一堆残缺视角平均成一个更残缺的东西。解法是让每种视角先显式声明”我采到了什么、我采不到什么”,再做融合。这在工程上有个现成的名字:多传感器融合。单传感器必盲,融合才能逼近。

你:那我系统里的禁闭,能不能也这么盘一遍?

墨叔:能,而且我建议你今天就盘。我给你数四道。第一道,可观测性的禁闭:你的系统只能观测你埋了点的维度,所谓”监控全绿”只是说你那几条可见光缝里没异常,真正的故障可能在你没采的那条——某个慢查询把连接池吃干、某个第三方依赖的尾延迟、某次缓存击穿的连锁。第二道,抽象的禁闭:ORM 让你看不见 SQL 的性能特征,直到慢查询爆发;微服务让你看不见跨服务的延迟累积,直到链路雪崩。抽象的”好用”恰恰就是它的”禁闭”——它替你屏蔽了复杂度,也顺手屏蔽了那部分复杂度里的故障信号。

你:所以我得定期扒抽象。explain analyze、火焰图、抓包。

墨叔:对,这就叫主动下钻,等于给自己临时外接一台热像仪。第三道,测试的禁闭:测试只覆盖你写的用例,而用例来自你对”可能失效”的想象,你的想象本身就被你的认知禁闭框住了。你测了正常流没测并发竞态,测了单机没测网络分区,测了 happy path 没测依赖超时的级联。所以生产故障永远来自你测试禁闭之外。第四道,决策的禁闭:团队依据它采到的信息做判断,而信息来自它的经验、它的监控、它读过的文章;市场上、学术界、竞品里,有大量它频带之外的信息。只信自己采到的,就会重复发明轮子,重蹈别人踩过的坑。

你:第四道我们真栽过。有一年我们花了四个月自研一套配置下发系统,上线半年后才知道,同类方案早有成熟实现,连我们踩的那三个坑都被人写在文档的”已知问题”里了。

墨叔:那四个月的成本,就是你们决策禁闭的账单。注意不是”你们笨”,是你们那台接收器当时的频带里没有那份文档——你们读的是自己习惯读的那几个源,开的会是自己人开的会。这跟”看不见红外”是同构的,只不过这次的红外是一份别人的复盘。

你:这四道听下来,感觉是一件事的四个切面。

墨叔:本来就是一件事,而且还有一句最容易被忽略的:你作为设计者,你自己的认知禁闭会原封不动地编译进你设计的系统。你采不到的维度,系统也不会采;你默认的先验,会变成系统的基线;你忽视的失效模式,系统天生就是盲的。系统的禁闭,是设计者禁闭的投影。

你:所以想拓宽系统的可观测性,得先拓宽我自己的。

墨叔:对。这一步绕不过去。所以最后我送你一个具体动作,你能明天就用。

你:什么动作?

墨叔:每次重大决策,先写一份”我的禁闭声明”。分两栏:左边写清这次我采了哪些信息——读了哪几份报告、依赖了我哪段经验、看了哪几块监控;右边明确写出我采不到哪些——没接触过的那个团队、没经历过的那类故障、没读过的反面资料、没算过的那笔成本。把”采不到的”显式列出来,等于承认盲区,也等于给自己贴了一张标签:这个结论的确定性,只在我采到的维度里成立。

你:然后呢?光承认盲区不解决问题。

墨叔:然后主动去采频带之外的:找持反对意见的人聊一小时,读你平时绝对不看的那个社区,专门去看同类项目的失败复盘而不是成功案例。这不是为了”兼听则明”那句漂亮话,是为了做多传感器融合,把你的禁闭拼宽一点。混沌工程是这套逻辑在系统层面的版本:你承认自己永远想不全故障模式,所以主动制造故障,用真实的破坏去逼出你采不到的维度。

你:给我举个填好的例子,我怕自己写成空话。

墨叔:就拿”要不要把订单库从单实例拆成分库”这件事。左栏:我采到的是近三个月的 QPS 曲线、慢查询排行、当前主库的磁盘增长率、两个熟悉这块的同事的口头意见。右栏:我采不到的是明年的业务形态(销售那边的预期我没听过原始版本,只听了转述)、拆分后跨库事务在真实并发下的表现(我没压过)、运维团队接手这套东西的意愿和人力(我没问)、以及”不拆能撑多久”的真实上限(我没做过极限压测)。

你:右栏一写出来,我就知道下一步该干什么了——去做那两个压测,去找销售和运维各聊半小时。

墨叔:这就是这份声明的全部价值。它不给你答案,它把你的盲区变成一张待办清单。顺便说一句,现在你天天用的那些大模型,也活在一模一样的禁闭里:它的频带就是训练语料,语料里没有的、或者被过滤掉的,它不是”不知道”,是”对它不存在”,于是它会用最流畅的语气给你补一个看起来合理的答案——这不就是盲点补全加预测编码吗?你嘲笑它幻觉的时候,最好顺手想一下自己昨天开会时那几句特别自信的话。

你:说白了,韧性就是对感知禁闭的工程代偿。

墨叔:一句话说完了我半小时的话。一个工程师真正成熟的标志,不是”他知道得更多”,而是”他清楚自己永远只知道可见光缝里那一点,并因此持续给自己的认知外接热像仪”。

你:那这套东西会不会滑到虚无主义?既然什么都是模型,那是不是怎么干都行?

墨叔:这是最后一个坑,我得给你填上。虚无主义说的是”既然没有真实,那什么都行”;王东岳的立场恰恰相反:既然只有模型,那你更要精心选模型、标清边界、勤做代偿。承认残缺,比假装全知更有力量,因为假装全知的人在盲区里会跑得飞快,而承认残缺的人会在盲区边上放一个哨兵。禁闭不可破,但代偿可升级——这是科学给人类的出路,也是你给系统的出路。

你:……这一章我好像比读讲义记得牢。因为中间被你问住了三回。

墨叔:(笑)那说明这个形式对你有用。哲学本来就是被问出来的,不是被讲完的。今晚回去做件小事:盯着一盏台灯看三十秒,然后提醒自己——我”看到”的这团光,只是电磁波谱里一条极窄缝里的信号,而且已经被我的视觉皮层渲染过一遍了。

你:然后带着这股清醒去上班。

墨叔:带着它去看你明天要拍的那个板。最后留你一个问题,不用现在答:你最近那次”我确定没问题”的判断,是真的采到了足够维度,还是你的大脑帮你把盲点补上了、让你看不见那里有个洞?