Saransh2412/incident-response-rl
GitHub: Saransh2412/incident-response-rl
基于OpenEnv框架的强化学习环境,模拟生产系统事件响应工作流,用于训练和评测AI Agent的故障诊断与修复决策能力。
Stars: 0 | Forks: 0
title: Incident Response RL Environment
emoji: 🚨
colorFrom: red
colorTo: blue
sdk: docker
pinned: false
app_port: 7860
base_path: /web
tags:
- openenv
# 事件响应 RL 环境
该环境模拟真实的生产事件响应工作流。Agent 检查日志、指标和告警,诊断故障原因,采取纠正措施,并尝试恢复服务健康,同时避免情况恶化。
## 动机
事件响应是一项真实的运维任务,包含噪声信号、部分进展、延迟效应以及错误决策带来的严重惩罚。该环境旨在评估 Agent 在人类实际生产系统中执行的故障排查工作的可靠性。
## 动作空间
动作模型为 `IncidentAction`:
- `analyze_logs`
- `restart_service`
- `rollback_deployment`
- `scale_up`
- `ignore`
- `escalate`
可选的 `target` 用于服务级动作,在内置任务中默认为 `api`。
## 观察空间
观察模型为 `IncidentObservation`:
- `logs: list[str]`
- `metrics: dict[str, float]`
- `alerts: list[str]`
- `system_status: healthy | degraded | critical`
- `step_count: int`
- OpenEnv 字段:
- `done`
- `reward`
- `metadata`
观察元数据包括:
- `scenario_id`
- `difficulty`
- `incident_family`
- `task_score`
- `terminal_grade`
- 每步 `info`
## 任务
内置任务具有确定性,评分范围为 `0.0` 到 `1.0`:
- `high_latency_easy`
- 目标:检测容量饱和并扩容 API 服务。
- 预期路径:`scale_up`
- `service_crash_medium`
- 目标:在存在误导性信号的情况下恢复崩溃循环的 API。
- 预期路径:`restart_service`
- `bad_deployment_hard`
- 目标:解决具有级联症状和延迟恢复效果的错误部署。
- 预期路径:先 `rollback_deployment`,然后 `restart_service`
## 奖励与评分
轨迹期间使用稠密奖励塑造:
- `+0.2` 诊断改善
- `+0.3` 正确的补救措施
- `+0.3` 可衡量的系统改善
- `+0.5` 完全解决事件
- `-0.2` 错误或有害的操作
- `-0.1` 重复无效的操作
- `-0.3` 升级失败
确定性任务评分器独立于稠密奖励:
- `1.0` 完全恢复
- `0.5` 部分恢复
- `0.0` 失败
每步的部分任务进度通过 `metadata.task_score` 暴露。
## 设置
```
python -m venv .venv
. .venv/Scripts/activate
pip install -e .[dev,platform]
```
基线运行器所需的环境变量:
```
HF_TOKEN=...
API_BASE_URL=https://router.huggingface.co/v1
MODEL_NAME=openai/gpt-oss-20b
ENV_BASE_URL=http://127.0.0.1:7860
```
提交基线使用指向 `API_BASE_URL` 并通过 `HF_TOKEN` 进行认证的 OpenAI Python 客户端。
## 本地使用
运行测试:
```
python -m pytest
```
运行 OpenEnv 服务器:
```
python -m uvicorn server.app:app --host 0.0.0.0 --port 7860
```
验证环境:
```
openenv validate .
```
或在 Windows 上使用辅助脚本:
```
.\run.ps1 -Mode test
.\run.ps1 -Mode api
.\run.ps1 -Mode validate
```
对于本地基线运行,将 `ENV_BASE_URL` 指向本地服务器:
```
$env:HF_TOKEN="your_token"
$env:ENV_BASE_URL="http://127.0.0.1:7860"
.\.venv\Scripts\python inference.py
```
## 基线推理
提交推理脚本为根目录下的 [`inference.py`](/D:/RL/inference.py)。它使用 OpenAI Python 客户端,配置如下:
- `base_url=API_BASE_URL`
- `api_key=HF_TOKEN`
- `model=MODEL_NAME`
官方黑客松运行路径通过 Hugging Face 路由器加上部署好的 OpenEnv 环境。
对于部署好的 Hugging Face Space 运行:
```
$env:HF_TOKEN="your_token"
$env:ENV_BASE_URL="https://saransh24-incident-response-rl.hf.space"
.\.venv\Scripts\python inference.py
```
等效的 Shell 形式:
```
export HF_TOKEN=your_token
export ENV_BASE_URL=https://saransh24-incident-response-rl.hf.space
python inference.py
```
这会针对目标环境评估所有 3 个任务,并将可复现的报告写入 `artifacts/baseline_scores.json`。
脚本按以下顺序输出结构化的 stdout 日志:
- `[START]` 一次,包含 `task`、`env`、`model`
- `[STEP]` 每个环境步骤一次,包含 `step`、`action`、`reward`、`done`、`error`
- `action` 以纯文本动作字符串形式输出,例如 `scale_up api`
- `[END]` 一次,包含 `success`、`steps`、`score`、`rewards`
## 最新记录的基线分数
提交的 `artifacts/baseline_scores.json` 工件目前记录了 `openai/gpt-oss-20b` 在实时 HF 路由器上的运行结果:
- `average_score`: `1.0`
- `high_latency_easy`: 得分 `1.0`,最终评级 `1.0`,步数 `1`,总奖励 `1.3`,成功动作 `["scale_up"]`
- `service_crash_medium`: 得分 `1.0`,最终评级 `1.0`,步数 `1`,总奖励 `1.3`,成功动作 `["restart_service"]`
- `bad_deployment_hard`: 得分 `1.0`,最终评级 `1.0`,步数 `2`,总奖励 `2.1`,成功动作 `["rollback_deployment", "restart_service"]`
基线报告包括:
- `model_name`
- `router_base_url`
- `average_score`
- 每个任务的 `scenario_id`、`difficulty`、`score`、`terminal_grade`、`steps_taken`、`total_reward`、`successful_actions`
在最终提交之前,更改模型或 prompt 策略后,请重新运行 `python inference.py` 以更新这些数值。
## Docker
构建:
```
docker build -t incident-response-rl:latest .
```
运行:
```
docker run --rm -p 7860:7860 incident-response-rl:latest
```
然后验证正在运行的服务:
```
openenv validate --url http://127.0.0.1:7860
```
## Hugging Face Spaces 部署
首先登录:
```
huggingface-cli login
```
然后推送环境:
```
openenv push
```
该 Space 应为 Docker Space 并包含 `openenv` 标签。部署后,使用以下命令验证实时服务:
```
openenv validate --url https://.hf.space
```
标签:AIOps, Docker, OpenEnv, Petitpotam, Python, 人工智能, 决策支持, 大模型智能体, 安全防御评估, 实验平台, 强化学习, 故障排查, 无后门, 服务可靠性, 根因分析, 模拟环境, 用户模式Hook绕过, 系统恢复, 训练环境, 请求拦截, 运维, 运维自动化, 逆向工具