FrogNano SWE-bench完全解读:4B小模型如何从39.4%一路涨到61.5%
FrogNano SWE-bench完全解读:4B小模型如何从39.4%一路涨到61.5%
FrogNano 是微软开源的 4B 参数量仓库级 AI 编程智能体,基于 Qwen3.5-4B 衍生。本文带你完整看懂它如何在 SWE-bench Verified 上把 Avg@3 解决率从 39.4% 一路提升到 61.5%,并讲清楚训练方法、全部成绩、硬件要求与上手方式。
📌 一句话总结:没有用任何更强模型的"标准答案"做蒸馏,只靠约 1500 个合成 SWE 任务 + 5 轮强化学习,就把 4B 小模型的编程智能体能力拉高了 22.1 个百分点。
什么是 FrogNano:一个 4B 仓库级编程智能体
FrogNano 不是聊天模型,而是一个专攻"真实代码仓库"的编程智能体(Coding Agent)。给它一个仓库快照和一段英文 Issue 描述,它会:
- 🔍 自主导航代码库、跨文件理解上下文、定位 Bug
- ✏️ 生成结构化工具调用,读取/编辑文件、搜索代码、执行 Shell 命令和测试
- 🔄 根据命令与测试反馈,迭代修改并生成多文件补丁(Patch)
核心规格一览:
| 项目 | 规格 |
|---|---|
| 参数量 | 约 4.66B(BF16 权重约 9.3 GB) |
| 基座模型 | Qwen3.5-4B(dense 32 层混合 Gated DeltaNet + 门控注意力) |
| 上下文长度 | 评估配置约 131K tokens(配置上限 256K) |
| 训练方式 | 纯文本后训练,约 1500 个合成 SWE 任务 + 强化学习 |
| 发布时间 | 2026 年 9 月 22 日 |
| 许可证 | Apache License 2.0 |
详细模型卡片见 README.md,架构参数(32 层、2560 hidden_size、混合线性注意力层分布等)可直接查看 config.json。
为什么说 SWE-bench 是编程智能体的"金标准"
在解读分数之前,先搞懂两个关键概念:
SWE-bench Verified 收录了 500 个来自真实 Python 仓库、经人工验证的 Issue。智能体从原始仓库出发,最终提交一个补丁;只有当补丁通过所有 fail-to-pass 测试(原来失败的测试现在通过)且保持 pass-to-pass 测试(原来通过的测试不回归)时,任务才算成功。
两种常见计分方式:
- Avg@3:每个任务采样 3 次,取单次成功率的平均值——衡量"稳不稳"
- Pass@3:3 次采样中只要有一次成功就算过——衡量"能不能做到"
评测统一使用微软的轻量五工具 Leaf harness,每条轨迹预算 150 步交互、约 131K 上下文 tokens、采样温度 0.6,方法细节见 README.md。
FrogNano 是怎么训的:1500 个合成任务,5 轮强化学习
这是本文最核心的部分。整个后训练流程可以概括为"合成任务 → 在线强化学习 → 校准淘汰"三步循环:
1️⃣ TaskPilot 生成任务:AI 任务生成模型从真实仓库快照出发,自动生成问题描述、参考补丁和隐藏测试,构成一个可执行的训练环境。
2️⃣ 可执行验证:生成的 fail-to-pass 测试必须在原始仓库上失败、在参考补丁上通过;回归测试必须保持稳定。不合格的任务直接丢弃。
3️⃣ 策略校准(关键创新):用"当前版本的 FrogNano"去跑任务,只保留"有对有错"的混合结果任务——全对的任务没有信号,全错的任务学不到东西,正好卡在模型能力边界上的任务才最有训练价值。任务随策略演化不断重新校准。
⚡ 最大的不同点:整个过程没有使用任何更强模型的解题轨迹、动作、推理记录或补丁目标——不是行为蒸馏,而是纯靠可执行奖励的强化学习。这在 4B 量级模型上是相当罕见的路线。
五轮迭代的 SWE-bench Verified 成绩
| 阶段 | Avg@3 解决率 | 说明 |
|---|---|---|
| 基座 Qwen3.5-4B | 39.4% | 起点(同一 Leaf harness 下评测) |
| 第 1 轮 RL 后 | 49.1% | +9.7 |
| 第 2 轮 RL 后 | 53.1% | +4.0 |
| 第 3 轮 RL 后 | 56.7% | +3.6 |
| 第 4 轮 RL 后 | 59.1% | +2.4 |
| 第 5 轮 RL 后 | 61.5% | +2.4 |
几个值得注意的细节:
- 累计提升 22.1 个百分点,相对基座约 +56% 的相对提升
- 前 4 轮使用 65,536 token 上下文上限、75 个工具轮次;第 5 轮把上下文翻倍到约 131K、工具轮次提升到 150——长上下文导航能力的提升是最后一轮大涨的重要因素
- 每轮 RL 允许每轮助手回复最多生成 8,192 tokens,训练数据总量在 1B~1T tokens 区间
训练数据构成(源码、Issue 描述、参考补丁、生成测试、工具调用、Shell 输出、测试日志等)详见 README.md。
FrogNano 成绩全览:4 个基准测试怎么解读
验证集成绩之外,官方还在 3 个留出测试集上做了泛化验证:
| 基准测试 | 规模 | FrogNano 成绩 | 考察点 |
|---|---|---|---|
| SWE-bench Verified | 500 个 Python Issue | Avg@3 61.5% / Pass@3 71.0% | 真实仓库修 Bug(验证集) |
| SWE-bench Pro | 731 个长程任务,11 个仓库,覆盖 Python/JS/TS/Go | Avg@3 37.6% / Pass@3 47.6% | 跨语言、更长程任务 |
| Terminal-Bench 2.0 | 89 个任务 | Avg@3 31.1% | 终端操作、系统管理、ML 等综合任务 |
| PatchEval-Verified | 230 个 2015–2025 年真实 CVE | Avg@3 47.3% | 安全漏洞修复(动态验证器判定) |
如何解读这组数字:
- 📊 SWE-bench Pro 从 61.5% 回落到 37.6% 属于正常现象——跨语言 + 长程任务难度远高于纯 Python 单仓库场景
- 🔐 PatchEval-Verified 47.3% 说明它修复真实安全漏洞的能力相当可观,且验证不要求与开发者原始方案一致
- 61.5% 的 Avg@3 在 4B 参数量级里属于第一梯队,尤其考虑到"零蒸馏"的训练路线
FrogNano 硬件需求与模型文件清单
硬件与运行时:BF16 下权重约 9.3 GB,再叠加 KV Cache、工具调用并发等运行状态,上下文接近 131K 时显存需求会显著上升。官方文档化的 rollout 配置使用 SGLang 跑在 GPU 服务器上;架构兼容 Hugging Face Transformers、vLLM、SGLang、KTransformers。CPU 推理、量化版本暂未验证,不建议使用。
仓库文件结构(当前镜像包含全部推理所需资产):
| 文件 | 作用 |
|---|---|
| model-00000-of-00002.safetensors、model-00001-of-00002.safetensors | 模型权重(分片存储) |
| model.safetensors.index.json | 权重分片索引 |
| config.json | 模型架构配置(Qwen3.5、32 层混合注意力) |
| tokenizer.json、vocab.json、merges.txt | 分词器资产(词表约 248K) |
| chat_template.jinja | 对话/工具调用模板(内置 function call 格式) |
| preprocessor_config.json、video_preprocessor_config.json | 继承自基座的视觉预处理配置(FrogNano 不启用) |
下载与快速上手:三步跑起 FrogNano
第 1 步:下载模型
git clone https://gitcode.com/hf_mirrors/microsoft/FrogNano-4B-2609
第 2 步:准备推理运行时
安装支持 Qwen3.5 架构的推理框架(Transformers / vLLM / SGLang / KTransformers 任选其一,官方训练侧使用 SGLang)。
第 3 步:接入 Leaf 交互循环
仓库级智能体使用需要三件套:
- 模型 tokenizer 与 chat_template.jinja 对话模板
- JSON-schema 格式的工具调用解析
- Leaf 的 5 个工具循环:文件读取、写入/编辑、glob 搜索、Shell 执行、测试运行
关键约定:回复中包含工具调用则交互继续,不含工具调用则交互终止——这意味着模型学会"什么时候收工提交补丁"也是训练出来的能力。
⚠️ 建议将工具执行放在隔离沙箱中,配合权限边界、超时和资源限制,网络访问默认关闭。
使用边界:FrogNano 擅长什么,不擅长什么
✅ 最适合的场景
- 英文 Issue 描述 + Python 为主的代码仓库
- 有可执行测试套件、可复现环境的项目
- Bug 诊断修复、限定范围的功能实现、回归修复
- 研究长程编程智能体(long-horizon coding agent)
❌ 需要注意的局限
- 不支持中文交互与主流多语言编程场景:后训练数据以英文、Python 为主,非英文表现未做验证
- 图片/视频输入不可用:视觉组件只是从基座继承,未做后训练和评测
- 通过测试 ≠ 补丁正确安全:生成的补丁可能绕过可用测试但仍存在缺陷或漏洞,必须经过人工代码审查、回归测试与安全测试后才能合并
- 不是产品级安全对齐模型:后训练目标是编码性能而非内容安全,不适合无人监督的自主生产部署
常见问题(FAQ)
Q1:4B 模型真的能跑 131K 上下文吗?显存要多少? 可以。评估配置约 131K tokens,但权重之外还需为 KV Cache 预留显存,上下文越长占用越大,具体显存配置建议按实际 GPU 验证后再上线。
Q2:为什么不用更强模型蒸馏,反而效果这么好? 行为蒸馏会让小模型"模仿"大模型的解题路径,容易引入大模型才会依赖的上下文模式。FrogNano 用可执行测试做奖励,让模型自己探索"读代码 → 改代码 → 跑测试"的闭环,学到的能力更贴合真实工具环境,泛化到留出基准上更稳。
Q3:和基座 Qwen3.5-4B 相比,其他能力退化了怎么办? FrogNano 定位是仓库级编程智能体研究产物,官方明确不对其通用语言、数学、多模态能力做背书。如果你的业务需要全能模型,建议保留基座版本做日常对话。
总结
FrogNano-4B-2609 证明了三个观点:小模型 + 可执行奖励强化学习 + 任务动态校准,足以在 SWE-bench 这类金标准基准上实现 22.1 个百分点的大幅提升;零蒸馏路线让能力更"干净";而 PatchEval-Verified 47.3% 的成绩则表明它在安全漏洞修复方向同样有实用价值。对于研究编程智能体和构建人类监督下的编码辅助工作流,这是一个值得部署评估的高性价比开源模型。