# 热门搜索 #
搜索
面向软件工程的AI智能体最新进展,复旦、南洋理工、UIUC联合发布全面综述
4409点击    2024-09-13 10:26

本篇综述的作者包括来自复旦大学 CodeWisdom 团队的研究生刘俊伟、王恺欣、陈逸轩和彭鑫教授、娄一翎青年副研究员,以及南洋理工大学的陈震鹏研究员和伊利诺伊大学厄巴纳 - 香槟分校(UIUC)的张令明教授。


自从首个全自动 AI 软件工程师 Devin 问世以来,面向软件工程的 AI 智能体广受关注、层出不穷,例如最近的 Genie、Replit、Cursor 等,它们正在对传统软件开发的范式产生着深刻影响。基于大模型的 AI 智能体(LLM-based Agents,后简称 Agent)通过增强推理、记忆、规划以及使用拓展工具的能力,极大地提升了大模型解决复杂软件开发维护任务的能力,为进一步实现自动化、智能化的软件开发提供了新思路。AI 智能体正在成为软件工程领域的研究新热潮。


复旦大学 CodeWisdom 团队联合南洋理工大学、UIUC 共同对 106 篇相关文献进行梳理和解读,分别从软件工程和 Agent 两个视角全面展现了 Agent 在软件工程领域的最新进展。从软件工程视角,该综述梳理了 Agent 在软件开发全周期各个任务上的应用现状;从 Agent 视角,该综述展示了目前应用于软件工程领域的 Agent 的基础架构、多智能体设计模式以及人机协同模式。最后,该综述展望了 Agent 在软件工程领域的研究机会与发展方向。



  • 论文地址:https://arxiv.org/pdf/2409.02977
  • Agent4SE 论文列表:https://github.com/FudanSELab/Agent4SE-Paper-List


一、Agent 覆盖软件开发维护全流程


如图 1 所示,目前 Agent 已基本覆盖了软件开发和维护的全流程,不仅可以解决某个特定的软件开发环节(例如静态检查和测试),而且在应对更复杂的端到端的软件开发和维护任务上也表现出了巨大潜力,包括:


  • 端到端软件开发(End-to-end Software Development):Agent 通过执行多种开发子任务,包括需求工程、设计、代码生成和质量保证(包括静态检查和测试等),完成从需求到最终程序的全流程开发。


  • 端到端软件维护(End-to-end Software Maintenance):Agent 支持多种维护活动,如故障定位、修复和特性维护,完成从问题报告到补丁生成的端到端维护。


图 1: 软件开发与维护任务流程上的 Agent 分布


端到端软件开发


目前面向端到端软件开发的 Agent 主要模拟真实的软件开发团队,设计不同的软件开发角色,互相协作共同完成软件开发任务。



表 1: 面向端到端软件开发任务的 Agent 文献列表


其中,有些 Agent 在工作流设计上主要遵循了现实软件开发中常见的软件过程模型,包括瀑布模型和敏捷开发(测试驱动开发和 Scrum)。



图 2: 面向端到端软件开发的 Agent 中采用的过程模型


端到端软件维护


目前,面向端到端软件维护任务的 Agent 遵循着 “缺陷定位 - 补丁生成 - 补丁验证” 的基本工作流程;在此基础上,不同 Agent 选择性地引入了预处理、故障重现、任务分解、补丁排名等步骤。



表 2: 面向端到端软件维护任务的 Agent 文献列表



图 3: 面向端到端软件维护任务的 Agent 中常用的工作流


这类 Agent 往往以 SWE-bench 及其衍生的数据集作为评测基准。



图 4: 端到端维护软件任务的数据集演化示意图


特定的软件开发 / 维护任务


除了端到端的软件开发和维护任务,目前 Agent 在面向单个特定的软件开发或维护环节也有着广泛应用,包括需求工程、代码生成、代码静态检查、测试、缺陷定位与修复等。该综述梳理了面向特定不同软件开发 / 维护任务的 Agent 的工作流。



图 5: 面向特定软件开发 / 维护环节的 Agent 工作流


二、面向软件工程的 Agent 设计


根据 Agent 的基础结构划分(即 规划(Planning)、记忆(Memory)、感知(Perception)、行动(Action)),该综述进一步总结目前面向软件开发和维护的 Agent 在每部分的设计特点。


Agent 中的常用工具


为了进一步提升 Agent 在软件开发和维护任务上的能力,目前 Agent 的行动模块中集成和使用了大量的工具,主要包括搜索、文件操作、静态程序分析、动态分析、测试、版本管理工具等。



图 6: 面向软件开发和维护的 Agent 中的常用工具分类


人机协作范式


目前在面向软件开发维护任务上,开发者和 Agent 的协作主要发生在规划、需求工程、开发和评估四个环节。主要的协同方式,是由人类提供反馈,引导、澄清或直接纠正 Agent 的输出。



图 7:面向软件开发和维护任务的 Human-Agent 协作范式


三、未来的研究方向


该综述进一步探讨了面向软件开发和维护的 Agent 的未来研究方向。


  • 更全面的评测基准和更真实的评测数据。当前针对软工任务的 Agent 的评测主要集中在其端到端解决特定任务的能力上,缺少对决策过程和失败原因的深入分析,以及对鲁棒性等可信指标以及效率指标的关注。此外,当前用于评测 Agent 的数据集也存在一些问题,如逻辑过于简化,与现实场景相差较远等。因此,设计更多样化的评估指标和构建更高质量、更现实的数据集基准是准确评估 Agent 能力的重要方向。


  • 探索人机协同新范式。当前针对软工任务的 Agent 人机协同主要局限于需求工程、设计、测试评估等环节,同时缺少对高效友好的交互接口的系统研究。因此,未来研究可关注于拓展人机协同的应用场景,以及提供更加流畅的人机协作模式。


  • 多模态感知。目前针对软工任务的 Agent 主要依赖于文本或视觉感知。探索和整合多样化的感知模态,如语音命令或用户手势,会显著提高 Agent 编码助手的灵活性和可访问性。


  • 将 Agent 应用于更多软工任务。尽管现有的 Agent 已经被部署在各种软工任务中,但一些关键阶段(如设计、验证和功能维护)仍未被充分探索,为这些阶段开发 Agent 系统可能会面临各方面的新挑战。


  • 训练面向软件工程的基座大模型。目前 Agent 通常构建在以通用数据或者代码数据为主要训练数据的大模型之上,而软件开发的全周期往往涉及设计、架构、开发者讨论、程序动态执行、历史演化等代码以外的重要信息。有效利用这些信息可以构建面向软件工程领域的基座大模型,从而在此基础上构建更强大的面向软件开发与维护的 Agent。


  • 将软件工程领域知识融入 Agent 设计。正如最近 Agentless 研究所揭示,流程复杂且高度自主的 Agent 在某些软件维护任务上的效果不如基于传统缺陷定位和程序修复流程所设计的简单工作流。软件工程领域的经典方法论和思想对于设计 Agent 的工作流有着重要的借鉴和指导意义,可以进一步提高 Agent 解决方案的有效性、鲁棒性和效率。


文章来源“机器之心”,作者“机器之心”


关键词: 智能体 , 模型训练 , AI , Agent
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
AI工作流

【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。

项目地址:https://github.com/n8n-io/n8n

在线使用:https://n8n.io/(付费)


【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。

项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file



【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。

项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file

在线使用:https://vectorvein.ai/(付费)

2
AI数据分析

【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。

项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file

本地安装:https://www.deepbi.com/

【开源免费airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。

项目地址:https://github.com/hitsz-ids/airda

3
智能体

【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。

项目地址:https://github.com/Significant-Gravitas/AutoGPT


【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。

项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md