Vivek-122005/Edge-Incident-Response-Agent
GitHub: Vivek-122005/Edge-Incident-Response-Agent
基于 Cloudflare 边缘计算的有状态 AI Agent,能在 60 秒内自动检测 API 异常、调查日志并生成事件摘要。
Stars: 0 | Forks: 0
# Edge Incident Response Agent
## 项目描述
一个有状态的 AI Agent,能够实时监控您的 API,检测异常情况,自主进行调查(通过浏览日志和查询数据库),并向人类发出警报——所有这些都在边缘零服务器的情况下运行。
本项目是基于 Cloudflare 构建的一个端到端的事件响应系统:
- 边缘入口监控 + 异常检测
- 使用 Durable Objects + Agents SDK 进行有状态的 AI 调查
- 基于历史事件的检索增强上下文
- 在 60 秒内自动生成事件摘要
- 通过 WebSocket 在 React 仪表板中提供实时事件订阅源
## 问题陈述
当 API 发生故障或遭到攻击时,工程师通常需要花费 15 到 30 分钟的时间手动关联日志、检查仪表板并撰写事件报告。这个过程不仅缓慢、成本高昂,而且容易出错。当前的监控工具(如 Datadog、PagerDuty)只能向您发出警报——但它们无法替您展开调查。
本项目通过一个自主的边缘 Agent 弥补了这一空白,该 Agent 能够在 60 秒内检测、调查并总结事件——完全无需任何集中式服务器。
## 高层架构
```
API Traffic → Workers (Ingress Monitor)
↓ anomaly detected
Agents SDK + Durable Objects (IncidentAgent)
↓ investigation tools
┌───────────┼───────────┬───────────┐
D1 Vectorize Workers AI KV
(logs) (RAG) (Llama 3.1) (config)
↓ report written
WebSocket → CF Pages Dashboard
```
```
┌─────────────────────────────────┐
│ Cloudflare Edge │
│ │
API Traffic ─────▶│ [Worker] Ingress Monitor │
│ ↓ anomaly detected │
│ [Agents SDK + Durable Object] │◀── WebSocket (live UI)
│ IncidentAgent │
│ ↓ spawns tasks │
│ ┌────┴──────────────────────┐ │
│ │ Tool 1: Query D1 logs │ │
│ │ Tool 2: Vectorize (RAG) │ │
│ │ Tool 3: Workers AI LLM │ │
│ └───────────────────────────-┘ │
│ ↓ writes summary │
│ [D1] incidents table │
└──────────────────────────────────┘
↓
[CF Pages] React Dashboard
(live incident feed via WebSocket)
```
## Cloudflare 服务
| 服务 | 用途 |
|---|---|
| Workers | 入口监控、异常检测、API 路由 |
| Agents SDK | 有状态的 IncidentAgent 编排 |
| Durable Objects | 单个事件的状态和内存 |
| Workers AI | LLM 推理 (Llama 3.1 8B) |
| D1 | 请求日志和事件记录 |
| Vectorize | 历史事件的语义搜索 (RAG) |
| KV | 配置、黑名单、事件报告存储 |
| Pages | 带有实时 WebSocket 订阅源的 React 仪表板 |
## 在线演示
- **仪表板**:https://incident-dashboard.pages.dev
- **Worker**:https://incident-response-agent.vivek-23csai.workers.dev
## 本地开发
前置条件:Node.js 18+、Wrangler CLI、Cloudflare 账户
```
# 安装依赖
npm install
# Terminal 1 — 本地运行 Worker
npx wrangler dev
# Terminal 2 — 运行 dashboard
npm run dev:frontend
# Terminal 3 — 触发 demo 事件
node simulate.js
```
## 部署
```
# 部署 Worker
wrangler deploy
# 部署 dashboard
npm run build
wrangler pages deploy dist --project-name=incident-dashboard
```
## 数据库设置
```
# 创建 D1 database
wrangler d1 create incident-db
# 应用 schema
wrangler d1 execute incident-db --remote --file=schema.sql
# 创建 KV namespace
wrangler kv namespace create incident-kv
# 创建 Vectorize index
wrangler vectorize create incident-vectors \
--dimensions=768 --metric=cosine
```
## 工作原理
1. Worker 监控每一个 API 请求并将其记录到 D1
2. 当错误率在 2 分钟的窗口期内超过 40% 时,触发 Agent
3. 在距离最近的 Cloudflare PoP 实例化 Durable Object
4. Agent 查询 D1 以获取最近的错误日志(阶段 A)
5. Agent 在 Vectorize 中搜索相似的历史事件(阶段 B)
6. Agent 调用 Workers AI 进行根因分析(阶段 C)
7. 将报告写入 D1,并将 Embedding 存储到 Vectorize(阶段 D)
8. WebSocket 将每个步骤广播到实时仪表板
9. 整个调查过程在 60 秒内完成
## 关键设计决策
**为什么选择 Durable Objects?**
普通的 Workers 是无状态的。每个事件都需要一个能够记住其查询过的内容、AI 得出的结论以及当前调查阶段的 Agent。Durable Objects 提供了同置的计算和存储——状态读取仅需微秒而非毫秒。
**为什么选择 Workers AI 而不是 OpenAI?**
AI 推理永远不会离开 Cloudflare 的网络。没有外部 API 往返,无需管理凭证,也没有数据流出成本。
**为什么选择 Vectorize?**
将过去的事件摘要存储为 Embedding 可以实现语义搜索。Agent 会找到 3 个最相似的历史事件,并将它们作为上下文提供给 LLM——无需单独的服务即可实现 RAG。
## 影响
| 指标 | 数值 |
|---|---|
| 检测延迟 | < 30 秒 |
| 调查时间(手动) | 15–30 分钟 |
| 调查时间(自动) | < 60 秒 |
| 边缘覆盖范围 | 300+ 个 Cloudflare PoP |
| 所需服务器数量 | 零 |
为 Cloudflare 部署构建 —— 第二阶段提交。
标签:AIOps, API安全, API监控, Durable Objects, JSON输出, Llama 3.1, LLM, RAG检索增强生成, React, Syscalls, Unmanaged PE, WebSocket, 人工智能代理, 依赖分析, 告警系统, 安全巡检, 异常检测, 数据库查询, 程序员工具, 自动化攻击, 自动化调查, 边缘AI, 边缘计算, 运维自动化