CoRaCommit: A VS Code Extension for Commit Message Generation with Exemplar Retrieval
CoRaCommit 是一款 VS Code 扩展程序,它通过检索相似范例以获取上下文、比较并行的 LLM 输出,并根据用户反馈动态调整建议,从而在质量指标上超越了现有工具,提升了提交信息的生成效果。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你是一名软件开发人员。每当你完成一项小工作时,你都必须将其保存到项目的历史记录中。为此,你需要写一条“提交信息”(commit message)——一段解释你更改了什么的简短说明。这就像是在为购买行为编写收据一样;它会告诉你(以及你的团队)你到底买了什么,以及为什么要买。
问题在于,编写这些收据非常枯燥。开发人员正忙于修复漏洞和构建功能,所以他们经常跳过这些注释,或者写一些模糊的注释,比如“修复了一些东西”或表达不一致。这使得以后很难理解项目的历史记录。
CoRaCommit 应运而生,这是一个旨在解决此问题的工具。它就像一个住在你的编程软件(VS Code)里的智能助手,为你编写这些注释,但它拥有一些特殊的技巧,能让这些注释真正变得出色。
以下是它的工作原理,我们使用简单的类比来解释:
1. “智能图书管理员”(检索增强生成)
大多数编写提交信息的工具只是查看你的代码更改并猜测你做了什么。这就像是一个厨师仅仅通过看台面上摆放的原材料,就试图描述一道新菜肴。
CoRaCommit 则不同。在编写注释之前,它会像一个智能图书管理员一样行动。它查看你的代码更改,并立即前往一个庞大的过去项目注释库(称为 ApacheCM 数据集)中进行查找。它会找到与你当前所做工作非常相似的历史注释。
- 类比: 如果你正在修理水管漏水,CoRaCommit 不仅仅是靠猜;它会找到去年某人修理类似水管漏水时的记录。它利用那条旧注释作为“参考资料”或“小抄”,来帮助编写你的新注释。这确保了语言风格与人类过去使用的风格保持一致。
2. “口味测试”(多大语言模型/Multiple LLMs)
CoRaCommit 不仅仅是要求一个 AI 来编写注释,而是同时要求好几个不同的 AI 来编写。
- 类比: 想象你在点餐。你不是只向一位服务员寻求建议,而是请三位不同的厨师各做一个小样。然后你会得到三个不同版本的提交信息。你可以阅读所有的版本,挑选你最喜欢的一个,并可以对其进行微调。这给了你选择的空间,而不是只有一个猜测结果。
3. “学习教练”(反馈驱动的推荐)
这是该工具的杀手锏。CoRaCommit 在你选定一条消息后并不会停止工作。它会观察你的行为。
- 类比: 把它想象成一个观察比赛的体育教练。
- 如果你选择了由“AI 厨师 A”编写的消息且没有进行任何修改,教练就会给厨师 A 打高分。
- 如果你选择了“AI 厨师 B”的消息,但不得不重写其中的一半内容,教练会给厨师 B 打中等分数。
- 如果你完全忽略了“AI 厨师 C”,教练会给他们打低分。
随着时间的推移,该工具会学习哪些 AI 最擅长编写特定类型的任务。如果你正在修复一个数据库错误,它可能会学到,即使“AI 厨师 B”更擅长编写关于用户界面的内容,但在处理数据库错误这类特定工作时,“AI 厨师 A”才是最合适的。它会创建一个个性化的排名,以便在下次任务中帮你推荐最合适的 AI。
4. “隐私卫士”(预处理)
在将你的代码发送到云端进行处理之前,该工具会在你的电脑上进行快速清理。它会剔除敏感信息,如密码或密钥,并移除不需要读取的二进制文件(如图像)。这确保了只有必要的文本被发送出去,从而保障你的代码安全。
结果
作者将这个工具与其他类似的流行工具进行了对比测试。他们使用了 945 个真实的实际代码更改来观察哪个工具编写的注释效果最好。
- 结论: CoRaCommit 赢得了胜利。它生成的注释与人类专家编写的注释非常接近。
- 原因: 因为它不仅仅是靠猜;它利用“智能图书管理员”寻找相似的历史案例,为 AI 提供了更好的上下文支持。
总结
CoRaCommit 是一个 VS Code 扩展程序,它通过以下方式帮助开发人员编写更好的项目历史记录:
- 查找相似的历史注释作为参考。
- 要求多个 AI 编写草稿,以便你可以选择最好的一个。
- 从你的选择中学习,从而为未来的任务推荐最合适的 AI。
- 在发送代码前进行清理以保护隐私。
它将编写提交信息这一枯燥的任务转变为一个更智能、更快且更准确的过程。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。