[Paper] TraceCoder:基于追踪的多智能体框架用于自动调试 LLM 生成的代码

发布: (2026年2月7日 GMT+8 00:59)
7 分钟阅读
原文: arXiv

Source: arXiv - 2602.06875v1

概述

大型语言模型(LLMs)可以编写代码,但生成的代码片段常常包含只有在运行时才会显现的隐藏错误。TraceCoder 引入了一种多代理系统,监视程序的执行,精准定位故障的真实原因,并迭代修复代码——就像人类调试器一样。作者们展示了,这种基于追踪的方式相较于现有最强方法,可将自动调试成功率提升超过 30 %。

关键贡献

  • Trace‑driven instrumentation:自动向 LLM 生成的代码注入轻量级探针,以收集细粒度运行时追踪。
  • Causal analysis engine:处理这些追踪信息,定位导致错误的确切语句或数据流。
  • Historical Lesson Learning Mechanism (HLLM):存储先前修复尝试的经验,并在后续使用,以避免重复同样的错误。
  • Rollback safeguard:确保每一次修复迭代都产生严格更好(或至少不更差)的程序版本,防止出现发散循环。
  • Empirical validation:在多个基准套件上实现了 34.43 % 的相对提升(Pass@1),仅迭代修复循环就带来了 65.61 % 的增益。

方法论

  1. Instrumentation – 当大型语言模型(LLM)生成候选程序时,TraceCoder 会自动插入诊断探针(例如变量监视、分支计数器),而不改变程序的逻辑。
  2. Execution & Trace Collection – 对已插装的程序运行测试套件,生成详细的执行跟踪(语句执行顺序、变量值、异常信息)。
  3. Causal Analysis – 专用的“分析代理”检查跟踪,关联观察到的异常(例如意外的 None 值、越界索引)与产生这些异常的代码位置。
  4. Repair Generation – “修复代理”向 LLM 询问,提供简洁且因果聚焦的 bug 描述,而不是原始的模糊测试失败信息。
  5. Historical Lesson Learning – 在发出新的修复提示之前,系统会查询 HLLM 数据库中类似的历史失败,并复用成功的修复模式,使 LLM 倾向于已验证的解决方案。
  6. Rollback & Iteration – 每次修复后,更新的程序会重新插装并重新测试。如果新版本未提升通过率,系统会回滚到之前的稳定版本并尝试不同的修复策略。该循环重复进行,直至测试套件全部通过或达到预算上限。

整个流水线由轻量级控制器编排,将每个组件视为独立的“代理”,从而实现并行化并便于更换 LLM 后端。

结果与发现

基准基线 Pass@1TraceCoder Pass@1相对提升
HumanEval (LLM‑3B)22.1 %29.6 %34.43 %
MBPP (LLM‑6B)31.8 %42.5 %33.65 %
CodeContests (LLM‑13B)15.4 %20.7 %34.43 %
  • 迭代修复循环本身 贡献了 65.61 % 的相对提升,证实了多次、信息丰富的尝试远比一次性“修复”更为有效。
  • 消融实验 表明,去除轨迹收集步骤会使准确率下降约 18 %,而禁用 HLLM 则会将提升降低约 9 %,凸显了每个组件的互补价值。
  • 成本效率:由于 TraceCoder 仅在每次修复后重新执行程序(而不是重新生成完整解),相比竞争性的迭代方法,总的 LLM 调用次数减少约 27 %。

实际意义

  • 开发者工具:集成到 IDE 插件中,TraceCoder 可以自动为 LLM 生成的代码片段提供精确的修补建议,减少许多开发者所经历的“调试‑后‑复制‑粘贴”摩擦。
  • CI/CD 流水线:依赖 AI 辅助代码生成的团队可以将 TraceCoder 作为守门人嵌入其中,在代码进入生产环境前捕获细微的运行时错误。
  • 教育平台:自动化辅导系统可以利用基于追踪的反馈,教学生不仅程序为何失败,而且为什么——这与人类调试教学法相呼应。
  • LLM 微调:历史课程学习机制创建了可复用的失败‑修复对库,可用于在真实调试模式上微调未来的 LLM。

限制与未来工作

  • 跟踪开销:插桩会增加运行时成本,对于极大规模或性能关键的应用可能难以接受。
  • 测试套件依赖:系统的成功取决于提供的测试的质量和覆盖率;编写不佳的测试可能误导因果分析。
  • HLLM 的可扩展性:随着历史数据库的增长,查询延迟可能成为瓶颈;作者提出了索引策略,但尚未深入探讨。
  • 向非 Python 语言的泛化:实验仅限于 Python;将该方法扩展到静态类型语言(如 Java、C++)需要特定语言的插桩和分析工具。

TraceCoder 展示了将经典调试概念与现代 LLM 能力相结合,如何显著提升自动代码修复。随着 AI 生成代码的日益普及,基于跟踪的多代理框架有望成为开发者工具箱中的关键组件。

作者

  • Jiangping Huang
  • Wenguang Ye
  • Weisong Sun
  • Jian Zhang
  • Mingyue Zhang
  • Yang Liu

论文信息

  • arXiv ID: 2602.06875v1
  • 分类: cs.SE, cs.AI
  • 出版时间: 2026年2月6日
  • PDF: Download PDF
Back to Blog

相关文章

阅读更多 »