故障复盘这个词听起来很美好,但在不少团队的实际执行中却变了味。复盘会开成了批斗会,事故报告写成了检讨书,最后的结果是:下一次故障来临前,大家想的不是如何快速暴露问题,而是如何把现场清理干净、把责任推得更远。Postmortem(事后剖析)文化要解决的正是这个问题,而其中最关键的一条原则,就是Blameless——不追责。

为什么无责原则是复盘文化的前提
要理解无责原则,先要理解故障的本质。Google SRE 书籍中有一个经典论断:任何一个由人触发的故障,背后几乎都存在系统性的诱因。工程师之所以会在生产环境执行了错误命令,可能是因为发布流程缺少审批环节,可能是权限系统给了不该给的入口,也可能是当时的告警信息让正确判断变得极其困难。如果把追责的矛头指向操作者,等于放弃了挖掘这些深层问题的机会。
从行为科学的角度看,追责会直接扭曲信息流动。一旦团队形成「谁出问题谁背锅」的氛围,人们在复盘中的发言就会从「我看到了什么」变成「我没有做什么」。关键的时间线信息缺失、根因分析浅尝辄止,最终产出的是一份无法指导改进的报告。更危险的是,犯错的人下次会选择隐瞒和自救,小问题被捂到变成大事故。
无责原则的适用边界也需要说清楚。Blameless 针对的是「有能力、有善意的人在不完善的系统中犯下的错误」,而不是恶意破坏、重复违反明文规定的红线行为。如果有人明知故犯地绕过所有安全机制去删库跑路,这不属于复盘的范畴,而是纪律和法务问题。把这个边界提前和团队讲明白,无责原则才不会被人钻空子。
制度设计:让复盘流程先跑起来
文化不能只靠口头倡导,必须有制度托底。第一步是明确复盘的触发条件,让「什么级别的故障必须写 Postmortem」成为一条客观规则,而不是领导临时拍板。常见的做法是根据影响时长、受损用户数、资损金额等维度划分事故等级,P1 级事故强制复盘,P2 级酌情处理,低级别故障鼓励主动记录。触发规则越清晰,复盘就越不像是针对某个人的惩罚。
第二步是定义角色分工。一次规范的复盘至少需要三个角色:事故指挥者负责复盘会议的组织和时间线梳理,问题负责人负责根因分析和改进项落地,记录员负责将讨论内容沉淀为正式文档。特别要注意的是,问题负责人不应该是事故的直接操作者,让操作者以「信息提供者」的身份参与,能有效降低其心理压力。
第三步是设定时间窗口。故障恢复后 48 小时内完成时间线初稿,一周内召开复盘会,这样的节奏既保证了记忆的新鲜度,又给了大家冷静下来的空间。拖得太久,细节会遗忘;开得太急,情绪还没消化,容易变成甩锅现场。下面是一份可以直接套用的复盘模板骨架:
<!-- Postmortem 复盘模板核心结构 --> <h2>故障摘要</h2> <p>影响时长 / 受损范围 / 当前状态</p> <h2>时间线</h2> <ul> <li>14:02 监控告警触发,值班群通知</li> <li>14:05 值班工程师确认服务异常</li> <li>14:11 定位到新版本发布引入的空指针</li> <li>14:15 执行回滚,流量恢复</li> </ul> <h2>根因分析</h2> <p>直接原因 / 深层原因 / 为什么没有被更早发现</p> <h2>做得好的地方</h2> <h2>改进项(负责人 + 截止日期 + 优先级)</h2>
模板里专门保留「做得好的地方」这一节,这一点经常被忽视但非常有价值。认可响应过程中做对的事情,比如告警及时、回滚果断、跨团队协作顺畅,能让复盘会的基调从追责转向学习,也让参与者的心理体验从「受审」变成「贡献经验」。
会议技巧:把「谁的锅」翻译成「哪里漏了」
复盘会是最容易失控的环节,主持人的引导技巧直接决定会议质量。最实用的一个技巧是语言转换:每当有人开始说「如果当时你没改那个配置就不会出事」,主持人应该立即接住并翻译成「当时的环境为什么会允许一个配置变更绕过灰度直接生效」。把对人的假设性指责,转写成对系统的假设性提问,讨论的方向自然就回到了机制层面。
根因分析推荐使用「五个为什么」的方法,但要警惕两个陷阱。一是问成「为什么你这么粗心」这种指向个人的连环追问,那不是五问法,是审讯。正确的问法应该始终沿着系统链条走:为什么服务挂了,因为内存溢出;为什么会溢出,因为慢查询堆积;为什么慢查询会堆积,因为缺少慢查询熔断;为什么缺少熔断,因为容量评估流程里没有这一项。二是防止问得太浅就停,止步于「代码有 bug」这种表层结论,等于什么都没分析。
时间线的呈现方式也有讲究。建议用客观中立的陈述句记录每一个节点,避免任何评价性词汇。「值班工程师 14:11 定位到问题」是事实,「值班工程师反应太慢,14:11 才定位到问题」就带上了指责。当整份时间线都保持中性时,参与者的防御心态会明显下降,补充信息的意愿会显著上升。很多关键细节,比如「其实之前就隐约觉得这个服务不太对」,只有在安全感充足时才会被说出来。
落地与沉淀:让改进项真正闭环
复盘最容易烂尾的地方是改进项。会上群情激昂列了十几个 action item,会后无人跟进,三个月后同样的事故再犯一遍。要避免这种局面,每个改进项必须有明确的负责人和截止日期,并且纳入日常的项目管理流程追踪。宁可少列几条高优先级的,也不要列一堆永远不会做的。一份优秀的复盘报告,改进项通常在三到五条之间,每条都能回答「做完之后能防住什么」。
改进项的挑选也要讲优先级。经典的风险控制框架里,防止故障再次发生的成本从低到高排列大致是:测试用例覆盖、监控告警补齐、自动化检查、流程审批约束、架构层面的冗余设计。优先做那些「不需要依赖人保持警觉」的改进,比如把检查逻辑写进 CI 流水线,远比发一份全员邮件提醒大家注意要可靠得多。能用系统兜底的,就不要指望人的记性。
最后是知识的沉淀与共享。复盘文档应该放在所有工程师都能检索到的地方,并且建立一个「故障博物馆」式的归档机制。新人入职时阅读历史 Postmortem 是最好的培训材料,比任何抽象的规范文档都生动。团队可以定期做复盘回顾,统计过去一年的事故类型分布,往往能发现某个模块反复出问题,这就为架构治理提供了最有说服力的数据支撑。
打造不追责的复盘文化不是一两次会议就能完成的,它需要管理者持续用行动示范:当负责人在复盘会上坦然说出「这次操作是我执行的,当时的判断依据是这样的」,而收到的回应是感谢而非质问时,文化才真正开始生根。每一次故障都是付费买来的学费,无责的复盘机制就是确保这份学费不白交的收据。
Postmortem事后复盘无责文化修改时间:2026-09-12 04:12:39