Z-2005-HJ/Multi-Agent-Incident-Response-System

GitHub: Z-2005-HJ/Multi-Agent-Incident-Response-System

一个基于多 Agent 架构的线上服务故障智能排查系统,通过编排多个专职 Agent 协同分析日志、指标和历史知识库,自动生成包含根因推断和修复方案的结构化报告。

Stars: 0 | Forks: 0

# Multi-Agent Incident Response System 多 Agent 智能故障排查系统。 这是一个面向真实工程场景的多 agent 项目。它模拟企业线上服务发生故障后的排查流程:系统读取告警、日志、指标和历史故障知识库,组织多个专业 agent 协作分析,最终生成结构化 Incident Report,帮助工程师快速定位问题、评估风险并制定修复方案。 这个项目的目标不是做一个简单聊天机器人,而是做一个面向真实工程场景、能体现 agent 工程能力的完整系统。 ## 1. 项目背景 在真实企业生产环境中,线上服务故障通常会涉及多类信息: 错误日志 服务指标(系统运行时持续采集的数据,用来描述服务健康状况,比如错误率、延迟、内存使用率等,能告诉你系统哪里不健康) 告警内容(监控系统发出来的警报信息,告诉你“出事了”) 历史 incident(一次完整的线上故障时间,包含时间、范围、修复过程、方案、复盘等) runbook 排查手册(遇到某问题的排查步骤说明) 代码变更记录(如果是最近发生了代码或者配置的变化,就可以看变更记录进行排查) 部署记录 工程师排查故障时,往往需要同时完成这些事情: 从大量日志中提取关键错误 从指标中判断异常时间点和影响范围 查询历史故障和排查手册 推断可能根因 制定修复和回滚方案 验证修复是否有效 把整个过程记录成 incident report 这些步骤天然适合多 agent 协作。每个 agent 负责一个专业方向,最后由 reviewer 检查证据链和最终结论。 ## 2. 项目目标 用户输入一次故障相关信息,例如: 告警描述 错误日志 指标数据 服务名称 时间范围 可选的历史 incident / runbook 系统自动执行多 agent 故障分析流程,输出: 故障摘要 异常时间线 关键证据 可能根因 排查步骤 修复建议 回滚方案 验证步骤 风险等级 置信度 reviewer 检查意见 trace / eval 报告 最终效果是:工程师可以快速了解“发生了什么、为什么可能发生、下一步该怎么做、这些结论有什么证据支撑”。 ## 3. 项目定位 这个项目定位为: AI + SRE(Site Reliability Engineering) / 后端工程 / 平台工程方向的多 agent 实战项目 它重点展示这些能力: 多 agent 工作流设计 LangGraph 状态图编排 日志和指标分析 RAG 历史故障检索 工具调用 结构化输出 错误处理 日志追踪 human-in-the-loop agent trace 采集和评估 前后端完整展示 ## 4. 核心功能 ### 4.1 Incident 输入 系统第一版支持三类输入: 告警描述:用户手动输入,描述故障现象 日志文件:上传或选择 sample log 指标文件:上传或选择 sample metrics JSON 示例: Service checkout-api error rate increased from 0.5% to 12% after deployment. Users report timeout when creating orders. 日志示例: 2026-06-18T10:21:03Z ERROR checkout-api DatabaseConnectionTimeout 2026-06-18T10:21:04Z ERROR checkout-api failed to acquire connection from pool 2026-06-18T10:21:05Z WARN checkout-api retrying payment transaction 指标示例: { "service": "checkout-api", "error_rate": { "before": 0.005, "after": 0.12 }, "p95_latency_ms": { "before": 230, "after": 2400 }, "db_connection_pool_usage": { "before": 0.45, "after": 0.98 } } ### 4.2 多 Agent 分析 系统会组织多个 agent 协作: Log Analyst Agent Metric Analyst Agent Knowledge Agent Root Cause Agent Fix Planner Agent Reviewer Agent 每个 agent 都有明确职责、输入、输出和结构化 schema。 ### 4.3 历史故障知识库 系统包含本地 incident knowledge base。 第一版知识库可以使用: JSON incident cases Markdown runbook 故障排查手册 服务依赖说明 后续可以升级为: Chroma / FAISS 向量库 OpenAI embeddings 混合检索 rerank 来源引用 权限过滤 ### 4.4 结构化报告 最终输出不是一段自然语言,而是结构化 Incident Report。 核心字段: incident_id service severity summary timeline signals possible_root_causes recommended_actions rollback_plan verification_steps confidence review_notes human_approval_required 同时生成 Markdown 报告,方便阅读和展示。 ### 4.5 Eval Adapter 项目会加入一个 Eval / Observability Adapter。 它不参与业务推理,不负责判断根因,也不直接影响 agent 的结论。 它的职责是旁路采集每个 agent 的执行过程,方便评估和调试。 采集内容包括: trace_id step_id agent_name node_name input_state output tool_calls tool_results errors retry_count duration_ms state_diff structured_output_valid 流程结束后,Eval Adapter 生成评估报告: 每个 agent 是否成功执行 输出 schema 是否通过校验 工具调用是否成功 RAG 检索是否命中相关资料 根因是否有证据支撑 修复建议是否有风险 reviewer 是否发现证据不足 整条流程耗时 失败和重试情况 这是本项目的重要工程亮点。 ## 5. Agent 设计 ### 5.1 Log Analyst Agent 职责: 读取错误日志 提取关键错误类型 识别异常模块 提取异常时间点 统计错误频率 找出重复出现的错误模式 输入: raw_logs alert_description service_name time_window 输出: error_patterns important_log_lines suspected_components log_timeline log_confidence 示例输出: { "error_patterns": ["DatabaseConnectionTimeout", "connection pool exhausted"], "suspected_components": ["database", "connection_pool"], "important_log_lines": [ "ERROR checkout-api failed to acquire connection from pool" ], "log_confidence": 0.86 } ### 5.2 Metric Analyst Agent 职责: 分析服务指标 识别异常变化 判断影响范围 发现日志和指标之间的关联 输入: metrics_json alert_description service_name 输出: metric_anomalies impact_summary timeline suspected_bottlenecks metric_confidence 典型指标: error_rate p95_latency p99_latency throughput cpu_usage memory_usage db_connection_pool_usage queue_lag ### 5.3 Knowledge Agent 职责: 检索历史 incident 检索 runbook 查找相似故障案例 返回相关资料和引用来源 输入: log_findings metric_findings alert_description 输出: retrieved_cases related_runbooks known_failure_modes source_references retrieval_confidence 第一版可以先用关键词检索。后续升级为向量检索。 ### 5.4 Root Cause Agent 职责: 综合日志、指标和知识库结果 提出可能根因 给每个根因标注证据 给出置信度 区分 confirmed / likely / possible 输入: log_analysis metric_analysis knowledge_results 输出: root_cause_hypotheses evidence_map confidence missing_information 它不能只“猜原因”,必须说明证据来自哪里。 ### 5.5 Fix Planner Agent 职责: 生成排查步骤 生成修复建议 生成回滚方案 生成修复后验证步骤 标记高风险操作 输入: root_cause_hypotheses evidence_map service_context 输出: diagnostic_steps recommended_actions rollback_plan verification_steps risk_level requires_human_approval 高风险操作必须触发 human-in-the-loop。 例如: 重启核心服务 回滚生产部署 修改数据库连接池配置 执行数据修复脚本 ### 5.6 Reviewer Agent 职责: 检查最终报告是否完整 检查根因是否有证据支撑 检查修复建议是否过于冒险 检查是否需要人工审批 输出最终 review notes 输入: incident_report_draft trace_summary agent_outputs 输出: approved review_notes quality_score evidence_score safety_score required_revisions Reviewer 不负责重新分析所有问题,而是负责质量控制。 ## 6. Eval Adapter 设计 ### 6.1 为什么需要 Eval Adapter Agent 系统很难像普通函数一样测试。 普通函数通常是: input -> output 多 agent 系统是: input -> state -> agent -> tool -> state -> agent -> RAG -> state -> reviewer -> output 中间有很多不确定性: 模型输出不稳定 工具可能失败 RAG 检索可能不相关 多个 agent 的结论可能冲突 状态可能被错误更新 最终结果可能看起来合理但没有证据 所以项目需要一个专门的旁路组件来采集 trace、state、tool output 和 agent output。 ### 6.2 Eval Adapter 不是什么 它不是业务 agent。 它不应该: 参与根因判断 直接修改业务 state 直接决定修复方案 和其他 agent 对话争论 它应该: 记录过程 保存证据 生成评估数据 帮助调试和离线分析 ### 6.3 Eval Adapter 采集点 在每个 agent 节点执行前: record_node_start(trace_id, node_name, input_state) 在工具调用时: record_tool_call(trace_id, node_name, tool_name, args, result, error) 在每个 agent 节点执行后: record_node_end(trace_id, node_name, output, state_diff, duration_ms) 在流程结束后: generate_eval_report(trace_id) ### 6.4 Eval Report 示例 { "trace_id": "inc_20260618_001", "workflow_status": "completed", "total_duration_ms": 4280, "agent_scores": { "log_analyst": { "success": true, "schema_valid": true, "evidence_count": 4 }, "knowledge_agent": { "success": true, "retrieval_hit_count": 3, "top_source_score": 0.82 }, "root_cause_agent": { "success": true, "hypothesis_count": 2, "evidence_coverage": 0.75 } }, "risks": [ "Fix plan includes production rollback and requires human approval." ], "recommendations": [ "Add more database metrics to improve root cause confidence." ] } ### 6.5 后续可扩展评估方式 第一版做规则评估: schema 是否通过 字段是否完整 是否有证据 是否调用了必要工具 是否命中知识库 是否产生高风险建议 是否触发人工审批 第二版可以加人工评分: 工程师对根因质量打分 工程师对修复建议打分 工程师标记最终根因是否正确 第三版可以加 LLM-as-judge: 让 judge model 根据 rubric 评价报告质量 检查 evidence 是否支持 root cause 检查 fix plan 是否安全 ## 7. 工作流设计 第一版工作流: ingest_incident -> log_analysis -> metric_analysis -> knowledge_retrieval -> root_cause_analysis -> fix_planning -> review -> human_approval_if_needed -> final_report 更完整的条件流程: START -> ingest_incident -> log_analysis -> metric_analysis -> knowledge_retrieval -> root_cause_analysis -> fix_planning -> review review approved -> final_report review needs_revision -> root_cause_analysis fix plan high risk -> human_approval human approved -> final_report human rejected -> manual_escalation tool failure -> retry -> fallback -> reviewer ## 8. 技术栈 ### 8.1 后端 Python FastAPI Pydantic Uvicorn 选择原因: Python 适合 AI agent 和数据处理 FastAPI 适合快速构建 API Pydantic 适合定义结构化输出和校验 schema Uvicorn 作为 ASGI 服务运行后端 ### 8.2 Agent 编排 LangGraph 选择原因: 项目有明确状态流转 需要条件分支 需要 reviewer 打回 需要 human-in-the-loop 需要 checkpoint 需要可追踪 workflow LangGraph 对应关系: GraphState -> 全局 incident state node -> 每个 agent 节点 conditional edge -> 根据状态决定下一步 checkpoint -> 保存流程状态 interrupt -> 人工审批 ### 8.3 LLM OpenAI API 用途: 日志摘要 根因分析 修复建议生成 报告生成 reviewer 质量检查 第一版可以保留 mock LLM 层,确保没有 API key 也能跑 demo。后续再接真实模型。 ### 8.4 RAG / Knowledge 第一版: 本地 JSON / Markdown 关键词检索 增强版: Chroma 或 FAISS OpenAI embeddings 或 sentence-transformers Hybrid search Rerank 第一版先不要过早引入重型 RAG 工具,优先保证业务流程完整。 ### 8.5 数据存储 SQLite SQLModel 或 SQLAlchemy 保存内容: incident runs agent outputs trace events tool calls eval reports final reports human approvals SQLite 适合项目第一版,因为部署简单、可复制、可演示。 ### 8.6 前端 React TypeScript Vite Tailwind CSS 或普通 CSS 页面功能: 创建 incident 上传日志和指标 查看 agent 执行进度 查看 trace 查看最终 incident report 查看 eval report 人工审批高风险操作 如果第一阶段想降低复杂度,可以先做 CLI + FastAPI,后面补 Web UI。 ### 8.7 测试 pytest Pydantic schema tests workflow tests sample incident fixtures tool tests eval adapter tests 测试重点: 每个 agent 输出是否符合 schema sample incident 是否能完整跑通 高风险修复是否触发人工审批 工具失败是否能重试 reviewer 打回是否能回到正确节点 eval adapter 是否能记录完整 trace ### 8.8 日志和追踪 第一版: 自定义 trace_id / span_id Python logging Eval Adapter trace events 后续可选: LangSmith OpenTelemetry ## 9. 核心数据结构 ### 9.1 IncidentState 全局状态,用于 LangGraph 流转。 核心字段: incident_id service_name alert_description raw_logs metrics log_analysis metric_analysis knowledge_results root_cause_analysis fix_plan review_result human_approval final_report trace_id status errors retry_count ### 9.2 IncidentReport 最终报告。 核心字段: incident_id service_name severity summary timeline signals root_causes recommended_actions rollback_plan verification_steps confidence review_notes sources ### 9.3 TraceEvent Eval Adapter 采集的事件。 核心字段: trace_id span_id node_name agent_name event_type input_snapshot output_snapshot state_diff tool_calls error duration_ms timestamp ## 10. MVP 边界 第一版必须完成: FastAPI 后端 LangGraph 工作流 6 个 agent 节点 本地 sample logs / metrics 本地 JSON knowledge base 关键词检索版 Knowledge Agent Pydantic 结构化输出 Eval Adapter trace 采集 结构化 Incident Report Markdown Report pytest 测试 第一版暂不做: 真实 Prometheus 接入 真实 Elasticsearch 接入 复杂向量数据库 用户登录权限 生产级部署 复杂前端大屏 自动执行真实修复命令 原因: 第一版重点是展示多 agent workflow 和工程设计,而不是堆外部系统集成。 ## 11. 后续扩展 第二版可扩展: React Web UI Chroma / FAISS 向量检索 真实 OpenAI 模型调用 LangGraph checkpoint human-in-the-loop interrupt LLM-as-judge 评估 Prometheus sample API trace 可视化页面 incident replay 第三版可扩展: 接真实监控系统 接 Git deployment history 接 Slack / 飞书通知 自动生成 postmortem 自动创建 Jira / GitHub issue 多服务依赖图分析 ## 12. 推荐目录结构 Multi-Agent Incident Response System/ README.md backend/ app/ main.py api/ agents/ graph/ schemas/ tools/ knowledge/ eval/ storage/ reports/ tests/ data/ sample_logs/ sample_metrics/ knowledge_base/ pyproject.toml frontend/ src/ package.json docs/ architecture.md incident_report_example.md ## 13. 项目展示方式 最终演示可以这样展示: 1. 输入一次 checkout-api 故障 2. 系统运行多 agent workflow 3. 页面显示每个 agent 的执行状态 4. 展示日志分析、指标分析、知识库检索结果 5. 展示 Root Cause Agent 的证据链 6. 展示 Fix Planner 的修复建议 7. 高风险操作触发人工审批 8. 展示 Reviewer 的质量检查 9. 输出最终 Incident Report 10. 展示 Eval Adapter 生成的 trace / eval 报告 ## 14. 后续可选调整 下面这些方向暂不纳入第一版 MVP,但可以作为后续实现时的增强项。 ### 14.1 真实 LLM 调用与 Mock fallback 第一版可以先保留 mock LLM,保证没有 API key 也能跑通完整 demo。 后续可以增加真实模型调用,并通过配置切换: LLM_MODE=mock LLM_MODE=openai 建议保留 mock fallback,避免因为外部模型不可用、额度不足或网络异常导致 demo 完全不可运行。 ### 14.2 Docker / CI / 部署说明 后续可以补充最小可复现运行环境: Dockerfile docker-compose.yml .env.example GitHub Actions / CI pytest 自动化测试 一键启动命令 目标是让项目可以被快速拉起、测试和演示。 ### 14.3 更可量化的 Eval Adapter 现阶段 Eval Adapter 重点记录 trace、state diff、tool call 和结构化输出校验。 后续可以增加更明确的评估指标: schema_pass_rate evidence_coverage retrieval_hit_rate hallucination_risk_flag high_risk_action_approval_rate average_workflow_latency failed_tool_call_count 这样可以让 agent workflow 的质量更容易被观察、比较和持续改进。 ### 14.4 安全与 Guardrails 故障响应系统会涉及高风险操作,因此后续需要补充安全边界: 禁止自动执行真实生产修复命令 高风险动作只生成建议,不直接执行 敏感日志脱敏 API key 不入库 prompt injection 防护 tool allowlist human-in-the-loop 是第一层安全控制,guardrails 是更完整的工程边界。 ### 14.5 MCP 或 Tool Server 扩展点 后续可以增加 MCP 或独立 tool server,用于统一接入外部系统和工具。 可选工具包括: Prometheus mock tool Git deployment history tool runbook search tool incident knowledge search tool notification tool 这样可以把 agent 推理流程和外部工具访问解耦。 ### 14.6 README 项目主页化 当项目开始有实际代码和 demo 后,可以把 README 从设计文档调整成项目主页。 建议保留在 README 前半部分的内容: 项目简介 架构图 Quick Start API 示例 示例输入输出 demo 截图或 GIF 测试方式 当前完成度 更详细的设计内容可以移动到: docs/architecture.md docs/eval_adapter.md docs/workflow.md ## 15. 项目核心价值 这个项目的核心价值不是“调用一次大模型生成报告”。 它真正展示的是: 如何把真实工程排障流程拆成多个专业 agent 如何用 LangGraph 控制复杂状态流转 如何用 RAG 引入历史知识 如何用结构化输出保证结果可被程序消费 如何用 human-in-the-loop 控制高风险操作 如何用 Eval Adapter 评估和调试 agent 系统 如何把 AI agent 做成一个可维护、可测试、可展示的工程项目 这也是它适合作为 AI agent 工程项目持续迭代的原因。 ## 16. 当前 MVP 运行方式 当前第一版 MVP 已实现后端核心流程: FastAPI 后端 LangGraph 工作流 6 个 agent 节点 本地 sample logs / metrics 本地 JSON / Markdown knowledge base 关键词检索版 Knowledge Agent Pydantic 结构化输出 Eval Adapter trace 采集 结构化 Incident Report Markdown Report pytest 测试 安装依赖: .\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt 运行测试: cd backend ..\.venv\Scripts\python.exe -m pytest -q 启动 API 服务: cd backend ..\.venv\Scripts\python.exe run_server.py 服务地址: http://127.0.0.1:8000 健康检查: GET /health 运行一次 incident 分析: POST /incidents/run
标签:AIOps, BurpSuite集成, Petitpotam, 多Agent系统, 故障排查, 特征库, 运维, 逆向工具