NiranjanTapasv1/incident-response-copilot
GitHub: NiranjanTapasv1/incident-response-copilot
一个事件响应智能体,通过自动读取日志和告警定位根因并建议修复方案,同时对每个高风险操作执行安全策略校验。
Stars: 0 | Forks: 0
# Incident Response Copilot
一个在系统宕机时,能帮助工程师在手动排查之前弄清楚出了什么问题的 agent。它会读取模拟云环境中的日志、指标和告警,找出可能导致问题的原因,并建议修复方案。但它不能擅自采取行动。它想要执行的每一个动作都会先经过检查,例如它可以建议回滚数据库,但如果该动作没有通过安全检查,它就无法真正执行。
## 为什么开发这个项目
当生产环境出现故障时,最耗时的往往不是修复问题,而是首先弄清楚*到底哪里出了错*。工程师们不得不在仪表盘、日志文件和告警队列之间来回切换,靠手工拼凑出事件的来龙去脉。这个项目旨在探讨:如果由一个 agent 自动完成初步排查、收集证据、对最可能的原因进行排序,最后交给工程师一份简短的清单,而不是一面铺天盖地的日志墙,会怎么样?
这背后更棘手的问题是:在事件发生期间,如何允许 agent 采取实质性操作(重启服务、扩容、回滚部署),而不会让它引发下一次故障。这才是我最关心的部分,它也是我的另一个项目背后探讨的核心问题——那是一个使用 Z3 构建的 AI agent 安全检查器,Z3 是一种用于形式化验证的真正的约束求解器。这个项目直接接入了那个安全检查器,因此 agent 在这里想要执行的每一个高风险操作,在真正执行之前都会根据真实的策略规则进行验证,而不是想当然地认为没问题。
## 具体功能
1. 读取模拟云设置(虚拟服务、虚拟数据,未连接任何真实环境)中的告警、指标、日志和最近的部署记录
2. 将相关的症状聚合为一个单一事件,而不是向工程师展示十个实质上是同一个问题的独立告警
3. 对最可能的原因进行排序,并附上每个原因背后的证据
4. 提出修复建议
5. 在任何修复方案真正执行之前,根据安全规则对其进行检查:有些操作会被直接拦截,有些则会暂停等待人工审批
6. 记录每一个决策,因此对于提议了什么、允许了什么以及拒绝了什么,都有完整的记录
## 安全检查机制
有些操作风险极高,如果没有人工参与,绝对不应执行。生产环境回滚需要高级操作员的批准;重启生产服务需要批准;运行原始 shell 命令则一律完全禁止,绝无例外;将敏感日志导出到外部也被禁止;低权限用户根本无法接触生产服务。
该检查可以通过两种方式运行:一是项目本身内置的简易本地规则,二是连接到我基于 Z3 构建的实际安全平台作为独立服务,这样决策将来自真实的策略引擎,而非硬编码的逻辑。
```
flowchart LR
Agent[Agent proposes an action] --> Check[Safety check]
Check --> Pass[Approved: action runs]
Check --> Block[Blocked: logged, nothing happens]
Check --> Hold[Needs human approval: paused]
```
## 技术栈
- **后端:** Python, FastAPI, SQLite
- **前端:** React, TypeScript, Vite
- **安全层:** 默认使用内置的本地规则,也可选择通过 HTTP 连接到 Z3 安全平台
## 本地运行
**后端**
```
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r backend/requirements.txt
uvicorn backend.app.main:app --reload --port 8000
```
**前端**
```
cd frontend
npm install
npm run dev
```
打开 `http://127.0.0.1:5173`。
## 运行效果
项目内置了一个演示程序,展示了几个逼真的场景:一个是扩容请求需要审批;一个是未授权的回滚被拦截;还有一个是有人试图混入 shell 命令并被拒绝:
```
python scripts/run_demo.py --assert
```
## 数据说明
这里没有任何真实数据。“云环境”完全是虚构的:虚拟服务、虚拟告警、虚拟日志,因此不用担心它会触及实际的生产系统、云账户或真实的基础设施。
## 未包含的内容(刻意为之)
这是一个可运行的 demo,而不是生产级的监控工具。它不连接真实的云提供商、Kubernetes 集群,也不接入像 PagerDuty 或 Datadog 这样的告警系统。Z3 安全集成是可选的,如果没有它,一切都可以通过使用内置的本地规则正常运行。该项目的架构设计使得未来可以在不重写核心 agent 的情况下,轻松添加这些真实的集成。
## 测试
```
pytest
cd frontend && npm run typecheck && npm run build
```
## Docker
```
docker compose up --build
```
标签:AIOps, DLL 劫持, 多云环境, 大语言模型, 智能运维, 模块化设计, 策略校验, 自动化修复, 请求拦截, 逆向工具