Pagalavan17/Incident-Detection-Agent
GitHub: Pagalavan17/Incident-Detection-Agent
该项目是一个 AI 驱动的 SOC 控制台和工程 Copilot,通过 LLM Agent 自动化日志分析、根因定位、修复建议及事后总结生成,帮助工程团队高效响应生产事件。
Stars: 0 | Forks: 0
# 🚨 事件响应与事后总结 Agent
## 🎯 项目概述
**事件响应与事后总结 Agent** 是一个由 AI 驱动的工程级 Copilot,它改变了工程团队检测、响应生产事件并从中学习的方式。
该系统不再依赖人工筛选和团队内部的隐性知识,而是:
- **摄取**来自多个基础设施源的结构化和非结构化日志
- **检测**使用 AI 驱动的模式识别来发现异常
- **检索**从持久化的向量记忆 中检索相似的历史事件
- **分析**使用大型语言模型 分析根本原因
- **建议**提供经过 Enkrypt AI Guardrails 安全验证的修复措施
- **生成**自动生成结构化的事后总结报告
- **学习**持续学习——每一个已解决的事件都会丰富机构记忆
## 🏛️ 架构概览
```
┌─────────────────────────────────────────────────────────────────────┐
│ Incident Response Agent │
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────────────┐ ┌───────────┐ │
│ │ Log │──▶│ Anomaly │──▶│ RCA Engine │──▶│ Remediation│ │
│ │ Ingestion│ │Detection │ │ (Claude 3.5) │ │ (Enkrypt) │ │
│ └──────────┘ └──────────┘ └───────────────┘ └───────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ Mastra Orchestration Layer │ │
│ │ (Agents · Tools · Workflows · Memory) │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────────────┐ │
│ │ Qdrant DB │ │ Post-Mortem │ │ OpenTelemetry │ │
│ │ (Vector Mem.) │ │ Generator │ │ (Tracing) │ │
│ └───────────────┘ └───────────────┘ └───────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
```
### 核心设计原则
| 原则 | 应用 |
|-----------|-------------|
| **整洁架构** | 领域逻辑与基础设施隔离 |
| **SOLID** | 每个服务都有单一、明确定义的职责 |
| **类型安全** | 严格使用 TypeScript 并在各处使用 Zod 进行运行时验证 |
| **可观测性** | 通过 OpenTelemetry 对所有 Agent 操作进行追踪 |
| **安全第一** | Enkrypt AI 验证每一个由 LLM 生成的修复操作 |
| **机构记忆** | Qdrant 将每个事件存储为可搜索的向量 |
## 🛠️ 技术栈
| 层级 | 技术 | 用途 |
|-------|-----------|---------|
| **运行时** | Node.js 20+ | 原生 ESM,现代 JS 运行时 |
| **语言** | TypeScript 5.7 | 严格的类型安全 |
| **Web 框架** | Express 4 | 轻量级 HTTP API |
| **AI 编排** | Mastra 0.10 | Agent 工作流、工具、记忆 |
| **主要 LLM** | Anthropic Claude 3.5 | 根因分析 (RCA) 与事后总结生成 |
| **Embeddings** | OpenAI text-embedding-3-small | 语义相似度搜索 |
| **向量数据库** | Qdrant 1.13 | 持久化机构记忆 |
| **安全性** | Enkrypt AI Guardrails | LLM 输出验证 |
| **验证** | Zod 3 | 运行时 schema 强制执行 |
| **可观测性** | OpenTelemetry | 分布式追踪 |
| **日志器** | Pino | JSON 结构化日志 |
| **容器** | Docker + Compose | Qdrant 本地开发环境 |
## 📁 文件夹结构
```
incident-response-agent/
│
├── src/ # All application source code
│ ├── index.ts # Application entry point
│ │
│ ├── config/ # Environment & app configuration
│ ├── core/ # Domain models, interfaces, base classes
│ ├── events/ # Event emitters & internal event bus
│ ├── models/ # Data transfer objects & domain entities
│ ├── types/ # Shared TypeScript type definitions
│ ├── utils/ # Pure utility functions
│ │
│ ├── services/ # Business logic services
│ │ ├── logs/ # Log ingestion & normalisation
│ │ ├── anomaly/ # Anomaly detection engine
│ │ ├── qdrant/ # Qdrant client & collection management
│ │ ├── retrieval/ # Semantic similarity search
│ │ ├── embeddings/ # Embedding generation (OpenAI)
│ │ ├── llm/ # LLM orchestration (Claude, OpenAI)
│ │ └── enkrypt/ # Enkrypt AI guardrails integration
│ │
│ ├── mastra/ # Mastra AI framework layer
│ │ ├── agents/ # Mastra agent definitions
│ │ ├── tools/ # Mastra tool definitions
│ │ └── workflows/ # Mastra workflow definitions
│ │
│ ├── api/ # Express HTTP API layer
│ │ ├── controllers/ # Request handlers
│ │ ├── routes/ # Route definitions
│ │ └── middleware/ # Auth, validation, error handling
│ │
│ └── scripts/ # One-off operational scripts
│ ├── generateLogs.ts # Synthetic log data generator
│ ├── setupQdrant.ts # Qdrant collection bootstrapper
│ └── seedQdrant.ts # Historical incident seeder
│
├── docs/ # Architecture docs, ADRs, diagrams
├── data/ # Raw & processed log data (gitignored)
├── reports/ # Generated post-mortem reports (gitignored)
├── tests/ # Unit and integration tests
├── docker/ # Dockerfile & container configs (future)
│
├── package.json # Dependencies & npm scripts
├── tsconfig.json # TypeScript (type-check only)
├── tsconfig.build.json # TypeScript (production emit)
├── docker-compose.yml # Qdrant local infrastructure
├── .env.example # Environment variable template
└── .gitignore # Git exclusion rules
```
## ⚙️ 安装说明
### 前置条件
| 工具 | 版本 | 安装 |
|------|---------|---------|
| Node.js | ≥ 20.0.0 | [nodejs.org](https://nodejs.org) |
| npm | ≥ 10.0.0 | 随 Node.js 附带 |
| Docker | ≥ 24.0 | [docker.com](https://docs.docker.com/get-docker/) |
| Docker Compose | ≥ 2.20 | 随 Docker Desktop 附带 |
### 设置步骤
```
# 1. Clone 仓库
git clone https://github.com/your-org/incident-response-agent.git
cd incident-response-agent
# 2. 安装依赖
npm install
# 3. 创建本地环境文件
cp .env.example .env
# → 打开 .env 并填写您的 API keys
# 4. 启动 Qdrant 向量数据库
docker compose up -d
# 5. 验证 Qdrant 是否健康
curl http://localhost:6333/healthz
# → 预期结果:OK
# 6. 运行 type-checker 以验证项目设置
npm run typecheck
```
## 🚀 本地运行
```
# 启动开发服务器(通过 tsx watch 进行 hot-reload)
npm run dev
# 在不启动服务器的情况下进行类型检查
npm run typecheck
# Lint 源代码
npm run lint
# 为生产环境构建
npm run build
# 启动生产构建
npm start
```
## 🐳 Docker 设置
`docker-compose.yml` **仅运行 Qdrant** —— 应用程序通过 npm 脚本原生运行,以提供最佳的开发体验(快速的热重载、原生调试器、无需重新构建镜像)。
```
# 在后台启动 Qdrant
docker compose up -d
# 检查容器状态和健康状态
docker compose ps
# 查看 Qdrant 日志
docker compose logs -f qdrant
# 停止容器(数据保留在命名卷中)
docker compose down
# 停止容器并销毁所有向量数据(请谨慎使用!)
docker compose down -v
```
### Qdrant Web UI
启动后,可以通过以下地址访问内置的 Qdrant 仪表板:
→ **http://localhost:6333/dashboard**
### 端口参考
| 端口 | 协议 | 服务 |
|------|----------|---------|
| `6333` | HTTP REST | Qdrant REST API 和仪表板 |
| `6334` | gRPC | Qdrant gRPC API |
| `3000` | HTTP | 事件 Agent Express API |
## 🛡️ 环境变量
| 变量 | 必需 | 描述 |
|----------|----------|-------------|
| `NODE_ENV` | ✅ | 运行环境 (`development` \| `production`) |
| `PORT` | ✅ | Express 服务器端口 (默认: `3000`) |
| `ANTHROPIC_API_KEY` | ✅ | 用于 RCA 和报告生成的 Claude API 密钥 |
| `OPENAI_API_KEY` | ✅ | 用于生成 embedding 的 OpenAI 密钥 |
| `ENKRYPTAI_GUARDRAILS_API_KEY` | ✅ | 用于安全验证的 Enkrypt AI 密钥 |
| `QDRANT_URL` | ✅ | Qdrant REST URL (默认: `http://localhost:6333`) |
| `QDRANT_API_KEY` | ⬜ | 仅 Qdrant Cloud 部署需要 |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | ⬜ | 追踪收集器 endpoint |
## 🗺️ 开发路线图
### ✅ 模块 1 — 项目初始化 (第 1 天) ← *您当前的位置*
- [x] 仓库结构与文件夹脚手架
- [x] 包含所有生产环境依赖的 `package.json`
- [x] 严格的 TypeScript 配置
- [x] 用于 Qdrant 的 Docker Compose
- [x] 环境变量模板
- [x] README 与项目文档
### 🔲 模块 2 — 配置与类型系统
- [ ] 使用 Zod 验证的环境加载器 (`src/config/env.ts`)
- [ ] 用于事件、日志、embedding 的共享 TypeScript 类型
- [ ] 在开发环境下带有美化打印的 Pino 日志记录器初始化
- [ ] OpenTelemetry 追踪器引导程序
### 🔲 模块 3 — 日志摄取服务
- [ ] 日志规范化 pipeline
- [ ] 多源日志适配器 (CloudWatch, Datadog, 原始 JSON)
- [ ] 合成日志生成脚本
### 🔲 模块 4 — 向量记忆
- [ ] Qdrant collection 设置脚本
- [ ] 使用 OpenAI 的 embedding 服务
- [ ] 历史事件种子数据填充
### 🔲 模块 5 — Mastra Agent 核心
- [ ] 事件响应 Agent 定义
- [ ] RCA 工具、检索工具、异常工具
- [ ] Mastra 工作流编排
### 🔲 模块 6 — 安全与验证
- [ ] Enkrypt AI guardrails 集成
- [ ] 修复操作验证器
### 🔲 模块 7 — 事后总结生成器
- [ ] 结构化报告模板
- [ ] 由 Claude 驱动的生成
- [ ] Markdown 与 PDF 导出
### 🔲 模块 8 — REST API
- [ ] 用于事件提交的 Express 路由
- [ ] 用于实时 Agent 更新的 WebSocket
- [ ] 认证 middleware
### 🔲 模块 9 — 前端
- [ ] Next.js 仪表板
- [ ] 实时事件时间线
- [ ] 事后总结查看器
## 📄 许可证
MIT © HiDevs 团队 — HiDevs × Mastra 黑客松 2024
标签:AI智能体, LLMOps, MITM代理, SOC控制台, 根因分析, 用户代理, 自动化应急响应, 自动化攻击, 请求拦截, 运维自动化