SWE-Chain
收藏SWE-Chain 数据集概述
数据集简介
SWE-Chain 是一个用于评估编码代理(如 Claude Code、OpenCode、Codex)在连续软件包版本升级任务中表现的基准测试数据集。
核心任务
编码代理需要接收连续版本对的升级规范(例如 Flask 2.0.0 → 2.0.1 → ... → 2.3.3),在 Docker 隔离环境中逐步实现每个版本的升级,最终根据目标版本的测试套件进行评分。
数据集存储
- 数据集托管在 Hugging Face:SWE-Chain
- 基准测试结果存档:SWE-Chain-Results
工作流程模块
| 模块 | 功能 | 入口 |
|---|---|---|
| Collection(收集) | 获取变更日志和源代码,提取差异和每版本测试基线 | collect.py、build.py、validate_baseline.py、validate_cross.py |
| Synthesis(合成) | 将差异片段匹配到发布说明任务,合成代理可读的升级规范 | synthesize.py |
| Generation(生成) | 在 Docker 环境中逐步运行代理完成升级链 | run.sh → generate/chain.py |
| Evaluation(评估) | 回放每一步的差异,运行目标测试套件,计算得分 | eval.sh → evaluation/ |
评分分类体系
对于每个升级步骤 v_prev → v_next,使用 v_next 的测试套件对代理的 prev 和 curr 代码库进行测试,将每个基线通过的测试分为六类:
| 类别 | 定义 |
|---|---|
| resolved(已解决) | 与升级相关的测试,代理当前代码已通过 |
| unresolved(未解决) | 与升级相关的测试,代理当前代码仍失败 |
| regressed(回归) | 非升级相关测试,在上一通过但当前失败 |
| preserved(保持) | 非升级相关测试,之前和现在均通过 |
| recovered(恢复) | 非升级相关测试,之前失败但当前通过 |
| unrecovered(未恢复) | 非升级相关测试,之前和现在均失败 |
支持的代理工具
- Claude Code:安装 Claude Code CLI,配置
CLAUDE_CODE_OAUTH_TOKEN环境变量 - Codex:安装 Codex CLI,认证后复制
~/.codex/auth.json和~/.codex/config.toml - OpenCode:安装 OpenCode,认证后复制
~/.local/share/opencode/auth.json
快速开始
bash
1. 安装依赖
pip install -r requirements.txt
2. 从 Hugging Face 拉取数据集
python load_dataset.py
3. 运行代理执行升级链
bash run.sh data/flask_2.0.0_to_2.3.3_specs_chain.jsonl claudecode anthropic claude-sonnet-4-6 high
4. 评分运行结果
bash eval.sh results/flask_2.0.0_to_2.3.3/claudecode-anthropic-claude-sonnet-4-6/chain.json
自定义升级链构建流程
- 配置包信息:在
packages.yaml中添加 Dockerfile 版本范围、测试文件夹、执行超时和保护路径 - 编写 Dockerfile:在
dockerfiles/目录下创建覆盖版本范围的 Dockerfile - 编写变更日志获取器:在
fetchers/changelog_fetcher.py中编写获取函数并注册
构建命令
bash
1. 收集元数据
python collect.py flask --from 2.0.0 --to 2.3.3
2a. 为每个版本构建 Docker 镜像
python build.py metadata/flask_2.0.0_to_2.3.3
2b. 运行每个版本的黄金测试
python validate_baseline.py metadata/flask_2.0.0_to_2.3.3 --workers 5
2c. 运行跨版本测试
python validate_cross.py metadata/flask_2.0.0_to_2.3.3 --workers 5
3. 合成代理可读的规范链
python synthesize.py metadata/flask_2.0.0_to_2.3.3 --model gpt-5.4 --workers 3




