在软件开发流程中,代码编译是不可或缺的一环。面对日益增长的开源项目规模和复杂性,手动进行仓库级编译往往伴随着效率低下和错误频发的问题。如何有效应对环境配置、依赖管理及编译错误等挑战,是当前自动化软件分析领域的一个重要课题。今天,我们很高兴向大家介绍一项由奇安信星图实验室和中国科学技术大学共同参与的研究项目——CompileAgent,这项工作已成功中稿**ACL 2025!**它是一个基于大型语言模型(LLM)的智能体框架,旨在探索仓库级代码编译的自动化方案。
01.仓库级编译的挑战
与简单的单文件编译不同,对整个代码仓库进行编译涉及复杂的构建配置和多文件间的相互依赖。开发者们在这一过程中常遇到诸多难题,例如查找准确的编译指令、处理依赖冲突、解决环境不匹配以及代码兼容性问题等。这些挑战使得自动化编译成为一个复杂且有待深入探索的领域。
02.CompileAgent:一个LLM驱动的仓库级自动化编译框架
受到LLM在自动化复杂任务方面应用前景的启发,我们提出了CompileAgent——首个专为仓库级代码编译任务设计的LLM智能体框架。它旨在通过模拟开发者的编译工作流,自主地搜索编译指令并解决编译过程中出现的错误。
CompileAgent的关键组成:
CompileAgent集成了五种工具和一个流式代理策略,主要通过以下两个核心模块协同工作:
●CompileNavigator(编译导航模块):负责在代码仓库中寻找并提取正确的编译指令。它利用Shell工具与交互环境进行操作,通过文件导航器(File Navigator)识别可能包含指令的文件,并借助指令提取器(Instruction Extractor)从文件中提炼出编译步骤,甚至从相关URL获取网页内容进行汇总。
●ErrorSolver(错误解决模块):专用于处理项目构建过程中遇到的编译错误。它包含网页搜索(Website Search)工具,能够查询在线资源(如GitHub和StackOverflow)以获取解决方案。此外,它还采用了多智能体讨论(Multi-Agent Discussion)机制,多个LLM智能体通过多轮讨论,共同分析复杂的编译错误并生成初始解决方案,直到达成共识。
CompileAgent遵循一种流式代理策略,该策略定义了工具的使用顺序,并通过提示词实现工具间的无缝衔接。
「CompileAgent系统架构图」
03.实验效果
我们构建了CompileAgentBench,一个包含100个C/C++项目的仓库级编译基准,使用七个主流LLM驱动CompileAgent进行了评估。实验结果显示了CompileAgent的有效性:
●编译成功率提升:相较于现有的基线方法(OSS-FuZZ-Gen)和针对辅助编译而构建的方案(Readme-Al 和 RAG),CompileAgent的编译成功率提升了17%至71%。例如,在Claude-3.5-sonnet模型上,成功率提升了71%。
●编译时间减少: 编译总时间可减少最多121.9小时。
●成本效益: 平均每个项目的编译成本约为0.22美元。
「CompileAgent实验结果对比图」
04.讨论与未来潜力
CompileAgent的实践经验表明,LLM智能体在处理复杂的软件工程任务方面具有潜力。这项工作在多个领域提供了启发意义:
●自动化CI/CD: 仓库级自动化编译是持续集成/持续部署(CI/CD)流程中的关键一步。CompileAgent的成功经验为构建更智能、更自主的CI/CD流水线提供了新的思路。
●自动化程序分析: 编译成功所生成的二进制文件或库可用于后续的性能测试、优化和安全漏洞分析。CompileAgent也可以继承编译时代码分析工具(如Coverity Scan和Scan-Build),可以进一步提升自动化程序分析的效率和可靠性。
●软件标准测试环境自动化构建: 通过自动完成复杂的编译过程,CompileAgent有助于快速搭建和维护标准化的软件测试环境,降低环境配置的难度和耗时。
●多语言与跨架构编译: 借助其可扩展性,CompileAgent有望支持多语言(如Go、Rust等)和多架构(如MIPS、ARM等)的编译,从而拓展其应用范围。
CompileAgent的工作为LLM在真实世界软件工程领域的应用打开了新的视角。我们期待它能在未来的自动化开发实践中发挥更大的作用。
05.实践应用
实际上,CompileAgent在我们先前发布的ReCopilot项目的数据构建过程中起到了重要作用。我们使用它自动化编译了上百个开源项目,构建了9,733个 artifact-level 二进制文件,节省了约7人天的枯燥劳动时间,模型推理开销仅约100元人民币。
ReCopilot由奇安信技术研究院星图实验室研发, 是一个基于大模型的二进制程序分析辅助系统,利用人工智能增强逆向工程工作流程,为人类逆向工程师提供帮助以提升效率。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。