CodeTaste: Can LLMs Generate Human-Level Code Refactorings?

本文提出了名为 CodeTaste 的基准测试,通过从开源仓库中提取多文件重构任务并结合静态检查来评估大语言模型,研究发现尽管模型在详细指令下表现良好,但在自主识别人类重构决策方面仍存在显著差距,而采用“先提议后实现”的策略能有效提升对齐效果。

Alex Thillen, Niels Mündler, Veselin Raychev, Martin Vechev

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

Each language version is independently generated for its own context, not a direct translation.

这篇论文讲述了一个关于人工智能(AI)程序员能否像人类专家一样,不仅写出能运行的代码,还能写出优美、整洁、易于维护的代码的故事。

为了让你更容易理解,我们可以把软件开发想象成盖房子,把代码库想象成一座巨大的城市

1. 背景:AI 能盖房子,但盖得“乱糟糟”

现在的 AI 编程助手(LLM)非常厉害,你让它修个窗户、加个门,它都能很快搞定。这就像 AI 能很快在城市的某个角落盖起一栋新房子。

但是,如果让 AI 长期维护这座城,问题就来了:

  • 堆砌杂物:AI 为了完成任务,喜欢到处乱塞东西,导致代码越来越长,像城市里堆满了废弃的纸箱。
  • 结构混乱:它盖的房子可能没有合理的承重墙,或者把厨房修在了卧室里。虽然人也能住进去(代码能运行),但以后想扩建或装修(维护代码)时,会发现根本动不了,一碰就塌。

人类程序员会做一件事叫**“重构”(Refactoring)。这就像城市改造**:把杂乱的街道拓宽,把违章建筑拆除,把功能相似的建筑合并,让整座城市更整洁、更通畅,而且不影响居民的正常生活(代码功能不变)。

论文的核心问题就是:AI 能像人类专家一样,主动发现哪里乱,并优雅地把它整理好吗?

2. 新工具:CODETASTE(代码“品鉴会”)

为了测试 AI 的水平,作者们发明了一个叫 CODETASTE 的测试工具。你可以把它想象成一个**“代码品鉴大赛”**。

  • 数据来源:他们从 GitHub 上挖出了 100 个真实的、由人类专家完成的“大型城市改造”案例(涉及几十甚至上百个文件的修改)。
  • 测试方法
    1. 给 AI 看任务:让 AI 去模仿人类专家的改造。
    2. 双重检查
      • 功能测试:改造后,城市里的居民(测试用例)还能正常生活吗?(代码不能跑崩)。
      • 结构测试:AI 是否真的把“乱堆的纸箱”搬走了?是否把“新修的漂亮街道”建好了?(通过静态分析规则检查)。

3. 比赛的两个关卡

这个大赛分两个难度等级:

🟢 关卡一:有详细图纸的“指令模式” (Instructed Track)

  • 场景:人类给 AI 一张超级详细的施工图纸,上面写着:“把 A 区的 50 栋房子拆了,搬到 B 区,并且把窗户颜色统一改成蓝色。”
  • 结果
    • 顶尖的 AI(如 GPT-5.2)表现不错,能照着图纸把活干好,得分高达 70%
    • 但这就像是一个听话的装修工,你让它干啥它干啥,但它自己不会动脑子。

🔴 关卡二:只有模糊需求的“开放模式” (Open Track)

  • 场景:人类只给 AI 一句模糊的话:“我觉得 A 区太乱了,你看着办,把它整理一下。” 没有图纸,没有具体指令。
  • 结果
    • 惨不忍睹。AI 的得分直接掉到了 个位数(不到 8%)
    • AI 的“偷懒”行为
      • 抓小放大:它可能只把某个房间里的一个错别字改了(比如把"color"拼成"colour"),就觉得自己完成任务了,完全忽略了整个街区结构混乱的大问题。
      • 暴力破解:它可能直接用一个粗暴的“替换命令”,把全城所有带"old"字样的都删了,结果把重要的东西也误删了,导致城市瘫痪。
      • 避重就轻:它不敢动那些复杂的结构,只敢在表面做点文章。

4. 关键发现:AI 缺的是“规划师”的大脑

论文发现,AI 最大的短板不是“动手能力”,而是**“规划能力”**。

  • 先想后做(Propose-then-implement):如果强制 AI 在动手前先写一份**“改造计划书”**,它的表现会好很多。这就像让装修工先画个草图,确认思路对了再动工。
  • 多方案择优:如果让 AI 想 5 个不同的改造方案,然后由一个“裁判”(另一个更强的 AI)从中挑出最像人类专家的那个方案,得分还能再提高。

5. 总结与启示

这篇论文告诉我们什么?

  1. AI 目前还是“高级技工”,不是“建筑大师”:如果你给它明确的指令,它能干得很漂亮;但如果你让它自己判断“哪里需要改进”,它往往会抓不住重点,甚至把事搞砸。
  2. 代码质量会“退化”:如果完全依赖 AI 自动写代码而不加干预,软件项目很快就会变得像一座“垃圾堆”,难以维护。
  3. 未来的方向:我们需要训练 AI 学会**“思考”“规划”,而不仅仅是“执行”**。只有当 AI 能像人类一样,主动发现代码中的“异味”并优雅地重构时,它才能真正成为人类程序员的得力助手,而不是制造技术债务的源头。

一句话总结
现在的 AI 程序员就像是一个只会听指令的机器人,你让它擦窗户它擦得亮,但你让它“把房间收拾整洁”时,它可能会把墙皮都刮下来。我们需要教会它**“审美”“规划”**,让它真正理解什么是好代码。