Skip to content

Repository files navigation

AlertPilot

IT 运维告警分诊与处置建议多智能体平台。

目标岗位能力对标:Agent 编排(LangGraph)/ RAG / 评测 / 可观测 / 生产化落地。 本仓库按里程碑演进,M1-M4 全部交付。PM 文档见 docs/(PRD / 风险登记册 / 迭代复盘)。

评测基线(黄金集 20 条)

指标 mock(离线回归) 真实模型(校准前) 真实模型(校准后)
分类准确率 100% 90% 90%
定级准确率 100% 70% 80%
链路完成率 100% 100% 100%
平均 token/条 1521 2824 3490

迭代改进实录:首轮真实模型评测发现定级系统性偏高(P3 判为 P2), 通过在分诊 prompt 中引入四级判定标准与"宁低勿高"校准原则, 定级准确率提升 10 个百分点(报告对比见 reports/)。 评测报告由 python scripts/run_eval.py [--real] 自动生成;CI 每次 push 自动跑 mock 基线。

架构(M2)

告警接入 → [分诊 Agent] → [RAG 检索 Runbook] → [诊断 Agent] → [规划 Agent] → 【审批门 HITL】→ [执行器] → [复盘 Agent]
           分类/定级/去重      BM25 检索         根因假设+证据    工具调用计划     写操作需人工批准    副作用分级执行   报告+记忆沉淀
  • 告警接入:POST /alerts(原生 JSON)或 POST /webhook/alertmanager(Prometheus Alertmanager webhook 推送,severity 自动映射 P1-P4,resolved 告警自动跳过)

  • 分诊 Agent:分类(compute/storage/database/network/application)、定级(P1-P4)、去重键、摘要

  • RAG:Runbook 按章节切块,RRF 混合检索(BM25 关键词 + Qdrant/FastEmbed bge-small-zh 稠密向量,ALERTPILOT_RETRIEVER_BACKEND 可切换 bm25/dense/hybrid,向量依赖缺失自动降级 BM25)

  • 诊断 Agent:基于告警 + 检索证据输出根因假设与处置建议(含输出契约归一化,容忍 LLM 返回格式漂移)

  • 规划 Agent:诊断建议 → 结构化工具调用计划,规则引擎做副作用分级(LLM 只提建议,规则定边界)

  • HITL 审批门:写操作(清理/重启/扩容)通过 LangGraph interrupt() 暂停图,人工批准后 Command(resume=...) 从断点恢复

  • 执行器:只读工具自动执行;写工具仅在批准后执行,拒绝则跳过并留痕;支持 local(进程内)/ mcp(跨进程 MCP 协议,ALERTPILOT_TOOL_BACKEND=mcp)双通道

  • MCP 工具服务:python -m alertpilot.tools.mcp_server 以 stdio 暴露运维工具,与 Agent 运行时解耦,可独立接入任意 MCP 客户端

  • 持久化:SQLite 记录全量告警、计划、执行结果与审批人;LangGraph checkpoint 支持断点恢复

  • 用量计量:每次运行统计 LLM 调用数、token 消耗与延迟,写入记录并聚合到 /metrics

  • 看板:GET / 提供指标概览、分类分布、待审队列与告警列表(纯静态无依赖)

  • 评测:黄金集 20 条 + scripts/run_eval.py 生成 Markdown 评测报告(mock/真实模型双模式)

  • 复盘闭环 + 记忆治理:执行后自动生成事故报告(data/incidents/),经验以 [pending] 写入 data/runbooks/incident-memory.md,经 POST /memory/review 人工审核后才进入检索语料——未经审核的经验不会污染诊断证据链

  • 故障注入:LLM 损坏输出 / 契约漂移 / 工具失败均有测试覆盖的恢复路径

快速开始

# 1. 安装(开发模式 + 测试依赖)
pip install -e ".[dev]"

# 2. 配置(可选:不配置默认使用 mock LLM 也能跑测试)
cp .env.example .env   # 填入真实 LLM API Key 后改 ALERTPILOT_LLM_PROVIDER=openai-compatible

# 2.5(可选)启用混合检索(默认已启用,缺依赖时自动降级 BM25)
pip install -e ".[vector]"   # Qdrant + FastEmbed 本地嵌入模型

# 3. 运行测试(离线、确定性、无需联网)
pytest -s

# 4. 启动 API(默认 mock LLM;配置 .env 后走真实模型)
uvicorn alertpilot.api:app --reload

# 5. 提交一条告警(若诊断含写操作,将返回 awaiting_approval 并停在审批门)
curl -X POST http://127.0.0.1:8000/alerts -H "Content-Type: application/json" -d "{\"service\": \"order-service\", \"title\": \"磁盘使用率超过 92%\", \"description\": \"日志堆积\"}"

# 6. 查看待审列表 / 人工批准
curl http://127.0.0.1:8000/approvals
curl -X POST http://127.0.0.1:8000/approvals/<alert_id> -H "Content-Type: application/json" -d "{\"decision\": true, \"approver\": \"reviewer-zhang\"}"

目录结构

alertpilot/
├── src/alertpilot/
│   ├── config.py        # 环境变量配置
│   ├── schemas.py       # 核心数据模型
│   ├── llm.py           # LLM 客户端(openai-compatible / mock)
│   ├── graph.py         # LangGraph 流水线编排 + checkpoint
│   ├── db.py            # SQLite 持久化
│   ├── api.py           # FastAPI 服务
│   ├── mock_source.py   # mock 告警源
│   ├── agents/          # 分诊 / 诊断 / 规划智能体
│   ├── tools/           # mock 运维工具 + 副作用分级执行器
│   └── rag/             # Runbook 检索
├── data/runbooks/       # 运维处置手册(RAG 语料)
└── tests/               # 单测 + 黄金数据集评测

里程碑路线

里程碑 内容 状态
M1 只读分诊链路:分类 → RAG → 诊断建议 ✅
M2 HITL 审批门 + 副作用分级执行 + 断点恢复 ✅
M3 评测体系 + 用量/延迟指标 + 看板 + Docker 部署 ✅
M4 故障注入演练 + 复盘记忆闭环 + PRD/风险册/复盘文档 ✅
M5 Qdrant/FastEmbed 稠密向量 + RRF 混合检索(三路对比评测 100% 命中) ✅
M6 MCP 工具服务器(stdio)+ 双通道执行器 + 记忆审核治理 ✅
M7 Alertmanager webhook 接入 + 看板记忆审核 UI ✅

About

AlertPilot:IT 运维告警分诊多智能体平台 - LangGraph 编排 + RAG + HITL 审批 + 评测体系 + 记忆闭环

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages