A Multi-Agent Framework for Stateful Inference-Time Search


TL;DR

本文提出了 \(MA<binary data, 2 bytes>S\),一个无需训练的多智能体框架,它通过结合持久化推理时状态、对抗性变异和进化式搜索,显著提升了单元测试中边缘案例 (edge cases) 的生成能力和代码覆盖率。

关键定义

相关工作

当前,基于大型语言模型(LLM)的代码生成和测试自动化取得了显著进展。然而,现有方法仍面临诸多瓶颈:

  1. 无状态推理的局限: 大多数LLM的推理是无状态的,每次调用都丢弃中间思考过程。这在需要深度、多步推理的任务(如程序综合、复杂问题求解)中表现不佳,因为它们难以处理长程逻辑依赖和进行有效的探索。
  2. 现有框架的不足: 虽然出现了一些多智能体协作框架(如 \(AI Co-scientist\)),但它们通常缺乏持久化状态和结构化的奖励信号。而一些基于搜索的方法(如进化算法)虽然能探索组合行为,但又未能有效地整合对抗性评估或跨代维护状态。
  3. 适应性与覆盖率问题: 许多测试生成器采用前馈方式或依赖微调,难以动态适应未见过的代码库,并且生成的测试用例在覆盖率和鲁棒性方面常常不足。

本文旨在解决这些问题,提出一个无需训练的框架,它通过统一多智能体推理、对抗性评估和带持久化状态的进化式搜索,来系统性地生成高质量、高覆盖率的边缘案例,从而动态适应新代码并发现深层缺陷。

本文方法

本文的核心思想是,生成语法正确的单元测试相对容易,但识别出具有足够覆盖率和鲁棒性的边缘案例则需要结构化的探索、记忆和对抗性验证。为此,本文设计了一个名为 \(MA<binary data, 2 bytes>S\) (Multi-Agent framework for Stateful inference-time search) 的框架。

总体架构

\(MA<binary data, 2 bytes>S\) 将单元测试生成分解为两个阶段:首先通过一个有状态的多智能体进化式搜索过程生成边缘案例,然后将这些高质量的边缘案例转换为最终的单元测试文件。其核心是边缘案例的生成过程,由控制器协调四个智能体(Actor, Executor, Adversary, Critic)在 N 个阶段中迭代进行。

$$MA<binary data, 2 bytes>S$$ 架构图

上图展示了 \(MA<binary data, 2 bytes>S\) 的整体架构。蓝色框内是核心的进化式搜索循环,品红色线条突出显示了贯穿 N 个阶段的持久化状态流。

智能体角色与工作流程

该框架是一个在推理时运行的对抗性引导 Actor-Critic(AGAC)系统,无需梯度学习。

核心创新

该框架的智能性并非来自模型训练,而是源于其推理时的结构化协作:

  1. 持久化非马尔可夫状态: 控制器维护的结构化历史状态,使行动者(LLM)能够基于丰富的上下文进行推理。这相当于一种无需梯度更新的、在推理时进行的轻量级策略调整。
  2. 对抗性引导与评估: 对抗者的代码变异和评论家的综合奖励设计,有效“锚定”了行动者的输出,迫使其超越表面语法正确性,去探索真正有价值的边缘案例。
  3. 进化式精英保留: 框架保留了历史上表现最好的边缘案例群体,避免了单路径推理的脆弱性,从而在不进行专门训练的情况下提升了鲁棒性。

实验结论

实验设置


指标 TestGenEvalLite (160个任务, 11个库) TestGenEvalMini (48个任务, 6个库)
代码行数 $906.57\pm 821.67$, 中位数 = 584 $575.79\pm 600.78$, 中位数 = 425
函数数量 $46.27\pm 53.80$, 中位数 = 31 $33.81\pm 37.38$, 中位数 = 28
分支数量 $79.87\pm 84.46$, 中位数 = 52 $60.06\pm 70.57$, 中位数 = 40


关键结果


HumanEval (Llama 70B) 行覆盖率 分支覆盖率 函数覆盖率
SUT (\(MA<binary data, 2 bytes>S\)) 90.01% 89.76% 91.51%
Zero Shot LLM 82.77% 81.92% 85.36%
Zero Shot LLM with CoT 86.90% 86.73% 87.5%
One Shot LLM with CoT 87.21% 87.04% 88.41%
Three Shot LLM 89.94% 89.87% 90.09%
Three Shot LLM with CoT 88.18% 88.13% 89.33%


总结

实验结果表明,本文提出的有状态多智能体进化框架在单元测试生成任务上,尤其是在发现高覆盖率的边缘案例方面,显著优于传统的无状态提示方法。这证明了在推理时进行多智能体协同是一种有效的、无需训练即可提升 LLM 推理深度和可靠性的策略。

尽管如此,该框架也存在局限性,如在复杂任务上推理成本较高、运行时间较长。未来的工作将致力于优化执行效率、开发更智能的终止条件,并将其推广到更大规模的工业级代码库中进行验证。