ðŸ 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 解决任务上的表现
价值:
- æ ‡å‡†åŒ–è¯„ä¼°æµç¨‹
- å¯å¤çŽ°çš„å®žéªŒçŽ¯å¢ƒ
- 公平的能力对比
总结与展望
æ ¸å¿ƒè´¡çŒ®
- SWE-Factory:首个开æºçš„跨多è¯è¨€ GitHub Issue 解决 Benchmark è‡ªåŠ¨æž„å»ºæµæ°´çº¿
- SWE-Builder:多智能体系统实现高效环境构建(\(0.024-\)0.045/实例)
- Exit Code 评分法:100% 准确率的自动化测试评分
- 自动化验è¯ï¼š92% 精确率ã€100% å¬å›žçŽ‡çš„ Fail2Pass 验è¯
- Error2Pass å‘现:识别并分æžå½±å“ Benchmark è´¨é‡çš„特殊案例
关键数æ®
| æŒ‡æ ‡ | 数值 |
|---|---|
| 构建æˆåŠŸçŽ‡ | 40.1% (GPT-4.1-mini) |
| æœ€ä½Žæž„å»ºæˆæœ¬ | $0.024/实例 (Gemini-2.5-flash) |
| Exit Code 评分准确率 | 100% |
| Fail2Pass 验è¯ç²¾ç¡®çއ | 92% |
| Fail2Pass 验è¯å¬å›žçއ | 100% |
æœªæ¥æ–¹å‘
- 扩展è¯è¨€æ”¯æŒï¼šè¦†ç›–更多编程è¯è¨€ï¼ˆGoã€Rustã€C++ ç‰ï¼‰
- æå‡æˆåŠŸçŽ‡ï¼šä¼˜åŒ–æ™ºèƒ½ä½“å作ç–略,æé«˜çŽ¯å¢ƒæž„å»ºæˆåŠŸçŽ‡
- Error2Pass 过滤:开å‘自动识别和过滤 Error2Pass 案例的机制
- å¤šæ¨¡æ€æ”¯æŒï¼šé›†æˆæˆªå›¾ã€è§†é¢‘ç‰å¤šæ¨¡æ€ä¿¡æ¯ï¼ˆå‚考 SWE-bench Multimodal)
- 实时 Benchmark:构建æŒç»æ›´æ–°çš„åŠ¨æ€ Benchmark 系统
资æºé“¾æŽ¥
- GitHub:https://github.com/DeepSoftwareAnalytics/swe-factory
- 论文:arXiv:2506.10954v1
- æ•°æ®é›†ï¼šSweSetupBench-lite(671 实例,4 ç§è¯è¨€ï¼‰
å‚考资料
- Jimenez et al. "SWE-bench: Can Language Models Resolve Real-World GitHub Issues?" ICLR 2024.
- Pan et al. "SWE-Factory: An Automatic Issue Resolution Dataset Construction Pipeline via LLM-based Multi Agents." arXiv:2506.10954v1, 2025.
- Pratt et al. "SWE-Gym: Training Software Engineering Agents to Resolve GitHub Issues." 2024.
- 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 æ¡å›žå¤è¿˜æ²¡æœ‰äººå›žå¤ï¼Œå¿«æ¥å‘è¡¨ä½ çš„çœ‹æ³•å§ï¼
推è
智谱 GLM-5 已上线
我æ£åœ¨æ™ºè°±å¤§æ¨¡åž‹å¼€æ”¾å¹³å° BigModel.cn ä¸Šæ‰“é€ AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推ç†ã€ä»£ç ã€æ™ºèƒ½ä½“综åˆèƒ½åŠ›è¾¾åˆ°å¼€æºæ¨¡åž‹ SOTA 水平。