← 最新论文
💬 NLP

Learning to Commit: Generating Organic Pull Requests via Online Repository Memory

本文提出了“学习提交”(Learning to Commit)框架,通过在线仓库记忆机制让智能体从历史提交中提炼项目特定的编码风格与架构约束,从而生成更符合真实维护者期望的有机拉取请求。

原作者: Mo Li, L. H. Xu, Qitai Tan, Ting Cao, Yunxin Liu

发布于 2026-03-30
📖 1 分钟阅读☕ 轻松阅读

原作者: Mo Li, L. H. Xu, Qitai Tan, Ting Cao, Yunxin Liu

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文讲了一个关于**"AI 程序员如何真正融入团队”**的故事。

想象一下,你刚加入一家拥有几十年历史的老牌公司。你手里有一本厚厚的技术手册(大语言模型的基础训练数据),你非常聪明,能写出语法完美的代码。但是,当你第一次提交代码(Pull Request)时,老员工们却把它退回了。

为什么?因为你写的代码虽然功能是对的,但味道不对

  • 你重新发明了一个轮子,而公司里其实早就有一个现成的、更高效的工具。
  • 你用的命名风格和大家完全不一样。
  • 你修改文件的方式,违背了公司多年积累下来的“潜规则”。

这就叫**“缺乏有机性”(Lack of Organicity)**。你的代码像是个外星人写的,虽然能跑,但感觉格格不入。

这篇论文提出的解决方案叫**“学习提交”(Learning to Commit),它给 AI 装了一个“在线仓库记忆”**,让 AI 学会像人类新员工一样“入职培训”。

核心比喻:从“死记硬背”到“师徒带教”

1. 以前的做法:只看“最终成品”

现在的 AI 就像是一个只看过公司最终大楼照片的建筑师。

  • 现状:你给 AI 看现在的代码库,让它修 bug。
  • 问题:AI 不知道这栋楼是怎么建起来的。它不知道为什么这里要加根柱子(内部 API),也不知道为什么那个窗户要朝北(架构约束)。它只能瞎猜,结果修出来的东西虽然能住人,但和原来的建筑风格完全不搭。

2. 新做法:“在线仓库记忆” (Learning to Commit)

这篇论文让 AI 去**“穿越回过去”,像人类新员工一样,去阅读公司过去几年的所有会议记录(历史提交记录)**。

这个过程分为两步:

第一步:入职培训(对比反思)

  • 场景:AI 被关在一个房间里,面前是几年前的一个旧任务(比如“修复一个并发 bug")。
  • 盲猜:AI 先不看答案,自己试着写代码解决。
  • 看答案:然后,它看到了当时人类专家真正提交的代码(Oracle Diff)。
  • 找差距:AI 开始自我反省:“哎呀,原来这里应该用那个内部工具,而不是自己写个函数!”“原来这里要加个错误处理,风格要这样写!”
  • 记笔记:AI 把这些差距总结成一条条**“技能笔记”(比如:“在这个项目里,处理并发要用 X 模式”“文件命名要加前缀 Y")。这些笔记不是死板的规则,而是从历史中提炼出的“直觉”**。

第二步:实战演练(技能驱动)

  • 场景:现在,一个新的任务来了(未来的任务)。
  • 行动:AI 在写代码前,先翻开它的**“技能笔记”**。
  • 结果:它不再是一个只会写通用代码的“外人”,而是一个懂规矩、知道用现成工具、知道架构边界的“老员工”。它写出的代码,就像是从这个项目中自然生长出来的一样。

为什么这个方法很厉害?

  1. 零作弊(严格的时间切割)
    为了防止 AI 偷看答案,研究人员把时间线切得死死的。AI 只能用过去的历史数据来学习,而考试题目全是未来才发生的真实任务。这就像让 AI 在 2023 年学习,去解决 2024 年的问题,完全不可能作弊。

  2. 不仅仅是“对”,而是“像”
    以前的评测只看代码能不能跑通(功能正确)。这篇论文引入了新的评测标准:

    • 代码风格一致性:读起来像不像团队写的?
    • 内部 API 复用率:有没有偷懒重复造轮子?
    • 修改区域的合理性:是不是只改了该改的地方,没有乱动其他文件?

实验结果:真的有用吗?

研究人员在一个真实的、由专家维护的大型内部仓库上做了实验。

  • 定位更准:AI 知道该改哪个文件了(准确率从 61% 提升到了 80%)。
  • 更精简:AI 写的代码更短,废话更少(因为它知道用现成的工具)。
  • 更像人:在人类专家(或高级 AI 裁判)看来,AI 写的代码更像是一个资深员工写的,而不是一个刚毕业的实习生瞎写的。

总结

这就好比:

  • 以前的 AI:是一个拿着通用说明书的外来装修工,虽然能把墙刷白,但会把原本的古董家具拆了换新的。
  • 现在的 AI(Learning to Commit):是一个读过公司所有历史档案的学徒。它知道哪面墙不能动,知道哪个工具是老板最喜欢的,知道怎么干活才能被老板满意地通过。

这篇论文的核心思想就是:想要 AI 真正写好代码,不能只给它看“现在”,必须让它学会“过去”,把项目的“脾气秉性”刻进它的记忆里。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →