SmartOracle - An Agentic Approach to Mitigate Noise in Differential Oracles
作者: Srinath Srinivasan, Tim Menzies, Marcelo D'Amorim
分类: cs.SE, cs.LG
发布日期: 2026-01-21
💡 一句话要点
SmartOracle:一种基于Agent的差分Oracle噪声缓解方法
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 差分模糊测试 Oracle 大型语言模型 Agent系统 JavaScript
📋 核心要点
- 现有JavaScript差分模糊测试依赖手动构建Oracle,成本高、耗时且易错,难以适应规范演变。
- SmartOracle将人工分类流程分解为多个LLM子Agent,综合证据并查询规范以自动生成判决。
- 实验表明,SmartOracle在历史基准测试中表现良好,并在实际模糊测试中发现了多个引擎的未知错误。
📝 摘要(中文)
差分模糊测试通过在同一规范的不同实现(如JavaScript解释器)上执行相同的输入来检测错误。验证输出需要一个oracle,对于JavaScript的差分测试,这些oracle是手动构建的,导致成本高昂、耗时且容易产生误报。更糟糕的是,当规范演变时,这种手动工作必须重复进行。受Agent系统在其他软件工程领域成功应用的启发,本文介绍了SmartOracle。SmartOracle将手动分类工作流程分解为专门的大型语言模型(LLM)子Agent。这些Agent综合来自终端运行和有针对性的规范查询的独立收集的证据,以达成最终结论。对于历史基准,SmartOracle实现了0.84的召回率和18%的误报率。与Gemini 2.5 Pro基线相比,它提高了分类准确性,同时将分析时间减少了4倍,API成本降低了10倍。在主动模糊测试活动中,SmartOracle成功识别并报告了主要引擎(包括V8、JavaScriptCore和GraalJS)中以前未知的规范级问题。SmartOracle的Agent架构在Javascript上的成功表明它可能对其他软件系统有用——这是我们未来将探索的研究方向。
🔬 方法详解
问题定义:论文旨在解决JavaScript差分模糊测试中手动构建Oracle的难题。现有方法的主要痛点在于其高昂的成本、耗时性以及容易产生误报,并且难以适应JavaScript规范的快速演变。手动构建和维护Oracle需要大量的人力,并且容易受到人为错误的影响。
核心思路:论文的核心思路是将手动分类流程自动化,利用大型语言模型(LLM)的强大能力,构建一个基于Agent的系统SmartOracle。该系统通过分解任务,让多个专门的LLM子Agent协同工作,综合来自不同来源的证据,并查询相关规范,最终自动生成对测试结果的判决。这种方法旨在降低成本、提高效率和准确性,并更好地适应规范的变化。
技术框架:SmartOracle的整体架构包含多个LLM子Agent,每个Agent负责特定的任务。这些Agent包括:证据收集Agent(从终端运行结果中提取信息)、规范查询Agent(查询JavaScript规范以获取相关信息)和判决Agent(综合所有证据并生成最终判决)。整个流程是异步和并行的,各个Agent独立工作,并通过共享信息进行协作。
关键创新:SmartOracle最重要的技术创新在于其基于Agent的架构。与传统的单体式Oracle相比,SmartOracle将复杂任务分解为多个简单任务,并由专门的Agent处理,从而提高了系统的模块化程度、可维护性和可扩展性。此外,SmartOracle还能够利用LLM的推理能力,自动从规范中提取相关信息,从而减少了对人工干预的依赖。
关键设计:SmartOracle的关键设计包括Agent的划分、Agent之间的通信机制以及LLM的选择和配置。论文中使用了Gemini Pro等LLM,并针对特定任务进行了微调。此外,论文还设计了一种基于知识图谱的证据表示方法,用于存储和检索Agent收集到的信息。具体的参数设置和损失函数等技术细节在论文中没有详细描述,属于未知信息。
🖼️ 关键图片
📊 实验亮点
SmartOracle在历史基准测试中实现了0.84的召回率和18%的误报率,优于传统的Gemini 2.5 Pro基线。更重要的是,在主动模糊测试活动中,SmartOracle成功识别并报告了V8、JavaScriptCore和GraalJS等主要JavaScript引擎中以前未知的规范级问题。与Gemini 2.5 Pro基线相比,SmartOracle将分析时间减少了4倍,API成本降低了10倍。
🎯 应用场景
SmartOracle可应用于各种需要差分测试的软件系统,尤其是在规范频繁变化的环境中。它可以显著降低测试成本,提高测试效率和准确性,并帮助开发人员及时发现和修复潜在的错误。该研究对于提高软件质量和可靠性具有重要的实际价值,并有望推动差分测试技术的广泛应用。
📄 摘要(原文)
Differential fuzzers detect bugs by executing identical inputs across distinct implementations of the same specification, such as JavaScript interpreters. Validating the outputs requires an oracle and for differential testing of JavaScript, these are constructed manually, making them expensive, time-consuming, and prone to false positives. Worse, when the specification evolves, this manual effort must be repeated. Inspired by the success of agentic systems in other SE domains, this paper introduces SmartOracle. SmartOracle decomposes the manual triage workflow into specialized Large Language Model (LLM) sub-agents. These agents synthesize independently gathered evidence from terminal runs and targeted specification queries to reach a final verdict. For historical benchmarks, SmartOracle achieves 0.84 recall with an 18% false positive rate. Compared to a sequential Gemini 2.5 Pro baseline, it improves triage accuracy while reducing analysis time by 4$\times$ and API costs by 10$\times$. In active fuzzing campaigns, SmartOracle successfully identified and reported previously unknown specification-level issues across major engines, including bugs in V8, JavaScriptCore, and GraalJS. The success of SmartOracle's agentic architecture on Javascript suggests it might be useful other software systems- a research direction we will explore in future work.