AIOps Agent 运维闭环系统重构设计(V4 草案)#
状态:P0 已实现(2026-07-09,
pytest426 passed,见layers-v4/P0-IMPLEMENTATION-REPORT.md) 日期:2026-07-08 定位:这是对现有 V3(fast/deep 双模式)的一次骨架级重构提案。本文只做”落库”——先把整体设计、参考出处、迁移路径固化下来,后续每个模块(Layer)再单独开文档深挖。 原始输入:~/Downloads/aiops-agent-closed-loop-design.md(Spring/Milvus/DocMind 血统的六层闭环草案)+ 本仓库 V3 现状。核心约束:本文每一个关键设计决策都必须挂一个真实的开源 / 成熟商业项目参考,不自创。 见 §10 参考出处汇总。
0. TL;DR#
- 分层自适应调查引擎:砍掉调用方手选的
fast/deep双模式,换成确定性三级递进的唯一调查链路——告警经规则引擎预处理(去重、时间窗聚合、拓扑级联关联)收敛至根因候选集;Tier 1 已知故障 Runbook 匹配直接处置,Tier 2 相似故障向量检索限定 3 轮定向验证,Tier 3 未命中进入 ReAct Agentic Loop 深度调查。各级未命中自动递进并继承已有证据。 - 假设驱动式调查机制:Tier 3 采用两阶段推理——LLM 先生成 3-5 条根因假设按可能性排序,再在 ReAct Loop 中逐条调用工具定向取证,每轮输出结构化假设状态与置信度,达标即终止,避免非必要推理。
- Runbook 冷启动与自增长闭环:初期导入通用 Runbook 实现冷启动;后续 Tier 3 调查经人工确认后,LLM 自动从证据链提炼前置条件与处置步骤,生成结构化 Runbook 经审核入库,持续扩充 Tier 1 覆盖率,形成”越用越准”的知识飞轮。
- LLM 修复操作的安全治理:将修复操作按资源域建模为参数受限的结构化工具,以调用白名单工具替代生成自由 shell 命令,消除命令注入与越权风险;高风险操作通过飞书移动端一键审批,超时自动降级。对齐 OWASP LLM Top 10 / Google SRE,见 §5。
- 事务化修复与验证闭环:为修复方案创建补偿事务并预生成补偿操作;执行前 CAS 漂移检测,失败自动补偿回滚;执行后三级递进门禁(命令成功 → 服务健康 → 指标恢复)逐级验证,形成执行-验证-回滚的自校验闭环。
- 以 Incident 状态机为骨架(第一类公民),告警只是喂给 Incident 的信号,Incident 有完整生命周期。保留”六层闭环”分层思想,全部翻译成本项目 Python 技术栈(FastAPI / LangGraph / pgvector / Redis Streams / MCP / DeepSeek-V4)。
- 核心理念不变:“进来的是症状,出去的是根因 + 修复验证结果 + 沉淀的知识”。
1. 为什么要重构:现有 fast/deep 的问题#
| 现状 | 问题 | 重构方向 |
|---|---|---|
fast / deep 由调用方手选 | 让调用方替系统决定花多少算力,真实 OnCall 里这是错的——该由告警本身决定。且用两个模式换三级阶梯只会更复杂,复杂度不降反升 | 分层自适应调查引擎:确定性三级递进(Tier 1→2→3),调查深度由系统决定(§3) |
| 一条告警 = 一个诊断任务 | 缺乏贯穿始终的事件生命周期;告警风暴下无法降噪聚合;人工介入/多轮调查难表达 | Incident 状态机为骨架(§2) |
| 预处理薄弱 | 缺去重/抑制/关联,风暴下每条都拉满 LLM,撞百炼 RPM/TPM 限流 | 强化纯规则预处理层(§4 L2) |
| 编排是较裸的图/循环 | 长时等待、审批、重试、定时的编排没有统一的持久化模型 | 明确编排引擎选型(§7) |
2. 骨架:Incident 生命周期状态机#
Incident 是第一类公民。告警经预处理后归并进 Incident,Incident 在一张持久化状态机上流转:
DETECTED
│ 预处理产出 IncidentContext
▼
TRIAGING ──────────────► 分诊:定 impact,进入唯一调查链路(便宜优先、命中即止)
│
▼
INVESTIGATING ◄───────── 任意后续态可被"新告警并入"拉回此态(增量再调查)
│ 产出 Investigation(假设树 + 根因 + 证据链)
▼
RCA_READY
│ 决策层判自治等级
├── AUTO ──────────► REMEDIATING
├── AWAIT_APPROVAL ─► (飞书一键审批 / 超时降级)► REMEDIATING or ESCALATED
└── HANDOFF ───────► ESCALATED(推 RCA 给人工,Agent 不执行)
│
REMEDIATING
│ 事务化工具:快照→CAS→执行
▼
VERIFYING
│ verify_metric / metric_recovery 门禁;resolved ≠ 根治
├── 通过 ─► RESOLVED ─► (回流学习层)
└── 失败 ─► 自动回滚 ─► ESCALATEDplaintext状态迁移表、并发规则(同 Incident 串行、跨 Incident 并行)、增量再调查的合并语义 留到 Layer 文档细化。
参考:incident.io / Rootly / FireHydrant 的事件生命周期与时间线模型;Netflix Dispatch(开源事件管理);状态持久化用 LangGraph checkpointer(现有)或 Temporal(§7)。
3. 核心改动:分层自适应调查引擎(取代 fast/deep)#
3.1 设计立场:确定性三级递进,而非调用方选模式#
fast/deep 的问题不在于”只有两个模式”,而在于存在需要调用方选择的模式。把两个模式换成三级阶梯但仍让调用方选,只是把 2 个模式变成 3 个模式,复杂度不降反升——这是一次被否掉的中间设计,记录在此以示教训。
正解是调用方只提交告警,系统内部一条确定性三级递进链路自动决定调查深度:Tier 1 → Tier 2 → Tier 3,每级未命中自动递进至下一级并继承已有证据。调查”走多深”是系统的输出结果而非输入参数,对调用方完全透明。
3.2 唯一链路:规则预处理 → 确定性三级递进#
提交告警(调用方只做这一步,不选任何东西)
│
▼
规则引擎预处理(去重、时间窗聚合、拓扑级联关联)──► 收敛至根因候选集(IncidentContext)
│
▼
Tier 1:已知故障 Runbook 匹配 + 前置条件校验 ──命中──► 确定性处置(不进 LLM)──► 结束
│未命中(继承已有证据)
▼
Tier 2:相似故障向量检索 + 限定 3 轮定向验证历史根因 ──命中──► 复用历史 RCA ──► 结束
│未命中(继承已有证据)
▼
Tier 3:假设驱动 ReAct Agentic Loop 深度调查 ──► 输出根因 + 证据链 ──► 结束plaintext- Tier 1/2/3 是同一条链路上的三个确定性递进阶段,不是三个模式,也没有入口分流开关。各级未命中自动递进至下一级,并继承已有证据。
- “省算力”是**“命中即止”的自然结果**,不需要任何人预先选择投入等级。
- 影响面(impact_score)只影响各级的置信门槛(高影响面要求更高置信才敢在 Tier 1 停),不改变链路结构。
3.3 各 Tier 的实现机制与参考项目#
| Tier | 做什么 | 参考项目 |
|---|---|---|
| Tier 1 已知故障 | 告警指纹匹配 Runbook + 前置条件校验,命中后跑确定性剧本,不进 LLM(Playbook schema + 种子剧本可抄 §11.1) | Robusta playbooks;StackStorm(sensor→rule→action);PagerDuty Event Orchestration |
| Tier 2 相似故障 | 向量检索相似 Incident/Runbook,命中后限定 3 轮定向验证历史根因是否适用当前告警上下文(便宜档小模型做适用性复核) | Microsoft RCACopilot(检索增强 RCA);k8sgpt analyzers |
| Tier 3 未知故障 | 假设驱动式两阶段推理:LLM 先生成 3-5 条根因假设按可能性排序,再在 ReAct Loop 中逐条调用工具定向取证,每轮输出结构化假设状态与置信度,达标即终止(详见 §3.5) | HolmesGPT(Robusta 开源);ReAct 论文;Anthropic Orchestrator-Workers |
三者是同一条链路的确定性递进,各级未命中自动递进至下一级并继承已有证据,而非并列的三种模式。
对百炼 RPM/TPM 限流的意义:越多告警在 Tier 1/2 被消化,越少 LLM 出站调用,直接缓解已知的 TPM 隐患。
3.4 各 Tier 的置信判定与递进降级#
| Tier | 命中条件 | ”解决”的判定 | 未命中 / 失败时 |
|---|---|---|---|
| Tier 1 已知故障 | 告警指纹精确匹配 Runbook(复用 app/incidents/signature.py)+ 前置条件校验通过 + 冷却期外 | 剧本自带 verify 步(沿用 L5 三级验证门禁)通过才算解决,跑完 ≠ 解决 | 自动递进至 Tier 2,继承已有证据,同一 Incident 内不再回退 Tier 1(防循环) |
| Tier 2 相似故障 | 混合检索相似度过阈值 + 限定 3 轮定向验证(便宜档小模型做适用性复核:历史案例上下文是否匹配当前告警) | 复用的 RCA 仍要走 L4 决策 + L5 验证门禁,不因”历史成功过”而豁免 | 标记该案例不适用并自动递进至 Tier 3;误命中记入 L6 负样本,反哺检索 |
| Tier 3 未知故障 | 兜底,无条件进入 | RCAJudge 假设置信度 + 证据链完整性达标(每轮输出结构化假设状态与置信度,达标即终止) | 置信不足 → ESCALATED 交人工,不硬编结论 |
- impact_score 只调门槛不改结构:影响面越大,Tier 1/2 的置信门槛越高,极端情况强制走 Tier 3 复核后才允许处置——影响面越大,越不敢便宜地停。
- 优雅降级(架构副产品,值得点名):百炼限流或 LLM 完全不可用时,Tier 1 纯规则、Tier 2 检索侧仍然工作,系统从”智能诊断”退化为”确定性自愈 + 相似案例推荐”,而不是整体瘫痪。这是把规则层放在 LLM 前面的直接收益,也是对 DeepSeek-V4 出站脆弱性(已知隐患)的架构级兜底。
3.5 假设驱动式调查机制(Tier 3 核心)#
Tier 3 不做无目标的 ReAct 循环,采用两阶段推理把发散收敛分离:
阶段一:假设生成
- LLM 结合 IncidentContext(告警详情、拓扑关联、Tier 1/2 的排除结论)+ RAG 检索注入,生成 3-5 条根因假设。
- 每条假设包含:假设描述、涉及组件、所需验证的证据类型、可能性排序(ranked by prior probability)。
- 假设间应具有互斥性或至少不同故障域覆盖,避免同类假设堆叠。
阶段二:定向取证 ReAct Loop
- 按可能性排序逐条假设调用工具定向取证(orchestrator-workers 模式,高优先假设可并行取证)。
- 每轮输出结构化假设状态:
INVESTIGATING/CONFIRMED/REFUTED/INSUFFICIENT_EVIDENCE,附置信度分数。 - 某假设达到
CONFIRMED+ 置信度达标 → 立即终止,不继续验证剩余假设,避免非必要推理和 token 消耗。 - 所有假设遍历完仍无
CONFIRMED→ 取置信度最高者标记为BEST_EFFORT,进入 ESCALATED 交人工复核。
参考:ReAct 论文(reason-then-act);HolmesGPT 的 investigation 模式;Anthropic《Building Effective Agents》Orchestrator-Workers 模式。
3.6 Runbook 冷启动与自增长闭环#
Tier 1 的确定性 Playbook 覆盖率直接决定系统的”零 LLM 消化率”。Runbook 从哪来、怎么长是核心问题:
冷启动(Day 0)
- 导入通用 Runbook 种子库(磁盘清理、服务重启、OOM 处理等高频场景),schema 借鉴 §11.1
playbooks.ts(detect / diagnose / action / escalate / cooldown)。 - 从现有
app/skills/剧本批量转换为结构化 Runbook 格式,补齐前置条件校验(precondition check)。
自增长(Tier 3 → Tier 1 飞轮)
- Tier 3 调查产出的根因 + 证据链 + 处置步骤,经人工确认(RCA 采纳 + 验证门禁通过)后,触发 Runbook 生成流水线:
- LLM 自动从证据链中提炼前置条件(告警指纹匹配规则)与处置步骤(结构化动作序列)。
- 生成结构化 Runbook 草稿(含 detect/diagnose/action/verify/rollback 各阶段)。
- 草稿进入审核队列(人工审核 or 自动化回归测试),审核通过后入库。
- 入库后同类告警下次触发时命中 Tier 1,调查深度从 Tier 3 前移至 Tier 1——这是”越用越准”飞轮的具体机制。
防污染(与 L6 联动)
- 只有”验证门禁通过 + 人工确认”的案例才允许生成 Runbook,未确认的不进入生成流水线。
- 生成的 Runbook 版本化管理,支持下架;命中后 verify 失败的 Runbook 自动标记待审查。
- Golden Set 周回归覆盖 Runbook 有效性(Runbook 命中率 + 命中后处置成功率)。
参考:StackStorm pack 生态(社区 Runbook 共享);Robusta playbooks(种子 + 自定义);PagerDuty Runbook Automation。
4. 分层设计(融合六层 + 参考)#
L1 接入层(Ingestion)#
- 统一 Alert Envelope,
resource字段结构化(cluster/service/host/instance),作为关联/写闸/CMDB 对齐的锚点。 - 幂等:fingerprint(labels+startsAt) 做 key,Redis
SET NX。 - 零智能:只归一化 + 入队(现有 Redis Streams),重活全下沉,webhook 202 立即返回。
- 参考:Prometheus Alertmanager(label 模型 / 重推机制);Keep(keephq) 接入层;OpenTelemetry Resource 语义约定。
L2 预处理层(Pre-processing,纯规则不进 LLM)#
- 去重 / 抑制 / 时间窗聚合:直接对标 Alertmanager 的
group_wait/group_interval/inhibit_rules,不自创窗口逻辑。 - 拓扑关联:同 node/service + 依赖上游 = 根因候选;拓扑来源 K8s API + OTel Service Graph。
- 抖动检测 + Impact 评分:保留原草案加权模型;Impact 不改变调查链路结构,只调节 §3 各 Tier 的置信门槛(影响面越大越不敢提前停)。
- 产出
IncidentContext推入调查队列。 - 参考:Alertmanager;BigPanda Open-Box ML / Moogsoft Situations(告警关联成事件);PagerDuty Intelligent Alert Grouping。
L3 调查层(Investigation,核心,承载 Tier 1/2/3 三级递进)#
- Tier 1 Runbook 匹配:告警指纹精确匹配 + 前置条件校验,命中则跑确定性剧本不进 LLM(种子 Runbook 冷启动 + 自增长闭环见 §3.6)。
- Tier 2 历史根因复用:pgvector + pg_search(BM25) + RRF 混合检索相似 Incident,命中后限定 3 轮定向验证适用性(便宜档小模型复核),省 token 又防误命中。语料是
incident_vectors(已解决 Incident 在迁到 RESOLVED 时向量化落库),与知识库kb_chunks分表——语料性质不同,混表会让知识库检索被历史故障报告污染。RRF 只用于排序;命中门槛用向量 cosine(BM25-only 命中回落字面相似度),因为 RRF 分数没有 [0,1] 量纲。误命中记入负样本,按sim/(1+w·n)反哺检索降权。三档降级:embedding 挂→只走 BM25;没装 pg_search→退纯向量;语料空→回落字面相似 + Wiki。 - Tier 3 假设驱动式两阶段推理(核心差异化,详见 §3.5):LLM 先生成 3-5 条根因假设按可能性排序,再在 ReAct Loop 中逐条调用工具定向取证,每轮输出结构化假设状态与置信度,达标即终止。
- 并行 subagent 取证 = Orchestrator-Workers:现有 deep 图的多 subagent 保留并正名,用于 Tier 3 高优先假设的并行取证。
- 工具输出压缩:三级(源头过滤→JSONPath→小模型摘要),小模型用便宜档(Qwen-turbo)。
- 参考:ReAct 论文;HolmesGPT;RCACopilot;Anthropic Orchestrator-Workers。
L4 决策层(Decision)#
- 自治等级矩阵(AUTO / APPROVAL / MANUAL)= 运维版自动驾驶分级,按 confidence × risk × 白名单判定。
- 审批流:接现有飞书长连接一键审批 + 超时降级
escalate_then_deny。 - 参考:Shoreline autonomy levels;Google SRE(先建议后自动、错误预算约束);AWS SSM Automation approval step。
L5 执行层(Execution,承载 bullet 4+5:安全治理 + 事务化闭环)#
- 资源域建模:将修复操作按资源域建模为参数受限的结构化工具(restart_service / clean_disk / scale_replicas…),LLM 产出的是白名单动作类型 + 参数,以调用白名单工具替代生成自由 shell 命令,消除命令注入与越权风险。
- 事务化修复(reconcile / plan-apply 思想):为修复方案创建补偿事务并预生成补偿操作;执行前进行 CAS 漂移检测(快照→比对→确认状态未漂移再执行),失败自动补偿回滚。
- 三级递进验证门禁:执行后逐级验证,形成执行-验证-回滚的自校验闭环:
- 命令成功:执行返回码 + 状态变更确认
- 服务健康:目标服务健康检查通过(
verify_metric) - 指标恢复:关键业务指标恢复到告警前基线(
metric_recovery),resolved ≠ 根治,OOM/Crash 类额外观察 N 分钟
- 护栏:熔断(同组件 1h 内 3 次失败 → 停)、Redis 分布式锁(同组件串行)、RBAC/SA 隔离、命令安全闸(危险命令分级 × 角色授权矩阵 + 子 shell/base64/
curl|sh/命令链绕过拦截,翻写 §11.1 commandFilter)。 - 高风险审批:高风险操作通过飞书移动端一键审批,超时自动降级(
escalate_then_deny)。 - 参考:K8s Controller reconcile;Terraform plan-apply + drift;Argo Rollouts(analysis + 自动回滚);StackStorm guardrails;Shoreline Op。
L6 学习层(Learning,跨事件进化闭环,承载 Runbook 自增长)#
- Postmortem 回流 RAG:关闭即沉淀,下次相似告警在 Tier 2 命中历史,形成越用越准的飞轮。
- Runbook 自增长闭环(核心,详见 §3.6):Tier 3 调查经人工确认后,LLM 自动从证据链中提炼前置条件与处置步骤,生成结构化 Runbook 经审核入库,持续扩充 Tier 1 覆盖率——这是”Tier 3 → Tier 1”知识飞轮的具体落地路径。
- 防污染(飞轮的刹车):只有”验证门禁通过 + 人工确认”的 Incident 才允许回流入库和生成 Runbook;沉淀条目版本化可下架;Tier 2 误命中记负反馈降权。用 Golden Set 周回归监控”越学越错”的漂移。
- 人工反馈入口:RCA 采纳/驳回、审批拒绝原因、ESCALATED 后的人工结论,都作为
human_feedback写回 IncidentReport,是 L6 最高质量的监督信号。 - Golden Incident Set + 每周回归:复用现有
eval_ragas/eval_router底子。 - 指标目标(沿用草案):RCA 准确率 > 80%、平均调查轮次 < 8、调查耗时 < 5min、修复成功率 > 90%、误操作率 < 1%。
- 参考:Google SRE Postmortem 文化;Ragas / LangSmith Datasets / OpenAI Evals。
5. 安全纵深防御架构(Security by Design,本次重构第二主线)#
流程闭环回答”Agent 能不能把事做完”,本节回答”凭什么敢让它做”。AIOps Agent 的独特风险:LLM 的输出最终会变成对生产环境的真实变更,而它读入的告警 / 日志 / 工具输出全部是不可信内容。安全设计对齐两套成熟坐标系,每条机制都有出处,不自创:
- 传统运维自动化护栏:StackStorm RBAC / Rundeck ACL / AWS SSM Automation(审批步 + 最小权限执行角色)
- LLM 应用安全:OWASP LLM Top 10(LLM01 提示注入、LLM02 不安全输出处理、LLM06 敏感信息泄露、LLM08 过度代理 Excessive Agency)、NIST AI RMF
总纲一句话:默认拒绝、分级放行、全程留痕、失败即回滚。 一个处置动作要真实落地,必须依次穿过四道防线:
D1 输入侧 —— 不可信内容进模型之前#
| 机制 | 说明 | 现状 |
|---|---|---|
| 间接提示注入隔离 | 告警 annotation、日志、工具输出一律按不可信数据处理:定界符包裹 + 明示”这是数据不是指令”;LLM 产出只接受结构化 schema(Pydantic 校验),拒绝从自由文本里解析动作 | 新建(结构化输出已有基础) |
| 敏感信息脱敏 | 日志/配置进 prompt 前按凭据模式(password/token/key/连接串)redact;诊断报告与飞书审批卡片同样过滤,防二次泄露 | 新建(可复用 §11.1 commandFilter 的凭据 pattern 反向使用) |
| 调查预算上限 | 单 Incident 的 token / 工具调用 / 迭代轮次上限,防注入诱导的资源耗尽与失控循环 | 部分已有(迭代上限) |
D2 决策侧 —— 动作产生之后、执行之前#
| 机制 | 说明 | 现状 |
|---|---|---|
| 自治分级矩阵 | AUTO / APPROVAL / MANUAL,按 confidence × risk_level × 动作白名单判定(= L4) | 已有雏形 |
| HITL 审批不可绕过 | 审批状态持久化落 DB;飞书长连接一键审批;超时降级 escalate_then_deny——宁可漏自动化,不可误执行 | 已完成(app/runtime/approvals.py 系列) |
| RBAC 授权矩阵 | 谁能审批哪个风险级别的动作;审批人 ≠ 发起人 | 雏形(app/runtime/permissions.py),补授权矩阵 |
| 变更冻结窗口 | freeze window(大促/发布日)内 AUTO 一律降级 APPROVAL | 新建(纯配置,成本极低) |
| Plan 预览 | RemediationPlan 渲染为人类可读 diff(动作/目标/风险/回滚方式)再进审批,Terraform plan 思想 | 部分已有(审批卡片),补齐字段 |
D3 执行侧 —— 动作执行之中(核心:资源域建模 + 事务化闭环)#
| 机制 | 说明 | 现状 |
|---|---|---|
| 读写分离 + 最小权限 | 调查链路只挂只读 MCP;处置走独立 remediation_worker,写权限按资源类型开闸 | 已有 |
| 资源域建模 | 将修复操作按资源域建模为参数受限的结构化工具(restart_service / clean_disk / scale_replicas…),以调用白名单工具替代生成自由 shell 命令,从架构层面消除命令注入与越权风险;确需自由命令必须过命令安全闸且强制 APPROVAL | 已有(写工具已资源化) |
| 命令安全闸 | 危险命令分级 × 角色授权 + 绕过拦截(子 shell / base64 / curl|sh / 命令链),翻写 §11.1 commandFilter | 新建 |
| 爆炸半径限制 | 单 Incident 动作数上限、单动作目标资源数上限、同组件熔断(1h 内 3 次失败即停)、Redis 分布式锁同组件串行 | 部分已有(锁、熔断),补上限 |
| 事务化执行 + 补偿回滚 | 为修复方案创建补偿事务,预生成补偿操作;执行前 CAS 漂移检测(快照→比对→确认状态未漂移),失败自动补偿回滚(app/remediation/transaction.py / saga.py) | 已有 |
| 三级递进验证门禁 | 命令成功 → 服务健康 → 指标恢复,逐级验证形成执行-验证-回滚的自校验闭环 | 已有核心两级,补第一级 |
D4 事后 —— 可审计、可回滚、可追责#
| 机制 | 说明 | 现状 |
|---|---|---|
| 全链路审计 | 每次 LLM 决策 / 工具调用 / 审批 / 执行落审计表(app/runtime/remediation_audit.py、app/orchestration/audit.py),以 incident_id 为 correlation id 贯穿 OTel trace | 已有底子,统一挂到 incident_id |
| 证据链可追溯 | 报告的每个结论回指原始证据(deep 图现有理念,推广到全链路) | 已有 |
| 回滚为一等公民 | 无 rollback 定义的动作自动降级 APPROVAL/MANUAL;验证门禁失败自动回滚(= L5) | 已有门禁,补”无回滚即降级”规则 |
参考:OWASP LLM Top 10、NIST AI RMF、Google SRE Book(渐进放量 / 错误预算)、StackStorm / Rundeck / AWS SSM Automation、Terraform plan、Argo Rollouts。
6. 核心数据模型(沿用草案,落到本项目命名)#
四个对象在层间传递(详细字段见原草案 §核心数据模型,此处仅列骨架,Layer 文档补全):
IncidentContext(L2 → L3):source_alerts、alert_group_reason、root_cause_candidate、impact_score、is_flapping、topology_context、matched_runbooks。Investigation(L3 → L4):hypothesis_tree(含 Evidence)、root_cause(component/failure_mode/evidence_chain)、total_iterations。RemediationPlan(L4 → L5):actions(type/command/target/risk_level/rollback_command)、confidence、autonomy_decision、verification_steps。IncidentReport(L5 → L6,最终产出,活文档随状态更新版本):timeline、root_cause、remediation_result、verification_results、human_feedback、knowledge_extracted。
7. 编排引擎选型(草案未覆盖,本文补充)#
事件响应是 长时运行 + 有等待(verify 30s~5min)+ 有人工审批 + 要重试 的工作流,不应用裸循环写。
| 方案 | 何时选 | 参考 |
|---|---|---|
| LangGraph + checkpointer + interrupt | 已在用,Python 原生,HITL 中断/续跑天然支持,改造成本最低 | LangGraph 官方 HITL |
| Temporal / Netflix Conductor·Maestro / Uber Cadence | 当”等待/重试/定时”编排复杂度压垮 LangGraph 时,把 L5 单独抽出 | Temporal;Netflix Maestro;Uber Cadence |
建议:先用 LangGraph 把 Incident 状态机做扎实(复用现有 checkpoint 经验),L3~L5 建成一张可中断可续跑的图;不要一步到位上 Temporal。
8. 技术栈映射(草案 Spring 版 → 本项目 Python 版)#
| 模块 | 草案(Spring) | 本项目(采用) | 现状 |
|---|---|---|---|
| Webhook 接收 | Spring Boot Controller | FastAPI | 现有 |
| 队列 | Redis Stream / Kafka | Redis Streams | 现有 |
| 预处理规则引擎 | Java 规则引擎 | Python 规则模块(对标 Alertmanager 语义) | 新建 |
| 检索 | Milvus + BM25 | pgvector + ParadeDB pg_search + RRF | 现有 |
| ReAct / 编排 | Spring AI ToolCallingChat | LangGraph | 现有 |
| LLM | DashScope | DeepSeek-V4 经百炼(注意 RPM/TPM,更要靠 Tier 1/2 省 LLM 调用) | 现有 |
| 工具层 | MCP Server | langchain-mcp-adapters + 只读 MCP | 现有 |
| 审批 | 飞书/Slack Bot | 飞书长连接一键审批 | 已完成 |
| 事实/知识库 | Milvus + MySQL | Postgres(asyncpg) + pgvector | 现有 |
| 可观测 | OTel + Langfuse + Grafana | OTel GenAI 语义约定 + Langfuse + Grafana | 新增 |
9. 与现有代码的迁移路径#
按 ROI 排序,逐个模块深挖时按此顺序推进:
P0 — L2 预处理 + Incident 状态机✅ 已实现(app/incidents/state_machine.py+app/preprocessing/)- 降噪率埋点已就位(
suppressed/dedup_count),数字未实测。
- 降噪率埋点已就位(
P1 — 合并 fast/deep 为分层自适应调查引擎(确定性三级递进)✅ 已实现(app/investigation/,fast/deep 双图已删除)diagnosis_graphs/(deep) 与 fast 主链路合并成一张 LangGraph 图,图内按 Tier 1→2→3 顺序执行、命中即止、未命中自动递进并继承证据,删除入口的模式分流开关。skills/(剧本)承接 Tier 1 的确定性 Runbook;subagents/承接 Tier 3 的假设驱动并行取证(orchestrator-workers)。- Tier 2 限定 3 轮定向验证,复用
rag/混合检索 + 便宜档小模型适用性复核。 - Tier 3 实现两阶段推理:假设生成 + 定向取证 ReAct Loop(§3.5)。
- P1.5 — 安全治理 + 事务化闭环(§5 D3,对应 bullet 4+5)
- 资源域建模已有基础(写工具已资源化),补齐命令安全闸(D3)、爆炸半径上限、变更冻结窗口;事务化执行补 CAS 漂移检测明确化 + 三级验证门禁统一接口。
- P2 — Runbook 冷启动 + 学习闭环
- ✅ 种子 Runbook(
data/runbooks/,5 个)+ 自增长流水线(app/runbooks/generator.py→reviewer.py→api/v1/runbooks.py)已实现。 - ⬜
evidence/+wiki/+ eval 脚本接 L6,补 Golden Set 回归 —— 未做。
- ✅ 种子 Runbook(
- 执行层几乎不动
services/remediation的事务化工具接 L5,仅需被状态机驱动。
10. 参考出处汇总(防”拍脑袋”清单)#
| 设计点 | 参考项目 |
|---|---|
| 接入 / 聚合 / 抑制 / 幂等 | Prometheus Alertmanager、Keep(keephq) |
| 告警关联成事件 | BigPanda、Moogsoft、PagerDuty Intelligent Alert Grouping |
| 事件生命周期状态机 | incident.io、Rootly、FireHydrant、Netflix Dispatch |
| 确定性 Playbook 自愈(Tier 1) | Robusta、StackStorm、PagerDuty Event Orchestration |
| 检索增强 RCA(Tier 2) | Microsoft RCACopilot、k8sgpt |
| 假设驱动 LLM 排障 Agent(Tier 3) | HolmesGPT(Robusta)、ReAct 论文 |
| Agent 编排模式(Routing / Orchestrator-Workers / Evaluator-Optimizer) | Anthropic《Building Effective Agents》 |
| 因果 RCA(可选进阶) | Salesforce PyRCA / Merlion |
| 自治分级 + 护栏 | Shoreline.io、Google SRE Book、AWS SSM Automation |
| LLM 应用安全(提示注入 / 过度代理 / 敏感泄露,§5) | OWASP LLM Top 10、NIST AI RMF |
| 事务化执行 / 回滚 | K8s Controller reconcile、Terraform plan-apply、Argo Rollouts |
| 长时工作流编排 | Temporal、Netflix Conductor·Maestro、Uber Cadence、LangGraph HITL |
| 评测 / 黄金集 / 可观测 | Ragas、LangSmith、Langfuse、OpenTelemetry GenAI |
| 处置护栏 / Playbook / 验证门禁(现成开源实现) | itops-agent-platform(详见 §11) |
11. 参考实现借鉴:itops-agent-platform(可抄清单)#
仓库:https://github.com/qinshihu/itops-agent-platform ↗ · License MPL-2.0(文件级 copyleft)。 抄法约定:对方是 TypeScript,我们是 Python,一律「借鉴设计 + Python 自实现」,不逐行复制。MPL 是文件级 copyleft——把思想重写为自有表达无义务;仅当逐行 port 某个源文件时,才需在该 Python 文件保留 MPL 署名并公开。故本清单全部走「翻写逻辑」,零风险。
11.1 可抄清单(按性价比排序)#
| 排名 | 借鉴点 | 现成文件(行数) | 抄什么 | 可抄度 |
|---|---|---|---|---|
| 🥇 | 危险命令分级(→ L5 护栏) | middleware/commandFilter.ts (189) | 安全边界血泪逻辑:shell 分词、;&&|| 链拆分、剥 sudo、$(...) 子 shell 递归、base64 -d| / curl|sh 绕过拦截、凭据模式 warn、按角色 block | 极高(Python 用 shlex 替 shell-quote) |
| 🥈 | Playbook 模板库(→ Tier 1) | data/playbooks.ts (328) | Playbook schema(detect/diagnose/action/escalateToHuman/cooldownMs)+ 现成种子剧本(磁盘清理/服务重启…) | 高(schema 照搬、剧本当种子) |
| 🥉 | 验证门禁(→ L5,意外收获) | alertAutoResponse/remediation/verificationGates.ts (353) | 5 级递进门禁:command_success→service_health→metric_recovery→baseline_comparison→impact_assessment。前三级已实现(app/remediation/regression.py::build_standard_gates);后两级仍是 P2 backlog | 高 |
| 4 | 模型降级 + 熔断(→ L3/§7) | llm/llmService/circuitBreaker.ts (216) | 按 provider 拆熔断器 + 半开重试 + 空闲清理 + 指数退避 | 中:Python 用 tenacity+pybreaker,只抄「per-provider 注册表 + half-open」思路 |
| 5 | 处置策略匹配(→ Tier 1/L4) | auto/services/remediation/policyEngine.ts (109) | 告警→策略匹配(source/severity/keyword/tag)+ 冷却 isInCooldown + 每小时限流 isRateLimited | 中:逻辑简单,主要抄 cooldown/限流概念 |
| 6 | 取证 agent 花名册(→ L3) | constants/agentNames.ts (18) + multiAgent/{Coordinator,Specialists}.ts | 只抄花名册:服务器命令/巡检/合规/告警处理/故障诊断/日志分析/变更执行/文档生成/数据库运维 等 10 角色 | 低:代码不抄(我们 LangGraph orchestrator-workers 更强),只抄角色清单当 checklist |
11.2 真正动手翻写的三项(其余只抄思路/清单)#
- ⬜
commandFilter.ts→ Python 处置命令安全闸:未做(P1.5)。最值钱,把自己想不全的绕过手段(子 shell、base64、curl|sh、命令链)都列全了,直接补进 §5 D3(执行侧防线)。注:当前 Runbook / 处置提案里根本没有”命令”这个字段(资源域建模,只有
action_type+params),所以命令安全闸目前只对”确需自由命令”的未来通道有意义 —— 那条通道还没开。 - ✅
playbooks.ts的 schema + 种子剧本 → 填 Tier 1 Runbook 冷启动空白:已实现(app/runbooks/models.py+data/runbooks/*.yaml)。 - ✅
verificationGates.ts的 5 级门禁 → 补齐 L5:核心三级已实现(build_standard_gates),baseline_comparison / impact_assessment 仍是 P2 backlog。
熔断(4)与策略匹配(5)抄思路不抄码(Python 有 tenacity/pybreaker);花名册(6)只抄那张角色表。
11.3 拖拽可视化编排工作流:借鉴,但限定用途#
对方前端 @xyflow/react 拖拽编辑器 + 后端 workflow/services/WorkflowEngine.ts(command/script/agent/condition/message 节点 + 串并行/条件分支 + Cron)。
判定:有条件借鉴。
- 绝不用于整条诊断链路。我们刚把 fast/deep 收敛成「确定性三级递进」(§3);把诊断做成人类拖拽的静态 DAG 是开倒车——Tier 3 未知故障要的是假设驱动 ReAct Loop(§3.5),不是预先画死的流程图。整链路可视化编排 = 复杂度回潮。
- 只借鉴到 Tier 1 的确定性 Runbook。Runbook 本质就是「串行/并行/条件 + 人工节点」的确定性流程,天生适合可视化,让 SRE 不写代码也能维护剧本——这正好和 §11.1 的
playbooks.ts借鉴 + §3.6 Runbook 冷启动合流。 - 落地节奏:先 YAML/代码化 Playbook(MVP,够用、可 diff、可测试);可视化拖拽编辑器列为产品化 backlog。真要做时,
WorkflowEngine.ts的节点类型与分支执行器是现成后端蓝本,@xyflow/react是现成前端选型。
12. 后续深挖计划(每个模块单独开文档)#
-
layers-v4/P0-incident-statemachine-and-adaptive-investigation.md(P0,含状态机 + L2 预处理 + Tier 1/2/3 调查引擎 + Runbook schema + Hypothesis model + DDL + diff 清单) -
layers-v4/P0-IMPLEMENTATION-REPORT.md(P0 实施报告:做了什么 / 没做什么 / 已知缺口) ← 2026-07-09 落地 -
layers-v4/L3-adaptive-ladder-investigation.md(P1,深挖 Tier 3 prompt 模板 + subagent 编排细节) -
layers-v4/L4-decision-autonomy.md -
layers-v4/L5-execution-reconcile.md -
layers-v4/L6-learning-loop.md -
layers-v4/orchestration-engine-choice.md(LangGraph vs Temporal 决策记录) -
layers-v4/security-defense-in-depth.md(§5 展开:RBAC 授权矩阵、命令闸规则集、脱敏 pattern、审计表 DDL,随 P1.5 推进) -
layers-v4/metrics-and-acceptance.md(§12 展开:基线测量方法、告警风暴回放数据集、Golden Incident Set 构建)
本文为总纲。逐模块深挖时,先补齐该模块的:状态迁移/接口契约、数据表 DDL、与现有代码的 diff 清单、以及对应参考项目的具体做法对照。