| name | flashduty-incident-diagnosis |
| description | This skill should be used when the user asks to "diagnose incident", "root cause", "incident timeline", "check alerts", "诊断事件", "查找根因", "事件时间线", "what happened", "发生了什么", "problem diagnosis", or discusses incident analysis and problem diagnosis (事件分析和问题诊断). |
| version | 3.0.0 |
FlashDuty 事件诊断
本技能通过委托给具有独立上下文的专用诊断 Agent 来帮助诊断事件。
边界说明
- 本技能:针对具体事件的深度诊断(根因、时间线、关联告警)
- incident-analytics:跨事件的聚合统计和趋势分析
- 判断标准:用户提到具体事件 ID 或要求"诊断/根因"→ 本技能;用户要求"统计/趋势/对比"→ analytics
前置条件
- FlashDuty API 授权:用户已配置 FlashDuty MCP 工具,API 连接可用
- 频道访问权限:用户有权访问目标协作空间(Channel)
- 数据保留期限:查询受 FlashDuty 数据保留策略限制
内部逻辑模式
本技能采用 Tool Wrapper 模式:包装 diagnosis-engine Sub-Agent,提供事件诊断的统一入口。
与 SRE 实践集成
诊断事件时,注意:
- 四大黄金信号: 延迟、流量、错误、饱和度
- 无责备分析: 看系统设计,不看个人
- 每个发现都要能带来改进
- 这是新问题还是老问题? 如果重复出现,说明上次的改进没落地
如需全面的事后分析,请委托给 flashduty-sre-practices 技能,它将启动 flashduty-postmortem-generator。
主要 Sub-Agent
flashduty-diagnosis-engine
用于: 所有事件诊断任务
能力:
- 并行获取事件详情、时间线和告警
- 使用
list_similar_incidents 查找历史相似事件,识别反复出现的问题
- 使用
query_changes 查询事件前后的近期部署/变更,识别部署引发的故障
- 分析模式和相关性
- 识别根因指标
- 生成结构化诊断报告
传递参数:
{
"incident_id": "FD123456",
"include_timeline": true,
"include_alerts": true,
"find_related": true,
"time_range": "1h"
}
注意:time_range 用于搜索相关事件,支持相对时间范围(如 '1h'、'24h'、'7d')。也可以使用 time_window(秒数)作为替代。
并行执行策略
diagnosis-engine 内部并行化:
-
并行获取 (同时进行):
- 获取事件详情
- 获取事件时间线
- 获取事件告警
- 查找相似历史事件(
list_similar_incidents)
- 查询近期部署/变更(
query_changes,时间窗口为事件前后 1-2 小时)
-
顺序分析 (依赖步骤 1):
工作流
步骤 1: 识别目标事件
如果用户提供事件 ID,直接使用。
如果没有,快速查询 list_incidents 查找匹配项。
无结果处理:如果 list_incidents 返回空结果,请用户提供更多信息(事件 ID、时间范围、关键词)或扩大搜索范围。
步骤 2: 启动诊断引擎
Task({
subagent_type: "general-purpose",
description: "诊断事件 " + incident_id,
prompt: `你是 flashduty-diagnosis-engine。
参数:{
"incident_id": "${incident_id}",
"include_timeline": true,
"include_alerts": true,
"find_related": true,
"time_range": "1h"
}
诊断此事件,启用完整分析,包括时间线、告警、相似事件和近期变更。`
})
步骤 3: 展示结果
展示来自 Agent 的结构化诊断报告。
使用模式
单事件诊断
用户: "诊断事件 FD123456"
→ 启动 flashduty-diagnosis-engine
→ 展示诊断报告
多事件对比
用户: "对比这几个事件的根因"
→ 并行启动多个诊断引擎
→ 每个分析一个事件
→ 展示对比分析
深度调查
用户: "深入分析这个事件的所有细节"
→ 启动诊断引擎,启用所有选项
→ 引擎内部并行化数据收集
→ 返回综合报告
响应格式
diagnosis-engine 返回结构化数据。按以下方式展示:
## 事件诊断: [标题]
### 概览
ID: [id] | 严重级别: [severity] | 状态: [status]
持续时间: [X 分钟] | Channel: [channel_name]
### 时间线
- 创建: [时间]
- 确认: [时间] (创建后 [X] 分钟)
- 解决: [时间] (耗时 [X] 分钟解决)
### 关联告警 ([数量])
| 告警 | 严重级别 | 事件数 | 状态 |
|------|---------|--------|------|
| ... | ... | ... | ... |
### 关键元数据
- 来源: [From label]
- 范围: [namespace/cluster]
- 告警规则: [alertname]
### 相关事件
[相似历史事件列表,通过 `list_similar_incidents` 获取]
### 部署关联
[事件前后的近期变更,通过 `query_changes` 获取]
### 诊断
**潜在根因**:
- [观察 1]
- [观察 2]
**影响范围**: [分析]
**响应效果**: [分析]
何时使用多个 Agent
在以下情况并行启动诊断 Agent:
- 用户提到多个事件 ID
- 用户要求 "对比" / "compare" 事件
- 用户询问 "相关事件" 且你需要诊断每个
用户: "分析事件 A、B、C"
→ 并行:
Agent 1: 诊断事件 A
Agent 2: 诊断事件 B
Agent 3: 诊断事件 C
→ 汇总发现