KGCompass:基于仓库感知知识图谱的可解释、低成本、高精度仓库级软件修复框架

@莫得名字 2025-12-25 17:16:38

在仓库级软件修复(Repository-level Software Repair)任务中,精准定位故障函数是自动修复成功的关键前提。然而,现实中的 GitHub Issue 通常未明确提及修改位置(仅 32.7% 含显式文件/函数名),且代码库规模庞大(如 Django 含 27,867 个函数),导致纯 LLM 方法常因语义模糊、上下文缺失、推理能力不足而失败。

 

来自燕山大学、南洋理工大学、墨尔本大学与阿尔托大学的研究团队在最新论文《Enhancing repository-level software repair via repository-aware knowledge graphs》中提出 KGCompass —— 一种仓库感知知识图谱(Repository-aware KG)驱动的修复框架。其实验表明:

  • 修复成功率 58.3%(SWE-bench Lite),为所有开源单模型方法中最高
  • 函数级定位准确率 56.0%,显著优于纯 LLM;
  • 成本仅 $0.2/bug,远低于 SWE-agent($1.6)与 ExpeRepair($2.1);
  • 对 Claude-4 Sonnet、Claude-3.5 Sonnet、DeepSeek-V3、Qwen2.5 Max 等模型均提升显著(+30.2% ~ +156.4%);
  • 89.7% 的成功定位依赖多跳图遍历,证明 KG 在桥接自然语言与代码结构中的核心价值。

动机:为何纯 LLM 难以胜任仓库级修复?

作者通过分析 SWE-bench Lite 指出两大核心挑战:

1. 故障定位不精确(Imprecise Fault Location)

  • 仅 32.7% 的 Issue 显式提及目标文件/函数;
  • LLM 易受词汇偏见影响(如 Issue 提到 “multiply”,就只查 multiply 相关函数);
  • 现有方法(如 Agentless)仅提供 1 个候选位置,若错误则修复失败;
  • 扩大候选集会引入噪声,增加 LLM 幻觉风险。

 

2. 缺乏可解释性(Lack of Interpretability)

  • Agentic 方法(如 SWE-agent)决策过程为黑盒;
  • Procedural 方法(如 Agentless)虽提供 Patch,但未解释为何选择该位置;
  • 开发者难以信任或验证修复逻辑。


KGCompass 方法论:三阶段图驱动修复

KGCompass 包含三个阶段(见 Figure 3):

 

阶段 1:知识图谱构建与候选定位(Knowledge Graph Mining)

  • 节点类型:仓库级(Issue、PR)、代码级(File、Class、Function);
  • 边类型
    • 代码结构边:AST 分析得到的 containment(file→class→function)、call、import、attribute;
    • 语义链接边:正则匹配 Issue/PR 文本中提到的文件/函数名,并仅保留时间早于 Issue 创建时刻的工件(防数据污染)。
  • 候选生成
    • 用公式 S(f)=βl(f)⋅(α⋅cosnorm(ei,ef)+(1−α)⋅lev(ti,tf))S(f)=βl(f)⋅(α⋅cosnorm(ei​,ef​)+(1−α)⋅lev(ti​,tf​)) 评分函数相关性;
    • 选取 KG Top-15 + LLM Top-5,共 20 个候选函数。

阶段 2:路径引导的补丁生成(Patch Generation)

  • 为每个候选函数提供 实体路径(Entity Path):
issue → PR#14248 → _print_MatAdd
  • Prompt 包含:(1) Issue 描述, (2) 20 个候选函数及路径, (3) 搜索-替换格式指令;
  • 采用混合采样(T=0 确定性 + T>0 多样性),并用 自适应缩进修正(Algorithm 1)修复语法错误。

 

阶段 3:多层补丁排序(Patch Ranking)

  • 生成 LLM 再现测试(平均 113 个/issue) + 回归测试
  • 四级排序策略:
    1. 通过回归测试数(仅限原代码已通过的);
    2. 通过再现测试数;
    3. 多数投票(最频繁补丁);
    4. 补丁尺寸(短优先)。

实验结果:全面超越 SOTA

主实验(RQ1)

在 SWE-bench Lite 上(Table 1):

系统

模型

Resolved%

成本

File Acc

Func Acc

ExpeRepair

Claude-4 + o4-mini

60.3%

~$2.1

84.7

52.6

Refact.ai Agent

Claude-3.7 + o4-mini

60.0%

N/A

80.6

47.0

KGCompass

Claude-4 Sonnet

58.3%

$0.2

83.6

56.0

SWE-agent

Claude-4

56.7%

~$1.6

80.9

53.9

KGCompass

Claude-3.5 Sonnet

46.0%

$0.2

76.7

49.4

  • KGCompass 是单模型最佳(无需模型融合);
  • 函数级定位准确率最高(56.0%);
  • 成本最低($0.2)。

与纯 LLM 基线对比(Table 2):

  • Claude-4: +50.8% → 58.3%
  • Claude-3.5: +30.2% → 46.0%
  • DeepSeek-V3: +115.7% → 36.7%
  • Qwen2.5 Max: +156.4% → 33.3%

 

KG 贡献分析(RQ2)

  • 20 个 KG 候选函数覆盖 68.7% 文件 / 40.4% 函数级真值
  • 89.7% 的真值需 ≥2 跳路径);

 

  • 中间节点:72.4% 文件、16.0% 函数、7.1% PR、4.5% Issue;

  • 82.9% 真值函数在 Top-10 内

 

消融实验(RQ3)

  • 混合定位(KG+LLM)> LLM-only > KG-only;
  • 加入实体路径:Claude-4 从 131 → 142 个修复(Table 6);
  • 多层排序:从 139 → 175(Table 7);
  • 6 个候选补丁:达到性能饱和(Table 8)。

启示与贡献

  1. 知识图谱是桥接自然语言与代码结构的有效媒介
  2. 多跳路径对无显式提示的 Issue 至关重要(占 67.3%);
  3. 实体路径不仅提升定位,能引导 LLM 生成更健壮补丁
  4. 低成本($0.2),适合工业落地。

开源地址:暂未公开(论文未提供),但方法细节完整。

...全文
170 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

109

社区成员

发帖
与我相关
我的任务
社区描述
本社区由重庆大学与云从科技联合发起并共同运营,旨在打造一个开放、前沿、务实的知识共享与交流平台。 我们聚焦于两大前沿技术领域:通用语言大模型 (LLM)与知识协同技术。
软件工程 个人社区 重庆·沙坪坝区
社区管理员
  • 阿大abcd
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧