Beyond Textual Repository Exploration: Dual-Modal Structural Reasoning for Agentic Issue Resolution
本文介绍了 DUALVIEW,这是一个双模态框架,通过利用四个互补图视图中代码依赖关系的持久化视觉表示来取代碎片化的基于文本的导航,从而增强了大规模仓库中的智能体问题解决能力,进而提升了长程探索和结构化推理能力。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你是一名试图在一个巨大的、庞大的城市(软件仓库)中破解谜题的侦探。你的任务是找到一盏坏掉的路灯(漏洞/Bug)并修复它。
旧的方法:“纯文本”侦探
目前,大多数 AI 侦探都是这样工作的:它们被给予一系列文本线索。它们必须先读一个文件,再读另一个文件,然后搜索一个关键词,接着再读第三个文件。它们试图仅通过逐个阅读路标来构建城市的心理地图。
问题在于,这座城市太大了。建筑之间的连接(代码依赖关系)非常复杂。当侦探读完足够多的文本以理解两个遥远的建筑是如何连接时,他们已经迷失了方向、感到困惑,或者“偏离”了轨道。他们正试图通过一份二维的文字列表来重建一张三维地图。这既缓慢又低效,而且他们经常会错过全局大局。
新方法:DUALVIEW
这篇论文介绍了一种名为 DUALVIEW 的新工具。DUALVIEW 不仅仅是给侦探提供一份文本线索,而是同时提供两样东西:
- 视觉地图: 一张清晰、色彩鲜明的图表,展示城市的各个街区、街道和建筑是如何连接的。
- 文本图例: 一份详细的文字指南,解释每个建筑具体是什么以及位于何处。
侦探可以观察地图来瞬间洞察问题的“形状”(例如:“噢,这个坏掉的灯和这边的另外三栋建筑相连!”),然后利用文本找到精确的地址进行修复。
DUALVIEW 使用的四种“地图”
为了实现这一目标,DUALVIEW 不仅仅展示一张地图;它根据侦探的需求展示四种不同类型的地图:
街区地图 (模块耦合图 - Module Coupling Graph):
- 类比: 一张显示城市各区之间如何连接的地图。
- 用途: 帮助侦探确定首先应该在城市的哪个大致区域寻找,而不是盲目地搜索整个城市。
电话簿 (函数调用图 - Function Call Graph):
- 类比: 一张显示谁给谁打电话的图表。
- 用途: 如果某个函数(工人)表现异常,这张地图可以显示是谁调用了他们,以及他们接下来又调用了谁。它追踪了动作的流向。
族谱 (类继承图 - Class Hierarchy Graph):
- 类比: 一张显示父母、子女和亲戚关系的家谱图。
- 用途: 在编程中,有些代码是“父类”,而其他代码是继承了特性的“子类”。如果父类有一条规则,子类也会遵循该规则。这张地图能帮助侦探找到规则的真正来源,即使错误报告中提到的是子类。
蓝图 (程序依赖图 - Program Dependence Graph):
- 类比: 一张显示单个房间内管道和电线如何连接的详细蓝图。
- 用途: 一旦侦探进入了特定的房间(函数),这张地图就会展示数据如何在步骤之间流动,从而找到那根精确的断裂电线。
实际应用中的运作方式
论文在真实的软件修复任务(使用名为 SWE-bench 的基准测试)上测试了这种新方法。以下是他们的发现:
- 修复速度更快: 使用 DUALVIEW 的 AI 智能体比使用旧有的纯文本方法的 AI 解决了更多的难题。
- 更少混乱: AI 犯错更少,也较少在代码中“迷失”方向。
- 运行成本更低: 令人惊讶的是,尽管 AI 需要查看图像(这通常需要更多的计算能力),但它实际上节省了成本。因为视觉地图帮助 AI 更快地找到了答案,所以它不需要询问过多的问题或阅读过多的文件。
- 最佳组合: 当 AI 同时拥有地图和文本时,表现最为出色。地图帮助它快速掌握全局观,而文本则提供了进行实际修复所需的精确细节。
核心结论
该论文认为,软件仓库本质上是像复杂网络(图)一样的结构,但我们一直强迫 AI 将其视为简单的文本列表。通过添加一个视觉层,让 AI 能够“看到”代码的结构,我们可以帮助它更快、更准确地解决漏洞。这就像是在用 GPS 地图导航,而不是通过阅读电话簿来寻找路径。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。