kingslayer-ops/multi-agent-incident-lab
GitHub: kingslayer-ops/multi-agent-incident-lab
证据驱动的多智能体事件响应实验平台,提供持久化状态、人工审批网关和可复现的故障诊断评估,填补了智能体演示与生产级事件响应之间的工程鸿沟。
Stars: 0 | Forks: 0
# 多智能体事件实验室
**证据驱动的多智能体事件响应,具备持久化检查点、人工审批和可复现的评估。**
多智能体事件实验室是一个全栈事件调查工作台。八个专业角色负责收集遥测数据、关联变更、构建与证据关联的假设、审查风险、请求人工审批、执行沙盒修复,并验证恢复情况。完整的工作流可以在离线状态下通过确定性智能运行,或者对接兼容 OpenAI 的模型并带有自动回退机制。
## 独特之处
大多数智能体演示仅展示最终答案。生产环境的事件响应还需要溯源信息、可恢复的状态、受限的工具、审批网关、降级行为和可量化的可靠性。本项目使这些特性变得可见且可测试。
## 核心亮点
| 领域 | 实现 |
| --- | --- |
| Agent 工作流 | 分诊、指标、日志、变更、诊断、安全、修复和验证 |
| 证据 | 每个假设都会引用不可变的指标、日志和变更证据 ID |
| 持久化状态 | SQLite WAL 检查点能够在 API 重启后保留状态;内存适配器确保测试相互隔离 |
| 模型回退 | 兼容 OpenAI 的结构化输出,在超时或出错时自动回退到确定性诊断 |
| 人工控制 | 变更操作在被明确批准前保持拦截状态;执行仅在沙盒中进行 |
| 可观测性 | 有序的追踪记录,包含 agent、工具、证据、延迟、token 预估、成本和回退事件 |
| 事件流 | 用于 agent 步骤和事件状态的 SSE 重放 endpoint |
| 评估 | 12 类故障场景,衡量诊断准确率、证据覆盖率、不安全操作和延迟 |
| 交付 | React/TypeScript UI、FastAPI、Docker Compose、90% 覆盖率门禁和 GitHub Actions |
## 工作流
```
flowchart LR
UI[React command center] --> API[FastAPI]
API --> TRIAGE[Triage]
TRIAGE --> OBS[Metrics + logs + changes]
OBS --> DIAG[Evidence-linked diagnosis]
DIAG --> POLICY[Deterministic safety review]
POLICY -->|pause| HUMAN[Human approval]
HUMAN --> EXEC[Sandbox remediation]
EXEC --> VERIFY[Recovery verification]
API --> DB[(SQLite checkpoints)]
API --> SSE[SSE event replay]
```
## 快速开始
环境要求:支持 Compose 的 Docker。
```
docker compose up --build
```
打开 。API 文档位于 。运行时数据保存在名为 `incident-lab-data` 的数据卷中。
默认的 `mock` 模式不需要 API 密钥。要使用兼容 OpenAI 的 endpoint,请复制 `.env.example`,设置 `INCIDENT_LAB_LLM_MODE=openai-compatible`,配置 endpoint/模型/密钥,并将该环境文件传递给 Compose。任何超时、连接错误或无效的结构化结果都会被记录,并自动回退到离线 provider。
## 本地开发
后端(Python 3.11+):
```
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
uvicorn incident_lab.api:app --app-dir src --reload
```
前端(Node.js 20+):
```
cd frontend
npm ci
npm run dev
```
Vite 开发服务器会将 `/api` 和 `/health` 代理到 `8000` 端口。
## 故障库
确定性基准测试涵盖 12 类故障:数据库连接池耗尽、内存泄漏、特性开关回退、TLS 过期、过期的 Redis 拓扑、数据库死锁、provider 速率限制、不兼容的事件 schema、服务发现 DNS 故障、磁盘耗尽、时钟偏移和工作线程池饱和。
真实原因由评估层持有,不会传递给智能 provider。离线 provider 根据遥测特征进行诊断,这既防止了答案泄露,又保证了 CI 的可复现性。
## API
| 方法 | Endpoint | 用途 |
| --- | --- | --- |
| `GET` | `/health` | 运行时健康状况和活动的 provider 链 |
| `GET` | `/api/scenarios` | 列出受控的故障场景 |
| `POST` | `/api/incidents` | 启动并检查点记录一项调查 |
| `GET` | `/api/incidents/{id}` | 读取证据、假设、审批状态和追踪记录 |
| `GET` | `/api/incidents/{id}/events` | 以 SSE 形式重放有序的追踪事件 |
| `POST` | `/api/incidents/{id}/approve` | 审批并执行一项沙盒操作 |
| `GET` | `/api/incidents/{id}/postmortem` | 导出事件复盘报告 |
| `POST` | `/api/evaluations/run` | 运行包含 12 个场景的回归基准测试 |
| `GET` | `/api/dashboard` | 读取指挥中心摘要指标 |
示例:
```
curl -X POST http://localhost:8000/api/incidents \
-H "Content-Type: application/json" \
-d '{"scenario_id":"payment-pool-exhaustion"}'
```
## 验证
```
pytest --cov=incident_lab --cov-report=term-missing --cov-fail-under=90
cd frontend && npm run build
docker compose build
```
测试套件会检查调查和审批的生命周期、对不安全操作的拦截、全部 12 项诊断、HTTP 契约、SSE 重放、模型回退、结构化模型解析,以及重新打开数据库后的持久化状态。
## 仓库结构
```
multi-agent-incident-lab/
├── src/incident_lab/ # API, workflow, providers, policies, persistence, tools
├── tests/ # Unit and HTTP integration tests
├── frontend/ # React + TypeScript command center
├── docs/ # Architecture decisions
├── .github/workflows/ # CI quality gates
├── Dockerfile
└── docker-compose.yml
```
## 安全与范围
执行器仅接受 `incident-lab` 模拟命令命名空间,且绝不会启动 shell。模型输出无法批准操作或更改策略。在接入外部遥测数据之前,请先阅读 [SECURITY.md](SECURITY.md),并通过私密的 GitHub 安全公告报告漏洞。
## 许可证
[MIT](LICENSE)
标签:AV绕过, FastAPI, React, Syscalls, 多智能体, 请求拦截, 运维自动化, 逆向工具