LLM能否替代人类进行代码分块?——遗留系统现代化的新突破

论文信息

@misc{glasz2025llms,
  title={Can LLMs Replace Humans During Code Chunking?},
  author={Glasz, Christopher and Escamilla, Emily and Scott, Eric O and others},
  journal={arXiv preprint arXiv:2506.19897},
  year={2025}
}

研究背景:当老代码遇上智能模型的「语境瓶颈」

想象一下,你需要翻译一本古代竹简上的文字,但每次只能看10个字——这就是LLM处理政府遗留代码时的真实困境。

政府系统中仍在运行的MUMPS、ALC等语言编写的软件,就像编程世界的「活化石」:一段代码可能包含数百万行,而GPT-4o等主流LLM的语境窗口通常只有8k-32k tokens。比如美国退伍军人事务部的VistA电子健康记录系统,其MUMPS代码库包含近2000个模块,直接投喂给LLM就像让小学生读《资本论》——信息过载导致理解崩塌。

更麻烦的是,这些遗留语言在LLM训练数据中极其稀缺。就像让AI学拉丁语却只给它英语教材,模型对代码结构(如MUMPS的子例程、ALC的CSECT段)的理解近乎空白。传统分块方法要么按行硬切(破坏函数完整性),要么依赖AST解析器(但很多老语言根本没有),导致LLM生成的文档要么「断章取义」,要么「凭空捏造」。

创新点:让LLM自己当「剪辑师」

这篇论文的核心脑洞是:既然LLM擅长理解语言,为何不让它自己决定如何分块代码?

以往研究中,代码分块就像用固定尺寸的饼干模具切割面团——要么按行数切(固定长度分块),要么按语法结构切(AST分块)。但论文提出的「LLM分块法」像经验丰富的厨师,根据代码逻辑自然分段:遇到函数定义就停,碰到循环体就整体打包,甚至能识别遗留语言特有的标记(如MUMPS的LABEL:)。

更颠覆的是,实验证明LLM分块比人类专家做得更好:生成的模块注释事实性提升20%,有用性提升10%。这就好比让AI帮你总结小说章节,它不仅能抓住主线,还能点出你忽略的细节。

研究方法和思路:三步拆解「代码分块实验」

1. 分块策略大比拼:三类方法同台竞技

  • 朴素分块:全文件投喂(不切分)vs 固定长度切分(比如每512 tokens一段),简单粗暴但容易切坏代码逻辑。
  • 结构分块:用AST解析器识别模块(如MUMPS子例程),单模块切一块或合并多模块,依赖语言语法结构。
  • 专家驱动分块:人类专家手工分块 vs LLM分块(给LLM指令:「把代码分成自包含的逻辑块」),后者会根据语境限制自动调整。

2. 数据集与模型:老代码与新模型的碰撞

  • 数据:ALC(沃尔玛开源代码,1.3万行)和MUMPS(VistA系统,5千行),覆盖政府遗留系统典型场景。
  • LLM:GPT-4o、Claude 3 Sonnet、Mixtral、Llama 3,测试不同模型的分块能力。

3. 评估指标:如何判断分块好坏?

  • 分块精度:LLM分块点与人类专家的匹配程度,比如在MUMPS中,LLM分块的召回率接近100%。
  • 文档质量:让LLM自评注释的完整性、事实性(是否 hallucinate)、可读性、有用性。例如,LLM分块生成的注释比人工分块多包含20%的关键功能描述。

主要贡献:给行业带来的三个「落地价值」

  1. 效率革命:政府遗留系统现代化中,人工分块代码占总工作量的30%+。LLM分块可自动化这一流程,相当于让10个专家同时开工,成本直降。

  2. 质量提升:传统分块方法生成的注释常「隔靴搔痒」,而LLM分块能捕捉代码深层逻辑。比如在ALC代码中,LLM注释对寄存器操作的解释准确率比人工高15%。

  3. 通用性突破:无需为每种遗留语言开发AST解析器,LLM分块通过「指令学习」即可适配新语言。就像AI翻译器,从英语→中文扩展到拉丁语→中文,只需更新指令而非底层架构。


一段话总结

本文探讨了大型语言模型(LLMs)在政府遗留代码(如ALC和MUMPS)现代化过程中进行代码分块的能力,针对传统分块方法在处理超长代码和遗留语言时的局限性,研究了多种分块策略对LLM生成文档质量的影响。实验表明,LLM分块方法在精度和召回率上与人类专家分块高度一致,且生成的模块注释事实性最高提升20%、有用性提升10%,证实LLMs可有效替代人工进行大规模代码库分块,为遗留系统现代化提供了高效解决方案。


思维导图

在这里插入图片描述


详细总结

一、研究背景与目标
  1. 遗留代码现代化挑战:政府企业软件常使用MUMPS、ALC等遗留语言,代码 token 长度超出现有LLM语境窗口,且LLM对遗留语言训练不足。
  2. 代码分块的重要性:传统按行分块可能破坏代码逻辑结构,AST解析器对部分语言不可用,亟需自动化分块方法。
  3. 研究目标:探索LLM在遗留代码分块中的应用,优化模块注释生成,解决输入限制问题。
二、研究方法
  1. 分块方法分类
    类别具体方法语境窗口
    朴素分块全文件、固定长度分块无限/可变
    结构分块单模块、多模块(基于AST)无限/可变
    专家驱动人工分块、LLM分块无限/可变
  2. 数据集:ALC(Walmart Labs开源代码,12文件54模块13344行)、MUMPS(OSEHRA VistA系统,78文件1948模块5107行)。
  3. LLM模型:GPT-4o、Claude 3 Sonnet、Mixtral、Llama 3,用于生成模块注释。
  4. 评估指标
    • 分块质量:以人工分块为基准,计算精度(分块点匹配率)和召回率(人工分块点被识别率)。
    • 文档质量:通过LLM自评,评估完整性、幻觉率、可读性、有用性(100分制)。
三、关键研究结果
  1. 分块方法效果对比
    • MUMPS corpus:LLM分块精度/召回率最高,单模块分块因语言结构特性也表现优异。
    • ALC corpus:仅LLM分块与人工分块有显著匹配,其他方法精度/召回率接近0。
  2. 文档生成质量
    • LLM分块生成的注释比人工分块:事实性高20%、有用性高10%。
    • GPT-4o整体表现最佳,Mixtral和Llama 3幻觉率较高。
  3. 语境窗口影响
    • MUMPS:语境越长注释越准确(正相关,ρ=0.199)。
    • ALC:过大语境反降低精度,512 token分块效果更优。
四、结论与意义
  1. LLM分块的可行性:可替代人工分块,尤其在AST解析器不可用时,降低代码现代化人力成本。
  2. 模型与策略适配:不同LLM对分块策略响应不同,需根据模型选择最优分块方法。
  3. 实际应用价值:为政府遗留系统现代化提供自动化分块方案,提升文档生成质量。

关键问题

1. 哪种代码分块方法最接近人类专家分块?

答案:在MUMPS和ALC代码中,LLM分块方法表现最优,其分块点与人工分块的精度和召回率显著高于其他方法。例如,在MUMPS中,LLM分块的召回率接近人工分块,而ALC中仅LLM分块与人工分块有明显匹配。

2. LLM分块对文档生成质量有何具体提升?

答案:相比人工分块,LLM分块生成的模块注释事实性提高20%,有用性提高10%。其中,GPT-4o生成的注释在完整性和有用性上表现最佳,而Claude 3 Sonnet、Mixtral、Llama 3在事实性方面更优。

3. 语境窗口大小如何影响LLM分块效果?

答案:语境窗口的影响因语言而异。在MUMPS中,语境越长注释越准确(正相关),而ALC中过大语境会降低精度,512 token分块效果更优。这表明需根据代码语言特性调整语境窗口大小。

总结:LLM成为「代码考古学家」的得力助手

这篇论文证明:在遗留代码现代化场景中,LLM不仅能「读懂」代码,还能「剪辑」代码。当面对百万行级的ALC/MUMPS代码时,LLM分块法既能保持代码逻辑的完整性,又能生成比人类更精准的文档。这为政府IT系统升级提供了「智能手术刀」——无需推翻重来,就能让老代码焕发新生。

当然,挑战依然存在:不同LLM对分块策略的适应性不同(如GPT-4o在小语境下表现更好),部分极端复杂的代码结构仍需人工校验。但毫无疑问,LLM已从「代码生成工具」进化为「代码理解引擎」,开启了遗留系统现代化的新篇章。

更多推荐