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, 多智能体, 请求拦截, 运维自动化, 逆向工具