Chirag0096/ShiftLog-Gym
GitHub: Chirag0096/ShiftLog-Gym
一个面向 SRE 值班事件响应的强化学习环境,用于训练和评估 LLM 在因果依赖图驱动下的记忆管理策略。
Stars: 0 | Forks: 0
# ShiftLog-Gym
ShiftLog-Gym 是**一个特定领域的专业 RL 环境,用于具有因果事件依赖性和可验证结果奖励的内存管理**。
它训练并评估 LLM 在模拟的 SRE/值班事件响应过程中,是否学习到了有用的**内存策略**:
- 编写高信号的结构化交接班日志事实
- 在处理关联事件之前检索正确的内存
- 避免自相矛盾或重复的内存写入
- 通过机器可查的根本原因和缓解措施解决事件
本仓库针对 OpenEnv Hackathon 的工作流进行了优化:
- 符合 OpenEnv 规范的环境脚手架
- 使用 TRL/OpenEnv 的独立 Google Colab 训练笔记本
- 用于故障分析和叙事的可观测性产物
- README 语言与评判标准保持一致
## 定位
使用以下确切声明:
ShiftLog-Gym 是首个将可验证的 SRE 内存策略与因果依赖图相结合的 RL 环境。
**请勿**声称:
- 首个 RL 内存系统
- 首个内存基准测试
- 已解决持久内存问题
需要致谢的相关先前工作:
- Memory-R1: [huggingface.co/papers/2508.19828](https://huggingface.co/papers/2508.19828)
- AgeMem / Agentic Memory: [huggingface.co/papers/2601.01885](https://huggingface.co/papers/2601.01885)
- MemoryArena: [memoryarena.github.io](https://memoryarena.github.io/)
- OpenEnv 文档: [meta-pytorch.org/OpenEnv](https://meta-pytorch.org/OpenEnv/)
- TRL OpenEnv 集成: [huggingface.co/docs/trl/openenv](https://huggingface.co/docs/trl/openenv)
## 智能体的工作内容
每个回合都是一次模拟值班,涉及共享服务上的多个事件。智能体可以:
- `read_shift_log(query, limit)`
- `append_shift_log(entry_type, incident_id, service, fact, confidence)`
- `update_shift_log(memory_id, patch, reason)`
- `inspect_service(service)`
- `inspect_dependency(service)`
- `run_diagnostic(service, diagnostic)`
- `apply_mitigation(service, mitigation)`
- `resolve_incident(incident_id, resolution, root_cause)`
- `handoff_summary()`
环境是部分可观测的。当前的症状是可见的,但早期的根本原因事实只能通过结构化的交接班日志来恢复。
## 事件家族
V1 包含 4 个带有种子变体的场景家族:
1. 回滚后反复出现的 DB 连接池耗尽
2. 由陈旧路由或依赖饱和引起的 Auth 超时级联故障
3. 带有重复负载特征的内存 / OOM 回归
4. 带有延迟下游症状的特性开关或已弃用捆绑包回归
每个家族包含:
- 产生高价值内存的前兆事件
- 奖励在采取行动前进行检索的后续关联事件
- 机器可检查的正确根本原因和缓解措施
## 奖励设计
ShiftLog-Gym 采用稀疏优先的奖励设计,包含少量塑形组件:
- `R_success`:成功正确解决后的终止奖励
- `R_recall`:在采取行动前检索因果相关内存的奖励
- `R_memory_write`:存储高价值可重用内存的奖励
- `R_memory_integrity`:对自相矛盾、糟糕的 schema 写入和重复项的惩罚
- `R_efficiency`:微小的单工具调用成本,用于代理 MTTR
- `R_hallucination`:对捏造的缓解措施或无根据修复的惩罚
要展示的主要科学成果是:
学习到的内存策略提高了关联事件的解决率,同时减少了虚假操作。
## 本地开发
### 安装
```
pip install -e .
```
可选附加组件:
```
pip install -e .[train]
pip install -e .[observatory]
pip install -e .[openenv]
```
### 运行服务器
```
uvicorn shiftlog_gym.server.app:app --reload --port 7860
```
### 运行测试
```
python3 -m unittest discover -s tests -v
```
### 生成观测台产物
```
python3 scripts/export_observatory_artifacts.py
```
### 运行观测台
```
streamlit run observatory/app.py
```
## 仓库布局
```
shiftlog_gym/
client.py
simulator.py
scenarios.py
trl_env.py
server/
train/
01_env_smoke_test.ipynb
02_grpo_train_colab.ipynb
observatory/
app.py
tests/
scripts/
```
## 训练工作流
使用 `train/` 中的笔记本:
- `01_env_smoke_test.ipynb`
- 随机基线
- 脚本基线
- 可选的基于提示的基线
- 产物导出和首轮内存指标
- `02_grpo_train_colab.ipynb`
- `unsloth/Qwen2.5-3B-Instruct-bnb-4bit` 默认配置
- `Qwen2.5-1.5B-Instruct` 备选配置
- 可选的 Stage A 引导 SFT
- Stage B 短周期 GRPO
- Stage C 完整的当前环境 GRPO
- W&B 免费跟踪和本地产物导出
- `03_eval_publish_colab.ipynb`
- 基础模型与训练后 adapter 在保留变体上的对比
- 为 README/博客/模型卡生成图表
- 用于 adapter 和评估产物的 Hugging Face 上传流程
## 提交清单
- 在 Hugging Face Spaces 上托管环境
- 在本 README 中链接该 Space
- 包含以下内容的图表:
- 总奖励
- `R_recall`
- 行动前检索率
- 关联事件成功率
- 矛盾 / 错误写入率
- 包含短视频、博客文章或幻灯片
- 保持演示专注于一次清晰的内存策略成功案例
## 当前状态
本仓库包含:
- 模拟器核心
- OpenEnv 风格的服务器脚手架
- TRL 环境包装器
- 观测台产物管道
- 针对 schema 完整性、矛盾、因果奖励归因和内存依赖性的单元测试
它被有意设计为单智能体模式,并针对 48 小时的黑客松提交进行了优化。
标签:AIOps, DLL 劫持, Google Colab, IaC 扫描, IT运维, Kubernetes, LLM微调, On-call, OpenEnv, RL环境, Socks5代理, SRE, TRL, 偏差过滤, 因果推理, 大模型Agent, 大语言模型, 强化学习, 强化学习训练, 故障缓解, 根因分析, 站点可靠性工程, 自动化运维, 记忆策略, 记忆管理, 运维AI, 逆向工具, 部分可观测环境, 黑客松项目