Ziyan909/SRE-Incident-Openenv
GitHub: Ziyan909/SRE-Incident-Openenv
一个与OpenEnv兼容的SRE故障响应模拟器,提供确定性评分和可重放场景,用于训练、评估和基准测试人类与AI智能体的运维故障处理能力。
Stars: 0 | Forks: 0
title: SRE 故障环境
emoji: "🔧"
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 8000
pinned: false
license: mit
tags:
- openenv
- fastapi
- simulation
- sre
- benchmarking
# SRE 故障环境
一个与 OpenEnv 兼容的模拟环境,用于 SRE 故障响应、基准测试和智能体评估。
本项目对具有部分可观测性、依赖级联、确定性评分、重放导出以及基于浏览器的人机协同工作流的真实生产环境故障进行建模。它专为以下目的而设计:
- 训练和评估自主智能体
- 对运维任务上的提供商/模型行为进行基准测试
- 在安全的环境中演练故障响应工作流
- 并排比较人类和 AI 的故障处理能力
## 亮点
- 带有类型化 `Observation`、`Action` 和 `Reward` 模型的确定性故障模拟器
- 多步骤运维工作流:分流、调查、缓解、验证、诊断
- 三个难度级别:`easy`、`medium`、`hard`
- 支持人机协同的浏览器控制台,带有独立的 `Tasks`、`Session`、`Runtime` 和 `AI Control` 视图
- 重放持久化、基准测试历史记录和会话比较
- 针对 OpenAI 兼容运行时的脚本化与提供商驱动的基线
- 通过 API 和环境测试覆盖率实现强大的本地验证
## 为什么会有这个项目
大多数智能体评估主要集中在静态问答或狭窄的工具使用上。真实的运维工作则不同:响应人员必须调查不完整的证据,避开误导信息,选择安全的缓解措施,验证恢复情况,并清晰地解释根本原因。
本环境将这些行为转化为人类和 AI 系统均可使用的可重复基准测试平台。
## 演示界面
前端提供四个专用视图:
- `Tasks`:浏览分层场景并选择带种子的故障变体
- `Session`:检查实时服务状态、读取遥测数据并执行操作员动作
- `Runtime`:运行内置基线、检查重放并比较基准测试输出
- `AI Control`:直接在浏览器中配置提供商、模型、API key 和 base URL,用于 AI 驱动的运行
## 核心能力
### 故障模型
- 带有依赖关系的真实服务拓扑
- 必须被发现的隐藏版本和依赖关系
- 变更事件、发布线索、配置漂移、traces 和 runbook 提示
- 确定性评分和可解性规则
### 动作平面
- `read_logs(service, lines)`
- `check_metrics(service, window_seconds)`
- `ping_service(service)`
- `inspect_deploy(service)`
- `query_traces(service)`
- `check_runbook(service)`
- `diff_config(service)`
- `drain_traffic(service)`
- `failover_region(service)`
- `restart_service(service)`
- `rollback_deploy(service, target_version)`
- `scale_up(service, replicas)`
- `check_dependencies(service)`
- `submit_diagnosis(root_cause_service, root_cause_category, fix_description)`
### 难度级别
- `easy`:具有较低模糊性的单根因故障
- `medium`:包含依赖级联和更多误导性症状
- `hard`:包含并发故障、误导信息以及更严格的恢复验证
## 仓库结构
```
.
├── api/ # FastAPI endpoints and runtime orchestration
├── env/ # simulator core, scenarios, services, baseline runner
├── frontend/ # browser UI
├── graders/ # deterministic grading helpers
├── scripts/ # regression and submission checks
├── server/ # app entrypoint
└── tests/ # API and environment tests
```
## 架构
### 主要组件
- `env/`
模拟引擎、故障目录、服务状态建模、评分、带种子的变体以及基线执行逻辑。
- `api/`
FastAPI 层,暴露环境重置/步进/状态以及重放、基准测试和 AI 运行时端点。
- `frontend/`
基于浏览器的命令控制台,用于人类会话、遥测检查、重放查看和 AI 提供商控制。
- `tests/`
覆盖环境和 API 层的契约和行为测试。
### 运行时模型
环境暴露一个结构化的循环:
1. `reset`
2. 观察当前状态
3. 使用动作进行 `step`
4. 接收更新后的观察和奖励
5. 验证恢复情况
6. 提交诊断
## 支持的服务
- `api-gateway`
- `auth-service`
- `user-service`
- `payment-service`
- `db-postgres`
- `cache-redis`
## 快速入门
### 环境要求
- Python `3.12+`
- `pip`
### 本地设置
```
cd /home/ziyan01/VScode
python -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
```
### 运行应用
```
cd /home/ziyan01/VScode
.venv/bin/python -m uvicorn api.server:app --host 0.0.0.0 --port 8000
```
打开:
```
http://127.0.0.1:8000
```
### 运行基线 CLI
```
cd /home/ziyan01/VScode
.venv/bin/python baseline.py
```
## 前端使用
### 人类工作流
1. 打开 `Tasks` 标签页并选择一个场景
2. 切换到 `Session`
3. 启动一个带种子的会话
4. 调查 logs、metrics、dependencies、traces 和 deploy 状态
5. 应用补救措施并验证恢复情况
6. 提交诊断并检查结果
### AI 工作流
1. 打开 `AI Control`
2. 选择一个提供商
3. 输入模型和可选的运行时凭证
4. 运行:
- 针对所选任务运行 AI 基线
- 跨场景的完整基准测试
- 针对当前会话的 AI 与人类对比
## 配置
### 基线提供商
本项目支持:
- `scripted`
- `openai`
- `gemini`
- `openrouter`
- `groq`
- `cerebras`
- 兼容 OpenAI 的自定义提供商
对于前端,提供商设置可以从 `AI Control` 页面逐次请求传递。对于 CLI 使用,支持标准环境变量。
### 环境变量
| Variable | Required | Description |
| --- | --- | --- |
| `BASELINE_PROVIDER` | 否 | 默认提供商覆盖。 |
| `BASELINE_MODEL` | 否 | 用于 CLI 驱动运行的全局模型覆盖。 |
| `OPENAI_API_KEY` | 仅 OpenAI | OpenAI API key。 |
| `OPENAI_BASELINE_MODEL` | 仅 OpenAI | OpenAI 模型名称。 |
| `GEMINI_API_KEY` | 仅 Gemini | Gemini API key。 |
| `GEMINI_BASELINE_MODEL` | 仅 Gemini | Gemini 模型名称。 |
| `GEMINI_BASE_URL` | 否 | 可选的兼容 Gemini 的 base URL 覆盖。 |
| `OPENROUTER_API_KEY` | 仅 OpenRouter | OpenRouter API key。 |
| `OPENROUTER_BASELINE_MODEL` | 仅 OpenRouter | OpenRouter 模型名称。 |
| `OPENROUTER_BASE_URL` | 否 | 可选的 OpenRouter base URL 覆盖。 |
| `GROQ_API_KEY` | 仅 Groq | Groq API key。 |
| `GROQ_BASELINE_MODEL` | 仅 Groq | Groq 模型名称。 |
| `GROQ_BASE_URL` | 否 | 可选的 Groq base URL 覆盖。 |
| `CEREBRAS_API_KEY` | 仅 Cerebras | Cerebras API key。 |
| `CEREBRAS_BASELINE_MODEL` | 仅 Cerebras | Cerebras 模型名称。 |
| `_API_KEY` | 自定义提供商 | 自定义提供商的 API key。 |
| `_BASELINE_MODEL` | 自定义提供商 | 自定义提供商的模型名称。 |
| `_BASE_URL` | 否 | 自定义提供商的可选 base URL。 |
| `SESSION_TTL_SECONDS` | 否 | 内存 API 状态的会话过期窗口。 |
| `MAX_ACTIVE_SESSIONS` | 否 | 内存中最大活动会话数。 |
## API 概述
### 核心环境端点
- `POST /reset`
- `POST /step`
- `GET /state/{session_id}`
- `GET /tasks`
- `POST /grader`
### OpenEnv 别名
- `POST /openenv/reset`
- `POST /openenv/step`
- `GET /openenv/state/{session_id}`
- `GET /openenv/tasks`
- `POST /openenv/grader`
- `GET /openenv/baseline`
### 基准测试与重放
- `GET /baseline`
- `GET /benchmark`
- `GET /benchmark/history`
- `GET /benchmark/history/{benchmark_id}`
- `GET /replay/{session_id}`
- `GET /sessions`
- `GET /compare/{session_id}`
### 前端 AI 运行时端点
- `POST /runtime/baseline`
- `POST /runtime/benchmark`
- `POST /runtime/compare`
OpenEnv 元数据定义在 [`openenv.yaml`](./openenv.yaml) 中。
## 开发
### 运行测试
```
cd /home/ziyan01/VScode
.venv/bin/python -m unittest discover -s tests -v
```
### 运行验证脚本
```
cd /home/ziyan01/VScode
.venv/bin/python scripts/submission_check.py
.venv/bin/python scripts/benchmark_regression_check.py
```
### 包元数据
Python 包的元数据位于 [`pyproject.toml`](./pyproject.toml) 中。主要的脚本入口点是:
```
server = "server.app:main"
```
## 评估语义
本环境评估的内容远不止最终诊断的正确性。高质量的运行应当:
- 在采取补救措施之前进行调查
- 识别出真正的根服务,而不仅仅是表象问题
- 使用可接受或正确的缓解/修复动作
- 显式地验证恢复情况
- 提交包含有意义的修复描述的正确诊断
这使得该基准测试不仅可以用于分析最终状态的正确性,还能有效分析运维决策的质量。
## 安全说明
- 不要提交 API key 或 `.env` 文件
- 优先使用浏览器中请求范围的凭证或本地环境变量
- 将重放和基准测试产物视为生成的输出
- 本项目是一个模拟器,而不是生产控制平面
## 局限性
- 为了保证确定性和可重复性,故障的真实性被有意识地限制了
- 提供商驱动的基线依赖于外部模型的质量和配额可用性
- 脚本化的基线是有用的参考,但不应被视为最佳的人类操作手册
- 本环境专为评估和训练而设计,而非用于生产自动化
## 部署说明
对于 Hugging Face Spaces:
- 仓库在本 README 的顶部包含前置元数据
- 应用程序从 `/` 提供浏览器 UI 服务
- 默认的应用程序端口为 `8000`
对于 GitHub:
- 本 README 旨在同时作为项目主页和开发者快速入门指南
- 截图、演示 GIF 或基准测试快照可以在不重构文档的情况下稍后添加
## 许可证
MIT。详见 [`LICENSE`](./LICENSE)。
标签:AIOps, AI智能体, AV绕过, Docker, FastAPI, IT运维, MIT协议, OpenEnv, Socks5代理, SRE, 事件响应模拟, 偏差过滤, 前端控制台, 告警分流, 因果分析, 复盘回放, 大模型评估, 安全生产, 安全防御评估, 实时处理, 密码管理, 故障响应, 无线安全, 根因分析, 混沌工程, 确定性模拟, 站点可靠性工程, 自主智能体, 自动化运维, 请求拦截, 逆向工具