gyamini25/crisispilot
GitHub: gyamini25/crisispilot
CrisisPilot 是一个基于 Gemini 和 Google Cloud ADK 的多 agent 自主事故响应指挥系统,通过并行调查与 Dynatrace 实时数据关联,在生产事故发生时自动完成根因分析和修复建议。
Stars: 0 | Forks: 0
# CrisisPilot
当生产事故触发时,CrisisPilot 会迅速启动一个由专业 AI agent 组成的作战室,它们并行进行调查,将遥测数据与最近的部署相关联,量化业务影响,综合分析根本原因,并提出修复建议——所有这些都以人类可读的节奏实时流式传输到仪表板。
- **在线演示:** https://crisispilot.vercel.app
## 黑客松赛道及必需的集成
本项目以 **Dynatrace** 赛道为目标,并使用了所有三个必需的基础组件:
| 需求 | CrisisPilot 如何使用它 |
|---|---|
| **Gemini** | 每个 agent 的推理均由 Gemini(`gemini-flash-lite-latest`)生成,并逐个 token 地流式传输到 UI。 |
| **Google Cloud Agent Builder** | 这 5 个 agent 是真正的 **ADK (Agent Development Kit) `LlmAgent`**,通过 ADK 的 `Runner` 执行(`backend/app/agents/adk_runtime.py`)。 |
| **合作伙伴 MCP — Dynatrace** | Agent 通过 stdio **使用官方的 Dynatrace MCP server**(`@dynatrace-oss/dynatrace-mcp-server`)查询 **Dynatrace Grail** —— 执行真实的 `execute_dql` 调用来获取指标和部署事件(`backend/app/integrations/dynatrace_mcp.py`)。 |
这三者都能优雅降级:如果密钥/凭证缺失或受到速率限制,agent 将回退到脚本化但逼真的推理模式,从而确保演示永不中断。
## 架构
```
┌─────────────────────────────────────────────┐
Incident ──▶ │ Orchestrator (sequences the agent war-room) │
(sim / API / └─────────────────────────────────────────────┘
file upload) │ parallel │ then
┌────────┼────────┐ ┌────┴─────┐
▼ ▼ ▼ ▼ ▼
Metrics Deployment Business RootCause Comms
Agent Agent Impact Agent Agent
│ │ │
▼ ▼ ▼
Dynatrace MCP (execute_dql / deployments) ← real partner MCP
│
each agent = ADK LlmAgent (Agent Builder) ← Gemini-backed
│
pub/sub bus ──▶ WebSocket ──▶ Next.js dashboard (live)
```
- **前端:** Next.js 15 (App Router)、Tailwind、Framer Motion、React Flow
- **后端:** FastAPI + WebSockets、异步事件总线 → WS 广播
- **持久化:** MongoDB Atlas (Motor),带有内存回退适配器
- **AI:** 基于 Gemini 的 ADK `LlmAgent`;使用 Dynatrace MCP 获取实时可观测性数据
## 快速开始
需要两个终端。复制 `backend/.env.example` → `backend/.env` 并填入密钥
(均为可选——如果没有它们,应用将以降级的“脚本化”模式运行)。
### 1. 后端
```
cd backend
./run.sh # creates .venv, installs deps, boots FastAPI on :8000
```
`.env` 密钥:
- `GEMINI_API_KEY` — 启用实时的 Gemini + ADK agent
- `DT_ENVIRONMENT` (`https://.apps.dynatrace.com`) + `DT_PLATFORM_TOKEN` — 启用 Dynatrace MCP 集成
- `MONGODB_URI` — 真实的 Atlas 持久化存储(忽略则使用内存模式)
- `CRISISPILOT_USE_ADK=true` — 通过 ADK 运行 agent(默认开启)
健康检查:`GET /healthz` 会报告哪些集成处于活动状态。
### 2. 前端
```
cd frontend
npm install
npm run dev # http://localhost:3000
```
打开 **http://localhost:3000**,点击 **Trigger incident**,然后观察 agent 的调查过程。
## 演示流程
1. 启动这两个服务。
2. 点击 **Trigger incident**(或调用 `POST /api/incidents/trigger`)。
3. 观察 Metrics → Deployment → BusinessImpact 并行调查,然后由 RootCause 进行综合分析,最后由 Comms 提出修复建议——全程实时流式传输。
4. 作战室会显示真实的 **Dynatrace MCP** 工具调用(`dynatrace.query`、`dynatrace.deployments`)并附有其来源注释。
## 仓库结构
```
crisispilot/
├── backend/
│ └── app/
│ ├── agents/ # 5 agents + orchestrator + adk_runtime (Agent Builder)
│ ├── integrations/ # dynatrace_mcp (partner MCP client)
│ ├── api/ # REST + WebSocket
│ ├── core/ # pub/sub + incident simulator
│ └── db/ # Mongo-shaped store (in-memory fallback)
└── frontend/ # Next.js dashboard
```
## 许可证
[MIT](LICENSE)
标签:AI智能体, API集成, DLL 劫持, Google Cloud, 事故响应, 可观测性, 大语言模型, 运维监控, 逆向工具