mcpField
A
after-action-report

after-action-report

github.com/rampstackco生产力1.0k246 次安装1 周前更新
代码仓库

关于 after-action-report

after-action-report 是用于复盘事故、发布和已完成项目的结构化技能,适合希望从事件中提炼行动措施的团队。它采用无责分析,并将时间线、根因、影响因素及后续行动纳入报告。

主要功能

  1. 01采用无责分析原则
  2. 02整理事件时间线和影响
  3. 03通过五个为什么或因果链分析根因
  4. 04记录促成因素与有效做法
  5. 05制定有负责人和期限的行动项

适用场景

  1. 01复盘服务事故并分析根因
  2. 02评估重大产品发布的结果
  3. 03在项目收尾时总结经验
  4. 04追踪复盘行动项直至完成

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rampstackco/claude-skills --skill after-action-report

安装后在 Claude Code 中输入/after-action-report确认已加载。

附带文件README.mdreferences/aar-template.md

详细介绍

事后复盘报告

针对发布、事故或已完成的项目开展结构化复盘。产出可执行的经验教训,而不只是一份文档。

此技能用于事后分析。若要处理正在发生的事故,请使用 incident-response。若要规划发布,请使用 launch-runbook。


适用场景

  • 任何事故发生后(不论严重程度)
  • 每次重大发布后
  • 项目结束时(迭代复盘、季度复盘、项目收尾)
  • 某个反复出现的问题已多次发生,需要深入调查时
  • 某项决策未奏效,团队希望从中吸取经验时

不适用场景

  • 事故仍在处理中(请使用 incident-response)
  • 发布前规划(请使用 launch-runbook)
  • 不值得进行全面分析的一次性错误修复

所需输入

  • 要分析的事件(事故、发布、项目)
  • 根据日志、聊天记录和工单还原的时间线
  • 参与者对所见所做的描述
  • 结果和影响(用户和业务实际受到的影响)

框架:无责分析

最重要的原则是无责。缺少这一原则,复盘就会导致信息被隐瞒,产出流于形式的教训,而非真正有用的经验。

无责的含义
  • 关注系统,而非个人
  • 假设每个人在当时掌握的信息下都做出了合理的决定
  • 问题应是“为什么做出这个决定是合理的?”,而不是“谁搞砸了?”
  • 修复系统,意味着让下一个处于相同情境的人能够成功,而不是重蹈覆辙
无责不代表
  • 不问责(行动项仍需明确负责人)
  • 不讲真话(有时系统的问题显而易见)
  • 不设标准(有些失败模式是个人问题,而非系统性问题)
  • 不感到不适(真正的反思会让人不舒服)

框架:6 个部分

完整的 AAR 涵盖六个部分。

1. 总结

用 2 到 3 段概述,说明:

  • 发生了什么
  • 造成了什么影响(用户、业务、时间)
  • 根本原因(用通俗语言说明)
  • 主要行动项

管理层会阅读这一部分。只读这一部分的人也应能了解最重要的信息。

2. 时间线

还原事件时间线。

对于事故:

  • T-0:发现
  • T+X:确认
  • T+Y:评估严重程度,指派 IC
  • T+Z:开始调查
  • ……缓解、沟通和解决等事件
  • T+N:宣布解决

对于发布:

  • 发布前的决策和里程碑
  • 发布当天的事件
  • 发布后的监控观察结果

对于项目:

  • 重要里程碑、决策和方向调整
  • 包括计划内和临时出现的事项

时间线是事实依据。对于事件经过的分歧,应以时间线为准。

3. 根本原因分析

用通俗语言说明原因。

使用以下一种或两种方法:

五个为什么。 从表面症状入手,问“为什么?”,重复 5 次(或直到找到真正的根本原因)。每个“为什么”都应得出实质性答案,而非同义反复。

示例:

  • 为什么网站宕机了?数据库连接池耗尽。
  • 为什么连接池耗尽?后台任务打开了过多连接。
  • 为什么后台任务打开了过多连接?发生错误时,连接清理代码没有运行。
  • 为什么发生错误时清理代码没有运行?最初的代码评审没有涵盖错误处理路径。
  • 为什么评审没有涵盖错误处理路径?我们的评审流程没有错误处理检查清单。

第五个为什么通常能揭示系统层面的改进措施。在此例中,应改进评审流程。

因果链。 多个促成因素共同作用。

  • 因素 1:后台任务打开了过多连接(技术)
  • 因素 2:连接数上限设得过低,无法满足实际流量(配置)
  • 因素 3:连接池饱和时没有告警(监控)
  • 因素 4:近期流量翻倍,但未进行基础设施容量评估(流程)

单一修复措施无法解决这起事故。需要关注多个缺口。

4. 促成因素

这些因素并未导致事件发生,但加剧了事件影响,或移除了本可及时发现问题的安全网。

  • 监控缺口
  • 文档缺口
  • 流程缺口
  • 工具缺口
  • 知识缺口

这类因素可以用“如果……就能更早发现”来描述。

5. 做得好的地方

真正的经验教训不仅要记录失败,也要记录成功。

  • 哪些检测机制发挥了作用?
  • 哪些响应措施发挥了作用?
  • 哪些决策是正确的?
  • 哪些工具或流程表现符合预期?

这不是安慰,而是校准。应当巩固并复制在此次事件中发挥作用的做法。

6. 行动项

具体明确,指定负责人,并设定日期。

行动负责人截止日期类型
在连接池饱和时添加告警[name][date]监控
在 PR 模板中添加错误处理检查清单[name][date]流程
审查其他后台任务是否存在类似问题[name][date]代码

行动项标准:

  • 具体。“改进监控”不具备可执行性。“在连接池饱和时添加告警,阈值设为 80%,并通知值班人员”才具备可执行性。
  • **指定负责人。**写明姓名,而不是“团队”。
  • **设定日期。**填写具体日期,而不是“尽快”。
  • **明确工作量。**大致估算所需的小时、天或周。
  • **可以完成并关闭。**明确完成标准。

未能在承诺期限内完成的行动项,应在下一次 AAR 中重新提出。行动项反复未能关闭,说明存在更深层的组织问题。


工作流

1. 安排 AAR

在事件发生后的 1 到 2 周内进行。留出足够时间,让情绪平复、事实收集完整;同时也要及时,趁记忆还清晰时进行。

对于事故:在响应流程中预先安排。 对于发布:在运行手册中安排。 对于项目:在项目收尾时安排。

2. 收集资料

会议前准备:

  • 重建的时间线(如果有人做了记录,通常可使用记录员的笔记)
  • 日志、聊天记录、工单、事故更新
  • 每位参与者的个人陈述(会前以书面形式提交)
  • 影响数据(受影响的用户、持续时间、收入影响等)
3. 召开会议

典型议程(60 到 90 分钟):

  • 阅读拟定的摘要(5 分钟)
  • 一起梳理时间线。补充更正内容,解决分歧。(20 到 30 分钟)
  • 讨论根本原因。使用五个为什么或因果链分析。(15 到 20 分钟)
  • 讨论促成因素。(10 分钟)
  • 讨论做得好的地方。(10 分钟)
  • 确定行动项及其负责人和日期。(10 分钟)

由一名主持人负责会议。事故复盘通常由 IC 主持,项目复盘通常由项目负责人主持。主持人不能兼任记录员。

4. 撰写文档

在会议后的几天内完成。完整的 AAR 应包含全部 6 个部分。

5. 分发

内部:发布到指定位置,确保可以搜索,并在入职培训中引用。

对于高严重级别事故:可以发布对外摘要(状态页、客户邮件、公开博客)。

6. 跟踪行动项

每个行动项都应跟踪至关闭。下一次 AAR 应重新提出尚未关闭的行动项。


失败模式

  • **跳过“小型”事故的 AAR。**容易错过问题模式。
  • **指名批评、羞辱他人。**人们担心被指责时,真正的经验教训就会被掩盖。
  • **行动项过于笼统。**写“改进测试”,而不是明确具体的测试改动。
  • **行动项始终未关闭。**记录在案后便被遗忘,同样的事故再次发生。
  • **走过场式复盘。**按部就班地进行,却没有真正反思。
  • **跳过“做得好的地方”。**无法校准哪些做法正在奏效。
  • 把责任推给外部。“我们的供应商出了问题。”好,那么我们针对供应商风险采取了什么系统性措施?
  • **由单人完成 AAR。**一个人写完整份文档,遗漏其他视角。
  • **只有失败时才做 AAR。**成功的发布也值得复盘,成功经验同样有价值。
  • **拖延太久。**记忆会淡去,对话热度也会降低。应在 2 周内完成。

输出格式

Markdown 文档,文件名为 aar-[date]-[event-name].md。

结构:

# AAR: [Event name]

**Date of event:** [YYYY-MM-DD]
**AAR date:** [YYYY-MM-DD]
**Severity / scope:** [SEV-1 / Major launch / Project closeout]
**Facilitator:** [Name]
**Participants:** [Names]

## Summary
[2 to 3 paragraphs]

## Impact
- Users affected: [number, segment]
- Duration: [time]
- Revenue / business impact: [if applicable]

## Timeline
[Timestamped events]

## Root cause analysis
[Five whys or causal chain]

## Contributing factors
[List]

## What went well
[List]

## Action items
| Action | Owner | Due | Type | Status |
|---|---|---|---|---|
| | | | | |

## Lessons
[Reflections that don't fit elsewhere. Often the most quotable section.]

如果所需数据不可用

此技能的输出依赖于它无法自行生成的数据、测量结果或工具结果。当所需输入、工具或数据源不可用或无法核实时,合规的输出应是交付内容,并说明缺口:需要什么、实际获取或核实了什么,以及输出中哪些部分受到影响。为完成交付内容而捏造、估算或插值所需数值,绝不合规。说明缺口本身就是完整的答复。


参考文件

评论

支持 Markdown