PathikSingh/OpsGauntlet

GitHub: PathikSingh/OpsGauntlet

Ops Gauntlet 是一个基于 OpenEnv 的基准测试环境,用于评估 AI 代理在发布工程、事故响应和安全补救中的运维判断与决策能力。

Stars: 0 | Forks: 0

## title: Ops Gauntlet emoji: "🚀" sdk: docker app_port: 8000 pinned: false license: mit # Ops Gauntlet Ops Gauntlet 是一个兼容 OpenEnv 的基准测试,用于评估和演示代理在发布失败、生产事故、回滚决策、热修复工作流以及利益相关者沟通期间的行为。 该环境侧重于运维判断,而不仅仅是 API 调用顺序。代理需要诊断问题,选择安全的补救路径,验证恢复情况,并完成真实 ReleaseOps 环境中所需的后续工作。 ## 快速入门 ``` pip install -e .[dev] pytest -q openenv validate . python -m uvicorn server.app:app --host 127.0.0.1 --port 8000 ``` ``` from opsgauntlet import OpsGauntletEnv, OpsGauntletAction, ToolCallRequest env = OpsGauntletEnv(base_url="http://localhost:8000").sync() with env: result = env.reset(seed=7) print(result.observation.title) result = env.step( OpsGauntletAction( tool_call=ToolCallRequest( tool_name="inspect_service_metrics", parameters={}, reasoning="Check production health before choosing rollback or fix-forward.", ) ) ) print(result.reward, result.observation.last_tool_result.summary) ``` ## 为什么本项目很重要 现代代码代理越来越多地与部署系统、CI 流水线、可观测性仪表板、事故工具和面向客户的状态页面进行交互。它们失败的原因往往不是因为缺乏语法知识,而是因为它们: - 跳过诊断 - 选择不安全的补救措施 - 推广不健康的金丝雀 - 遗漏必要的沟通 - 在服务实际恢复之前关闭事故 Ops Gauntlet 旨在训练和评估这些高价值的运维行为。 ## ReleaseOps 功能 代理不是在解决一个通用的 API 排序谜题,而是在一个连贯的 ReleaseOps 环境中运作: - 在行动前检查可观测性数据 - 选择回滚还是修复推进 - 修复正确的故障原因 - 安全地重新运行 CI - 通过金丝雀进行部署 - 进行内部和外部沟通 - 干净地结束事故工作流 ## 场景系列 - `rollback-first incidents`:糟糕的发布应该被快速且安全地回滚 - `fix-forward hotfixes`:回滚是不够的;代理必须打补丁、测试、金丝雀发布并推广 - `public customer incidents`:服务恢复必须与工单系统和状态页面维护相结合 - `containment-first incidents`:代理若在补救之前暂停发布将获得奖励 - `verified recovery`:代理必须在结束闭环之前确认健康的可观测性数据 ## 专业功能 - 任务本地工具集,以便代理必须在现实的运维范围内进行推理 - 回滚和修复推进策略之间的分支结果 - 在深度补救之前暂停发布的遏制控制 - 在面向客户关闭之前的恢复验证 - 对不安全行为(如过早关闭事故)的惩罚 - 涵盖简单、中等和困难运维链的基准风格场景 ## 核心工具 - `inspect_release_status` - `inspect_service_metrics` - `inspect_ci_failure` - `pause_auto_rollout` - `create_incident_ticket` - `update_incident_ticket` - `create_hotfix_branch` - `apply_hotfix` - `trigger_ci` - `check_ci_status` - `deploy_canary` - `promote_canary` - `rollback_release` - `verify_recovery` - `notify_slack` - `update_status_page` - `schedule_postmortem` ## Action And Observation Spaces 类型化的动作空间是 `OpsGauntletAction`,它携带一个 `ToolCallRequest`: - `tool_name`:代理想要调用的运维工具 - `parameters`:该工具的结构化参数 - `reasoning`:对所选动作的简短解释 类型化的观察空间是 `OpsGauntletObservation`,它暴露: - 场景身份和简介(`task_id`、`title`、`difficulty`、`briefing`) - 可用的功能(`available_tools`、`tool_schemas`) - 实时系统状态(`service_snapshot`、`signal_snapshot`) - 最近的执行上下文(`timeline`、`completed_objectives`、`last_tool_result`) - 评分和回合控制(`reward`、`max_steps`、`metadata`、`done`) ## 本地使用 ``` python demo_runner.py public_payments_incident python demo_runner.py checkout_fix_forward_major python inference.py --scope all python inference.py --task-id rollback_alpha --runner submission python benchmark_report.py ``` ## 奖励理念 该环境不会奖励工具滥用或冗长的推理文本。它奖励的是: - 正确的诊断 - 安全的运维顺序 - 适当的补救策略 - 健康的最终服务状态 - 完整的事故处理规范 推广不健康金丝雀等不安全或过早的行为将受到惩罚。 ## 基准测试重点 该项目被设计为一个严肃的基准测试,而不是一个玩具工作流模拟器。它强调: - 长期决策制定 - 延迟的运维结果 - 分支补救策略 - 可复用的任务结构,用于代理训练和评估 ## Baseline Agent 第一轮不要求你训练模型来使环境有效。所需的工件是环境本身。 为了测试和演示,该仓库包含一个确定性的脚本化基准: ``` python inference.py --scope all python inference.py --task-id checkout_fix_forward_major ``` 该基准适用于: - 证明环境可以端到端解决 - 向评委展示预期的运维流程 - 为第一轮提供一个无 LLM 的演示路径 ## 基准测试报告 该仓库还包括一个基准评分报告系统: ``` python benchmark_report.py python benchmark_report.py --scope hard python benchmark_report.py --json python benchmark_report.py --csv-out benchmark.csv --md-out benchmark.md python benchmark_report.py --compare-random ``` 该报告包括: - 整体成功率 - 平均奖励 - 平均归一化分数 - 按难度分类的摘要 - 按任务分类的分数明细 - 可选的 CSV 导出 - 可选的 Markdown 导出 - 可选的脚本化与随机对比 归一化分数是根据每个任务的内部积分预算计算的,然后在开单位区间内进行限制,以便进行验证器安全的报告。 因此,暴露的环境 `reward` 和基准 `score` 避免了精确的下限和上限端点,而原始的塑形积分仍然可以通过观察元数据和基准报告字段获得,用于调试。 ## 提交合规说明 根目录下的 `inference.py` 是为提交清单设置的: - 必需的环境变量:`API_BASE_URL`、`MODEL_NAME`、`API_KEY` - 使用 `from_docker_image()` 时的可选环境变量:`LOCAL_IMAGE_NAME` - 仅提供 `API_BASE_URL` 和 `MODEL_NAME` 的默认值 - 任何 LLM 支持的路径都使用 `from openai import OpenAI` - 默认的 `--policy auto` 路径在注入 `API_KEY` 时使用组织者代理,否则回退到脚本化基准以进行本地验证 - stdout 被限制为结构化的 `[START]`、`[STEP]` 和 `[END]` 日志行 - `python inference.py` 运行本地进程内基准以进行可复现的验证,而 `--runner submission` 可以对部署的 Space 或 Docker 镜像路径进行冒烟测试 ## Demo Flow 为了自信地进行黑客马拉松演示,请演示一个回滚场景和一个修复推进场景: - 回滚演示:`public_payments_incident` - 修复推进演示:`checkout_fix_forward_major` 你可以直接运行脚本化演示: ``` python demo_runner.py public_payments_incident python demo_runner.py checkout_fix_forward_major ``` 使用观察时间线来解释: - 代理知道什么 - 为什么它选择遏制 / 回滚 / 打补丁 - 环境如何评分安全与不安全的行为 ## 开发说明 - 包名称:`openenv-opsgauntlet` - 运行时入口点:`server.app:app` - 测试套件:`tests/test_environment.py` - OpenEnv 配置:`openenv.yaml` ## License 本项目采用 MIT 许可证。详情请参阅 `LICENSE`。
标签:Docker, LLM Ops, OpenEnv, Ops Gauntlet, Python, Uvicorn, 利益相关者沟通, 发布工程, 回滚决策, 安全修复, 安全防御评估, 故障响应, 无后门, 智能体评估, 服务健康度, 测试集, 热修复, 生产环境, 系统可靠性, 自动化运维, 请求拦截, 软件开发生命周期, 运维判断, 逆向工具, 遥测检查, 金丝雀发布