基于大模型的AI Agent,作为能够自主感知环境、形成记忆、规划行动、并调用各类工具执行复杂任务的新一代技术,正在重塑软件开发流程,引领智能化软件开发进入2.0阶段。
北大aiXcoder团队早在2023年初就开始基于大模型的Agent在软件工程领域中的研究,先后发表了多篇相关论文【1,2,3,4】,是全球第一批研究通过大模型+工具调用去解决项目级代码生成问题的团队,为Agent技术在软件开发领域应用奠定了坚实的理论基础。
基于系列领先的研究成果,结合多年来为各行业落地个性化企业代码大模型的实践经验,aiXcoder率先迈出Agent技术在软件工程领域落地的重要一步,聚焦项目级代码生成的真实开发场景,在复杂的业务逻辑、多变的项目需求、严格的代码规范中,确保项目级别代码生成的高效性、准确性和可靠性,推动企业软件开发向智能化、自动化方向迈进。
面向企业真实开发场景,直击项目级代码生成痛点
企业项目级代码作为支持和驱动企业核心业务流程的重要部分,其质量直接关乎企业产品和服务质量、运营效率和市场竞争力。然而,项目级别的代码通常涉及多样的库和函数调用,代码库中具有复杂的上下文依赖关系和各类代码文档,且随着业务需求的变化,项目代码也需要不断更新、扩展和优化。在这个动态、持续且复杂的过程中,存在很多痛点:
- 细粒度代码修改扩充难:一个项目通常包含成千上万行代码,涉及多个相互依赖的模块和子系统。面对细粒度的代码修改与变更需求时,往往“牵一发而动全身”,一不小心就会影响其他模块,导致广泛的测试和验证工作,进而影响项目进度,还增加维护的复杂性和风险。
- 代码库复杂庞大难掌握:大型项目一般周期长,人员流动比较大,代码库的庞大与复杂性使得新成员难以快速掌握项目结构和代码逻辑;老成员面对不断增长的代码库,也会遇到查找特定代码片段耗时费力的现象。
- 代码生成质量难以保证:真实编程过程中,开发者会使用各种工具来辅助编码,如搜索引擎、文档阅读器、代码测试工具等。虽然大模型具有强大的代码生成能力,但是缺乏与这些工具交互的能力,限制了它们在复杂任务中的效能。而且由于大模型的幻觉等问题,在生成具体的代码时可能存在使用错误的API等现象,无法保证代码生成质量和可靠性。
- 从需求到代码实现效率待提升:在项目开发全流程中,企业常面临需求理解不透彻、设计架构反复调整、开发进度难以把控、测试覆盖不全等问题,导致迭代效率低、项目延期、成本超支或质量不达标等,不仅增加企业的运营负担,还影响市场竞争力。
面对项目级代码生成的诸多痛点与挑战,引入智能Agent成为企业解决项目级代码生成难题、提升开发效率和代码质量、加速产品迭代的重要路径。
工具变伙伴,aiXcoder基于Agent实现项目级代码三大应用场景落地
作为领先的企业智能化软件开发解决方案提供商,aiXcoder基于Agent的智能软件开发系统,通过大模型与软件工具调用相结合,实现针对项目级代码的issue自动处理、代码库智能问答、全流程代码生成等复杂真实软件开发任务。
想象一下,软件开发不再仅仅是程序员与代码之间的单向对话,而是一个由智能Agent驱动的生态系统,它们能够快速理解需求、规划任务、自动编写代码,甚至与其他开发工具和团队成员无缝协作。工具变伙伴,人机协同完成一个大型项目的开发和上线,这就是aiXcoder基于Agent能够为企业带来的项目级软件开发新体验。
接下来,本文结合真实企业项目级软件开发的三个应用场景,介绍产品的3个功能,更直观地展示Agent如何在复杂的项目级代码中帮助开发者。
场景一:Bug修复和增量开发场景——issue自动处理功能
一个大规模复杂项目中,用户不断提出需求,功能持续迭代更新,程序员就会频繁收到在大型代码集上修改和扩充大量细节的任务,如Bug修复、功能开发或性能优化等。aiXcoder的issue自动处理功能可以精准解析开发者提交的复杂issue,自动定位问题/需求所在,充分结合代码库各模块、代码间的依赖关系和上下文信息,对问题/需求进行分步处理,最后直接生成代码文件,同时自主创建沙盒对编辑后的代码进行运行验证。在这个过程中,支持对多文件进行修改,而且可以随时中断人为介入交互调整。
在下方的示例中,我们看到这是一个经典的信息管理系统开发场景。开发人员提出了“分别在两个文件中新增学生相关信息”的需求,同时要求可运行。issue自动处理功能经过理解分析很快给出了规划并定位到具体文件。值得一提的是,它在自动执行过程中还发现了该需求与其他文件的依赖关系,一并自动处理并经过验证没有问题后,最终按照要求直接生成了代码文件。
issue自动处理功能不仅降低了开发者在问题定位和修复上的时间消耗,还能有效减少多文件修改时可能出现的错误。
场景二:项目研发问答场景——代码库智能问答功能
通过代码库问答功能,开发者可以通过自然语言提问,与代码库形成实时交互,解答关于代码架构、实现逻辑、代码间的依赖与调用关系等关键问题,快速获取和理解企业代码库中的知识和最佳实践,从而加速开发流程并提高代码的一致性和质量。同时,系统会根据历史提问,自动预测下一个问题,进一步优化开发者的学习路径和工作效率。
下面以一个spring boot的开源项目为例。新人刚进入项目后,通过提问,如:模块之间的依赖关系如何,文件夹中有哪些子模块,针对某个模块的详细讲解,某个类的定义和用途是什么等等,就可以高效了解当前项目进度,理解和掌握代码库,加快上手速度。
知识问答功能,一方面帮助新成员在庞大的代码库中快速了解项目结构和代码逻辑,缩短学习曲线;另一方面帮助老成员顺利找到分散在众多不同源文件和函数中的代码,节省大量时间和精力,使他们能够专注于核心开发任务。
场景三:从需求到完整的项目级代码生成场景——全流程代码生成功能
aiXcoder全流程代码生成功能,支持将产品经理或设计师提出的自然语言需求直接转化为精确的代码,包括从需求分析、系统设计、项目管理、开发、测试等环节从头开始生成一个完整的项目级代码及相关文档。
AI生成代码的过程中,开发者可以对中间的交付件,比如需求文档、部分代码模块、测试用例等进行修改和调整,以确保其符合具体需求和标准。同时,企业可以根据自身的研发流程和项目需求,对研发流程和中间交付件内容进行定制,例如,企业可以指定特定的编码规范、设计模式或测试标准,并要求AI按照这些要求生成相应的文档和代码。
这一功能为软件开发提供了一种更加高效、协同的机制流程。结合下面案例,Agent被定义了不同角色:产品经理、项目经理、架构工程师、研发工程师和测试工程师,它们像人一样听懂并理解用户需求,进行交互式、沉浸式编程,通过分步骤规划、多角色协同,调用各种常用开发工具,并实时反馈进度、验证结果及改进输出,最终完成一系列的代码生成任务。
全流程代码生成功能覆盖完整的研发流程,实现从需求分析到编码的全流程自动化,能够快速响应用户需求和反馈,显著提升开发效率,缩短产品从概念到上线的时间,提高产品市场竞争力。同时减少了人为编码错误,确保项目代码的一致性和可维护性。
Agent技术的引入,正在构建一个新的软件开发生态。在这个生态中,开发者与大模型的对话不再局限于简单的问答,而是围绕更复杂的企业项目级"目标"展开持续互动和工具调用,共同推动软件产品的快速迭代与持续优化。
毫无疑问,Agent引领下的智能化软件开发2.0正在带给软件工程越来越多的可能性。aiXcoder将继续致力于Agent技术的创新和应用,帮助企业应对项目级开发中的复杂挑战,提升开发效率和代码质量,并推动智能化软件开发的进一步发展,为企业创造更大价值。
相关论文:
- Kechi Zhang, Jia Li, Ge Li, Xianjie Shi, Zhi Jin, CodeAgent: Enhancing Code Generation with Tool-Integrated Agent Systems for Real-World Repo-level Coding Challenges, Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (ACL 2024), Bangkok, Thailand, Aug. 11-16, 2024. (Accepted)
- Yihong Dong, Xue Jiang, Zhi Jin, Ge Li, Self-collaboration Code Generation via ChatGPT, ACM Transactions on Software Engineering and Methodology (TOSEM), 2024. (Accepted)
- Xue Jiang, Yihong Dong, Lecheng Wang, Zheng Fang, Qiwei Shang, Ge Li, Zhi Jin, Wenpin Jiao, Self-Planning Code Generation with Large Language Model, arXiv preprint, arXiv:2303.06689, 2023.
- Zhang, Kechi, Ge Li, Jia Li, Zhuo Li, Zhi Jin, ToolCoder: Teach Code Generation Models to Use API Search Tool, arXiv preprint, arXiv:2305.04032, 2023.