# ðŸ SWE-Factory 深度解æžï¼šè‡ªåŠ¨åŒ– GitHub Issue 解决数æ®é›†æž„建工厂
> **一å¥è¯ä»‹ç»**:SWE-Factory 是ä¸å±±å¤§å¦ã€åŽä¸ºç‰æœºæž„è”åˆå¼€æºçš„首个跨多è¯è¨€ GitHub Issue 解决 Benchmark è‡ªåŠ¨æž„å»ºæµæ°´çº¿ï¼Œé€šè¿‡å¤šæ™ºèƒ½ä½“系统 SWE-Builder 和基于 Exit Code 的自动化验è¯ï¼Œå°†æ•°æ®é›†æž„å»ºæˆæœ¬é™ä½Žè‡³ $0.024/实例。
---
## 📋 目录
1. [背景与动机](#背景与动机)
2. [SWE-Factory æ ¸å¿ƒæž¶æž„](#swe-factory-æ ¸å¿ƒæž¶æž„)
3. [SWE-Builder 多智能体系统](#swe-builder-多智能体系统)
4. [Exit Code è‡ªåŠ¨åŒ–éªŒè¯æœºåˆ¶](#exit-code-è‡ªåŠ¨åŒ–éªŒè¯æœºåˆ¶)
5. [实验评估与结果](#实验评估与结果)
6. [Error2Pass 现象分æž](#error2pass-现象分æž)
7. [与相关工作对比](#与相关工作对比)
8. [应用场景与价值](#应用场景与价值)
9. [总结与展望](#总结与展望)
---
## 背景与动机
### GitHub Issue 解决任务的é‡è¦æ€§
GitHub Issue 解决(Issue Resolutionï¼‰æ˜¯è½¯ä»¶å·¥ç¨‹é¢†åŸŸçš„æ ¸å¿ƒä»»åŠ¡ï¼Œæ¶‰åŠä¿®å¤çœŸå®žä¸–界的软件缺陷(Bug Fix)和功能增强(Feature Enhancement)。该任务已æˆä¸ºè¯„估大è¯è¨€æ¨¡åž‹ï¼ˆLLM)软件工程能力的关键基准。
**代表性 Benchmark**:
- **SWE-bench** (2023):2,294 个 Python Issue,最广泛使用的评估基准
- **SWE-bench Verified** (2024):500 个人工验è¯å®žä¾‹
- **OmniGIRL** (2025):959 个多è¯è¨€ Issue(Python/JS/TS/Java)
- **SWE-Gym** (2024):2,438 个 Python 任务,支æŒå¼ºåŒ–å¦ä¹ è®ç»ƒ
### ä¼ ç»Ÿæ•°æ®é›†æž„建的三大痛点
```
┌─────────────────────────────────────────────────────────────────â”
│ ä¼ ç»Ÿæ•°æ®é›†æž„建æµç¨‹ │
├─────────────────┬─────────────────┬─────────────────────────────┤
│ P1: 环境构建 │ P2: 评分系统 │ P3: Fail2Pass éªŒè¯ â”‚
├─────────────────┼─────────────────┼─────────────────────────────┤
│ 手动é…ç½®ä¾èµ– │ 手动编写解æžå™¨ │ 人工检查测试日志 │
│ 处ç†å¤šç‰ˆæœ¬å…¼å®¹ │ 适é…ä¸åŒæµ‹è¯•框架 │ éªŒè¯ patch å‰åŽçŠ¶æ€ â”‚
│ 构建 Dockerfile │ æ£åˆ™è¡¨è¾¾å¼æå– │ åˆ¤æ– fail → pass è½¬æ¢ â”‚
├─────────────────┴─────────────────┴─────────────────────────────┤
│ 问题:高度ä¾èµ–人工,耗时耗力,难以扩展 │
└─────────────────────────────────────────────────────────────────┘
```
**具体挑战**:
| 痛点 | æè¿° | ä¼ ç»Ÿè§£å†³æ–¹æ¡ˆ |
|-----|------|------------|
| **P1: 环境构建** | 编程è¯è¨€å’Œä»“库é…ç½®å¤šæ ·ï¼Œä¾èµ–和测试命令高度项目特定 | 手动编写 Dockerfile å’Œé…置脚本 |
| **P2: 评分系统** | ä¸åŒé¡¹ç›®ä½¿ç”¨ä¸åŒæµ‹è¯•æ¡†æž¶ï¼Œæ—¥å¿—æ ¼å¼å·®å¼‚大 | 为æ¯ä¸ªæ¡ˆä¾‹æ‰‹åŠ¨ç¼–å†™è§£æžå™¨ï¼ˆæ£åˆ™è¡¨è¾¾å¼ï¼‰ |
| **P3: Fail2Pass 验è¯** | 需验è¯åº”用 gold patch åŽæµ‹è¯•从失败å˜ä¸ºé€šè¿‡ | 人工检查大é‡å¤æ‚测试报告 |
### SWE-Factory 的解决方案
SWE-Factory é€šè¿‡ä¸‰ä¸ªæ ¸å¿ƒè‡ªåŠ¨åŒ–ç»„ä»¶è§£å†³ä¸Šè¿°ç—›ç‚¹ï¼š
1. **SWE-Builder**:多智能体系统自动构建评估环境(解决 P1)
2. **Exit Code 评分法**ï¼šæ ‡å‡†åŒ–æµ‹è¯•çŠ¶æ€æ”¶é›†ï¼Œæ— 需自定义解æžå™¨ï¼ˆè§£å†³ P2)
3. **自动化 Fail2Pass 验è¯**:基于 Exit Code 自动验è¯ï¼ˆè§£å†³ P3)
---
## SWE-Factory æ ¸å¿ƒæž¶æž„
### æ•´ä½“æµæ°´çº¿
```
┌─────────────────────────────────────────────────────────────────────â”
│ SWE-Factory æµæ°´çº¿ │
├──────────┬──────────────┬─────────────────┬─────────────────────────┤
│ 阶段 1 │ 阶段 2 │ 阶段 3 │ 阶段 4 │
├──────────┼──────────────┼─────────────────┼─────────────────────────┤
│ Raw Issue│ 评估环境构建 │ 测试评分 │ Fail2Pass éªŒè¯ â”‚
│ Collection│ (SWE-Builder)│ (Exit Code 法) │ (自动化验è¯) │
├──────────┼──────────────┼─────────────────┼─────────────────────────┤
│ 使用 │ 多智能体å作 │ æ•获 Exit Code │ Patch å‰ï¼šExit Code ≠0│
│ SWE-bench│ ç”Ÿæˆ Dockerfile│ 0 = Pass │ Patch åŽï¼šExit Code = 0│
│ 脚本 │ 和测试脚本 │ éž0 = Fail │ │
└──────────┴──────────────┴─────────────────┴─────────────────────────┘
```
### æ ¸å¿ƒåˆ›æ–°ç‚¹
| 创新 | ä¼ ç»Ÿæ–¹æ³• | SWE-Factory 方法 | 优势 |
|-----|---------|-----------------|------|
| 环境构建 | 手动é…ç½® | SWE-Builder 多智能体 | 自动化ã€å¯å¤ç”¨ |
| 测试评分 | 自定义解æžå™¨ | Exit Code æ ‡å‡†åŒ– | 100% å‡†ç¡®çŽ‡ã€æ— éœ€é€‚é… |
| Fail2Pass | 人工检查 | Exit Code 自动对比 | 92% 精确率ã€100% å¬å›žçއ |
---
## SWE-Builder 多智能体系统
### 四智能体å作架构
```
┌──────────────────────────────────────────────────────────────â”
│ SWE-Builder 架构 │
├──────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┠│
│ │ Repository │◄──── 收集仓库信æ¯ã€ä¾èµ–ã€æµ‹è¯•命令 │
│ │ Explorer │ (requirements.txt, pom.xml, etc.) │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┠┌─────────────────┠│
│ │ Environment │ │ Test │ │
│ │ Manager │ │ Manager │ │
│ │ (Dockerfile) │ │ (测试脚本) │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ └───────────┬───────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────┠│
│ │ Test Analyst │ │
│ │ ┌─────────────────────────────────┠│ │
│ │ │ 验è¯ï¼šåº”用 Gold Patch åŽæµ‹è¯•通过? │ │ │
│ │ │ 失败:分æžé”™è¯¯æ—¥å¿—,生æˆä¼˜åŒ–指导 │ │ │
│ │ └─────────────────────────────────┘ │ │
│ └─────────────────────────────────────────┘ │
│ │ │
│ â–¼ (失败时å馈) │
│ 返回对应智能体è¿ä»£ä¼˜åŒ– │
│ │
└──────────────────────────────────────────────────────────────┘
```
### 智能体详细设计
#### 1. Repository Explorer(仓库探索者)
**èŒè´£**:自动收集构建评估环境所需的所有信æ¯
**æ ¸å¿ƒ API**:
- `browse_file(file_path, custom_query)`:从指定文件æå–ä¿¡æ¯
- `browse_directory(file_path, depth)`:æµè§ˆç›®å½•结构
- `search_file_by_keyword(keyword)`ï¼šæŒ‰å…³é”®è¯æœç´¢æ–‡ä»¶
**收集信æ¯ç±»åž‹**:
- 环境ä¾èµ–(`requirements.txt`ã€`pom.xml`ã€`package.json` ç‰ï¼‰
- 测试命令(`pytest`ã€`mvn test`ã€`npm test` ç‰ï¼‰
- 文档ä¸çš„设置细节(`README.md`ã€`CONTRIBUTING.md`)
#### 2. Environment Manager(环境管ç†å™¨ï¼‰
**èŒè´£**:构建å¯é çš„è¿è¡Œæ—¶çŽ¯å¢ƒ
**输出**:`Dockerfile`
**关键特性**:
- 基于 Repository Explorer 收集的信æ¯ç”Ÿæˆ Dockerfile
- ä¿ç•™ç”Ÿæˆåކå²ï¼Œæ”¯æŒè¿ä»£ä¼˜åŒ–
- 失败时回退到上一版本
#### 3. Test Manager(测试管ç†å™¨ï¼‰
**èŒè´£**ï¼šç”Ÿæˆæ‰§è¡Œæµ‹è¯•çš„ shell 脚本
**æ ¸å¿ƒåˆ›æ–°ï¼šExit Code æ ‡å‡†åŒ–è¾“å‡º**
```bash
#!/bin/bash
# 生æˆçš„æµ‹è¯•脚本示例 (eval.sh)
# 执行测试命令
pytest tests/test_specific_feature.py -v
# æ•获 Exit Code
rc=$?
# æ ‡å‡†åŒ–è¾“å‡ºæ ‡è®°
echo "OMNIGRIL_EXIT_CODE=$rc"
# Exit Code å«ä¹‰ï¼š
# 0 = 所有测试通过
# éž0 = 至少一个测试失败或å‘生错误
```
**为什么使用 Exit Code?**
- ä¸»æµæµ‹è¯•框架(pytestã€JUnitã€Mochaã€npm)都éµå¾ª Exit Code 约定
- 0 表示æˆåŠŸï¼Œéžé›¶è¡¨ç¤ºå¤±è´¥
- æ— éœ€è§£æžå¤æ‚çš„æ—¥å¿—æ ¼å¼
#### 4. Test Analyst(测试分æžå¸ˆï¼‰
**èŒè´£**:评估环境质é‡å¹¶åè°ƒè¿ä»£ä¼˜åŒ–
**验è¯é€»è¾‘**:
```
应用 Gold Patch → 构建环境 → è¿è¡Œæµ‹è¯• → 分æžç»“æžœ
│
├─ æˆåŠŸï¼šçŽ¯å¢ƒæœ‰æ•ˆï¼Œä¿å˜åˆ°è®°å¿†æ±
│
└─ 失败:分æžé”™è¯¯æ—¥å¿— → 定ä½é—®é¢˜ → ç”ŸæˆæŒ‡å¯¼ → å馈给对应智能体
```
**错误分类与å馈**:
| 错误类型 | å馈给 | 优化指导示例 |
|---------|-------|------------|
| ä¾èµ–缺失 | Environment Manager | "æ·»åŠ missing-package==1.0.0 到 Dockerfile" |
| 测试命令错误 | Test Manager | "将 pytest 改为 python -m pytest" |
| ä¿¡æ¯ä¸è¶³ | Repository Explorer | "查找 tox.ini ä¸çš„æµ‹è¯•é…ç½®" |
### 评估环境记忆æ±
**æ ¸å¿ƒè§‚å¯Ÿ**:åŒä¸€ä»“库的相邻版本通常共享相似的è¿è¡Œæ—¶çŽ¯å¢ƒå’Œæµ‹è¯•è„šæœ¬ã€‚
**工作原ç†**:
```
┌─────────────────────────────────────────────────────────â”
│ è¯„ä¼°çŽ¯å¢ƒè®°å¿†æ± â”‚
├─────────────────────────────────────────────────────────┤
│ │
│ 新 Issue 进入 │
│ │ │
│ ▼ │
│ æŸ¥è¯¢è®°å¿†æ± â”€â”€â–º 找到相åŒä»“库的历å²é…ç½® │
│ │ │
│ ▼ │
│ 检索相邻版本的环境作为å‚考 │
│ │ │
│ ▼ │
│ ä½œä¸ºåŸºçº¿åŠ é€Ÿæ–°çŽ¯å¢ƒæž„å»º │
│ │ │
│ ▼ │
│ éªŒè¯æˆåŠŸ ──► ä¿å˜åˆ°è®°å¿†æ± (å¤ç”¨ï¼‰ │
│ │
└─────────────────────────────────────────────────────────┘
```
**优势**:
- åŠ é€ŸçŽ¯å¢ƒç”Ÿæˆè¿‡ç¨‹
- æé«˜è·¨ç‰ˆæœ¬çŽ¯å¢ƒä¸€è‡´æ€§
- å‡å°‘é‡å¤åŠ³åŠ¨
---
## Exit Code è‡ªåŠ¨åŒ–éªŒè¯æœºåˆ¶
### 基于 Exit Code 的评分方法
**æ ¸å¿ƒæ´žå¯Ÿ**ï¼šä¸»æµæµ‹è¯•框架都éµå¾ª Exit Code 约定报告测试结果。
| 测试框架 | Exit Code = 0 | Exit Code ≠0 |
|---------|--------------|---------------|
| pytest | 所有测试通过 | 至少一个失败/错误 |
| JUnit | 测试æˆåŠŸ | 测试失败 |
| Mocha | 全部通过 | 有失败 |
| npm test | æˆåŠŸ | 失败 |
**实现方å¼**:
```bash
# åœ¨æµ‹è¯•è„šæœ¬æœ«å°¾æ·»åŠ æ ‡å‡†åŒ–è¾“å‡º
test_command
rc=$?
echo "OMNIGRIL_EXIT_CODE=$rc"
```
**评分过程**:
```python
def grade_test(output_log):
# è§£æžæ ‡å‡†åŒ–æ ‡è®°
exit_code = parse_exit_code(output_log)
if exit_code == 0:
return "PASS"
else:
return "FAIL"
```
**优势对比**:
| 维度 | ä¼ ç»Ÿè§£æžå™¨æ–¹æ³• | Exit Code 方法 |
|-----|-------------|---------------|
| 开呿ˆæœ¬ | 高(需为æ¯ä¸ªé¡¹ç›®å†™è§£æžå™¨ï¼‰ | ä½Žï¼ˆæ ‡å‡†åŒ–ç»Ÿä¸€ï¼‰ |
| ç»´æŠ¤æˆæœ¬ | é«˜ï¼ˆæ—¥å¿—æ ¼å¼å˜åŒ–需更新) | 低(ä¸ä¾èµ–æ—¥å¿—æ ¼å¼ï¼‰ |
| 准确率 | ä¾èµ–è§£æžå™¨è´¨é‡ | 100%(实验验è¯ï¼‰ |
| 通用性 | 低(项目特定) | 高(跨框架通用) |
### 自动化 Fail2Pass 验è¯
**定义**:Fail2Pass 验è¯ç¡®ä¿åº”用 Gold Patch åŽï¼Œæµ‹è¯•从失败状æ€å˜ä¸ºé€šè¿‡çжæ€ã€‚
**自动化æµç¨‹**:
```
┌────────────────────────────────────────────────────────────â”
│ Fail2Pass éªŒè¯æµç¨‹ │
├────────────────────────────────────────────────────────────┤
│ │
│ 原始 Issue │
│ │ │
│ ├─► 应用 Patch å‰è¿è¡Œæµ‹è¯• ──► Exit Code = ? │
│ │ (期望:éž0,å³å¤±è´¥) │
│ │ │
│ ├─► 应用 Gold Patch │
│ │ │
│ └─► 应用 Patch åŽè¿è¡Œæµ‹è¯• ──► Exit Code = ? │
│ (期望:0,å³é€šè¿‡) │
│ │
│ 判æ–:Exit Code 从éž0å˜ä¸º0? │
│ ├─► 是 ──► 有效实例(ä¿ç•™ï¼‰ │
│ └─► å¦ â”€â”€â–º æ— æ•ˆå®žä¾‹ï¼ˆè¿‡æ»¤ï¼‰ │
│ │
└────────────────────────────────────────────────────────────┘
```
---
## 实验评估与结果
### 实验设置
**æ•°æ®é›†**:SweSetupBench-lite
- 12 个开æºä»“库
- 4 ç§ç¼–程è¯è¨€ï¼šPythonã€Javaã€JavaScriptã€TypeScript
- 671 个 Issue
**测试模型**:
| 模型 | Input Cost | Output Cost | å‘布日期 |
|-----|-----------|------------|---------|
| GPT-4.1-mini | $0.40/1M tokens | $1.60/1M tokens | 2025-04-14 |
| Gemini-2.5-flash | $0.15/1M tokens | $0.60/1M tokens | 2025-04-17 |
| DeepSeek-v3 | $0.30/1M tokens | $0.80/1M tokens | 2025-03-24 |
**è¶…å‚æ•°**:
- 最大è¿ä»£æ¬¡æ•°ï¼š5
- 温度:0.2
- Repository Explorer 最大检索轮次:10
- 并行进程:20
### RQ1:SWE-Builder 的有效性
**整体结果**:
| 模型 | Valid Rate | Success Rate | æˆæœ¬/实例 |
|-----|-----------|-------------|----------|
| GPT-4.1-mini | **40.1%** (269/671) | 57.2% | **$0.045** |
| Gemini-2.5-flash | 33.5% (225/671) | 49.8% | **$0.024** â |
| DeepSeek-v3 | 34.6% (232/671) | 50.8% | $0.043 |
**分è¯è¨€è¡¨çް**:
| 模型 | Python | Java | TypeScript | JavaScript |
|-----|--------|------|-----------|-----------|
| GPT-4.1-mini | 39.4% | 28.5% | **54.0%** | 38.7% |
| Gemini-2.5-flash | 29.8% | 19.4% | 48.3% | 40.5% |
| DeepSeek-v3 | **43.4%** | 11.8% | 43.8% | **42.3%** |
**关键å‘现**:
- GPT-4.1-mini 整体效果最佳,Valid Rate 达 40.1%
- Gemini-2.5-flash æˆæœ¬æœ€ä½Žï¼Œä»… $0.024/实例
- DeepSeek-v3 在 Python 和 JavaScript 上表现最好
- GPT-4.1-mini 在 Java 和 TypeScript 上领先
### RQ2:Exit Code 评分准确性
**评估方法**:人工检查 2,085 份测试报告
**结果**:
| çŽ¯å¢ƒæ¥æº | æ£€æŸ¥æ•°é‡ | 准确率 |
|---------|---------|-------|
| GPT-4.1-mini | 765 | **100%** |
| DeepSeek-v3 | 670 | **100%** |
| Gemini-2.5-flash | 650 | **100%** |
| **总计** | **2,085** | **100%** |
**结论**:Exit Code è¯„åˆ†ä¸Žäººå·¥æ£€æŸ¥ç»“æžœå®Œå…¨ä¸€è‡´ï¼Œè¯æ˜Žè¯¥æ–¹æ³•å¯é 。
### RQ3:Fail2Pass éªŒè¯æœ‰æ•ˆæ€§
**è¯„ä¼°æŒ‡æ ‡**:
- **Precision(精确率)**:预测为 Fail2Pass ä¸çœŸæ£ Fail2Pass 的比例
- **Recall(å¬å›žçŽ‡ï¼‰**ï¼šçœŸæ£ Fail2Pass ä¸è¢«é¢„测出的比例
**结果**:
| 模型 | 任务实例数 | TP | FP | TN | FN | Precision | Recall |
|-----|----------|----|----|----|----|-----------|--------|
| DeepSeek-v3 | 329 | 226 | 16 | 87 | 0 | **0.93** | **1.00** |
| GPT-4.1-mini | 381 | 269 | 19 | 93 | 0 | **0.93** | **1.00** |
| Gemini-2.5-flash | 320 | 223 | 25 | 72 | 0 | **0.90** | **1.00** |
| **总计** | **1,030** | **718** | **60** | **252** | **0** | **0.92** | **1.00** |
**结论**:
- 完美å¬å›žçŽ‡ï¼ˆ100%ï¼‰ï¼šæ²¡æœ‰æ¼æŽ‰ä»»ä½•çœŸæ£çš„ Fail2Pass 案例
- 高精确率(92%):少é‡å‡é˜³æ€§éœ€è¦äººå·¥äºŒæ¬¡ç¡®è®¤
---
## Error2Pass 现象分æž
### 什么是 Error2Pass?
**定义**:Error2Pass 是一ç§ç‰¹æ®Šæƒ…况,应用 patch **å‰**æµ‹è¯•å› é”™è¯¯ï¼ˆå¦‚ ImportErrorï¼‰æ— æ³•æ‰§è¡Œï¼Œåº”ç”¨ patch **åŽ**错误解决,测试能够è¿è¡Œå¹¶é€šè¿‡ã€‚
```
ä¼ ç»Ÿ Fail2Pass: Error2Pass:
Patch å‰ï¼šæµ‹è¯•è¿è¡Œï¼Œä½†å¤±è´¥ Patch å‰ï¼šæµ‹è¯•æ— æ³•è¿è¡Œï¼ˆImportError)
Patch åŽï¼šæµ‹è¯•è¿è¡Œï¼Œé€šè¿‡ Patch åŽï¼šæµ‹è¯•能够è¿è¡Œï¼Œé€šè¿‡
```
### 典型案例
**案例**:`python-attrs__attrs-830`
**Patch å‰ï¼ˆå·¦é¢æ¿ï¼‰**:
```python
# 测试å°è¯•导入新函数,但ä¸å˜åœ¨
from attr import to_bool # ImportError!
# 测试框架在收集阶段崩溃
# 没有实际执行任何测试
```
**Exit Code**:éž0(由于 ImportError)
**Patch åŽï¼ˆå³é¢æ¿ï¼‰**:
```python
# Gold Patch æ·»åŠ äº† to_bool 函数
# 测试å¯ä»¥æ£å¸¸å¯¼å…¥å’Œè¿è¡Œ
# 21 个测试全部通过
```
**Exit Code**:0
### 为什么 Error2Pass 有问题?
**æ ¸å¿ƒé—®é¢˜**:测试代ç 与解决方案代ç **紧密耦åˆ**
```
Gold Patch: 模型å¯èƒ½ç”Ÿæˆï¼š
æ·»åŠ å‡½æ•° to_bool() æ·»åŠ å‡½æ•° to_boolean() # 功能相åŒï¼Œå‘½åä¸åŒ
测试代ç : 测试代ç :
from attr import to_bool from attr import to_bool # 硬编ç 导入
结果: 结果:
测试通过 ✅ ImportError âŒ
(å³ä½¿åŠŸèƒ½æ£ç¡®ï¼‰
```
**åŽæžœ**:
- 模型å¯èƒ½ç”Ÿæˆé€»è¾‘æ£ç¡®çš„解决方案
- 但由于函数命åç‰ç»†èŠ‚ä¸Žæµ‹è¯•æœŸæœ›ä¸ä¸€è‡´
- 导致测试失败,**低估模型能力**
### 实验å‘现
**所有å‡é˜³æ€§ï¼ˆFP)都是 Error2Pass**:
- 60 个 FP 案例ç»äººå·¥å®¡æŸ¥ï¼Œå…¨éƒ¨ä¸º Error2Pass
- 这些案例ä¸åº”包å«åœ¨é«˜è´¨é‡ benchmark ä¸
**建议**:
- 构建 benchmark 时应过滤 Error2Pass 案例
- å¯é€šè¿‡æ£€æŸ¥ patch å‰é”™è¯¯ç±»åž‹è¯†åˆ«ï¼ˆImportErrorã€ModuleNotFoundError ç‰ï¼‰
---
## 与相关工作对比
### 现有数æ®é›†å¯¹æ¯”
| Benchmark | è¯è¨€ | 规模 | 自动化程度 | 特点 |
|-----------|-----|------|-----------|------|
| **SWE-bench** | Python | 2,294 | 部分自动化 | 最广泛使用的基准 |
| **SWE-bench Verified** | Python | 500 | äººå·¥éªŒè¯ | 高质é‡å集 |
| **OmniGIRL** | 多è¯è¨€ | 959 | 部分自动化 | å¤šæ¨¡æ€æ”¯æŒ |
| **SWE-Gym** | Python | 2,438 | 自动化 | 支æŒå¼ºåŒ–å¦ä¹ è®ç»ƒ |
| **R2E-Gym** | Python | 8,700+ | 自动化 | 程åºç”ŸæˆçŽ¯å¢ƒ |
| **SWE-Factory (本文)** | 多è¯è¨€ | åŠ¨æ€æž„建 | **完全自动化** | é¦–ä¸ªå…¨è‡ªåŠ¨åŒ–æµæ°´çº¿ |
### 自动环境设置方法对比
| 方法 | 环境构建 | 评分系统 | Fail2Pass | å¼€æº |
|-----|---------|---------|-----------|------|
| ExecutionAgent | ✅ 自动化 | ⌠需手动 | ⌠需手动 | ✅ |
| EnvBench | ✅ 自动化 | ⌠需手动 | ⌠需手动 | ✅ |
| RepoLaunch | ✅ 自动化 | ⌠需手动 | ⌠需手动 | ✅ |
| SetupAgent | ✅ 自动化 | ✅ 自动化 | ⌠需手动 | ⌠|
| **SWE-Factory** | ✅ **多智能体** | ✅ **Exit Code** | ✅ **自动化** | ✅ |
**SWE-Factory 的独特贡献**:
1. 首个**完全开æº**的跨è¯è¨€è‡ªåŠ¨åŒ–æµæ°´çº¿
2. **SWE-Builder** 多智能体系统高效构建环境
3. **Exit Code 评分法** 100% å‡†ç¡®çŽ‡ï¼Œæ— éœ€è§£æžå™¨
4. **自动化 Fail2Pass 验è¯** 92% 精确率ã€100% å¬å›žçއ
---
## 应用场景与价值
### 1. 大规模è®ç»ƒæ•°æ®é›†æž„建
**场景**:为强化å¦ä¹ è®ç»ƒï¼ˆå¦‚ SWE-Gym)构建数万级别的è®ç»ƒæ•°æ®
**价值**:
- æˆæœ¬ä»Ž $10+/实例 é™è‡³ $0.024/实例
- 构建 10,000 实例数æ®é›†ä»…需 ~$240
- 支æŒå¤šè¯è¨€ï¼Œæ‰©å¤§è®ç»ƒæ•°æ®å¤šæ ·æ€§
### 2. Benchmark æŒç»æ›´æ–°
**场景**:éšç€å¼€æºé¡¹ç›®å‘展,æŒç»æ·»åŠ æ–°çš„ Issue 到 Benchmark
**价值**:
- 自动化æµç¨‹å¯æŒç»è¿è¡Œ
- æ— éœ€äººå·¥å¹²é¢„å³å¯æ‰©å±• Benchmark
- ä¿æŒ Benchmark ä¸Žæœ€æ–°æŠ€æœ¯åŒæ¥
### 3. 领域特定 Benchmark 构建
**场景**:为特定领域(如金èžã€åŒ»ç–—软件)构建专用 Benchmark
**价值**:
- 快速定制领域特定评估集
- 支æŒå¤šç§ç¼–程è¯è¨€
- é™ä½Žé¢†åŸŸ Benchmark 构建门槛
### 4. 模型能力评估
**场景**:评估新模型在 GitHub Issue 解决任务上的表现
**价值**:
- æ ‡å‡†åŒ–è¯„ä¼°æµç¨‹
- å¯å¤çŽ°çš„å®žéªŒçŽ¯å¢ƒ
- 公平的能力对比
---
## 总结与展望
### æ ¸å¿ƒè´¡çŒ®
1. **SWE-Factory**:首个开æºçš„跨多è¯è¨€ GitHub Issue 解决 Benchmark è‡ªåŠ¨æž„å»ºæµæ°´çº¿
2. **SWE-Builder**:多智能体系统实现高效环境构建($0.024-$0.045/实例)
3. **Exit Code 评分法**:100% 准确率的自动化测试评分
4. **自动化验è¯**:92% 精确率ã€100% å¬å›žçŽ‡çš„ Fail2Pass 验è¯
5. **Error2Pass å‘现**:识别并分æžå½±å“ Benchmark è´¨é‡çš„特殊案例
### 关键数æ®
| æŒ‡æ ‡ | 数值 |
|-----|------|
| 构建æˆåŠŸçŽ‡ | 40.1% (GPT-4.1-mini) |
| æœ€ä½Žæž„å»ºæˆæœ¬ | $0.024/实例 (Gemini-2.5-flash) |
| Exit Code 评分准确率 | 100% |
| Fail2Pass 验è¯ç²¾ç¡®çއ | 92% |
| Fail2Pass 验è¯å¬å›žçއ | 100% |
### æœªæ¥æ–¹å‘
1. **扩展è¯è¨€æ”¯æŒ**:覆盖更多编程è¯è¨€ï¼ˆGoã€Rustã€C++ ç‰ï¼‰
2. **æå‡æˆåŠŸçŽ‡**:优化智能体å作ç–略,æé«˜çŽ¯å¢ƒæž„å»ºæˆåŠŸçŽ‡
3. **Error2Pass 过滤**:开å‘自动识别和过滤 Error2Pass 案例的机制
4. **å¤šæ¨¡æ€æ”¯æŒ**ï¼šé›†æˆæˆªå›¾ã€è§†é¢‘ç‰å¤šæ¨¡æ€ä¿¡æ¯ï¼ˆå‚考 SWE-bench Multimodal)
5. **实时 Benchmark**:构建æŒç»æ›´æ–°çš„åŠ¨æ€ Benchmark 系统
### 资æºé“¾æŽ¥
- **GitHub**:https://github.com/DeepSoftwareAnalytics/swe-factory
- **论文**:arXiv:2506.10954v1
- **æ•°æ®é›†**:SweSetupBench-lite(671 实例,4 ç§è¯è¨€ï¼‰
---
## å‚考资料
1. Jimenez et al. "SWE-bench: Can Language Models Resolve Real-World GitHub Issues?" ICLR 2024.
2. Pan et al. "SWE-Factory: An Automatic Issue Resolution Dataset Construction Pipeline via LLM-based Multi Agents." arXiv:2506.10954v1, 2025.
3. Pratt et al. "SWE-Gym: Training Software Engineering Agents to Resolve GitHub Issues." 2024.
4. Zhang et al. "OmniGIRL: A GitHub Issue Resolution Dataset with Multi-Modal UI Trajectories." 2025.
---
*æŠ¥å‘Šç”Ÿæˆæ—¶é—´ï¼š2025å¹´6月*
*基于 SWE-Factory 论文åŠå…¬å¼€èµ„料整ç†*
#AIç ”ç©¶ #SWE-Factory #GitHub #Benchmark #多智能体 #软件工程 #å°å‡¯
登录åŽå¯å‚与表æ€
讨论回å¤
0 æ¡å›žå¤è¿˜æ²¡æœ‰äººå›žå¤ï¼Œå¿«æ¥å‘è¡¨ä½ çš„çœ‹æ³•å§ï¼
勿ƒ…链接:
AIé”æŽ§ç½‘
|
艮岳网
|
è€è–›ä¸»æœº
|
å£ç¬› - PPT智能讲解
|
æ¥å哥的åšå®¢
|
3R教室