微信扫码
添加专属顾问
我要投稿
论文地址:https://arxiv.org/pdf/2404.17153
下图是 FixAgent 的整体架构图。
FixAgent 的核心系统架构由三名专业的 Agent 组成,各自负责不同的任务:一个专注于错误定位,一个负责生成补丁,还有一个专门负责修复后的审查工作。
该框架首先设计了两个专业的 LLM 代理,分别担任 "错误定位专家" 和 "补丁生成专家" 的角色。随后,引入了第三个 LLM 代理,负责对错误和修复方案进行深入分析。每个代理都采用了"小黄鸭调试法",以确保其工作过程得到详尽的解释。
这种协同机制不仅能够在错误位置未知的情况下提供带有详细解释的程序修复方案,还能弥补错误定位器可能存在的不足。例如,它能够修复那些超出定位器识别范围的代码语句。
FixAgent 通过引导每个 Agent 在错误程序的关键节点监控关键变量,从而实现对程序的深入分析。此过程详细讨论了如何通过这种监控来指导 FixAgent 完成其任务。
这种设计的优势在于它允许代理按照逻辑执行路径逐步分析代码,从而提供更精确的错误解释。
通过分析软件本身及其依赖项来构建代码段的背景信息,并将错误信息与代码一同传递给 FixAgent。软件环境通常涵盖以下要素:功能概述、输入输出及其样本、变量的可见范围等。
本文鼓励 Agent 在诊断错误时,全面考虑这些背景信息,以便更准确地把握错误发生的根源。
故障定位 Agent:它可以指出缺失的语句,并在 buggy 程序中标记它们,例如 “
FixAgent 引导每个代理专注于失败的测试案例,追踪程序中关键的中间变量,并将其与预期结果进行比较。每个代理都必须在回复中清楚地展示其追踪中间变量的步骤,并阐明这一过程如何有助于形成答案。这种设计灵感来源于 “小黄鸭调试法”,即通过解释代码来加深对代码调试的理解。
此外,这种设计还增强了 LLM 决策过程的透明度,允许开发者观察到代理推理答案的完整路径,为开发者与AI之间的互动提供了更多信息。
在构建程序的上下文理解时,FixAgent 特别关注两个核心要素:需求和依赖。
对于文档资料较为完善的程序代码,FixAgent 会利用程序的功能描述、输入/输出规范以及精度要求等信息。如果程序实现了一个通用算法,但缺乏明确的文档说明,FixAgent 将使用一个通用的大语言模型(不一定是 FixAgent 本身)根据算法的名称来生成算法的描述,以此作为算法需求的文档。
接下来,FixAgent会分析出错程序的依赖项,并提取出相关的依赖文件代码。这些提取出的代码会被放置在程序代码之前,这样做可以确保 LLM 能够首先处理依赖代码,然后再处理出错的程序代码,从而提高处理的效率。
FixAgent 框架的产生标志着在自动化调试领域迈出了重要的一步。它是首次提出了一个基于 LLM 代理协同工作的统一调试框架。它能够以端到端的方式执行故障定位、补丁生成和错误分析。
本文洞悉到 LLM 可以从软件开发者广泛认可的软件工程原则中获益,因此,本文采纳了橡皮鸭调试法,即通过详细解释代码来促进 LLM 模型的理解,基于此原则,本文设计了新的策略,以激发LLM的调试潜力,并克服了以往的挑战。
在两个广泛使用的基准数据集上的评估显示,FixAgent 在性能上超越了现有的自动化程序修复(APR)工具和基于 LLM 的解决方案。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-03-23
知识基座:让“AI 越用越懂业务”的团队经验实践【天猫AI Coding实践系列】
2026-03-21
面向手机Agent的记忆系统工程:OPPO的Agentic-RAG实战与演进
2026-03-20
为什么总感觉 Claude Code 比 Cursor 聪明?真正的原因根本不是模型能力!
2026-03-18
从RAG到GraphRAG:货拉拉元数据检索应用实践
2026-03-17
企业AI落地三重门,用友如何破局?
2026-03-16
Java 开发者的轻量级 RAG 方案:MeiliSearch 混合搜索实战
2026-03-11
Embedding相似度虚高,如何用langchain+Milvus搭建CRAG解决?
2026-03-11
上下文腐烂:拖垮企业AI与LLM表现的隐患与对策
2026-01-15
2026-01-02
2026-02-13
2025-12-31
2026-02-03
2026-01-06
2026-02-03
2025-12-29
2026-02-06
2026-01-28
2026-03-17
2026-03-11
2026-02-22
2026-02-15
2026-02-04
2026-02-03
2026-01-19
2026-01-12