第 24 章
消失的边界
机动特性增强系统这个名字,第一次以公共文件的形式进入世人视野,是在狮航610号班机事故的初步调查结论里。在那之前,它只活在波音公司的设计文档、适航认证材料,以及少数参与过审定的工程师头脑中。对将要坐进驾驶舱的人来说,它没有名字。
它后来的名字,是调查人员从飞行数据记录器的曲线里一点一点剥出来的。记录里没有直接刻上这个系统,只留下一串重复出现的安定面配平指令,一个劲儿地把机头往下推。飞行员在对面,一遍遍往回扯。这种对抗持续了十几分钟,最后停在海面之上。
各位,空难的账本上,有的页写的是金属疲劳,有的页写的是天气,有的页写的是人的判断。但2018年10月29日清晨和2019年3月10日早晨,两页相隔四个月的新账,笔划却落在了同一处:一款飞机型号,一套飞行控制逻辑,以及一个横亘在人与机器之间的信息盲区。
第一页,狮航610号班机。雅加达起飞,爬升,左侧迎角传感器随即给出一个错得离谱的值。
这架波音737 MAX的飞控计算机收到信号,认为机头抬得太高,即将失速。于是它开始按设计动作:命令水平安定面把机头压下去。飞行员感到飞机自己在低头上。他们拉杆。飞机抬头。五秒后,系统再压。再拉,再压,再拉。
接下来不是一次两次的对决,而是一场没有间歇的拉锯。后来打捞上来的飞行数据记录器,画出了一条反复折返的曲线。人向后拉,系统向前推。人再拉,系统再推。最后一次,系统赢了。飞机几乎垂直入海。机上189人全部遇难。
四个月后,第二页。埃塞俄比亚航空302号班机,从亚的斯亚贝巴起飞几分钟后坠毁。飞行数据记录器的曲线几乎是第一张图的翻版。起飞,爬升,同一个侧的迎角传感器出问题,同一个系统下压,同样的拉杆对抗,最后摔在埃塞俄比亚的田野上。157条生命。两起事故加在一起,346个人,没有幸存者。
这个时候,最该被追问的不是传感器的故障。传感器会坏,这是任何一个造过机器的人都明白的事。
真正要命的问题,藏在传感器失效之后发生的事里:为什么一个系统可以只认单侧的数据,就连续发出下压的指令?为什么飞行员面对一个还在使力的系统,却不知道它叫什么,不知道它下一步要做什么,更不知道自己在培训里为什么从未见过它?
答案不在坠机现场的残片里,而在三样不那么像证据的东西上:一本培训手册,一份认证授权文件,还有一条被商业叙事反复涂抹的边界线。这三样东西没有一件起火,没有一件冒烟,但它们把两个机组推到了同一个死角。
先说培训手册。狮航610事发前,波音737 MAX的飞行员培训手册和快速参考手册里,找不到机动特性增强系统的清晰说明。这个系统藏在飞行控制计算机里,能在特定条件下推动安定面,权限不小;但它几乎没有出现在驾驶员的必读材料中。
狮航的飞行员不是没看懂仪表,也不是没来得及反应。他们从受训第一天起,就没被完整告知过,飞机的自动系统可以在某个时刻绕过拉杆的直观反应,直接改变机头方向。这一点,材料只记到手册缺失为止。
但缺失本身,已经是一份证据。它说明设计者和审查者当时都接受了同一种判断:这套系统不需要被驾驶员充分知晓。
为什么要这样?接着追。因为波音公司把737 MAX当成一次同代衍生来卖。MAX不是白纸新造的型号,它站在五十多年737家族的平台上,换上了更大的发动机,位置更靠前,推力更大。这些改动改变了一部分气动特性,机动特性增强系统正是为了把这些变化补偿掉,让MAX操纵起来仍然像老的737。于是公司内部有一个反复出现的说法:MAX和上一代没有本质区别,飞行员不必为此接受昂贵的全动模拟机训练,读几小时差异课程就够了。
这句话听起来像技术判断,实际是一句商业账。假如新系统的名字和逻辑被一一写进手册,就必须培训;培训就要费用;费用高了,这款飞机在航空公司面前的竞争力就低。
因此,技术差异被压成了一句“无需额外培训”。这不是哪一个人拍板的恶念,而是一个项目在成本与交付压力下形成的共同选择。现实账算到最后,变成手册里的空白。第二样东西,是适航认证。
为什么空白能通过审查?这就得看美国联邦航空局和波音之间的委托授权安排。
航空业发展到这个阶段,任何一国的适航当局都拿不出足够人手,去逐行审查每一套飞控软件、每一块控制板。于是联邦航空局通过组织委托授权协议,把一部分认证审查任务,交还给波音自己的授权工程团队。制度设计者当时想的是:让最懂设计的人去审最细的活,再辅以抽查和监督,总比没人审强。
可这套安排放到737 MAX身上,就出了一个大问题:审查者与被审查者,都是波音的人。自我审查一旦成为常规路径,独立监督就只能在少数节点上起作用。机动特性增强系统的失效分析、单传感器输入的判断逻辑、飞行员的操作假设,都在这一条缺乏足够外部制衡的管道里通过了。
直到两架飞机坠毁之后,联邦航空局才公开承认,自己在MAX认证过程中没有足够深入地理解这套系统的实际操作后果。承认是来了,但来迟了。迟到的承认,写不进飞行数据记录器,更救不回那346个人。第三样东西,是“没有本质区别”划出来的边界。
这句话不是为了羞辱某家公司的宣传口径。它的后果要严重得多。正因为MAX被视为延续而非新机型,飞行员转换培训被压到了最低,适航认证的重点也沿着旧有构型铺开。
可MAX实在不是一个旧构型。它有新的发动机布局,有新的控制律,有那一套不得不存在的机动特性增强系统。技术已经变了,边界却还画在旧的地方。最后,这条边界被越过去,不是被某一架飞机越过去,而是被整套认证和培训制度一起越了过去。
现在回来看飞行数据记录器上的曲线,它不只是一场人与机器的打斗。它是设计选择、商业压力和认证漏洞叠加之后的结果。每一次安定面配平指令的出现,都对应着某一处制度边界没有守住;每一次飞行员的回拉,都是人试图在一个信息不完整的驾驶舱里把控制权抢回来。
这种试图,第一次在狮航持续了十来分钟,以入水结束;第二次在埃塞俄比亚只持续了更短的时间,以撞地结束。
问题到此还没有问完。狮航610坠机之后,全世界已经知道MAX可能有问题。初步调查已指向这套系统的异常下压。
波音发出紧急通告,告诉飞行员遇到类似情况怎么切断配平。可是飞机没有被停飞。波音坚持,只要执行通告,MAX就能继续安全飞行。
也就是说,在第一架飞机入海之后,第二架飞机仍被允许带着同样的逻辑升空。埃塞俄比亚302的机组,正是带着这套继续飞行的方案坐进驾驶舱。他们试了,没有救回来。
直到第二场空难发生,全球停飞才从行业争论变成强制命令。停飞从2019年3月中旬开始,持续二十个月。
二十个月意味着什么?意味着全球最赚钱的单通道机型之一,从各航空公司的航班表上消失了将近两年。新飞机停在各处,停满西雅图周边的机场,停进沙漠仓库,停在本来应该起降航班的跑道上。
波音的账,航空公司的账,供应链的账,一层层垒上去,最终把这场危机推成航空史上最昂贵的一次安全事件。账面上是钱,制度上则是一次被迫的修正。二十个月后,波音交出了一套修改过的飞控逻辑,联邦航空局拿出了新的认证要求,全球主要监管者陆续给出复飞条件。
调查报告和后续审查催动的改革,至少在三处留下明确印迹:限制制造商自我认证的范围,压缩组织委托授权能覆盖的边界;关键飞行控制系统必须考虑冗余设计,不再允许一个传感器就能决定那么多;软件更新流程里,必须放进人为因素评估,不能只做代码功能的确认。
那个“无需额外培训”的卖点,到这个时候在制度上破产了。手册里补上了机动的说明,训练里加进了系统失效的处置,飞行员终于被告知,自己的驾驶舱里还坐着另一个会抢杆的角色。
但改革落下之后,更难受的问题浮了上来。这次不是737 MAX这一款飞机的问题了。因为机动特性增强系统不是世界上唯一一套飞控软件,737 MAX也不是世界上唯一一款把驾驶员蒙在系统逻辑之外的飞机。
当飞行安全进入大数据和人工智能时代,事故的样态已经变了。过去,调查队走到坠机现场,总能找到断裂的金属、烧穿的舱壁、变形的结构。那些物理痕迹会说话,会告诉人们火的温度有多高、撞击的角度有多低、疲劳的纹路走了多久。
可如今,证据可能只是一段被后续数据覆盖的日志,一条某一毫秒发出来的传感器信号,或者一个永远看不见、只存在于程序里的逻辑冲突。它没有残骸,没有温度,不冒烟,不烧焦任何东西。但它能在两分钟内,把一百多人从巡航的高度拖进海里。
这便是电池之火之后,航空安全碰到的那堵墙。锂电池的火灾至少还有温度、有烟、有烧熔的隔板,监管者能顺着火焰找到运输规则,再补上一套检测条件。
可代码的逻辑错误不会留下现场。它不烧货舱,却能在飞行控制计算机里重新划出一条看不见的界线,让飞机在爬升阶段突然进入一场无人预警的搏斗。物理的火被扑灭之后,另一场火已经在传感器与自动驾驶系统的耦合中烧起来了。
监管者面对代码的速度,永远慢于开发者。这里用不着太多理论。软件一行改完,几小时内就可以分发测试;认证一个修改,却要数星期、数月。飞行控制补丁可以从一个工程师的电脑里流进全球机队,但制度上的追认却要等事故、等报告、等听证会、等媒体追问。
狮航和埃塞俄比亚的曲线已经摆在那里,速度差就在其中。这个差距不会自动消失,只会随着自动化越深、数据链路越复杂,变得越发刺眼。
更深一层的矛盾也随之显影。自动化本来是为了减少人为失误而生的。它替飞行员承担重复操作,减轻工作负荷,把航路、高度和配平都管得稳稳当当。
可它也把另一种风险悄悄抬高:人在日常飞行中的手控机会变少,对飞机原始状态的感知变钝,而当系统真的出错时,留给人的反应时间又极其有限。更麻烦的是,系统接管的操作越多,人就越难察觉哪些边界已经被挪动。飞行员不知道系统在某一刻会替自己做什么,等到知道时,情形往往已经不可逆。
这不是说自动驾驶有原罪,而是说自动化越出色,人在极端情况下面临的牌局就越难打。责任该往哪里放?这成了两起坠机之后最棘手的命题。过去,把责任放到零件上、放到维护上、放到飞行员动作上,大家都能听懂。
飞行数据记录器里的曲线,如果把它放大到一秒一秒地看,远不是几笔简单的拉锯。狮航610的驾驶舱语音记录器后来显示,舱内的第一声疑问不是恐慌,而是迷惑。“我觉得飞行控制有问题。”机长在飞机爬升到几百英尺时说了这么一句。接下来的一分多钟里,两个人都在找问题。仪表没有失速报警,姿态显示正常,杆的位置也不曾松手。可飞机就是一次次往下降。系统不是猛拉,而是每隔五秒一次,精准得像上了闹钟。每一次,安定面配平角都在三秒内移动两度半左右。飞行员把手柄往回拖,配平角回到原位。过了五秒,系统再动。一次,两次,三次。谁也没有在受训材料里学到过,安定面会自己动得这么有节奏。
飞行数据里还有一层更具体的反复。安定面配平角从爬升段的第四个点上第一次下移,之后不断回到原位,接着又被推下去。每次下压的时间几乎一致,每次回拉的幅度也几乎一致。飞行员的驾驶杆输入和系统指令叠加成一条不断折返的折线,把飞机轨迹从上升弧线变成阶梯。这个阶梯不是向上登,而是向上一点再被压平,再向上一点再被压平。它记录了人机之间的一次拉锯,也记录了人类被排除在系统逻辑之外后的盲目挣扎。
为什么飞行员打不过电脑?因为那台电脑并不在做飞行员知道的事。飞行员以为自己握的是杆,实际上一套自动控制逻辑正在推动一整套安定面机构。飞行员拉杆改变的是升降舵在尾翼上的偏转,系统推动的是水平安定面的角度。两个装置在气动上能产生相似效果,但后者带来的力量让人越来越难拉。狮航最后几分钟里,升降舵上的载荷已经到了两个人加在一起都难以抗衡的程度。他们不是输给了电脑的反应速度,而是输给了一场对方一直知道规则、自己却不知道规则的比赛。
狮航610事发前,波音向全球的MAX运营商发出的差异培训,只有约两个小时的平板电脑课程。对从老737转来的飞行员来说,这已经是最接近“完整”的告知。课程里讲到了发动机尺寸变化、起落架高度增加、新的显示格式,但没有一处提到机动特性增强系统的触发条件、权限范围,也没有一处要求飞行员在地面模拟器里练习一次安定面失控时的脱开程序。原因并不复杂:如果差异培训里加进这样的模拟科目,许多航空公司就会要求全动模拟机训练,而全动模拟机的数量在MAX刚交付时远远跟不上,成本也会一层一层转嫁到买方头上。于是,知识边界顺着“差异培训”这个词收缩,一直收缩到驾驶员完全没有准备的地方。
更麻烦的是,飞行员的日常训练还在强化一种错觉:有什么不懂的,查快速参考手册。非正常情况在大部分老旧机型上都有一张卡、一个条目、一串记忆动作。安定面失控也有既有的程序,叫做“安定面失控——立即执行”。可这个程序被设计出来时,想象的是传统液压或机械故障,安定面只朝一个方向持续跑,一眼就能看出不对。MAX上的安定面不是失控地跑,而是被系统有节奏地推一下,停一下,再推一下。飞行员看到仪表上一小截移动,第一判断更可能是“这是什么模式在作动”,而不是“安定面在跑”。等他们从诊断走到处理程序,时间早就被那五秒一次的节奏切成了碎片。
这还不是培训缺失的全部后果。手册里没有MCAS,课堂里没有MCAS,模拟器里当然也没有MCAS。地面训练设备和飞机实际行为之间出现了裂缝。狮航的机组在最后时刻试图执行安定面失控程序,但飞机的反应和他们受过的程序不完全对得上。埃塞俄比亚的机组也拿出了同样一张牌,却发现飞机不按牌理出牌。训练是飞行员在紧急情况下唯一能抓住的绳索。这条绳子早在他们退休或升机长之前就该盘好在舱里,可波音给出的绳长只到日常飞行为止,再往下的部分被商务承诺剪断了。
再说适航认证这边。组织委托授权协议的细节,比想象中更接近一场会计交接。联邦航空局把大量审定工作外包给波音时,授权范围、项目划分和报告要求都写在协议正文里。审查工程师由波音指派,进度由波音排定,关键的符合性判据也由波音先行推定,联邦航空局的监察员只是在节点上抽查。
737 MAX取证周期被市场压力压缩得几乎到了极限。波音向联邦航空局提交的MCAS相关系统,不是作为关键安全项目单独立项审查,而是作为飞行控制计算机下属的一个功能模块走完了流程。它的失效影响等级、触发条件和飞行员预期,都在一系列技术分类中寻找最熟悉的旧路线通过。后来参议院商业委员会听证会上,FAA前工程师的证词说得很直白:“我们没有问那些本来应该问的问题,因为授权体系已经替我们完成了回答。”这个回答在MAX首飞之前就写好了,等到调查人员回头去找,只找到了一串签过字的项目表单。
这里要停下来追问一句:为什么联邦航空局愿意把这么多权力放出去?不是哪一个官员腐败,也不是波音存心制造图纸外的杀人机器。航空器制造已经复杂到行政部门无力逐行检查。一个机型的认证文件数以万页计,一个飞控系统可能包含数百万行代码,而监管机构的工程师数量连看完这些代码的零头都不够。在这种规模面前,认证部门只能选择相信制造商自己的工程团队。组织委托授权看似提高了效率,却取消了那一层本来应该存在的独立怀疑。怀疑一旦被流程优化掉,错误就可以在企业内部从头走到尾,直到被空难从外部打断。
狮航610掉进爪哇海之后,波音的回应速度比调查机构快。2018年11月6日,波音向全球运营商发出OMB(运营通告),告知机组安定面失控时的处置,并提醒不要用旧的检查单去套新情况。通告里提到了MAX的安定面可能受到错误的迎角数据影响,但没有使用机动特性增强系统这个名称,也没有说明这套系统会在单传感器故障时重复下压。对大多数飞行员来说,他们收到的是一段简短技术说明,和一个“执行快速检查单”的建议。
美国联邦航空局同一天发布了紧急适航指令,内容几乎照搬了波音的说法:修订飞行手册,要求飞行员在出现非指令安定面移动时执行现有程序。可是现有的程序,飞行员从来就没有被培训过,飞机的自动系统可以如此连续地介入。结果就是,在狮航坠机后的那个星期四,全球仍有数百架MAX在飞。接下来的几个月,没有出现第二次事故,于是航班计划继续排下去。
为什么会这样?一个已经被初步调查指出系统异常的机型,为什么还能继续飞行?答案不在技术,而在“停飞”二字的分量。全球停飞不是一家公司说停就停的。它涉及数十家航空公司每天上千个航班的排班,涉及波音手里积压的数千架订单,涉及各国适航当局之间的外交平衡。没有确凿到无人能反驳的证据,几乎没有国家愿意第一个站出来要求停飞。狮航事故后,波音坚称只要飞行员按照通告切断电动配平,飞机就可以安全飞行。这个说法给各国监管者提供了继续运行的理由。于是停飞命令被一再推迟,直到埃塞俄比亚302替整个世界做出了决定。
二十个月后回看,从狮航事故到埃塞俄比亚事故之间的那一百三十多天,是制度失灵最刺眼的一段。那段时间里,波音有足够时间把MCAS的存在讲给飞行员听,联邦航空局有足够时间启动独立的风险评估,各航空公司和各国民航当局也有足够时间把MAX从航班表上撤下来。但没有一方迈出那一步。波音在忙于降低舆论成本,FAA在等待波音给出更多数据,航空公司则在观望监管部门会不会出台硬性命令。于是第二架飞机升空了,带着同一套逻辑,同一个盲区,和一整套已经被初步指认却未处置的制度漏洞。
这就是为什么后来调查人员在报告里不断提到“不符合预期的操作反应”。这个词组的潜台词是:即便飞行员做出了他们被训练去做的事,结果仍然不够。认证假设了一件事,训练假设了另一件事,飞机软件做了第三件事。三个“假设”在空中交叉,交叉点上就是驾驶舱里那几分钟的绝望。这不是哪一只手没握好杆,而是整个系统没有把驾驶员当作一个会混乱、会延迟、会依赖训练和经验的人类来看待。
再看调查权的独立。狮航事故后,印尼运输安全委员会在接触关键数据和文件时处处受制。系统逻辑、适航记录、软件版本、FAA与波音之间的来往文件,没有一样是摆在事故调查桌面上任人翻阅的。波音提供了一份又一份技术解释,但解释随着调查深入不断修改。埃塞俄比亚的事故调查同样艰难。黑匣子先被送到法国,再被要求移交,围绕数据解读权的争议拖了数周。调查结论一夜之间可能决定一家巨型企业的命运。这种背景下,调查已经不只是工程鉴定,而是制度场域里的角力。谁能独立地得到数据,谁能独立地解读数据,谁能不受干扰地把结论告诉世界,每一个环节都在考验着航空安全体系最后的防线。
现在,责任埋在一行行代码里,埋在一个“单传感器即可触发”的设计选择里,埋在“没有本质区别”的认证描述里,埋在一份没有把系统写清楚的手册里。谁写了那行代码?谁批准了那个设计?谁决定不把它写进培训材料?谁授权波音自己审自己?每一个问题都通向一个具体的人或一群具体的人,但连在一起,却变成了一条没有单个责任人的长链。
于是,事故调查的独立性,就被推到了数字时代航空安全的最前面。狮航610和埃塞俄比亚302的调查结论最终都指向了系统缺陷和适航认证漏洞,但得出这个结论的过程并不轻松。调查机构需要对抗时间,对抗数据擦除的风险,对抗制造商对技术资料的掌控,对抗航空管理部门迟来的说明。调查报告是一回事,能不受制造商和行政部门的压力把结论发出来,是另一回事。
没有这个独立性,飞行数据记录器里的曲线再清楚,也可能被埋进无数技术附件里,最后变成只有专家才能读懂的沉默档案。二十个月的停飞,是一次昂贵的修正,也是对制度边界的一次重新描画。
但对346条生命来说,它没有一项是及时的。狮航的189人,没等到埃塞俄比亚事故逼出来的全球停飞;埃塞俄比亚的157人,没等到改革方案落地。他们遇上的,不是哪个零件突然断裂,而是一整条从商业叙事、认证授权到培训信息的链条,在他们起飞前就已经松开了。飞机修好了,手册补上了,代码改写了,制度也改了。可是机舱里的那个疑问留下来:下一个没有被告知的系统,现在在飞吗?这个问题没有温度,不会冒烟,却比火光更能逼出答案。
两条下坠曲线已经把边界划得够清楚:系统越复杂,未知的地带就越宽;而每一次被未知地带吞掉的,仍然不是几条数据,而是一个个具体的人。飞机上的边界可以靠代码重写来补,制度上的边界可以靠规章修改来补。可一旦调查和追责的独立性被商业利益和行政惯性压住,再多的补丁,也只能写在下一场事故的调查报告里。