← 返回 2026-02-05

MEnvAgent:面向可验证软件工程的可扩展多语言环境构建 MEnvAgent: Scalable Polyglot Environment Construction for Verifiable Software Engineering

Chuanzhe Guo, Jingjing Wu, Sijun He, Yang Chen, Zhaoqi Kuang, Shilong Fan, Bingjin Chen, Siqi Bao, Jing Liu, Hua Wu, Qingfu Zhu, Wanxiang Che, Haifeng Wang 📅 2026-01-30 👍 18 2026-07-13 08:35
可验证性 多智能体系统 多语言支持 环境构建 软件工程

提出多智能体框架MEnvAgent,自动构建多语言可验证开发环境,提升软件工程任务的可扩展性。

前置知识

可验证软件工程环境

指能够通过执行测试来验证代码修改正确性的开发环境。这种环境不仅包含代码仓库快照,还包括完整的依赖安装、构建配置和测试脚本。关键是要满足Fail-to-Pass (F2P) 标准:在原始代码上测试失败(重现问题),在修复后的代码上测试通过(验证修复)。

这是评估LLM代码智能体能力的基础。没有可验证环境,就无法可靠地评估智能体是否真正解决了软件问题,也无法用于强化学习训练。

多智能体协作架构

将复杂任务分解为多个专门化的智能体,每个智能体负责特定功能。在MEnvAgent中,包括仓库分析智能体、环境设置智能体、测试配置智能体、执行智能体、验证智能体和补丁生成智能体。它们通过规划-执行-验证的闭环迭代协作。

单一智能体难以处理环境构建的复杂性。多智能体架构允许专业化分工,提高成功率并实现错误诊断和自动修复。

环境重用机制

通过检索历史相似环境并应用增量补丁来适应新任务,而不是每次都从头构建。包括两个阶段:环境检索(基于版本一致性和向后兼容性选择最相似环境)和验证驱动适应(通过EnvPatchAgent生成增量命令序列)。

环境构建是计算密集型任务,重用机制能显著减少时间和计算开销,使大规模数据构建成为可能。

研究动机

现有软件工程LLM智能体面临可验证数据集稀缺的瓶颈。构建可执行环境需要跨语言处理复杂依赖关系,频繁遇到版本冲突、编译错误等构建失败,且不同语言使用不同的测试协议(如pytest、mvn test)。现有方法要么依赖静态代码指标(可扩展但只能提供近似验证信号),要么手动构建(质量高但耗时且主要限于Python)。这导致多语言可验证支持存在关键缺口。

本文的目标是本文旨在开发一个自动化、可扩展的多语言环境构建框架MEnvAgent,能够支持10种主流编程语言,自动解决构建失败,并通过环境重用机制降低计算开销。目标是创建MEnvBench基准测试(1000个任务)和MEnvData-SWE数据集,为LLM智能体训练提供可验证数据。

与已有工作不同的是,现有基准测试存在语言覆盖窄、非可执行评估或质量保证不足的问题。MEnvAgent的独特切入角度体现在三个方面:首先,采用多智能体规划-执行-验证闭环架构实现自动错误诊断和修复,这不同于现有单一智能体或简单试错方法;其次,提出环境重用机制,通过增量补丁避免从头构建,大幅降低计算开销;最后,首次实现跨10种语言的可扩展环境构建,并提供严格的质量保证,填补了多语言可验证环境构建的关键空白。

核心方法

MEnvAgent采用多智能体协作架构,通过规划-执行-验证三个阶段的迭代闭环来自动构建可验证环境。整体思路是:首先分析仓库结构和依赖需求,然后制定构建计划(选择基础镜像、生成安装脚本和测试配置),接着执行构建并监控输出,最后验证环境是否满足F2P标准。如果验证失败,系统会进行错误归因并反馈给规划阶段进行迭代修复。为了提高效率,引入环境重用机制,通过检索历史相似环境并应用增量补丁来适应新任务。这种方法将复杂的环境构建问题分解为可管理的子任务,并通过智能体间的协作实现自动错误恢复。

核心创新点是环境重用机制和多智能体闭环架构的结合。与现有方法相比,MEnvAgent通过专业化智能体分工和实时错误诊断实现更精准的修复,这不同于SWE-Factory的简单试错。环境重用机制将问题从“每次从头构建”转变为“检索相似环境并增量适应”,基于软件演化模式的层次化检索策略,结合版本一致性和向后兼容性选择相似环境,并通过EnvPatchAgent生成上下文感知的增量补丁。验证驱动的适应过程确保补丁生成有明确的验证目标,避免盲目尝试,这体现了将环境构建问题形式化为寻找满足F2P标准的三元组(基础镜像、构建过程、测试配置)的数学严谨性。

方法步骤详情

方法分为两个主要流程:环境重用流程和迭代构建流程。环境重用流程包括两个阶段:环境检索阶段,基于版本一致性和向后兼容性从环境池中选择最相似的历史环境,优先选择与目标仓库快照版本一致的环境,如果没有则选择时间上最接近的新环境;验证驱动适应阶段,测试配置智能体生成测试脚本并在相似环境中执行,如果失败,EnvPatchAgent分析诊断反馈并生成增量补丁,这个过程持续直到满足成功条件。迭代构建流程包括三个阶段:规划阶段,仓库分析智能体探索文件结构生成项目摘要,环境设置智能体确定基础镜像并生成安装脚本,测试配置智能体合成测试配置脚本;执行阶段,环境执行智能体实例化容器并执行安装命令,实时监控输出并动态调整以解决安装错误;验证阶段,验证智能体执行测试,如果失败则进行错误归因,将诊断反馈传播回规划阶段,形成闭环迭代。

技术新颖性

技术新颖性体现在三个方面。首先,多智能体规划-执行-验证闭环架构通过专业化分工和实时错误诊断实现自动修复,这不同于单一智能体或简单多智能体协作,每个智能体有明确职责,通过反馈循环实现迭代改进。其次,环境重用机制基于软件演化模式的层次化检索策略,结合版本一致性和向后兼容性选择相似环境,并通过EnvPatchAgent生成上下文感知的增量补丁,将环境构建从每次从头开始转变为增量适应。最后,验证驱动的适应过程将环境构建问题形式化为寻找满足F2P标准的三元组(基础镜像、构建过程、测试配置),并通过数学形式化保证环境有效性,这为自动化环境构建提供了理论基础。

手动环境构建与MEnvAgent的比较
Figure 1: 手动环境构建与MEnvAgent的比较
MEnvAgent概述
Figure 2: MEnvAgent概述
环境重用过程的案例研究
Figure 7: 环境重用过程的案例研究

实验结果

在MEnvBench基准测试上,MEnvAgent显著优于所有基线方法。使用Kimi-K2模型时,F2P率达到35.7%,比SWE-Factory提高9.5个百分点;Pass率达到45.9%,提高11.4个百分点;时间成本3339秒,降低47.5%。使用Gemini-3-Flash时,F2P率达到41.1%,提高7.8个百分点;Pass率达到52.0%,提高10.5个百分点;时间成本3808秒,降低38.3%。平均而言,MEnvAgent将F2P率提高8.6%,Pass率提高11.0%,时间成本降低43.0%。消融研究显示环境重用机制贡献显著:重用成功率达到39.0%,移除EnvPatchAgent后降至25.0%,完全禁用重用时Pass率从59.0%降至40.5%。数据规模分析表明,随着每仓库实例数从1增加到10,重用成功率从接近0%升至39%,验证了方法的可扩展性。跨语言分析显示,现代语言如Python、Go、Ruby表现优异,而C++、C等编译语言由于结构性挑战仍有提升空间。

与现有基准测试的比较
Table 1: 与现有基准测试的比较
10种语言的平均性能比较
Table 2: 10种语言的平均性能比较
组件有效性消融研究
Table 3: 组件有效性消融研究
SWE-bench Verified和SWE-bench Multilingual上的性能
Table 4: SWE-bench Verified和SWE-bench Multilingual上的性能
MEnvAgent组件的详细输入输出规范
Table 5: MEnvAgent组件的详细输入输出规范
数据收集和过滤的统计信息
Table 6: 数据收集和过滤的统计信息
数据收集和过滤过程的统计
Table 7: 数据收集和过滤过程的统计
MEnvAgent和基线在MEnvBench上的详细超参数设置
Table 8: MEnvAgent和基线在MEnvBench上的详细超参数设置
MEnvBench上10种语言的详细性能比较
Table 9: MEnvBench上10种语言的详细性能比较
MEnvBench上10种语言的成本分析
Table 10: MEnvBench上10种语言的成本分析
跨语言环境重用消融研究
Table 11: 跨语言环境重用消融研究
MEnvData-SWE数据集的详细分类
Table 12: MEnvData-SWE数据集的详细分类
MEnvData-SWE与现有可验证SWE基准测试和训练数据集的比较
Table 13: MEnvData-SWE与现有可验证SWE基准测试和训练数据集的比较
MEnvBench上的性能权衡分析
Figure 3: MEnvBench上的性能权衡分析
数据规模对性能指标的影响
Figure 4: 数据规模对性能指标的影响
F2P性能与仓库规模的关系
Figure 5: F2P性能与仓库规模的关系
10种编程语言的错误分布
Figure 6: 10种编程语言的错误分布
查看结构化数据
任务指标本文基线提升
多语言环境构建 F2P率 (%) 38.4 29.8 (SWE-Factory) +8.6
多语言环境构建 Pass率 (%) 49.0 38.0 (SWE-Factory) +11.0
多语言环境构建 时间成本 (秒) 3574 6266 (SWE-Factory) -43.0%

局限与改进

论文承认的局限性包括:C++和C等编译语言的成功率较低(C++ Pass率仅26%),主要由于编译时内存不足(22%)、非标准构建系统不兼容(20%)、重型依赖安装失败(18%)等结构性问题;环境构建仍需要大量计算资源,尽管重用机制提高了效率,但大规模部署仍需Kubernetes编排支持;智能体可能生成错误命令,在Docker沙箱外执行可能带来安全风险。我自己的观察:论文主要关注环境构建,对构建后的环境维护和更新考虑不足;环境重用机制依赖历史环境池的质量,如果历史环境本身有问题,可能传播错误;虽然支持10种语言,但每种语言的深度支持程度可能不一致,例如对新兴语言或小众框架的支持可能有限;此外,论文主要关注构建成功率,对构建后环境的稳定性和性能优化考虑较少。

独立分析的弱点

论文的弱点包括三个方面。首先,环境重用机制的成功率(39%)仍有提升空间,特别是在复杂项目和长历史依赖链的场景下,当前的层次化检索策略可能无法捕获所有相关性,导致重用失败。其次,错误诊断的粒度可以更细,目前主要识别缺失依赖等宏观问题,对版本冲突、配置错误、编译器兼容性等微观问题的诊断能力有限,这限制了自动修复的效率。最后,智能体间的协作效率有优化空间,当前是顺序执行,可以考虑并行化某些阶段以减少总体时间。每个弱点的改进方向:可以引入更智能的相似性度量,考虑依赖图结构和版本演化路径;可以结合静态分析和运行时分析,提供更精确的错误定位;可以设计异步协作机制,允许智能体在等待某些步骤完成时处理其他任务。

未来方向

作者提出的未来工作包括:设计更灵活的资源分配沙箱和专门工具集来缓解C++等语言的结构性失败;将高吞吐量构建基础设施开源以加速社区研究。基于成果可延伸的方向有四个方面:首先,将环境构建与代码修复训练更紧密集成,实现端到端的强化学习训练,让智能体在构建环境中学习修复策略;其次,扩展到更多编程语言和框架,特别是嵌入式系统、移动开发和新兴语言领域;第三,开发环境版本管理和差异更新机制,支持软件项目的持续演化,避免每次版本更新都需要重新构建;最后,探索环境构建知识的迁移学习,让新语言能从已有语言的构建经验中受益,加速新语言的支持。

复现评估

复现评估从四个维度展开。开源情况方面,论文承诺开源代码、基准测试和数据集,但需要检查具体开源时间和许可证,这是复现的基础。数据方面,MEnvBench包含1000个任务,覆盖10种语言,数据量充足且质量有保证,论文提供了详细的数据收集和过滤流程。算力方面,实验使用Kimi-K2和Gemini-3-Flash模型,需要一定的GPU资源,但论文提供了详细的超参数设置(温度0.5,超时3小时,最大迭代5次)和并发配置(15),降低了复现门槛。难度方面,环境构建涉及Docker容器化、多语言依赖管理、测试框架配置等,属于中等难度。复现的关键挑战是获取相同的测试数据和环境池,以及确保智能体框架(如OpenHands)的一致性。论文提供了详细的算法流程、案例研究和消融实验,有助于理解实现细节。