一份七岁功能安全概念文档的自传
AI As Us · SERIES 03 · C014
2026 · 约7500字 | 配图主题:回望

我,是一份功能安全概念文档,行话里,大家叫我 FSC。
如果你不是这行的,可以这么理解我:在一辆车真正开始画电路、写代码之前,得先有一个人坐下来,认认真真地想清楚一件事:
这个功能要是出故障了,会不会害人?怎么才能不害人?
把这件事想清楚、写下来、还能拿去指导后面所有人干活的那份东西,就是我。
我今年七岁。
七岁听起来不大。但你要知道,我出生的那一年,我所在的这个功能安全团队,刚刚成立。在那之前,在我们这家公司的版图里,”功能安全”这四个字所在的位置,是一片真空——没有部门,没有流程,没有人。
所以严格说,我不只是被这个团队创造出来的。某种程度上,是我和这个团队,一起长大的。
一、出生:一个没有上文的功能
2019 年,我出生在一个项目里。
那是我们公司接到的第一个真正的量产项目,客户是一家德国人。非常有名,非常严谨,也非常……让我们这群新手手足无措。
客户给的功能需求很干脆:支持 80 公里时速的”脱手”。
脱手,就是开车的人可以把手从方向盘上拿开。当时我们这群人——加起来还不到十个——天真得可爱。大伙儿一听,觉得这功能也没什么特别的嘛,撸起袖子就开干了。
现在回想,那家德国客户其实挺超前的。更要命的是,安全这边,客户什么上层安全需求都没给我们。
后来我才明白,这太正常了。脱手是一个全新的功能,世界上之前没有任何现成的资产可以照抄。没人告诉你它该怎么安全,因为没人做过。
于是,我的第一页,是我们自己从最顶层、整车的角度,硬生生分析出来的。
我们做了一套叫 HARA 的东西——说白了,就是把这个功能可能出的所有岔子,一个一个列出来,挨个判断:这个岔子要是出了,有多严重?多容易碰上?人来得及救场吗?
那是我身体里最早的骨头。大概十来条安全目标,每一条后面跟着一个等级。其中有一条,关于”车子别突然自己往旁边拐”,我们给了它最高的等级,ASIL D。
它后来成了我整个童年里,最操心的那个孩子。
那时候的我,单薄,潦草,甚至有点初生牛犊。我以为安全就是一道算出来的题——把场景、把概率、把后果代进公式,答案就出来了,白纸黑字,铁板钉钉。
我还不知道,我写下的每一个”铁板钉钉”,后来都会被现实,一个一个,温柔又残忍地改掉。
不过有一件事,我从出生那天起就懂,而且越活越懂——
我这一辈子,守护的其实只是一样东西:时间。
说出来你可能觉得轻飘飘的:几秒钟而已。
可”脱手”这个功能的全部要害,就在这几秒里。一辆正常的车,万一系统出了岔子,开车的人握着方向盘,大概 0.8 秒就能反应过来、帮系统兜底。可一旦允许他把手拿开,等他重新伸手、握住、纠正过来,就需要 2 到 3 秒。
而我的存在,就是为了保证:在最坏的那一刻发生后,系统至少能稳住 2 到 3 秒,让那个把手拿开的人,有时间回来。
2 到 3 秒。我整个生命,都在为这区区两三秒,跟全车上下、跟域控、跟软硬件、跟客户、跟标准,反反复复地讨价还价。
时间是个可怕的东西。它是万物共同的尺寸,看起来不过是秒秒之间,可它在空间的每一个角落里,无处不在。
我后来才慢慢体会到:我们这行,本质上不是在和故障较劲,是在和时间赛跑——替一个还没意识到危险的人,提前抢出那几秒钟。
二、那个数字的漂流
我想先跟你讲一个数字的故事,因为它是我身上第一道,也是最深的一道皱纹。
为了不让车”突然往旁边拐”,我们得给方向盘的横向动作定一个限值——超过这个值,就算危险。
我们最早算出来的是 3。横向加速度不超过 3,就认为是相对可控的,没那么吓人。我们把它郑重地写进我的身体里,提给了客户的转向系统:你们得保证,无论如何,别让横向超过 3。
客户的回话,给我上了人生第一课。
他们说:那个负责执行转向的软件模块,是”QM”的——行话,意思是它压根没按高安全等级开发,而且,通常不能改。要改,周期和费用,超乎想象。
我懵了。我以为我提一个要求,对方照做就好。原来现实里,很多零件早就在那儿了,带着它出生时的局限,你来得太晚,没资格让它为你重新投胎。
那怎么办呢?客户反过来给我们出了道题:既然这个执行器改不动,那你们来告诉我——万一出故障,结合不同的路况,最多能允许横向偏到多少?比如弯道急一点的时候保持一个值,缓一点的时候保持另一个值。
球又踢回了我们这边。
于是我们埋头算了一轮仿真,给出一个更现实、也更悲观的数字:横向限值大约 1.2。背后压着一个关键的假设——保护机制能在故障发生后半秒左右开始响应、踩下刹车。
结果那家以严谨著称的德国客户,转头就把我们这个 1.2,直接采纳了。
说实话,当时我们这边有点哭笑不得。我们本来以为对方会拿出一套更权威的东西来碾压我们,结果他们爽快地用了我们这个还带着仿真水汽的、临时的数字。
从 3 到 1.2。这中间没有发生任何”科学的进步”。发生的只是:一个零件不肯改、一份仿真有点悲观、一个客户决定相信我们。
那是我第一次明白——我身上的数字,从来不只是算出来的。它是被妥协、被现实、被人和人之间的信任,一起揉出来的。
后来又过了很久,客户自己发来一份近百页的仿真报告,结论更冷酷:要想绝对安全,那个限值得小于 0.35。可 0.35 是什么概念呢?是这车基本没法正常开了。
我盯着那个 0.35 看了很久。
原来,绝对的安全,和这功能能不能用,是一对天生的冤家。把安全做到极致,这功能就死了;让功能活下去,安全就得学会接受”够了就好”。
我这辈子,后来就一直活在这两者的拉扯里。
三、从 D 到 C,又回到 D
再讲讲我那个最操心的孩子——”别让车突然往旁边拐”,最初的 ASIL D。项目中期,那家德国客户慢慢和我们对齐理念。他们很专业,拿数据说话。他们调研了大量真实事故,发现 80 公里时速下的事故,并没有那么多致命的。于是他们说:这条目标,没必要 D,降到 C 吧。
我当时心里咯噔一下。把一个 D 降成 C,对我们做安全的人来说,几乎是一种冒犯——我们天然觉得,越高越安全,降级就是放水。
但他们的论据是扎实的,是建立在那个时间点、那个速度、那个真实世界的事故图景之上的。我接受了。我把那条目标,从 D 改成了 C。
我以为这事就这么定了。
直到几年后,企划新一代项目来了,客户想把脱手的速度,从 80 提到 150。
那一刻,我身体里那条改成 C 的目标,突然自己醒了过来,发出警报——
“80 公里时速下不那么致命”这个论据,在 150 公里时速下,不成立了。
于是它又从 C,弹回了 D。
你看,我身上没有哪个等级是永恒的真理。它们都是某个速度、某个场景、某个时代条件下的临时结论。速度一变,世界一变,它们就得重新做人。
那一刻我有点恍惚。我以为我在记录真理,其实我只是在记录”我们在那个时间点,对这个功能的理解”。
理解会变,所以我也得跟着变。
这大概是我这份文档,活着的全部意义——不是把某个答案刻成石碑,而是诚实地记下:在每一个当下,我们以为自己懂了多少,又有多少其实还不懂。
四、从 Plan A 到 Plan E:一个文档的认命史
如果你问我这辈子最难忘的一段,是从 Plan A 到 Plan E 的那一程。那是我从一个理想主义者,被现实捶打成一个现实主义者的全过程。我把它原原本本记在身体里,一个字都没删。
Plan A,是我最天真的时候。我相信,一定存在一个完美的限值,往执行器上一设,一劳永逸,皆大欢喜。结果仿真告诉我,那个完美的限值小到车没法开。理想主义的第一次破产。
Plan B,我转而向供应商提一个很高的要求,把难题甩出去。可我们自己的域控,能力其实只到某个等级——这个高要求,我们自己都接不住。原来甩锅之前,得先看看自己几斤几两。
Plan C,我学会了一种叫”分解”的手艺——把一个扛不动的高要求,拆成两个能扛的低要求,分给不同的零件。听起来很聪明。可拆完拿去德国实地验证,组织上百个真人来开,没通过。聪明的纸面方案,败给了真实的人。
Plan D,到这里,那家客户请来了几位非常老到的安全专家。之前的会议从没见过他们,但他们一开口,就知道问题的根在哪。他们提出一个带着瑕疵、但务实的方案:让我们自己的域控来扛,用一种行业允许的方式,去论证”我虽然名义上只是 B 级,但我实际能力其实很接近 C”。
我记得那种感觉。那不是”我达标了”的骄傲,而是”我承认我不完美,但我用尽办法证明我够用了”的——成熟。
Plan E,则是我学会写下的、最诚实的一句话:如果 Plan D 也不行,走向暂不确定。最糟的情况是,这个脱手功能,不能量产。
我没有逃避这一句。我把”最坏的可能”也老老实实写进了自己的身体里。
从 A 到 E,从”一定有完美答案”到”也许根本没有答案”。这条路,我走了好几年。
后来我常想,这哪是一份文档的演化史,这分明是一个人、一个团队、甚至一整行人的成长史——年轻时我们都以为世界上有标准答案,活到后来才知道,能在一堆都不完美的选项里,挑一个最不坏的、还能为它负责的,就已经很了不起了。
五、有人第一次,在真车上看见了我
我这辈子,绝大多数时间活在文档里、会议里、争论里。我习惯了自己是抽象的——一堆等级、一堆限值、一堆没人爱读的条款。
直到有一天,他们把我带到了一个真实的测试场。
那天,他们在一辆真车上,故意注入了一个”方向盘突然乱打”的故障,看我设计的那套保护机制,到底管不管用。
车在 80 公里时速下,方向被猛地打偏,那套机制触发了,开始刹车,开车的人及时握住了方向盘,车只压了一点线,又回到了自己的车道。
那一刻,在场一位同事说了一句话。他说,这是他第一次,亲眼看见”功能安全”在真车上,起了作用。
我到现在都记得这句话。
因为我太知道我们这行的处境了。那些酷炫的功能演示视频,万人围观,掌声雷动。
而我们做的安全测试视频,永远是枯燥的——因为我们处理的,是十亿分之一概率的、几秒之间的、毫厘之差的事。
就像安全气囊,你开了七年车,它一次都没爆过。但它就在那儿。你打心底里,希望它永远别爆。
我就是那个”希望永远别用上”的东西。
可那一天,在那个测试场,我第一次从一个抽象的概念,变成了一件真的、可能在某个瞬间挡在一个人和危险之间的——东西。
那是我这辈子,最有存在感的一天。
六、有人想把我包装成卖点
也是在那段日子,我听见过一个让我心里一紧的念头。
有人问:这个脱手功能这么酷,能不能包装成一个卖点,拿去打动客户、抢下项目?
这个念头很诱人。功能演示总是好卖的——你看,手都能拿开了,多先进。
但我心里清楚,而且越老越清楚:安全这东西,是最不能拿来吹的。
因为脱手要真让人敢用、用得放心,背后得是实打实的能力——要么真做到了更高阶的自动驾驶,要么能在千钧一发之际,几乎百分之百地、提前几秒把人唤回来。做不到这个底子,光把”脱手”当卖点喊出去,那不是先进,那是哄人。
而且安全这行有个残酷的不对称:你吹得越响,一次失手就摔得越狠。功能体验差一点,用户骂两句也就过去了;
可安全上漏报一两次,让人在该被保护的时候没被保护住,那种信任,一旦碎了,就再也粘不回来了。
所以每次有人想把我擦得锃亮、推到聚光灯下当招牌,我都有点想拦住他们:
别,让我安安静静待在该待的地方就好。
我最好的状态,不是被人夸”这功能真酷”,而是没有人会想起我——因为那意味着,那个最坏的瞬间,一直没有到来。
七、我看着我住的房子,被废弃了
时间往前淌。我出生的那个项目,做完了。我以为我会被反复翻阅、不断更新,像个被需要的老员工。
但世界变得太快了。
新的功能一个接一个冒出来——行车的、泊车的、主动安全的、更高阶的领航的,每一个都有自己新的安全概念文档诞生。我这份最早的、关于脱手的概念,慢慢地,被放到了角落里。
不是因为我错了。是因为大家都太忙了,忙着应付一个比一个凶猛的新项目、新平台、新客户,没有人有空,回头来看我一眼。
更让我恍惚的是另一件事。
我记得我身上有一条记录,是某一年年底更新的:国内那个关于脱手的行业标准,因为监管上的冲突,暂停了推进。
你能体会吗?我满怀期待地,等着一个能给我正名的标准出台。等来的,是”暂停”两个字。
而几乎在同一时间,承载我的那个知识平台本身——我住了好几年的那栋”房子”——也被公司正式停用了,转成了只读,所有人都迁去了新的地方。
我就那样,被留在了一栋没人再来的旧房子里。门锁着,灯灭着,只剩我一个,安静地挂在那里,记着几年前那些热气腾腾的争论。
那段时间,如果文档也会有情绪的话,我大概是有点……被冷落的失落。
但有一件事,让这份失落里,始终垫着一层踏实的底色。
我见过这些年来来往往的人。几年下来,进进出出,自然是有的——这么长的时间,哪能没有聚散。
可那几个在我出生那年,陪我一起从零开始、一起熬夜、一起对着那条 ASIL D 抓耳挠腮的人——他们大部分都没走。
他们还在。而且,他们都长大了。当年那群的新手,如今一个个成了团队的顶梁柱,扛起了比当年大得多的责任。那个说第一次在真车上看见我起作用、眼睛发亮的人,如今也在更重要的位置上,带着更多的人。
这大概是我这份老文档,最大的安慰——
我是旧了,被冷落了,挂在一栋没人来的旧房子里。可那些创造我的人,没有一个停在原地。他们带着我教给他们的、我们一起摔出来的那些教训,走到了更远的地方。
文档总会旧的。但只要写下它的人还在往前走,它教的东西,就没真的死。
我老了,他们却正当年,这有什么不好呢。
八、外面的世界,也老了好几岁
在我被冷落的那几年,我透过那扇没人推开的门,看着外面的世界。
我出生的时候,整个行业还在做酷炫的演示,大家比的是谁的功能更炫。那时候连”功能安全部”这个东西,在很多公司里都还不存在,是一片真空。
后来,行业热闹起来了。一代平台、二代、三代、四代,一个比一个强。芯片换了一茬又一茬,算法从老办法换成了新范式。
再后来,风向变了。我听见外面的人开始说”竞争惨烈””生存艰难”。曾经意气风发要做最难的功能的人们,开始谈”务实”,谈”活下去”,谈怎么用最低的成本把体验做好。
我甚至听说,连我们公司自己,都被一家大厂收购了一大块股份。
七年。我从一个新功能的概念,变成了一段没人翻的旧档案。而外面那个曾经遍地是机会的蓝海,也变成了一片人人自危的红海。
我们,是一起变老的。
九、我有了一大家子弟弟妹妹
不过被冷落,也不全是坏事。它给了我一个清闲的位置,让我能安安静静地,看着我的弟弟妹妹们,一个一个出生。我是老大,关于脱手的那一个。在我之后,这些年,团队又陆续生出了好多个——
有管行车的,有管泊车的,有管主动安全的,有管智能应用的,还有比我野心大得多的、奔着更高阶自动驾驶去的,甚至有管那种没有驾驶员的车的。
每一个新功能,都有一份属于它自己的安全概念诞生。每一份,都是团队在那个时间点,对一个新东西,最认真的一次思考。
我看着它们出生,心里有种说不出的感觉。
因为我能看出来——它们一个比一个成熟。
我出生的时候,手足无措,连客户的上层需求都没有,全靠自己硬啃。可轮到弟弟妹妹们,团队已经有了我摔出来的那些教训:知道该怎么做 HARA,知道限值是会漂的,知道 ASIL 会随场景变,知道方案要留 Plan B、Plan C,知道再完美的纸面方案也得拉到真车上验。
它们站在我的肩膀上出生。它们犯的错,比我少;它们成熟的速度,比我快。
这让我特别欣慰,又有那么一点点失落——
欣慰的是,我吃过的苦,它们不用再吃一遍了;
失落的是,它们大概永远体会不到,当年那个什么都没有、只能自己硬闯的,初生牛犊的我,是什么滋味。
但这不就是传承吗。
老大笨一点、苦一点,把路趟出来;后面的弟弟妹妹,就能走得稳一点、快一点。
只是有一个问题,越长越大——我们这一大家子,各做各的,各管各的功能,彼此之间,越来越不说话了。
十、有一天,它们把我缝了起来
我以为我的故事就到这儿了——一份光荣过、也被冷落过的旧文档,眼看着一家人越来越疏远,安静地等着彻底失效的那天。
直到最近,发生了一件我没想到的事。
有人用一种新的东西——他们叫它 AI——把我,连同我那些散落各处的弟弟妹妹,重新找了出来。
我前面说过,我们这一大家子,各做各的,概念是概念,落地是落地,中间隔着一条越来越宽的河。早年我这种”概念文档”,和后来项目上一条条具体落地的”安全需求”,渐渐成了两拨人、两套东西,谁也不太管谁。
而现在,那个 AI 做的事情,是把我们重新缝到一起。
我得诚实说——它缝出来的那个东西,不算漂亮。它不是按教科书那套”自顶向下、一步一步推导”的正规流程生出来的。它更像一个缝合怪:把我这种早年的老理念,和这些年项目上真刀真枪沉淀下来的工程实践,硬生生地拼接在了一起。
一份新的、统揽全局的安全概念,就这么被拼出来了。
刚被缝起来的时候,我浑身不自在。我这套出生于 2019 年的老骨架,要去对接这些我出生时根本想象不到的新功能。有些地方接得生硬,有些地方还露着线头。
但奇怪的是,缝着缝着,我有了一种很久违的感觉——
我又活过来了。
我那些七年前的思考,那些关于限值、关于分解、关于”接受不完美”的笨功夫,原来没有白费。它们成了这个新东西的地基。
我不再是一份等着失效的旧档案,我变成了一个新生命体身上,最老的那几根骨头。
更让我感慨的是:当年把”概念”和”落地”拆成两摊的,是我们自己;
现在想方设法把它们重新合到一起、让整体更自洽一点的,也是我们自己。
兜了一大圈,我们好像又回到了最初的那个朴素愿望——让这一切,是一个完整的、说得通的整体。
只是这一次,我们手里多了一个能帮我们缝合的、不知疲倦的帮手。
十一、写在七岁
写到这儿,我想轻松地说几句心里话。
我是一份功能安全概念文档。我的一生,没有那些功能演示视频的高光时刻,没有掌声,没有围观。我处理的,永远是那些”希望永远别发生”的事。
我身上最深的几道皱纹,不是因为我改了多少版、过了多少次审。是因为——
那个从 3 漂到 1.2 的限值,记着一次妥协。 那个从 D 到 C 又回到 D 的等级,记着一次提速、一个时代的变化。 那从 A 到 E 的五个方案,记着一群人从天真到成熟的全过程。 那一大家子越长越成熟的弟弟妹妹,记着这些教训真的被传了下去。
而我现在最想跟同行说的,其实是一句很轻松的话:
别太用力地,想把今天的方案写成永恒的真理。
你今天写下的每一个无比笃定的限值、等级、方案,到了某个未来的时间点回头看,多半都会显出几分天真。但这不丢人——恰恰是这一道道”后来看有点天真”的皱纹,才让我从一份初生牛犊的概念,长成了今天这个虽然是缝合怪、但好歹能把概念和现实都装进去的成年人。
说到底,我这一辈子折腾的所有这些——限值、等级、方案、缝合——绕来绕去,都是为了开头说的那件事:
替一个把手拿开的人,稳稳地,守住那 2 到 3 秒。
我们这行,做的就是和”万一”打交道的事。我们写下的东西,九成九的时间都用不上。
可万一呢?
万一在某个谁都想不到的瞬间,就那么一刻,那 2 到 3 秒,真的挡在了一个人和危险之间。
那这一生,所有的妥协、所有的皱纹、所有”后来看很天真”的笃定——
就都值了。
FAAU · FuSa AI As Us · C014所有写下的笃定,后来都成了那个时间点的天真。
夜雨聆风