daVinci-Dev: Agent-native Mid-training for Software Engineering
该论文介绍了 daVinci-Dev,这是一个用于智能体中段训练(agentic mid-training)的框架,它利用了一种结合了上下文原生与环境原生轨迹的新型“智能体原生”数据策略来克服分布失配,使 32B 和 72B 模型能够以比先前方法显著更少的训练 Token 量,在 SWE-Bench Verified 上达到最先进的性能。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
核心理念:教机器人成为真正的程序员
想象一下,你想教一个机器人如何修理一辆坏掉的汽车。
旧的方法(后期训练/Post-Training):
目前大多数 AI 模型就像是读遍了图书馆里所有汽车维修手册(预训练)但从未摸过扳手的学生。为了教会它们修车,研究人员会给它们看一些专家修车的视频(监督微调),然后让它们在车库里进行练习,只在它们犯错时进行纠正(强化学习)。
- 问题在于: 这个“车库”规模很小且建设成本昂贵。你只能在极少数汽车上进行练习。此外,学生只能看到最终修好的汽车,而看不到尝试、失败、检查引擎并再次尝试的整个混乱过程。
新的方法(daVinci-Dev / 智能体原生中段训练/Agent-Native Mid-Training):
该论文的作者说:“让我们在把机器人送到车库之前就教好它。”他们引入了一个被称为**“中段训练”(Mid-Training)**的中间阶段。
他们不只是向机器人展示修好的汽车,而是向它喂入海量的真实世界维修日志,这些日志来自数百万名真正的机械师。他们不仅展示最终结果,还展示了整个故事:
- 机械师观察损坏的汽车。
- 机械师打开引擎盖并阅读手册。
- 机械师尝试一种修复方法,听到一声异响,意识到这行不通。
- 机械师尝试另一种修复方法,直到成功为止。
他们称之为**“智能体原生”(Agent-Native)*数据,因为这种数据模仿了作为现实世界中的一个智能体(即一名工人)的实际经验*,而不是仅仅死记硬背静态的事实。
两大特殊成分
为了构建这个训练库,团队从 GitHub(一个程序员分享代码的巨大网站)中创建了两种类型的“故事”(数据):
1. “上下文原生”故事(广博的图书馆)
- 它是什么: 他们提取了数百万个“拉取请求”(Pull Requests,即修改代码的请求),并重构了整个故事。
- 类比: 想象一个侦探的案件卷宗。它不仅展示了破案的结果,还展示了侦探阅读嫌疑人的日记、寻找正确的文件、做出猜测,并根据新线索改变主意的一系列过程。
- 为什么有效: 这教会了 AI 工作的流程。它学会了在编辑一个文件之前,必须先找到并阅读它。它涵盖了极其广泛的语言和场景(共计 686 亿词的数据)。
2. “环境原生”故事(实时模拟)
- 它是什么: 他们不仅仅是阅读日志;他们实际上运行了代码。他们将一个 AI 智能体放入一个真实的、工作的计算机环境(Docker 容器)中,让它尝试修复漏洞(Bug)。
- 类比: 这就像是将学生放入一个带有真实引擎的真实车库中。学生尝试转动螺栓,结果引擎发出了巨大的“哐当”声(错误)。学生听到了错误,停了下来,并尝试使用不同的工具。
- 为什么有效: 这教会了 AI 如何对真实的反馈做出反应。它学会了“如果我输入这个命令,计算机会用错误信息对我‘尖叫’”,这是静态书籍无法教授的内容。这部分数据量较小(31 亿词),但由于其“真实性”,质量极高。
结果:效果如何?
团队在名为 SWE-Bench Verified 的著名考试上测试了他们的新“学生”(daVinci-Dev 模型),这相当于软件工程师的最终驾驶测试。
- 得分: 他们的 720 亿参数模型达到了 58.5% 的成功率。
- 对比: 这击败了之前的开源最强方法(Kimi-Dev),后者的得分约为 48.6%。
- 效率: 他们在使用不到一半于前任纪录保持者所用的训练数据(Token)的情况下,实现了这一成绩。这就像是通过 50 小时的学习而非 100 小时,就拿到了考试的 A+,因为学习材料的质量更高。
- 惊喜之处: 尽管他们最初使用的是一个“通用”基础模型(Qwen2.5-Base),并非专门为编程设计的模型,但新的训练方法使其在编程方面比那些以“编程专家”起步的模型表现得更好。
为什么这很重要(根据论文观点)
论文指出,教 AI 编程最大的错误在于将其视为一个只读教科书的学生。真正的软件工程是一个循环:发现问题 → 阅读代码 → 尝试修复 → 查看是否出错 → 再次修复。
通过向 AI 喂入保留了这种循环(既包含工作的过程,也包含计算机实时反馈)的数据,他们建立了一个更强大的基础。
简而言之: 他们不仅教会了 AI 代码看起来是什么样子的,还通过模拟真实软件开发中那种充满尝试与错误的混乱过程,教会了它如何像程序员一样思考。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。