bagusardin25/Sherlock-AI-Incident-Response-Co-pilot
GitHub: bagusardin25/Sherlock-AI-Incident-Response-Co-pilot
基于多 Agent 协作和 IBM Bob 代码级分析的 AI 事件响应系统,实现从告警到修复再到事后文档的全流程自动化。
Stars: 1 | Forks: 0
# 🔍 Sherlock — AI 事件响应 Co-pilot
**为 IBM Bob Hackathon 2026 构建**
Sherlock 是一个由 AI 驱动的事件响应自动化系统,使用 **IBM Bob** 作为核心引擎进行代码级分析。该系统实现了从告警检测到修复生成及事后文档编写的全流程自动化。
## 🎯 问题描述
生产事件平均需要耗费 **4.4 小时的 MTTR** 周期:解析堆栈跟踪 → 查找根本原因 → 复现 → 修复 → 撰写事后报告。Sherlock 通过 AI 驱动的多 Agent 流水线将此时间缩短至 **< 5 分钟**。
## ✨ 核心功能
- 🧠 **IBM Bob 集成** - 提供完整的代码库上下文以进行根本原因分析
- ⚡ **多 Agent 流水线** - 5 个专业化 Agent 顺序协作
- 🔄 **实时流传输** - 通过 Server-Sent Events 提供实时进度更新
- 🛠️ **自动生成修复** - 包含测试用例的代码补丁
- 📝 **自动生成事后报告** - 全面的文档自动生成
- 🎨 **现代 UI** - 基于 Next.js 14,带有实时 Agent 可视化
## 🏗️ 系统架构
```
┌─────────────────────────────────────────────────────────────┐
│ Sherlock System │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ Next.js │ SSE │ FastAPI │ │
│ │ Frontend │◄────────┤ Backend │ │
│ │ │ │ │ │
│ └──────────────┘ └────────┬─────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────┐ │
│ │ Pipeline Orchestrator │ │
│ └───────────┬───────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────┐ │
│ │ Multi-Agent Pipeline │ │
│ ├───────────────────────────────────────┤ │
│ │ 1. Triage Agent │ │
│ │ 2. Forensics Agent │ │
│ │ 3. Bob Analyst Agent ⭐ │ │
│ │ 4. Fix Agent ⭐ │ │
│ │ 5. Postmortem Agent │ │
│ └───────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
```
## 🚀 快速开始
### 前置条件
- **Python 3.11+** - 后端运行环境
- **Node.js 18+** - 前端运行环境
- **Git** - 用于取证分析
- **IBM Bob CLI**(可选)- 用于生产模式
### 安装说明
```
# Clone 仓库
git clone
cd Sherlock
# 安装 backend 依赖
cd backend
pip install -r requirements.txt
cd ..
# 安装 frontend 依赖
cd frontend
npm install
cd ..
```
### 运行应用
#### 选项 1:手动启动(推荐用于开发环境)
**终端 1 - 后端:**
```
cd backend
python run.py
```
后端将运行在 `http://localhost:8000`
**终端 2 - 前端:**
```
cd frontend
npm run dev
```
前端将运行在 `http://localhost:3000`
#### 选项 2:使用 PowerShell 脚本
```
# Windows
.\start-dev.ps1
```
### 首次运行
1. 打开浏览器访问:`http://localhost:3000`
2. 点击 "Load sample alert" 加载演示数据
3. 点击 "Start Analysis"
4. 观看实时的 Agent 流水线执行过程
5. 查看生成的事后报告
## 📁 项目结构
```
Sherlock/
├── backend/ # FastAPI Backend
│ ├── app/
│ │ ├── main.py # FastAPI application
│ │ ├── config.py # Configuration
│ │ ├── bob_client.py # IBM Bob CLI wrapper ⭐
│ │ ├── models/
│ │ │ └── state.py # Pydantic models
│ │ ├── agents/ # Multi-agent system
│ │ │ ├── triage.py
│ │ │ ├── forensics.py
│ │ │ ├── bob_analyst.py ⭐
│ │ │ ├── fix.py ⭐
│ │ │ └── postmortem.py
│ │ ├── orchestrator/
│ │ │ └── pipeline.py # Agent orchestration
│ │ └── api/
│ │ └── incidents.py # API routes
│ ├── requirements.txt
│ ├── run.py
│ └── README.md
│
├── frontend/ # Next.js Frontend
│ ├── app/
│ │ ├── page.tsx # Landing page
│ │ ├── incidents/
│ │ │ └── [id]/
│ │ │ └── page.tsx # Analysis page
│ │ └── globals.css
│ ├── components/
│ │ └── AgentCard.tsx # Agent status card
│ ├── package.json
│ └── README.md
│
├── fixtures/ # Sample data
│ ├── alerts/
│ │ └── alert_race_condition.json
│ ├── bob_responses/
│ │ ├── root_cause_analysis.json
│ │ └── fix_proposal.json
│ └── flaky-shop/ # Sample buggy repo
│ └── src/cart/checkout.ts
│
├── README.md # This file
└── SHERLOCK_IMPLEMENTATION_PLAN.md
```
## 🤖 多 Agent 流水线
### 1. Triage Agent
**目的:** 对事件严重程度和错误类型进行分类
**输出:**
- 严重程度:LOW | MEDIUM | HIGH | CRITICAL
- 错误类型:null_pointer | race_condition | timeout | 等
- 服务识别
- 置信度评分
### 2. Forensics Agent
**目的:** 收集 Git 历史记录和代码上下文
**输出:**
- 最近的提交记录(最近 20 条)
- Git blame 信息
- 嫌疑文件识别
- 日志摘录
### 3. Bob Analyst Agent ⭐
**目的:** 使用 IBM Bob 进行根本原因分析
**输出:**
- 根本原因假设
- 带有行号的嫌疑文件
- 推理链
- 置信度评分
**IBM Bob 集成:**
```
result = await ask_bob(
prompt=analysis_prompt,
repo_path=repo_path,
output_schema=RootCauseAnalysis
)
```
### 4. Fix Agent ⭐
**目的:** 使用 IBM Bob 生成代码补丁
**输出:**
- Unified diff 格式的补丁
- 测试代码
- PR 标题与描述
- 修改文件列表
### 5. Postmortem Agent
**目的:** 生成全面的文档
**输出:**
- 摘要概述
- 时间线
- 根本原因分析
- 解决步骤
- 待办事项
- 经验教训
## 🔧 配置
### 后端配置
创建 `backend/.env`:
```
# Bob CLI 设置
SHERLOCK_BOB_MOCK_MODE=true # Enable mock mode
SHERLOCK_BOB_CLI_PATH=bob
SHERLOCK_BOB_TIMEOUT=60
# API 设置
SHERLOCK_CORS_ORIGINS=["http://localhost:3000"]
SHERLOCK_LOG_LEVEL=INFO
# Repository 设置
SHERLOCK_FIXTURES_PATH=../fixtures
SHERLOCK_SAMPLE_REPO_PATH=../fixtures/flaky-shop
```
### 前端配置
创建 `frontend/.env.local`:
```
NEXT_PUBLIC_API_URL=http://localhost:8000
```
## 🧪 测试
### 后端测试
```
cd backend
# 运行所有测试
pytest
# 运行 coverage
pytest --cov=app
# 运行特定测试
pytest tests/agents/test_triage.py
```
### 前端测试
```
cd frontend
# 运行 linter
npm run lint
# Build 检查
npm run build
```
## 📊 演示场景
### 示例 Bug:Checkout 中的 Race Condition
**场景:** 电商 Checkout 服务遇到 `TypeError: Cannot read property 'quantity' of undefined`
**根本原因:** 异步库存获取缺少 `await`
**Sherlock 分析过程:**
1. **Triage**(5秒) - 识别为 HIGH 严重度,null_pointer 错误
2. **Forensics**(10秒) - 在 checkout.ts 中发现最近的提交
3. **Bob Analysis**(30秒) - 识别缺失的 await,解释 race condition
4. **Fix Generation**(45秒) - 生成带有 await 和测试用例的补丁
5. **Postmortem**(10秒) - 生成详尽的文档
**总耗时:** 约 2 分钟,而手动调试需要 4 小时以上
## 🎯 IBM Bob 集成
### 为什么 Bob 是核心
1. **完整的代码库上下文** - Bob 能理解整个代码库
2. **代码级推理** - 不仅是日志分析,而是真正的代码理解
3. **修复生成** - 生成可用于生产环境的补丁
4. **结构化输出** - 用于自动化的 JSON 响应
### Bob 使用场景
- **根本原因分析** - `bob_analyst.py`
- **修复生成** - `fix.py`
- **代码解释** - 贯穿整个流水线
### Mock 模式
用于在无 Bob 额度的情况下进行开发:
```
export SHERLOCK_BOB_MOCK_MODE=true
```
Mock 响应数据来自 `fixtures/bob_responses/`
## 📈 成功指标
- ✅ **MTTR 降低:** 4.4 小时 → 5 分钟(降低 98%)
- ✅ **自动化率:** 5/5 个 Agent 完全自动化
- ✅ **代码上下文:** 全代码库分析
- ✅ **文档:** 自动生成事后报告
- ✅ **开发者体验:** 实时进度可见
## 🚧 已知限制
- 需要带有提交历史的 Git 仓库
- Bob CLI 配额限制(开发时请使用 Mock 模式)
- 单事件处理(尚不支持并行分析)
- 事后报告仅支持英文生成
## 🔮 未来增强计划
- [ ] 多事件仪表板
- [ ] Slack/PagerDuty 集成
- [ ] 自动创建 GitHub PR
- [ ] 历史事件分析
- [ ] 团队协作功能
- [ ] 自定义 Agent 插件
- [ ] 多语言支持
## 🤝 贡献
1. Fork 仓库
2. 创建功能分支
3. 编写测试
4. 提交 Pull Request
## 📄 许可证
MIT License - IBM Bob Hackathon 2026
## 🙏 致谢
- **IBM Bob 团队** - 提供出色的 AI 开发合作伙伴
- **Hackathon 组织者** - 提供这次机会
- **开源社区** - 提供各种优秀的工具和库
## 📞 支持
- **文档:** 参见 `backend/README.md` 和 `frontend/README.md`
- **问题:** GitHub Issues
- **演示视频:** [演示链接]
**用 ❤️ 为 IBM Bob Hackathon 2026 构建**
*Sherlock - 因为排查生产事件不应该耗费 4 个小时*
🔍 **由 IBM Bob 驱动**
标签:AIOps, AI智能体, AV绕过, CISA项目, CMS安全, DevSecOps, DNS 反向解析, FastAPI, IBM Bob, JavaScript, Python, Server-Sent Events, SSE, 上游代理, 事件管理, 代码分析, 凭证管理, 前端可视化, 告警分析, 复盘报告, 多智能体协同, 安全事件响应, 实时数据流, 文档自动生成, 无后门, 智能助手, 根因分析, 测试用例生成, 漏洞修复, 生产环境, 网络安全培训, 网络安全研究, 自动修复, 自动化运维, 自动生成代码, 逆向工具, 降低MTTR, 黑客松项目