GhostRiderGaming/incident-response-env
GitHub: GhostRiderGaming/incident-response-env
这是一个符合OpenEnv标准的强化学习环境,旨在训练AI智能体模拟值班SRE,在模拟的微服务基础设施中诊断并修复生产中断。
Stars: 0 | Forks: 0
## title: Meta OpenEnv 事件响应
emoji: 🚨
colorFrom: red
colorTo: gray
sdk: docker
app_port: 8000
# 🚨 IncidentResponseEnv — 生产环境事件响应 RL 环境
一个符合 [OpenEnv](https://github.com/meta-pytorch/OpenEnv) 标准的强化学习环境,其中 AI 代理扮演 **值班站点可靠性工程师 (SREs)**,在模拟的微服务基础设施中诊断并修复生产环境中断。
## 为什么选择事件响应?
每家科技公司都实行值班轮换制度。工程师经常在凌晨 3 点被叫醒,以诊断跨越数十个微服务的级联故障。该环境训练 AI 代理:
- **按严重程度**(P0-P3)对警报进行分类(Triage)
- 通过追踪依赖链**诊断根本原因**
- 安全地、按正确的顺序**执行修复措施**
- **避免情况恶化**(错误的修复措施将受到严厉惩罚)
这填补了 RL/代理领域的一个空白——目前还没有用于训练事件响应代理的标准化环境。
## 模拟基础设施
```
┌──────────────────────────────────────────────┐
│ Production System (7 services) │
│ │
│ API Gateway ──→ Auth Service ──→ DB Service │
│ │ ↑ │
│ └──→ Order Service ──→ Payment Service │
│ │ │
│ ├──→ Notification Service │
│ └──→ Cache Service (Redis) │
└──────────────────────────────────────────────┘
```
每个服务都具有逼真的指标(CPU、内存、错误率、延迟),生成日志条目,并以逼真的方式发生故障(CPU 过载、内存泄漏、配置错误、磁盘已满、缓存损坏、网络分区)。
## 动作空间(10 个工具)
| 工具 | 参数 | 用途 |
|------|-----------|---------|
| `view_alerts` | `{}` | 查看所有活动警报 |
| `check_service_health` | `{"service_name": "..."}` | 检查 CPU、内存、延迟、错误率 |
| `view_service_logs` | `{"service_name": "...", "lines": 20}` | 读取最近的日志 |
| `check_service_metrics` | `{"service_name": "...", "metric": "cpu_percent"}` | 时间序列数据 |
| `view_dependency_map` | `{}` | 服务依赖图 |
| `classify_alert` | `{"alert_id": "...", "severity": "P0"}` | 对警报严重程度进行分类 |
| `identify_root_cause` | `{"service_name": "...", "failure_mode": "..."}` | 诊断根本原因 |
| `execute_remediation` | `{"service_name": "...", "action": "restart_service"}` | 修复问题 |
| `check_resolution` | `{}` | 检查进度 |
| `submit_assessment` | `{}` | 结合 episode,获取最终得分 |
## 观察空间
每个观察包括:
- `tool_result`:最后一次工具调用的结果(因工具而异)
- `tool_name`:被调用的工具名称
- `error`:如果动作无效时的错误消息
- `progress`:已分类的警报、已发现的根本原因、已执行的修复措施
- `available_tools`:所有可用工具的列表
- `task_info`:当前任务名称、难度、最大步数
## 任务(3 个难度级别)
### 任务 1:警报分类
- **场景**:数据库 CPU 过载 → 5 个警报
- **目标**:按严重程度(P0-P3)对每个警报进行分类
- **最大步数**:20
- **评分**:分类准确率
### 任务 2:根因分析
- **场景**:由磁盘耗尽引起的级联故障 → 8 个警报,6 个服务受影响
- **目标**:对警报进行分类 并确定根因服务 + 故障模式
- **最大步数**:30
- **评分**:30% 分类 + 40% 根因 + 30% 受影响服务
### 任务 3:完整事件响应
- **场景**:双重根因(缓存内存泄漏 + 支付配置错误)→ 12 个警报
- **目标**:对警报进行分类、诊断两个根本原因、按正确顺序执行修复措施
- **最大步数**:45
- **评分**:25% 分类 + 25% 根因 + 25% 修复措施 + 25% 顺序
## 奖励函数
奖励是**增量式**的(非稀疏),为每个动作提供反馈:
| 动作 | 奖励 |
|--------|--------|
| 正确的警报分类 | +1.0 |
| 错误的警报分类 | -0.3 |
| 正确的根因 | +3.0 |
| 错误的根因 | -1.0 |
| 正确的修复措施 | +2.0 |
| 正确的修复顺序 | +1.0 额外奖励 |
| 错误的修复措施 | -1.5 |
| 无效动作 | -0.5 |
| 每步成本 | -0.01 |
| 终端奖励 | +5.0 × final_score |
## 设置说明
### 前置条件
- Python 3.10-3.12
- Docker(用于容器化部署)
- `openenv-core` 包
### 本地开发
```
# Clone 并 cd
cd incident_response_env
# Install dependencies
pip install -e .
# 运行 server
uvicorn server.app:app --host 0.0.0.0 --port 8000
# 打开 web interface
# ENABLE_WEB_INTERFACE=true uvicorn server.app:app --host 0.0.0.0 --port 8000
# 访问 http://localhost:8000/web
```
### Docker
```
docker build -t incident-response-env .
docker run -p 8000:8000 incident-response-env
```
### 验证
```
openenv validate .
openenv validate --url http://localhost:8000
```
### 运行推理
```
export HF_TOKEN=your_token
export API_BASE_URL=https://router.huggingface.co/v1
export MODEL_NAME=Qwen/Qwen2.5-72B-Instruct
python inference.py
```
## 基线性能
| 任务 | 难度 | 基线得分 | 步数 |
|------|-----------|---------------|-------|
| 警报分类 | Easy | ~0.60-0.80 | 12-18 |
| 根因分析 | Medium | ~0.40-0.60 | 20-28 |
| 完整事件响应 | Hard | ~0.20-0.40 | 30-45 |
*基线得分使用 Qwen2.5-72B-Instruct 测量*
## 技术细节
- **框架**:OpenEnv (openenv-core 0.2.3)
- **服务器**:FastAPI + Uvicorn
- **模型**:Pydantic v2 用于类型安全的 action/observation
- **评分**:完全确定性的、可复现的
- **许可证**:BSD-3-Clause
标签:AIOps, Docker, NIDS, OpenEnv, RL环境, SRE, 事件管理, 人工智能, 偏差过滤, 告警分级, 基础设施模拟, 安全防御评估, 容器化, 强化学习, 性能监控, 故障响应, 智能运维, 根因分析, 环境仿真, 生产环境, 用户模式Hook绕过, 站点可靠性工程, 系统诊断, 自动修复, 请求拦截, 运维, 逆向工具, 靶机