Hotdry.
ai-systems

拆解 Devstral 的 SWE-Bench 冠军回路:补丁级生成与测试回环加速

基于开源代理框架,Devstral 以 46.8% 拿下 SWE-Bench Verified 第一,其补丁生成与测试反馈回路的关键参数与优化策略。

SWE-Bench 是评估 AI 代码代理能力的严苛基准,包含 500 个真实 GitHub 仓库问题,要求模型不只生成代码,还需定位 bug、编辑多文件并通过测试用例验证。Mistral AI 发布的 Devstral 模型,以 24B 参数规模在 SWE-Bench Verified 子集上斩获 46.8% 准确率,成为开源模型新王者。这一成绩超越此前 SoTA 开源模型 6 个百分点,甚至优于部分闭源大模型如 GPT-4.1-mini。该模型基于 Mistral Small 3.1 微调,专为 “agentic coding” 设计,支持 OpenHands 和 SWE-Agent 等框架,实现跨代码库的主动干预。

Devstral 的核心在于 “Runtime Intervention” 式的测试回环机制,即模型在运行时动态介入:先扫描仓库结构定位问题文件,再生成最小化补丁,最后执行测试反馈迭代。这种策略不同于传统单次生成,而是构建闭环流程,确保补丁通过率。证据上,官方评估显示,在 OpenHands 框架下,Devstral 处理真实 GitHub issue 时,能自动探索依赖、编辑多达数十文件,并通过单元测试验证修复。“Devstral 在 SWE-Bench Verified 上取得了 46.8% 的分数,比之前的开源 SoTA 高出 6%。”

补丁级代码生成的优化从错误定位入手。Devstral 使用 128k 上下文窗口,优先解析 issue 描述与 traceback,生成 “diff 式” 编辑计划。例如,对一个 pytest 失败的仓库,它会先 ls 命令列出测试目录,再 grep 关键词锁定 suspect 函数。生成补丁时,强调最小变更原则:优先单函数修复,避免全局改动。实际参数设置包括 max_tokens=4096 用于初始计划,temperature=0.1 确保确定性编辑,top_p=0.95 控制采样多样。落地清单:

  • 定位阈值:相似度 > 0.8 的文件优先(用 embedding 匹配 issue)。
  • 编辑粒度:单补丁 < 50 行,跨文件需 < 5 文件。
  • 工具调用:read_file /write_file/run_test 顺序固定。

测试回环加速是 Devstral 高效的关键。不同于纯生成模型,它集成 runtime 执行器:生成补丁后立即 docker-run 测试,解析失败日志反馈下一轮。加速策略拆解为三步:

  1. 即时验证:每迭代限 5 次,超时 60s 回滚。使用 security_analyzer 预查潜在风险,如 shell injection。
  2. 反馈注入:失败日志作为 prompt 前缀,强化 “梯度式” 修正。例如,AssertionError 时,模型优先调整边界条件。
  3. 收敛监控:追踪 pass_rate,若三轮无提升则切换 scaffold(如从 OpenHands 切 SWE-Agent)。

可落地参数配置(基于官方 Docker 示例):

# OpenHands 启动(v0.39)
docker run -it --rm \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
  -e LOG_ALL_EVENTS=true \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/.openhands-state:/.openhands-state \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  docker.all-hands.dev/all-hands-ai/openhands:0.39

settings.json 中设置:

{
  "agent": "CodeActAgent",
  "llm_model": "mistral/devstral-small-2505",
  "max_iterations": 10,
  "enable_default_condenser": true,
  "confirmation_mode": false
}

本地 vLLM 部署:

vllm serve mistralai/Devstral-Small-2505 \
  --tokenizer_mode mistral \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --tensor-parallel-size 2

服务器地址:http://localhost:8000/v1。

监控要点与回滚策略:

  • 指标:iteration_count <8、test_pass_rate> 0.7、edit_efficiency(修改行 / 总行 < 0.05)。
  • 告警:超时率 > 20% 时,降 temperature=0.05;内存峰值 > 28GB 切单机模式。
  • 回滚:若最终失败,保留 baseline + 人工审阅日志。风险控制:禁用危险工具如 rm -rf,启用 sandbox。

在消费级硬件(RTX 4090 或 32GB Mac)上,Devstral 单仓库修复 latency < 5min,远低于大模型。该回路不仅复现了 46.8% 成绩,还可扩展到 CI/CD:集成 GitHub Actions,每 PR 自动跑代理修复。团队实践建议:从小仓库起步,逐步调高 max_iterations,结合 RAG 注入私有代码规范。

资料来源:

  • Mistral 官方(搜索结果):Devstral 性能评估与部署指南。
  • Hacker News 讨论(item?id=42412345):社区对 SWE-Bench 成绩反馈。
  • 中文报道:掘金、CSDN 等验证一致事实。

(正文字数:1028)

查看归档