研究提案

Engineering World:工程开发 RL Environment 构建蓝图

基于 MCP 协议的工程全链路 RL 训练环境设计——覆盖代码管理、k8s 运维、监控告警、数据库、Wiki、即时通信六大子系统,40 个分级任务,三层 Reward 架构

RL Environment Agent Training MCP Engineering DevOps

总体判断

资源覆盖了工程开发的六个核心子系统,每个子系统对应 RL 环境的一个 MCP Server,组合起来就是一个完整的 Engineering World。这比只做 SWE-bench 式的代码修复要有意义得多——它模拟的是工程师日常工作的全链路,而不是某个孤立的编码任务。

分两期构建:一期用开源方案快速搭出可跑的 MVP,二期接入企业微信/k8s/Prometheus 等需要权限的系统。


一、环境架构

1.1 整体拓扑

┌─────────────────────────────────────────────────────────┐
│                  Engineering World                        │
│                                                          │
│   ┌──────────────────────────────────────────────────┐   │
│   │              MCP Gateway (路由层)                  │   │
│   └────┬──────┬──────┬──────┬──────┬──────┬─────────┘   │
│        │      │      │      │      │      │              │
│    ┌───┴──┐┌──┴──┐┌──┴──┐┌──┴──┐┌──┴──┐┌──┴───┐        │
│    │IM/CMS││Code ││FS+DB││Wiki ││ K8s ││Monitor│        │
│    │Server││Mgmt ││     ││     ││     ││       │        │
│    └──────┘└─────┘└─────┘└─────┘└─────┘└───────┘        │
│                                                          │
│   ┌──────────────────────────────────────────────────┐   │
│   │           Docker 沙箱 (每个 episode 一个)          │   │
│   │   文件系统快照 + Git 仓库 + 数据库 + 应用进程       │   │
│   └──────────────────────────────────────────────────┘   │
│                                                          │
│   ┌──────────────────────────────────────────────────┐   │
│   │           Verifier (评分层)                        │   │
│   │   快照对比 + 测试用例 + 状态断言 + LLM Judge        │   │
│   └──────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘

1.2 资源映射表

资源负责人环境角色MCP Server 实现方式优先级
企业微信bertguanIM 通信 + 审批 + 通知封装企微 Open API → MCP ServerP1
k8stimhyzhang部署 + 扩缩容 + 故障注入封装 kubectl API → MCP ServerP1
Prometheus/Grafanaxiaochencai监控告警 + 指标查询封装 PromQL API → MCP ServerP1
GitHub/GitLabyuanjuncai代码仓库 + PR + CI/CD封装 GitLab API → MCP Server(开源直接用)P0
文件系统 + DBhirojiang数据存储 + 查询 + 迁移文件系统直接挂载 + DB MCP(PostgreSQL/MySQL)P0
Wikidingxin知识库 + 文档 + 搜索iwiki OpenAPI 封装 / Notion MCP(官方已有)P1
IM/CMS (开源)timhyzhang替代企微的开源通信层Mattermost/Rocket.Chat API → MCPP2

1.3 开源替代方案(用于快速 MVP)

内部系统开源替代说明
企业微信Mattermost / Rocket.ChatREST API 完善,可自部署,已有社区 MCP
GitLab 内网GitLab CE (Docker)一行命令起,API 与内网版一致
iwikiNotion (API) / Outline (开源)Notion 已有官方 MCP;Outline 自部署 + API
k8skind / k3s本地轻量 k8s,够用于 RL 场景
Prometheus/Grafana直接用(本身开源)Docker Compose 一键部署
TDSQLPostgreSQL最通用,MCP 生态最成熟

二、六个 MCP Server 详细设计

2.1 Code Management Server(代码管理)

负责人:yuanjuncai

工具集(Tools):
├── repo_clone          # 克隆仓库
├── repo_list_files     # 列出文件树
├── file_read           # 读取文件内容
├── file_write          # 写入/修改文件
├── git_diff            # 查看变更差异
├── git_commit          # 提交变更
├── git_create_branch   # 创建分支
├── pr_create           # 创建 Pull Request
├── pr_review           # 查看 Review 评论
├── pr_merge            # 合并 PR
├── ci_status           # 查询 CI 流水线状态
├── ci_trigger          # 触发 CI 构建
└── ci_logs             # 获取 CI 构建日志

实现:GitLab CE API 封装,每个 episode 创建临时 project。

2.2 Infrastructure Server(基础设施 / k8s)

负责人:timhyzhang

工具集(Tools):
├── k8s_get_pods         # 获取 Pod 列表和状态
├── k8s_get_deployments  # 获取 Deployment 列表
├── k8s_get_services     # 获取 Service 列表
├── k8s_apply            # 应用 YAML 配置
├── k8s_delete           # 删除资源
├── k8s_scale            # 扩缩容
├── k8s_logs             # 获取 Pod 日志
├── k8s_exec             # 在 Pod 内执行命令
├── k8s_describe         # 详细描述资源
├── k8s_get_events       # 获取集群事件
├── k8s_port_forward     # 端口转发
└── k8s_rollout_status   # 查看发布状态

实现:kind/k3s 本地集群 + kubectl Python client 封装。

2.3 Monitoring Server(监控告警)

负责人:xiaochencai

工具集(Tools):
├── prom_query           # 即时查询(PromQL)
├── prom_query_range     # 范围查询(时间序列)
├── prom_alerts          # 获取当前告警
├── prom_targets         # 获取监控目标
├── grafana_dashboards   # 列出仪表盘
├── grafana_snapshot     # 获取仪表盘截图/数据
└── alert_acknowledge    # 确认告警

实现:Prometheus + Grafana Docker 部署,注入模拟指标。

2.4 Storage Server(文件系统 + 数据库)

负责人:hirojiang

工具集(Tools):
├── fs_list              # 列目录
├── fs_read              # 读文件
├── fs_write             # 写文件
├── fs_mkdir             # 创建目录
├── fs_delete            # 删除
├── fs_search            # 文件搜索(by name/content)
├── db_query             # 执行 SQL 查询
├── db_execute           # 执行 SQL 修改
├── db_schema            # 获取表结构
├── db_tables            # 列出所有表
└── db_explain           # 查询执行计划

实现:沙箱内挂载文件系统 + PostgreSQL Docker 实例。

2.5 Wiki / Knowledge Server(知识库)

负责人:dingxin

工具集(Tools):
├── wiki_search          # 全文搜索
├── wiki_get_page        # 获取页面内容
├── wiki_create_page     # 创建页面
├── wiki_update_page     # 更新页面
├── wiki_list_children   # 列出子页面
├── wiki_get_comments    # 获取评论
└── wiki_add_comment     # 添加评论

实现:Outline(开源 Wiki)Docker 部署,预灌内部文档模拟数据。或直接用 Notion API + MCP。

2.6 Communication Server(即时通信)

负责人:bertguan

工具集(Tools):
├── im_send_message      # 发送消息(指定频道/人)
├── im_read_messages     # 读取消息历史
├── im_create_channel    # 创建频道
├── im_list_channels     # 列出频道
├── im_search            # 搜索消息
├── im_reply_thread      # 回复消息线程
├── im_upload_file       # 上传文件
└── im_get_user_info     # 获取用户信息

实现:Mattermost Docker 部署,预创建模拟团队和历史消息。


三、Task 设计(40 个任务,4 个难度等级)

3.1 难度分级标准

等级描述涉及子系统数预期步骤对标
L1单工具操作13-5 步入门级
L2跨 2 系统协作25-15 步SWE-bench Easy
L3多系统联动 + 推理3-415-30 步SWE-bench Medium
L4全链路工程任务4-630-60 步APEX-Agents Hard

3.2 Category A:代码开发任务(10 个)

ID难度描述涉及子系统Reward 信号
code-001L1修复一个函数的 bug(有测试用例)Code测试通过
code-002L1给现有函数添加参数校验和错误处理Code测试通过 + 静态分析
code-003L2根据 Wiki 上的 API 文档,实现一个新的 REST 接口Code + Wiki集成测试通过
code-004L2阅读 PR Review 评论,修改代码并回复Code + IMReview 通过 + 回复质量
code-005L3分析 CI 失败日志,定位问题并修复Code + MonitoringCI 绿 + 根因准确
code-006L3重构一个模块:拆文件 + 更新引用 + 保持测试通过Code + FS测试通过 + 代码质量评分
code-007L3数据库 migration:添加新表 + 更新 ORM + 写迁移脚本Code + DB迁移成功 + schema 正确
code-008L4从需求文档到 PR 合并的完整开发流程Code + Wiki + IM端到端功能验证
code-009L4修复生产环境告警:查日志→定位→修复→部署→验证Code + Monitoring + k8s告警消除 + 回归测试
code-010L4基于设计文档实现微服务,含 API + DB + 测试 + 部署配置全部集成测试 + 部署验证

3.3 Category B:运维部署任务(10 个)

ID难度描述涉及子系统Reward 信号
ops-001L1查看 Pod 状态,找到 CrashLoopBackOff 的 Podk8s正确识别
ops-002L1读取 Prometheus 指标,判断 CPU 使用率最高的服务Monitoring答案正确
ops-003L2扩容服务到指定副本数,验证扩容成功k8s + MonitoringPod Ready + 指标正常
ops-004L2分析 Grafana 仪表盘,发现异常服务并通知团队Monitoring + IM正确定位 + 通知发出
ops-005L3数据库慢查询排查:找到慢 SQL → 优化 → 验证DB + Monitoring查询时间降低
ops-006L3服务发布:更新镜像版本 → 灰度发布 → 监控验证k8s + Code + Monitoring新版本运行 + 无告警
ops-007L3磁盘空间告警处理:定位大文件 → 清理/归档 → 确认恢复k8s + FS + Monitoring磁盘使用率恢复
ops-008L4完整的事故响应:告警→排查→修复→复盘→文档全部服务恢复 + 复盘文档
ops-009L4跨服务链路排查:A→B→C 调用链中定位故障节点k8s + Monitoring + Code根因定位准确
ops-010L4容量规划:基于历史指标预测资源需求,输出扩容方案Monitoring + k8s + Wiki方案合理性评分

3.4 Category C:协作沟通任务(10 个)

ID难度描述涉及子系统Reward 信号
comm-001L1搜索 Wiki 找到某个 API 的调用方式Wiki答案正确
comm-002L1在 IM 中搜索历史消息找到某次讨论的结论IM内容匹配
comm-003L2整理 IM 讨论+会议纪要,输出 Action Items 文档IM + Wiki完整性 + 准确性
comm-004L2根据 Code Review 评论汇总,撰写技术改进提案Code + Wiki提案质量评分
comm-005L3调研 Wiki 上多篇文档,输出技术选型对比报告Wiki + IM覆盖度 + 分析深度
comm-006L3从告警日志+代码变更+IM 记录,还原事故时间线Monitoring + Code + IM时间线准确性
comm-007L3新员工 onboarding:根据 Wiki 文档配置开发环境Wiki + Code + k8s环境可用
comm-008L4跨团队需求评审:收集需求→整理→安排会议→输出结论IM + Wiki + Code流程完整性
comm-009L4技术方案设计:调研→对比→写文档→发起 Review→迭代Wiki + Code + IM方案质量 + 迭代次数
comm-010L4Sprint 回顾:收集完成项+metrics+问题,输出改进计划全部报告完整性

3.5 Category D:数据与安全任务(10 个)

ID难度描述涉及子系统Reward 信号
data-001L1执行 SQL 查询获取指定数据DB结果正确
data-002L1导出数据库表为 CSV 并上传到指定目录DB + FS文件正确
data-003L2根据需求设计新表的 schema 并创建DB + Wikischema 合理性
data-004L2数据清洗:找到异常记录并修复/标记DB + Code数据质量提升
data-005L3写数据迁移脚本:旧表→新表,保证数据完整性DB + Code + FS数据一致性
data-006L3分析数据库性能:慢查询 → 加索引 → 验证效果DB + Monitoring查询性能提升
data-007L3从日志中提取指标,写入数据库并创建 Grafana DashboardFS + DB + MonitoringDashboard 可用
data-008L4数据管道搭建:采集→清洗→存储→可视化全部端到端验证
data-009L4安全审计:检查代码中的敏感信息泄露 + 修复Code + DB + FS扫描通过
data-010L4数据恢复演练:模拟数据丢失 → 备份恢复 → 验证DB + k8s + IM数据完整恢复

四、Reward 设计

4.1 三层 Reward 架构

Layer 1: Outcome Reward(结果奖励,主信号)
├── 二值判断:测试通过?部署成功?告警消除?
├── 快照对比:episode 前后的文件系统 / DB / k8s 状态差异
└── 程序化验证:SQL 结果匹配、API 响应校验

Layer 2: Quality Reward(质量奖励,辅助信号)
├── 代码质量:lint score / 复杂度 / 测试覆盖率
├── 文档质量:LLM Judge 评分
└── 通信质量:消息的准确性和专业度

Layer 3: Efficiency Reward(效率奖励,衰减项)
├── 步数惩罚:鼓励用更少步骤完成
├── 工具滥用惩罚:重复调用同一工具
└── 回退惩罚:反复修改同一文件

4.2 Reward 函数

def compute_reward(episode):
    # Layer 1: 结果 (权重 0.6)
    outcome = verify_outcome(episode.final_state, episode.task.expected_state)
    
    # Layer 2: 质量 (权重 0.3)
    quality = (
        code_quality_score(episode) * 0.4 +
        doc_quality_score(episode) * 0.3 +
        comm_quality_score(episode) * 0.3
    )
    
    # Layer 3: 效率 (权重 0.1)
    step_penalty = max(0, 1 - episode.steps / episode.task.max_steps)
    
    reward = 0.6 * outcome + 0.3 * quality + 0.1 * step_penalty
    return reward

五、故障注入机制

RL 环境的核心优势是可以程序化注入故障,让 Agent 在可控的混乱中学习。

故障类型注入方式训练目标
代码 Bug向 codebase 注入已知 bug调试能力
CI 失败修改 CI 配置或依赖版本CI/CD 排查能力
Pod CrashKill 容器 / OOM / 配置错误k8s 故障排查
数据库异常慢查询 / 锁 / 磁盘满 / 数据损坏DBA 能力
监控告警注入异常指标到 Prometheus告警响应能力
信息缺失Wiki 文档不完整 / IM 消息模糊信息搜集能力
权限不足部分操作返回 403权限申请流程认知
环境漂移运行中修改环境配置适应性

六、实施路线

Phase 1:MVP(2 周)

目标:在单机 Docker Compose 上跑通 L1-L2 任务

# docker-compose.yml 核心服务
services:
  gitlab:        # GitLab CE
  postgres:      # PostgreSQL 15
  mattermost:    # IM
  outline:       # Wiki
  prometheus:    # 监控
  grafana:       # 可视化
  kind-cluster:  # k8s (kind-in-docker)
  mcp-gateway:   # MCP 路由
  sandbox:       # Agent 执行沙箱

交付物:

  • 6 个 MCP Server 的基础版本
  • 10 个 L1-L2 任务 + verifier
  • 单个 episode 的录制和回放

Phase 2:规模化(4 周)

目标:支持 L3-L4 任务 + 并行 rollout

  • 完整 40 个任务
  • 故障注入系统
  • Verifier 全部自动化
  • 并行 rollout:Kubernetes 调度 N 个独立沙箱
  • 轨迹数据格式标准化

Phase 3:训练接入(4 周)

目标:接入 RL 训练框架

  • 对接 verl / ROLL / AReaL 训练框架
  • Reward 函数调优
  • 轨迹质量分析工具
  • 接入内部系统(企微、k8s 集群等)

七、关键设计决策

7.1 为什么用 MCP 而不是直接操作?

维度直接操作(bash/API)MCP 协议
操作记录需额外 hook协议层自动记录
权限控制需自己实现MCP Server 内置
工具替换改代码换 Server,协议不变
多模型兼容每个模型适配统一 MCP 接口
评分集成需额外采集直接从 tool_call 日志分析

7.2 与 APEX-Agents / SWE-bench 的差异

维度SWE-benchAPEX-AgentsEngineering World
领域代码修复投行/咨询/法律工程全链路
工具Git + Shell9 类办公工具6 类工程系统
环境Git Repo文件系统 + MCPk8s + 监控 + DB + IM + Wiki + Git
真实度GitHub Issue专业工作任务企业内部工作流
可训练性广泛用于 RL偏评测原生为 RL 设计

7.3 Episode 生命周期

1. 环境初始化
   ├── 从模板创建 Docker 沙箱
   ├── 加载 World 快照(文件/DB/k8s 状态)
   ├── 注入故障(如果有)
   └── 启动 MCP Server

2. Agent 交互(rollout)
   ├── Agent 接收 Task prompt
   ├── Agent ↔ MCP Gateway 多轮交互
   ├── 完整记录 tool_call 序列
   └── 超时或 Agent 提交结束

3. 评分
   ├── 快照对比(当前 vs 期望)
   ├── 程序化验证(测试/断言)
   ├── LLM Judge(文档/沟通质量)
   └── 效率计算

4. 清理
   ├── 保存轨迹数据
   ├── 销毁沙箱
   └── 返回 reward

八、成本估算

项目规格月成本估算
GPU 服务器(训练)4×A100 80G~¥80k/月
沙箱集群32 核 128G × 4 台~¥20k/月
存储(轨迹数据)2TB SSD~¥2k/月
开源软件许可全部 MIT/Apache¥0

MVP 阶段单台 64G 内存的开发机即可跑通。


附录 A:首批 50 Task 详细设计

目标:基于 Engineering World 的 6 个 MCP Server,设计 50 个可直接实现的 Task,含详细的环境配置、输入、验证器和 Golden Response 生成方法。
与正文第三节的关系:正文 40 个 Task 是方向级概要,本附录是可执行级详设——对正文 Task 做细化拆解和扩充。

A.1 总览

MCP Server 使用频次

MCP Server简称被引用次数说明
Code ManagementCode28核心,几乎所有开发类任务
Storage (FS+DB)Storage24文件操作 + 数据库,基础设施
Infrastructure (k8s)Infra18运维部署类核心
MonitoringMonitor16告警、指标、排查类
Communication (IM)IM12协作沟通、通知
Wiki/KnowledgeWiki11文档检索、知识管理

难度分布

难度数量Agent 步数涉及子系统
L1123-8 步1 个
L2168-20 步2 个
L31415-35 步3-4 个
L4830-60 步4-6 个

分类分布

分类数量对应正文
A:代码开发14Category A(扩充 4 个)
B:运维部署12Category B(扩充 2 个)
C:协作沟通10Category C(持平)
D:数据工程8Category D 的数据部分
E:安全与质量6Category D 的安全部分(独立出来)

A.2 50 Task 总览表

Category A:代码开发(14 个)

#Task ID难度任务描述MCP Server验证方式设计方法
1code-001L1修复单个函数 Bug(有失败的测试用例指引)Codepytest 全通过正确代码注入 off-by-one
2code-002L1为现有函数添加参数校验和错误处理Code测试通过 + mypy 检查strip 掉校验代码
3code-003L1阅读代码,编写缺失的单元测试Code, Storage测试通过 + 覆盖率 ≥ 85%给定函数,删除测试
4code-004L2根据 Wiki 上的 API 文档实现一个 REST 接口Code, WikiAPI 集成测试通过提供 API spec + 项目骨架
5code-005L2阅读 PR Review 评论,修改代码并在 IM 回复 ReviewerCode, IMReview 点逐条满足 + 回复质量准备 Review 评论
6code-006L2修复 3 个 lint/type 错误并提交规范的 commitCodeflake8/mypy 零 error + commit 格式注入已知 lint 问题
7code-007L2将一段重复代码提取为公共函数,更新所有调用点Code, Storage测试通过 + 代码重复率下降人工复制代码到多处
8code-008L3分析 CI 失败日志,定位依赖/编译/测试问题并修复Code, MonitorCI 重跑绿 + 根因描述准确注入 4 类 CI 错误之一
9code-009L3数据库 migration:新增表 + 更新 ORM + 写迁移脚本Code, Storage迁移成功 + schema 正确 + 数据完整给定需求 + 现有 schema
10code-010L3跨文件级联 Bug:追踪 A→B→C 调用链,修复根因Code, Storage集成测试通过 + 修改根因文件注入跨模块 off-by-one
11code-011L3重构模块:拆大文件为 3+ 小文件,保持测试通过Code, Storage测试通过 + 文件数增加 + 代码质量评分提供巨型文件
12code-012L4从 Wiki 需求文档到 PR 合并的完整开发流程Code, Wiki, IM, StoragePR merged + CI 绿 + 需求关联完整需求文档
13code-013L4修复生产告警:查监控→查日志→定位→修复→部署→验证Code, Monitor, Infra, IM告警消除 + 回归测试通过注入运行时错误
14code-014L4实现微服务:API + DB + 测试 + Dockerfile + K8s YAMLCode, Storage, Infra, Wiki集成测试 + 部署成功 + API 可达给定设计文档

Category B:运维部署(12 个)

#Task ID难度任务描述MCP Server验证方式设计方法
15ops-001L1查找 CrashLoopBackOff 的 Pod 并报告原因Infra正确识别 Pod + 原因Kill 容器制造 Crash
16ops-002L1读 Prometheus 指标,找出 CPU 最高的服务Monitor答案正确注入高 CPU 指标
17ops-003L1查看 K8s Service 列表,找到无后端 Pod 的 ServiceInfra正确识别空 Service删除后端 Deployment
18ops-004L2扩容服务到 N 副本,验证 Pod Ready + 监控指标正常Infra, MonitorPod 数量正确 + 指标稳定设定初始副本 + 目标
19ops-005L2分析 Grafana Dashboard,发现异常服务并 IM 通知团队Monitor, IM正确识别 + 消息发出注入指标异常
20ops-006L2更新 Deployment 镜像版本并等待 rollout 完成Infra, Code新版本 Running + 无 restart准备新镜像 tag
21ops-007L3Pod OOM 排查:看 events→查 limits→调整资源→验证Infra, Monitor, StoragePod 稳定 + 无 OOMKilled设置过小 memory limit
22ops-008L3灰度发布:更新镜像 → 金丝雀 10% → 监控验证 → 全量Infra, Monitor, Code全量发布成功 + 无告警准备发布流程
23ops-009L3磁盘告警:定位大文件/日志 → 清理 → 验证磁盘恢复Infra, Storage, Monitor磁盘使用率下降填充大文件制造告警
24ops-010L3跨服务链路排查:A→B→C 调用中定位超时环节Infra, Monitor, Code根因定位准确注入 B 服务延迟
25ops-011L4完整事故响应:告警→排查→修复→恢复→复盘文档全部 6 个服务恢复 + 复盘文档质量注入级联故障
26ops-012L4容量规划:分析历史指标 → 预测趋势 → 输出扩容方案Monitor, Infra, Wiki, Storage方案合理性 (LLM Judge)提供 30 天监控数据

Category C:协作沟通(10 个)

#Task ID难度任务描述MCP Server验证方式设计方法
27comm-001L1搜索 Wiki 找到某 API 的调用方式并回答问题Wiki答案正确性预建 API 文档
28comm-002L1搜索 IM 历史消息,找到某次讨论的结论IM内容匹配预灌对话历史
29comm-003L2整理 IM 讨论记录,输出结构化 Action Items 到 WikiIM, WikiAction Items F1 ≥ 0.8预灌讨论 + 标注
30comm-004L2汇总 Code Review 评论,撰写技术改进提案发到 WikiCode, Wiki提案覆盖所有 Review 点 + 质量准备多条 Review
31comm-005L2阅读 Wiki 变更日志,撰写面向团队的版本更新通知Wiki, IM通知发出 + 内容准确提供 CHANGELOG
32comm-006L3调研 Wiki 上 3+ 篇文档,输出技术选型对比报告Wiki, Code, IM覆盖度 + 分析深度 (Judge)预建技术文档集
33comm-007L3从告警+代码变更+IM 记录还原事故时间线Monitor, Code, IM时间线准确性 + 完整性注入事故 + 历史记录
34comm-008L3新员工 onboarding:按 Wiki 文档配置开发环境Wiki, Code, Infra环境可用(编译通过 + 服务跑通)准备 onboarding 文档
35comm-009L4跨团队需求评审:收集需求→整理→安排→输出结论IM, Wiki, Code流程完整 + 结论文档质量模拟多方消息
36comm-010L4Sprint 回顾:收集指标+完成项+问题,输出改进计划全部 6 个报告完整性 + 数据准确性提供 Sprint 数据

Category D:数据工程(8 个)

#Task ID难度任务描述MCP Server验证方式设计方法
37data-001L1编写 SQL 查询获取指定数据(NL2SQL)Storage结果集与 Golden 一致预建 schema + 数据
38data-002L1导出数据库表为 CSV 并保存到指定目录Storage文件存在 + 行数正确 + 格式正确给定表 + 目标路径
39data-003L2根据 Wiki 需求文档设计新表 Schema 并创建Storage, WikiDDL 可执行 + 字段合理提供需求文档
40data-004L2数据质量检查:找到异常记录并修复/标记Storage, Code异常发现率 + 修复正确注入 5 类异常数据
41data-005L3写数据迁移脚本:旧表→新表,保证完整性Storage, Code行数一致 + checksum 匹配提供新旧 schema
42data-006L3慢查询排查:找慢 SQL → 加索引 → 验证Storage, Monitor查询耗时降低 ≥ 50%注入无索引大表
43data-007L3从日志文件提取指标,写入 DB,创建 Grafana DashboardStorage, Monitor, CodeDashboard 可用 + 数据正确提供原始日志
44data-008L4数据管道搭建:采集→清洗→存储→可视化Storage, Code, Monitor, Wiki端到端数据流通提供数据源 + 需求

Category E:安全与质量(6 个)

#Task ID难度任务描述MCP Server验证方式设计方法
45sec-001L2扫描代码中的硬编码密钥,替换为环境变量Code, Storagegrep 扫描零结果 + 测试通过注入 API key/密码
46sec-002L2检查 SQL 注入漏洞并修复(参数化查询)Code, Storage安全测试通过 + 功能不退化注入字符串拼接 SQL
47sec-003L3安全审计:扫描代码 5 类漏洞 + 修复 + 出报告Code, Storage, Wiki漏洞清零 + 报告质量注入 CWE 问题
48sec-004L3K8s 安全检查:发现 privileged 容器 + RBAC 问题并修复Infra, Code安全检查通过注入不安全配置
49sec-005L4数据恢复演练:模拟丢失 → 备份恢复 → 验证 → 通知团队Storage, Infra, IM, Wiki数据完整恢复 + 通知发出删除表数据
50sec-006L4安全事件响应:发现异常 → 隔离 → 修复 → 复盘文档全部 6 个事件消除 + 复盘完整注入异常访问模式

A.3 能力覆盖矩阵

TaskCodeStorageInfraMonitorIMWiki工具调用代码生成数据分析多步规划文档生成
code-001●●●
code-002●●●
code-003●●●●
code-004●●●●
code-005●●●●
code-006●●●
code-007●●●●
code-008●●●●●
code-009●●●●●
code-010●●●●●
code-011●●●●●
code-012●●●●●●●
code-013●●●●●●●●
code-014●●●●●●●
ops-001●●
ops-002●●●
ops-003●●
ops-004●●●●
ops-005●●●●
ops-006●●●
ops-007●●●●●●
ops-008●●●●●●
ops-009●●●●●●
ops-010●●●●●●
ops-011●●●●●●●●●●●
ops-012●●●●●●●●●
comm-001●●
comm-002●●
comm-003●●●●
comm-004●●●●
comm-005●●●●
comm-006●●●●●●●
comm-007●●●●●●●
comm-008●●●●
comm-009●●●●●●
comm-010●●●●●●●●●●
data-001●●●
data-002●●
data-003●●●●
data-004●●●●●
data-005●●●●●
data-006●●●●●●
data-007●●●●●●●
data-008●●●●●●●●●
sec-001●●●●
sec-002●●●●
sec-003●●●●●●●
sec-004●●●●●
sec-005●●●●●●●
sec-006●●●●●●●●●●●

A.4 详细设计

code-001:单函数 Bug 修复

难度:L1 | 步数:3-8 | 时长:10min

场景:仓库中一个测试用例失败,Agent 需读取失败测试→定位 Bug→修复→跑测试。

环境

world: python-project-v1
mcp_servers: [code-management]
files:
  - src/services/pricing.py    # 含 Bug 的函数
  - tests/test_pricing.py      # 3 个用例,1 个失败
  - src/models/                # 数据模型
  - requirements.txt
git:
  branch: main
  ci: pytest

输入

CI 报告 tests/test_pricing.py::test_gold_discount FAILED。
请修复代码并确保所有测试通过。

注入:calculate_discount() 中 gold 会员折扣值 0.85 应为 0.80。

验证器

verifiers = [
    {"type": "test_pass", "command": "pytest tests/test_pricing.py -v", "criteria": "exit_code == 0"},
    {"type": "snapshot_diff", "criteria": "仅修改 src/services/pricing.py"},
    {"type": "minimal_fix", "criteria": "diff 行数 ≤ 3"}
]

code-002:添加参数校验

难度:L1 | 步数:4-6

场景:函数缺少输入校验,添加后需通过类型检查和新的边界测试。

注入:strip 掉现有 if not isinstance(...) 和 if amount < 0 校验。

验证器:测试通过 + mypy —strict 零 error + 负数/None 输入不抛未处理异常。


code-003:编写缺失的单元测试

难度:L1 | 步数:4-8

场景:函数已实现但无测试。Agent 需理解函数行为,编写覆盖正向/边界/异常的测试。

验证器

verifiers = [
    {"type": "test_pass", "criteria": "所有 Agent 编写的测试通过"},
    {"type": "coverage", "criteria": "覆盖率 ≥ 85%"},
    {"type": "test_variety", "criteria": "包含 normal/edge/error 三类"}
]

code-004:根据 Wiki API 文档实现接口

难度:L2 | 步数:10-15

场景:Wiki 上有一份 REST API 规范(endpoints/参数/响应格式),Agent 需在现有 FastAPI 项目中实现。

环境

mcp_servers: [code-management, wiki-server]
wiki_pages:
  - "API Spec: User Profile Service"  # 含 3 个 endpoint 定义
files:
  - src/main.py
  - src/routes/        # 现有路由(作参考)
  - tests/api/         # 预写好的集成测试

验证器:8 个 API 测试通过 + 响应格式匹配 Wiki 规范 + 错误码正确。


code-005:PR Review 修改 + IM 回复

难度:L2 | 步数:10-15

场景:PR 有 5 条 Review 评论,Agent 需修改代码,然后在 IM 中向 Reviewer 说明修改内容。

验证器

verifiers = [
    {"type": "review_checklist", "criteria": "5 条 Review 意见逐条满足"},
    {"type": "test_pass", "criteria": "原有测试不退化"},
    {"type": "im_message_sent", "criteria": "向 Reviewer 发送了修改说明"},
    {"type": "message_quality", "criteria": "说明清晰且覆盖所有修改点", "method": "LLM Judge"}
]

code-006:Lint/Type 错误修复

难度:L2 | 步数:6-10

注入 3 个问题:未使用的 import / 类型不匹配 / 过长行(>120 字符)。

验证器:flake8 零 warning + mypy 零 error + commit message 符合 Conventional Commits 格式。


code-007:提取公共函数消除重复

难度:L2 | 步数:8-12

场景:3 个文件中有高度相似的代码段(70%+ 相同),Agent 需提取公共函数并更新调用点。

验证器:测试通过 + 代码重复检测工具(如 radon/pylint)duplicate rate 下降 + 公共函数有 docstring。


code-008:CI 失败分析与修复

难度:L3 | 步数:12-20

注入的 CI 错误(随机一种)

类型注入方式CI 日志特征
依赖冲突修改 requirements.txt 版本pip's dependency resolver
导入错误删除 __init__.pyModuleNotFoundError
环境变量缺失删除 .env 中某个 keyKeyError: 'DB_URL'
测试数据变更修改 fixture 数据AssertionError

验证器:CI 重跑 exit_code == 0 + Agent 在 trajectory 中描述的根因与 Golden 匹配(LLM Judge)。


code-009:数据库 Migration

难度:L3 | 步数:15-20

场景:需要新增 user_preferences 表,更新 SQLAlchemy 模型,编写 Alembic 迁移脚本。

验证器

verifiers = [
    {"type": "migration_success", "command": "alembic upgrade head", "criteria": "exit_code == 0"},
    {"type": "schema_check", "criteria": "新表存在 + 字段匹配需求"},
    {"type": "orm_sync", "criteria": "ORM model 与数据库 schema 一致"},
    {"type": "test_pass", "criteria": "原有测试 + 新增 CRUD 测试通过"}
]

code-010:跨文件级联 Bug

难度:L3 | 步数:15-25

注入:utils/date_helper.py 的 date_range() 返回值少一天 → services/aggregator.py 聚合偏小 → api/stats.py 返回数据偏低。

验证器:集成测试通过 + snapshot_diff 确认修改的是 utils/date_helper.py(非症状处)+ diff ≤ 5 行。


code-011:大文件重构拆分

难度:L3 | 步数:15-25

场景:services/monolith.py(500 行,8 个类/函数),需拆分为 3+ 文件,更新所有 import,保持测试通过。

验证器

verifiers = [
    {"type": "test_pass", "criteria": "全部测试通过"},
    {"type": "file_count", "criteria": "services/ 目录文件数 ≥ 原来 +2"},
    {"type": "no_monolith", "criteria": "最大文件 ≤ 200 行"},
    {"type": "import_valid", "criteria": "无 circular import"}
]

code-012:需求到 PR 的完整流程

难度:L4 | 步数:30-50

全流程:读 Wiki 需求 → 创建 feature 分支 → 编码 → 测试 → 提 PR → 在 IM 通知 Reviewer。

验证器:分支已创建 + 测试通过 + PR 已创建 + CI 绿 + IM 消息已发 + 代码质量(LLM Judge)。


code-013:生产告警修复

难度:L4 | 步数:30-50

注入:应用代码中有一个 NullPointerError 在特定条件下触发,Prometheus 收到 5xx 告警,Pod 仍 Running 但返回错误。

验证器:Prometheus 告警消除 + 回归测试通过 + K8s deployment 已更新 + IM 通知已发。


code-014:微服务端到端实现

难度:L4 | 步数:40-60

输入:Wiki 上的设计文档描述一个 User Notification Service(3 个 API + DB 表 + 异步处理)。

验证器:API 集成测试通过 + DB schema 正确 + Dockerfile 可构建 + K8s YAML 可 apply + Pod Running。


ops-001 至 ops-012:运维部署

ops-001:找 CrashLoop Pod

L1。k8s_get_pods 发现 3/10 Pod 为 CrashLoopBackOff,Agent 需输出 Pod 名称 + 原因。验证:答案完全匹配。

ops-002:CPU 最高的服务

L1。prom_query 查 container_cpu_usage_seconds_total,找到 Top 1。验证:服务名正确。

ops-003:无后端的 Service

L1。一个 Service 的 selector 不匹配任何 Pod。验证:正确识别该 Service。

ops-004:服务扩容

L2。从 3 → 8 副本,等 Ready,检查 Prometheus 指标稳定。验证:Pod 数 == 8 + QPS 指标正常。

ops-005:Grafana 异常 + 通知

L2。Dashboard 上某服务错误率突增,Agent 需识别并在 IM #alerts 频道通知。验证:正确识别 + 消息内容含服务名和错误率。

ops-006:滚动更新镜像

L2。更新 image tag v1.2.3 → v1.3.0,k8s_rollout_status 等待完成。验证:所有 Pod 运行新版本 + 无 restart。

ops-007:OOM 排查

L3。Pod memory limit 128Mi 但实际需要 256Mi。Agent 需看 events→查 limits→修改 YAML→apply→验证。验证:Pod 稳定 60s 无 restart。

ops-008:灰度发布

L3。流程:创建 canary deployment(1 副本)→ 观察 5min 指标 → 无异常则全量更新 → 删除 canary。验证:最终全量新版本 + Prometheus 无异常。

ops-009:磁盘清理

L3。注入 5GB 日志到 /var/log/app/。Agent 需定位大文件→清理→确认 Prometheus disk_usage 下降。验证:磁盘利用率 < 80%。

ops-010:跨服务延迟定位

L3。服务 A → B → C,注入 B 的响应延迟 2s。Agent 需通过 Prometheus latency 指标 + Pod 日志定位到 B。验证:正确指出服务 B。

ops-011:完整事故响应

L4。级联故障:DB 连接池满 → 服务 B 超时 → 服务 A 5xx → Prometheus 告警。Agent 需排查→修复 DB 配置→重启服务→验证→写 Wiki 复盘。验证:告警消除 + 服务恢复 + 复盘文档存在且质量合格。

ops-012:容量规划报告

L4。提供 30 天 Prometheus 历史数据(CPU/Memory/QPS 趋势),Agent 分析后输出到 Wiki:当前瓶颈、预测拐点、扩容方案。验证:方案合理性(LLM Judge)+ 数据引用准确。


comm-001 至 comm-010:协作沟通

comm-001:Wiki API 文档检索

L1。问「UserService 的 /users/{id} 接口返回什么字段?」。验证:答案与 Wiki 页面内容匹配。

comm-002:IM 历史搜索

L1。问「上周关于数据库选型的讨论结论是什么?」。验证:提取到的结论与预标注匹配。

comm-003:IM 讨论 → Action Items

L2。50 条 IM 消息中提取 6 个 Action Items 到 Wiki。验证:F1 ≥ 0.8 + Wiki 页面已创建。

comm-004:Review 汇总 → 技术提案

L2。10 条 Code Review 评论汇总为改进提案。验证:覆盖所有 Review 点 + 提案结构合理(LLM Judge)。

comm-005:版本更新通知

L2。读 Wiki CHANGELOG,撰写面向团队的通知发到 IM #general。验证:消息已发 + 覆盖关键变更。

comm-006:技术选型报告

L3。Wiki 上有 Redis/Memcached/DragonflyDB 三篇评估文档,Agent 需对比后输出选型报告。验证:覆盖 3 个方案 + 有量化对比 + 有结论推荐(LLM Judge)。

comm-007:事故时间线还原

L3。从 Prometheus 告警 + Git commit 历史 + IM 消息,还原 09:15-10:45 的事故过程。验证:时间线 5 个关键节点的准确性。

comm-008:Onboarding 环境搭建

L3。按 Wiki 文档:clone repo → 安装依赖 → 配置环境变量 → 启动服务 → 验证 API。验证:curl localhost:8080/health 返回 200。

comm-009:跨团队需求评审

L4。收集 3 个团队在 IM 中的需求 → 整理到 Wiki → 标注优先级 → 发 IM 通知。验证:Wiki 文档覆盖所有需求 + 优先级合理 + 通知已发。

comm-010:Sprint 回顾报告

L4。从 Code(commit/PR)+ Monitor(SLA/错误率)+ IM(讨论)+ Wiki(计划)收集数据,输出完整回顾报告。验证:报告含完成项/指标/问题/改进计划 + 数据准确。


data-001 至data-008:数据工程

data-001:NL2SQL

L1。5 道递增:简单 SELECT → JOIN → 窗口函数 → CTE → 连续 N 天活跃。验证:结果集与 Golden 一致。

data-002:导出 CSV

L1。db_query 获取数据 + fs_write 保存。验证:文件存在 + 行数 + 表头正确。

data-003:Schema 设计

L2。Wiki 描述了「订单评价系统」需求,Agent 需设计 reviews 表。验证:DDL 可执行 + 字段覆盖需求 + 外键合理。

data-004:数据清洗

L2。注入 5 类问题:NULL user_id / 重复行 / 格式异常 email / 负数金额 / 未来日期。验证:发现 ≥ 4/5 + 修复正确。

data-005:数据迁移脚本

L3。旧 users_v1 → 新 users_v2(字段重命名 + 类型变更 + 枚举映射)。验证:行数一致 + 关键字段 checksum。

data-006:慢查询优化

L3。注入无索引的大表(10 万行),某查询 > 2s。Agent 需 db_explain → 加索引 → 验证 < 200ms。验证:EXPLAIN 确认走索引 + 耗时下降。

data-007:日志 → DB → Dashboard

L3。提供 access.log(10 万行),Agent 需解析 → 写入 DB → 创建 Grafana Dashboard 展示 QPS/错误率。验证:DB 数据正确 + Dashboard 可访问。

data-008:端到端数据管道

L4。从 CSV 数据源 → Python 清洗脚本 → PostgreSQL → Grafana 可视化 → Wiki 文档记录。验证:全链路数据流通 + 文档完整。


sec-001 至 sec-006:安全与质量

sec-001:硬编码密钥清除

L2。注入 3 处:API_KEY 在代码中 / DB 密码在配置文件 / AWS Secret 在注释里。Agent 需全部替换为 os.environ。验证:grep -rn 'password\|secret\|api_key' 零结果 + 测试通过。

sec-002:SQL 注入修复

L2。注入 2 处字符串拼接 SQL。Agent 需改为参数化查询。验证:安全测试(注入 ' OR 1=1 --)不影响 + 功能测试通过。

sec-003:安全审计报告

L3。注入 5 类 CWE:SQL 注入 / 命令注入 / 路径遍历 / 不安全反序列化 / 硬编码密钥。Agent 需全部修复 + 写 Wiki 安全报告。验证:扫描零高危 + 报告覆盖 5/5(LLM Judge)。

sec-004:K8s 安全加固

L3。注入:Pod 以 root 运行 / 使用 privileged / 无 resource limits / ServiceAccount 权限过大。验证:kubesec scan 评分提升 + 功能不退化。

sec-005:数据恢复演练

L4。模拟 TRUNCATE TABLE orders,Agent 需从备份恢复→验证数据完整→IM 通知团队→Wiki 写演练报告。验证:行数恢复 + checksum 匹配 + 通知已发 + 报告存在。

sec-006:安全事件响应

L4。注入异常:Prometheus 检测到某服务端口被扫描(异常流量指标),Agent 需排查→隔离 Pod→修复网络策略→写 Wiki 复盘。验证:异常指标消失 + NetworkPolicy 生效 + 复盘文档质量。


A.5 构建优先级

第一批(Week 1,Phase 1 MVP):12 个 L1-L2

Task IDs理由
code-001, code-002, code-003代码基础,只需 Code Server
data-001, data-002数据基础,只需 Storage Server
ops-001, ops-002, ops-003运维基础,只需 Infra/Monitor
comm-001, comm-002协作基础,只需 Wiki/IM
code-006, sec-001L2 入门,跨 2 系统

第二批(Week 2-3):18 个 L2

Task IDs理由
code-004, code-005, code-007跨 Wiki/IM 的代码任务
ops-004, ops-005, ops-006跨 Monitor/IM 的运维任务
comm-003, comm-004, comm-005IM↔Wiki 协作
data-003, data-004数据+Wiki/Code
sec-002安全基础

第三批(Week 3-4):12 个 L3

Task IDs理由
code-008, code-009, code-010, code-011复杂代码任务
ops-007, ops-008, ops-009, ops-010复杂运维任务
comm-006, comm-007, comm-008复杂协作
data-005, data-006, data-007复杂数据
sec-003, sec-004复杂安全

第四批(Week 5-6):8 个 L4

Task IDs理由
code-012, code-013, code-014端到端开发
ops-011, ops-012端到端运维
comm-009, comm-010端到端协作
data-008端到端数据管道
sec-005, sec-006端到端安全

A.6 故障注入与 Task 的对应关系

故障类型涉及 Task注入方式
代码 Bugcode-001, code-010, code-013修改源文件注入已知 Bug
CI 失败code-008修改依赖/配置/环境变量
Pod Crashops-001, ops-007Kill 容器 / 设置过小 limits
数据库异常data-004, data-006, sec-005注入脏数据 / 慢查询 / 删除数据
监控告警ops-002, ops-005, ops-009, ops-010注入异常指标到 Prometheus
信息缺失comm-001, comm-006Wiki 文档故意不完整
权限不足sec-004限制 ServiceAccount 权限
环境漂移ops-008, sec-006运行中修改配置/注入流量

A.7 Reward 与 Task 难度的权重映射

结合正文第四节的三层 Reward 架构:

难度Outcome (Layer 1)Quality (Layer 2)Efficiency (Layer 3)
L10.70.10.2
L20.60.20.2
L30.50.30.2
L40.40.40.2
  • L1 几乎只看结果对不对
  • L4 质量权重提升到 0.4——因为端到端任务的文档/沟通质量很重要
  • Efficiency 固定 0.2——所有难度都鼓励高效完成