[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81265":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":14,"starSnapshotCount":14,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},81265,"mutil-rag-agent","Kkkirito-123\u002Fmutil-rag-agent","Kkkirito-123","An improved multi-agent AIOps and RAG platform for OnCall troubleshooting, featuring LangGraph-based diagnosis workflows, Milvus vector search, MCP tool integration, Prometheus alert knowledge from awesome-prometheus-alerts, and sanitized configuration for safe public deployment.",null,"Python",64,4,50,0,7,9,14,21,59,false,"main",true,[],"2026-06-12 04:01:32","# Multi-Agent AIOps Platform\n\n面向 OnCall \u002F SRE 场景的多智能体智能运维诊断平台。\n\n项目视频 https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV182RCBGEod\u002F\n\n项目基于 `FastAPI`、`LangGraph`、`RAG`、`Milvus`、`MCP` 和 DeepSeek \u002F DashScope 兼容大模型构建。系统采用 **先选择 Skill，再规划诊断步骤，再调用工具执行，最后复盘生成报告** 的流程，可根据告警或故障描述自动选择合适的诊断策略，调用知识库和实时工具服务，输出结构化诊断报告。\n\n![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.11%2B-blue)\n![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-0.115%2B-green)\n![LangGraph](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLangGraph-Agent-orange)\n![Milvus](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMilvus-VectorDB-purple)\n![MCP](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMCP-Tools-black)\n\n---\n\n## V2 更新说明\n\n以上为项目原版说明。V2 在不改动 Skill-first、Plan-Execute-Replan、RAG、MCP 工具、会话记忆等主体能力的前提下，做了两条主线改动：\n\n1. 新增 **AgentHarness 控制面**，把原本分散在各模块里的 prompt、模型选择、终止条件、降级和统计逻辑集中管理。\n2. 联网搜索从 Tavily 切换到本地 [**open-webSearch**](https:\u002F\u002Fgithub.com\u002FAas-ee\u002Fopen-webSearch) daemon，并接入 Docker Compose 和 `run.ps1`。\n\n### 1. AgentHarness 控制面\n\n新增文件 `app\u002Fruntime\u002Fagent_harness.py`，作为 Agent 运行时的控制面。原本散落在 `agents\u002F`、`services\u002Frag\u002F`、`skills\u002F` 里的 prompt、模型、运行策略和统计代码统一到 `AgentHarness`，主要管以下几件事：\n\n- **全局 prompt 管理**：Skill Router、Planner、Executor、Replanner、Report、RAG Chat、Query Rewrite、Memory Compact 等所有阶段的 prompt 模板都从 Harness 取，调 prompt 不用再到处翻文件。\n- **模型分层**：每个阶段一个独立模型入口，Router \u002F Planner 可以走快模型、Report \u002F RAG Chat 走强模型，模型通过 `.env` 切换。\n- **Replanner 前置保护**：进 Replanner LLM 之前先判断是否已到最大步数、是否在重复同一步、能否直接快进剩余 plan，满足条件就跳过 LLM 调用。\n- **Reroute 配额**：限制 Skill 切换次数，并要求积累一定步骤后才允许换 Skill，避免 Agent 在多个 Skill 之间反复横跳。\n- **降级 fallback**：知识库或联网搜索失败时返回稳定的降级上下文和前端可见的降级事件，业务代码不再自己处理异常。\n- **统计与预算**：把 token、耗时、工具调用次数等指标收敛成统一的 stats 事件，并支持 token \u002F 时间预算的 warning 与 exceeded 告警。\n\nV2 没有改 Agent 流程拓扑，只是把 Skill Router、Planner、Executor、Replanner、Report、RAG Chat 各阶段的 prompt、模型和策略来源换成 Harness。\n\n### 2. 联网搜索切换到 open-webSearch\n\n`app\u002Fcore\u002Fweb_search.py` 新增 `open_websearch` provider，调用本地 [open-webSearch](https:\u002F\u002Fgithub.com\u002FAas-ee\u002Fopen-webSearch) daemon 完成联网搜索，不再依赖 Tavily API Key。`.env` 里只需配置：\n\n```env\nWEB_SEARCH_PROVIDER=open_websearch\nOPEN_WEBSEARCH_BASE_URL=http:\u002F\u002F127.0.0.1:3210\n```\n\n老配置 `WEB_SEARCH_PROVIDER=tavily` 会兼容映射到新 provider，不需要手动迁移。\n\n### 3. open-webSearch 启动脚本\n\n- `docker-compose.yml` 新增 `open-websearch` 服务，可由 Docker Compose 统一启停并带健康检查。\n- `run.ps1` 一键启动时优先走 Docker Compose 拉起 open-webSearch；Docker 不可用时回退到本地 `npm run serve`。\n- `run.ps1 -Stop` 同时停止 Compose 服务和监听端口，避免误杀 Docker 端口代理进程。\n\n\n## 核心设计\n\n传统的 Agent 诊断系统如果直接把完整 SOP、完整工具列表和用户问题一起交给 Planner，容易出现 prompt 过长、工具选择噪声大、诊断步骤不可控等问题。\n\n本项目采用 **Skill-first** 的多智能体流程：\n\n```text\n用户告警 \u002F 故障描述\n        |\n        v\nSkill Router\n先判断故障类型，选择最匹配的 Skill\n        |\n        v\nSkill Playbook\n加载该故障类型对应的 SOP、工具白名单和诊断策略\n        |\n        v\nPlanner\n基于选中的 Skill 生成诊断计划\n        |\n        v\nExecutor\n只调用该 Skill 允许的只读 MCP 工具 \u002F RAG 检索 \u002F 系统查询\n        |\n        v\nReplanner\n根据工具结果判断继续执行、调整计划或收敛\n        |\n        v\nReport\n生成结构化 Markdown 诊断报告\n```\n\n核心思路是：\n\n> **先选 Skill，再规划；先收敛上下文，再调用工具。**\n\n这样可以减少无关 prompt，降低工具误选概率，并让诊断链路更稳定、更容易观测。\n\n## 功能特性\n\n- **Skill-first 多智能体诊断**：先通过 `Skill Router` 识别 CPU、内存、磁盘、Redis、本机诊断、通用 OnCall 等故障类型，再加载对应 Skill Playbook。\n- **Plan-Execute-Replan 流程**：基于 `Planner -> Executor -> Replanner -> Report` 的诊断闭环，支持动态调整诊断步骤。\n- **Skill 工具白名单**：每个 Skill 只暴露相关 MCP 工具，减少无关工具进入上下文，降低误调用风险。\n- **RAG 知识库**：使用 DashScope Embedding + Milvus，支持 OnCall SOP 和 Prometheus 告警语料检索。\n- **实时 MCP 工具服务**：接入系统信息、网络诊断、Windows 日志、Docker 等只读工具服务，支持实时采集诊断证据。\n- **RAG Chat + MCP**：RAG 聊天不仅能查知识库，也可以按需调用 MCP 工具获取当前系统状态。\n- **并行工具调用**：对互不依赖的只读工具进行并发执行，缩短多工具诊断等待时间。\n- **真实 Token 监控**：支持 DeepSeek \u002F DashScope 流式 usage 回传，前端展示 input \u002F output \u002F total tokens。\n- **SSE 流式输出**：前端实时展示 Skill 选择、诊断计划、工具调用、token、耗时和最终报告。\n- **告警 Webhook**：支持 Alertmanager Webhook 触发后台诊断。\n\n## 架构概览\n\n```mermaid\nflowchart TD\n    A[User \u002F Alertmanager Webhook] --> B[FastAPI API Layer]\n\n    B --> C[Skill Router]\n    C --> D{Select Skill}\n\n    D -->|memory_high_usage| E1[Memory Skill Playbook]\n    D -->|cpu_high_usage| E2[CPU Skill Playbook]\n    D -->|disk_high_usage| E3[Disk Skill Playbook]\n    D -->|redis_issue| E4[Redis Skill Playbook]\n    D -->|general_oncall| E5[General OnCall Skill]\n\n    E1 --> F[Planner]\n    E2 --> F\n    E3 --> F\n    E4 --> F\n    E5 --> F\n\n    F --> G[Executor]\n    G --> H1[RAG Retrieval]\n    G --> H2[MCP Tools]\n    G --> H3[System \u002F Docker \u002F Network \u002F Winlog]\n\n    H1 --> I[Evidence]\n    H2 --> I\n    H3 --> I\n\n    I --> J[Replanner]\n    J -->|continue| G\n    J -->|enough evidence| K[Report Generator]\n\n    K --> L[SSE Streaming Response]\n    L --> M[Frontend Monitoring Panel]\n```\n\n## 数据流\n\n```text\n1. 输入阶段\n   用户输入告警 \u002F 故障描述，或 Alertmanager Webhook 推送告警。\n\n2. Skill 选择阶段\n   Skill Router 根据语义选择最合适的 Skill，例如 memory_high_usage。\n\n3. 上下文收敛阶段\n   系统只加载该 Skill 对应的 Playbook、SOP 摘要和工具白名单。\n\n4. 计划生成阶段\n   Planner 基于选中的 Skill 生成诊断步骤，避免全量 SOP 注入。\n\n5. 工具执行阶段\n   Executor 调用 RAG 检索和 MCP 只读工具，独立工具可并行执行。\n\n6. 复盘阶段\n   Replanner 判断证据是否足够，决定继续执行、调整计划或生成报告。\n\n7. 报告阶段\n   Report Generator 输出 Markdown 诊断报告，前端通过 SSE 实时展示全过程。\n```\n\n## 性能与评估数据\n\n项目内置 benchmark 和 RAG 离线评估脚本，对 token、工具执行和检索准确率进行了量化评估。\n\n| 指标 | 优化结果 |\n|---|---:|\n| Planner prompt tokens | `9098 -> 575`，下降 **93.5%** |\n| 全链路 prompt tokens | `10526 -> 2450`，下降 **76.7%** |\n| 全链路 total tokens | `11889 -> 3988`，下降 **66.5%** |\n| 工具 catalog prompt tokens | 下降 **55.3%** |\n| 只读工具并行执行 | `1.06s -> 0.22s`，加速 **4.88x**，延迟下降 **79.5%** |\n| RAG 文档规模 | **954** 个文档 \u002F **4080** 个 chunks |\n| RAG R@1 | `83.33% -> 91.67%` |\n| RAG MRR | `0.882 -> 0.938` |\n| 默认 top_k=3 | R@3 达到 **95.83%** |\n\n说明：\n\n- Token 数据来自真实 DashScope \u002F OpenAI-compatible `usage` 返回。\n- 并行工具数据是 5 个独立只读工具的受控基准测试。\n- RAG 数据来自 24 题黄金集和 954 文档规模的离线评估。\n- Hybrid Search 在当前语料下虽然能提升 R@3\u002FR@5，但 R@1 会下降，因此默认仍采用纯向量 `top_k=3`。\n\n## 数据来源\n\n项目保留三类 OnCall 知识库语料：\n\n| 路径 | 说明 |\n|---|---|\n| `docs\u002Fsop\u002F` | 项目内置 Redis \u002F MySQL \u002F 通用告警 SOP |\n| `data\u002Fkb_corpus\u002Fawesome-prometheus-alerts\u002F` | 从开源项目 `samber\u002Fawesome-prometheus-alerts` 整理的 Prometheus 告警语料 |\n| 小林 OnCall Agent 项目 | 参考其中的 OnCall Agent 场景设计和诊断思路 |\n\n第三方语料 \u002F 参考来源的作者、仓库地址和许可详见文末 [License](#license) 一节。\n\n## 技术栈\n\n| 类型 | 技术 |\n|---|---|\n| Web 服务 | FastAPI + Uvicorn |\n| Agent 编排 | LangGraph + LangChain |\n| LLM | DashScope \u002F Qwen，兼容 DeepSeek OpenAI-style API |\n| Embedding | DashScope `text-embedding-v4` |\n| 向量数据库 | Milvus |\n| 会话记忆 | Redis，可选 |\n| 工具协议 | MCP \u002F FastMCP |\n| 本机监控 | psutil |\n| 前端 | HTML + TailwindCSS + Vanilla JS |\n| 运行环境 | Python 3.11+ \u002F Docker \u002F Windows PowerShell |\n\n## 快速开始\n\n### 1. 克隆项目\n\n```powershell\ngit clone \u003Cyour-repo-url>\ncd multi_agent_github\n```\n\n### 2. 创建 Python 环境\n\n```powershell\npython -m venv .venv\n.\\.venv\\Scripts\\Activate.ps1\npip install -r requirements.txt\n```\n\n### 3. 配置环境变量\n\n```powershell\ncopy .env.example .env\nnotepad .env\n```\n\n至少需要配置：\n\n```env\nDASHSCOPE_API_KEY=your-dashscope-api-key\nKB_ADMIN_TOKEN=change-this-admin-token\n```\n\n默认联网搜索使用 `mock` 模式，不需要外部搜索 API。\n\n如需 Tavily 搜索：\n\n```env\nWEB_SEARCH_PROVIDER=tavily\nTAVILY_API_KEY=your-tavily-api-key\n```\n\n### 4. 启动 Milvus 和 Redis\n\n```powershell\ndocker compose up -d\n```\n\nMilvus 用于向量检索，Redis 用于可选的 RAG Chat 会话记忆。\n\n### 5. 导入知识库\n\n先检查切分结果：\n\n```powershell\npython scripts\\ingest_kb_corpus.py --dry-run\n```\n\n确认无误后写入 Milvus：\n\n```powershell\npython scripts\\ingest_kb_corpus.py --reset\n```\n\n如需重新从上游开源项目生成语料：\n\n```powershell\npowershell -ExecutionPolicy Bypass -File scripts\\fetch_kb_corpus.ps1\npython scripts\\convert_prometheus_alerts.py\n```\n\n### 6. 启动应用\n\n```powershell\npowershell -NoProfile -ExecutionPolicy Bypass -File .\\run.ps1\n```\n\n默认会启动：\n\n```text\nFastAPI       http:\u002F\u002Flocalhost:9900\nsystem MCP    http:\u002F\u002Flocalhost:8005\u002Fmcp\nwinlog MCP    http:\u002F\u002Flocalhost:8008\u002Fmcp\nnetwork MCP   http:\u002F\u002Flocalhost:8009\u002Fmcp\ndocker MCP    http:\u002F\u002Flocalhost:8011\u002Fmcp\n```\n\n停止服务：\n\n```powershell\npowershell -NoProfile -ExecutionPolicy Bypass -File .\\run.ps1 -Stop\n```\n\n## 访问地址\n\n| 页面 | 地址 |\n|---|---|\n| Web UI | http:\u002F\u002Flocalhost:9900 |\n| Swagger | http:\u002F\u002Flocalhost:9900\u002Fdocs |\n| ReDoc | http:\u002F\u002Flocalhost:9900\u002Fredoc |\n| 健康检查 | http:\u002F\u002Flocalhost:9900\u002Fapi\u002Fv1\u002Fhealth |\n| 就绪检查 | http:\u002F\u002Flocalhost:9900\u002Fapi\u002Fv1\u002Fhealth\u002Fready |\n| Attu Milvus UI | http:\u002F\u002Flocalhost:8000 |\n\n## 使用示例\n\n### 本机诊断\n\n```text\n我电脑很卡，帮我看下是不是 CPU 或内存太高\n```\n\n系统会选择本机诊断 Skill，并通过 MCP 工具读取 CPU、内存、磁盘和进程信息。\n\n### Redis 告警诊断\n\n```text\nRedis 实例 redis-master-01 内存使用率 98%，客户端连接被强制断开\n```\n\n系统会结合 Redis SOP、Prometheus 告警知识库和工具返回的信息生成诊断报告。\n\n### Alertmanager Webhook 模拟\n\n```powershell\npython scripts\\mock_alert.py --scenario redis\npython scripts\\mock_alert.py --list-history\n```\n\n## API 概览\n\n| 功能 | 方法 | 路径 |\n|---|---|---|\n| AIOps 诊断，SSE | POST | `\u002Fapi\u002Fv1\u002Faiops\u002Fdiagnose` |\n| Alertmanager Webhook | POST | `\u002Fapi\u002Fv1\u002Fwebhook\u002Falertmanager` |\n| RAG Chat | POST | `\u002Fapi\u002Fv1\u002Fchat\u002Fstream` |\n| Skill 列表 | GET | `\u002Fapi\u002Fv1\u002Fskills` |\n| 上传文档 | POST | `\u002Fapi\u002Fv1\u002Fdocuments\u002Fupload` |\n| 文档列表 | GET | `\u002Fapi\u002Fv1\u002Fdocuments` |\n| 删除文档 | DELETE | `\u002Fapi\u002Fv1\u002Fdocuments\u002F{source}` |\n| 健康检查 | GET | `\u002Fapi\u002Fv1\u002Fhealth` |\n| 就绪检查 | GET | `\u002Fapi\u002Fv1\u002Fhealth\u002Fready` |\n\n知识库上传和删除需要请求头：\n\n```http\nX-KB-Admin-Token: your-admin-token\n```\n\n## 项目结构\n\n```text\nmulti_agent_github\u002F\n├── app\u002F                    # FastAPI \u002F Agent \u002F RAG \u002F Skill 核心代码\n├── mcp_servers\u002F            # MCP 工具服务\n├── frontend\u002F               # 前端页面\n├── docs\u002Fsop\u002F               # 内置 OnCall SOP\n├── data\u002Fkb_corpus\u002F         # RAG 开源语料\n├── scripts\u002F                # 知识库和告警模拟脚本\n├── docker-compose.yml      # Milvus + etcd + MinIO + Attu + Redis\n├── requirements.txt\n├── .env.example\n├── .gitignore\n└── run.ps1                 # Windows 一键启动脚本\n```\n\n## License\n\n本项目代码以 **MIT License** 发布。\n\n项目集成或参考了以下第三方开源资产，公开发布时请遵守各自的许可与署名要求：\n\n- **[Aas-ee\u002Fopen-webSearch](https:\u002F\u002Fgithub.com\u002FAas-ee\u002Fopen-webSearch)** — 作者 [@Aas-ee](https:\u002F\u002Fgithub.com\u002FAas-ee)。V2 本地联网搜索 daemon，Docker 镜像 `ghcr.io\u002Faas-ee\u002Fopen-web-search:latest`，本仓库副本位于 `open-webSearch-main\u002F`，由 `app\u002Fcore\u002Fweb_search.py` 通过 HTTP 调用。\n- **[samber\u002Fawesome-prometheus-alerts](https:\u002F\u002Fgithub.com\u002Fsamber\u002Fawesome-prometheus-alerts)** — 作者 [@samber](https:\u002F\u002Fgithub.com\u002Fsamber)。RAG 知识库中 Prometheus 告警语料的来源，原始内容遵循 Creative Commons Attribution 4.0 International (CC BY 4.0)。本仓库副本位于 `data\u002Fkb_corpus\u002Fawesome-prometheus-alerts\u002F`。\n- **小林 OnCall Agent 项目** — 参考其 OnCall Agent 场景设计、诊断流程和项目表达方式。\n","该项目是一个面向OnCall\u002FSRE场景的多智能体智能运维诊断平台，旨在通过自动化流程提高故障排查效率。其核心功能包括基于LangGraph的工作流、Milvus向量搜索、MCP工具集成以及从awesome-prometheus-alerts获取的Prometheus告警知识，支持安全的公共部署配置。项目采用先选择Skill，再规划诊断步骤，调用相关工具执行，并最终生成结构化报告的方式运行，能够根据输入的告警或故障描述自动选取合适的诊断策略。适用于需要快速响应和处理系统故障的企业级运维环境，特别是那些依赖于复杂IT基础设施并寻求提升运维自动化水平的组织。",2,"2026-06-11 04:04:07","CREATED_QUERY"]