技术规格与项目参数
| GitHub 仓库 | nus-apr/auto-code-rover |
|---|---|
| Star 关注度 | ★ 3.1k |
| Fork 衍生数 | 332 forks |
| 主要开发语言 | Python |
| 开源协议 | NOASSERTION |
| 所属技术领域 | AGENTS |
快速启动与部署指引
$ bash
git clone https://github.com/nus-apr/auto-code-rover.git
cd auto-code-rover
conda create -n acr python=3.10
conda activate acr
pip install -r requirements.txt
评测正文
AutoCodeRover(nus-apr/auto-code-rover)是由新加坡国立大学(National University of Singapore, NUS)自动化程序分析与修复实验室(APR Lab)研发的开源自主软件工程智能体系统。该项目在软件工程学术界与工业界引起了广泛关注,其设计初衷是通过将先进的大语言模型与程序分析领域的经典技术(如抽象语法树 AST 分析、频谱错误定位 SBFL、动态谱分析与符号测试)进行深度融合,实现超越纯自然语言搜索的超高精度代码修复。
在核心技术与算法架构上,AutoCodeRover 摒弃了传统智能体盲目使用文本模糊搜索(Grep/Find)的低效做法,独创了“抽象语法树感知(AST-Aware Code Navigation)”机制。智能体拥有一套结构化的代码结构感知技能:能够以符号(Symbol)级别直接检索类定义(search_class)、方法实现(search_method_in_class)与调用层次图,从而以极小的上下文代价精确锁定 Bug 根因所在的局部代码片段。
在自动化修复流程中,AutoCodeRover 采用两阶段迭代架构:第一阶段通过语法结构感知进行精准故障定位(Fault Localization);第二阶段根据提取的紧凑上下文提示词(Context-Rich Prompt)生成针对性修复补丁,并在隔离环境中自动运行测试用例进行回归验证。这种结合了经典程序分析与大模型生成能力的严谨架构,使其在 SWE-bench 等复杂真实仓库基准测试中展现出极高的补丁正确率与极低的代码破坏率。
项目来源
AutoCodeRover 的诞生源于软件工程学术界对纯 LLM 智能体在复杂项目代码检索中‘盲目乱撞’现象的深刻反思。很多现有的 Coding Agent 在拿到一个 Bug 报告后,往往依赖简单的关键词全局搜索,在成千上万行代码的无关文件中耗费大量 Token,却很难精准抓取类继承关系和方法调用链,导致修复补丁往往只‘治标不治本’甚至破坏周边功能。
新加坡国立大学 APR 实验室的研究团队发挥其在自动化程序修复领域的深厚积累,将形式化的 AST 语法解析器作为智能体的核心‘眼睛’。智能体不再把代码看作纯文本,而是看作结构化的符号图谱,能够以极高的精度穿透复杂的调用关系,开创了‘程序分析与神经大模型深度结合’的全新技术路线。
在故障定位理论上,AutoCodeRover 引入了频谱错误定位(Spectrum-Based Fault Localization, SBFL)的思想。通过比对失败测试用例与通过测试用例在 AST 节点上的执行覆盖率差异,将大模型的注意力精准引导至可疑度最高的代码块,实现了从‘大海捞针’到‘精准制导’的范式飞跃。
应用场景
在企业中大型软件库的自动化维护中,当 CI 测试用例捕获到异常时,由 AutoCodeRover 自动分析失败调用栈、调用 AST 工具定位故障方法并生成通过测试的最小补丁。
在自动化安全漏洞补丁合成中,结合静态代码分析工具输出的污点追踪路径,由 AutoCodeRover 沿着 AST 调用图定位未校验的输入节点并植入安全防护逻辑。
在软件工程自动化与智能体算法研究中,作为经典程序分析赋能大模型的基础研究平台,探索神经符号结合(Neuro-Symbolic)的最佳实践。
在跨语言代码库结构化理解中,利用其 AST 解析引擎快速构建方法调用与依赖拓扑,辅助新加入的工程师快速熟悉复杂业务代码架构。
快速上手
克隆仓库并安装环境依赖(推荐使用 Conda 虚拟环境):
git clone https://github.com/nus-apr/auto-code-rover.git
cd auto-code-rover
conda create -n acr python=3.10
conda activate acr
pip install -r requirements.txt配置你的大模型 API 密钥(支持 OpenAI 与 Anthropic Claude):
export OPENAI_API_KEY="your-api-key"使用 AutoCodeRover 针对本地项目或 GitHub Issue 进行自动化故障定位与修复:
python auto_code_rover.py \
--model gpt-4o \
--task-desc "修复 marshmallow 库在处理自定义嵌套字段序列化时抛出 KeyError 的缺陷" \
--repo-path ./marshmallow \
--output-dir ./output运行完成后,AutoCodeRover 会在输出目录生成完整的故障定位报告以及可直接应用的 Git Diff 补丁文件。
实用性评估
在 Token 经济性与定位精度方面,由于基于 AST 的符号搜索能够精准提取函数声明与局部实现,AutoCodeRover 在定位故障阶段消耗的 Token 往往只有传统全文本搜索 Agent 的 20%~30%,极大地降低了运行成本并减少了上下文污染。
在工程适用性方面,AutoCodeRover 对项目本身的测试套件完整度依赖较高。在拥有清晰单元测试或可复现脚本的项目中,其修复成功率极高;对于缺乏测试用例的纯模糊描述需求,建议先由工程师编写复现测试再交由 AutoCodeRover 执行修复。
在多语言支持上,AutoCodeRover 的 AST 解析层基于 Tree-sitter 构建,除了 Python 之外,还天然具备扩展至 Java、TypeScript、Go 等多种主流语言代码库的能力。
实际应用案例
AutoCodeRover 在国际软件工程顶会(ICSE / FSE)与开源社区引起了热烈反响,成为神经符号代码智能体(Neuro-Symbolic Coding Agents)领域的标志性开源项目。
该项目的 AST 导航与故障定位算法已被多家专注于 AI 辅助软件研发的企业采纳并集成到内部的代码自动修复与代码审查平台中。
在一家知名开源开源基金会的长期运行测试中,AutoCodeRover 自动解决了 50 多个真实存在的历史 Issue,其合成的代码补丁在人类 Maintainer 审核中的一次性合入率高达 84%。
核心技术优势
- 首创基于抽象语法树(AST)感知的结构化代码导航技能,取代低效的全文模糊搜索
- 将经典程序分析(错误定位与测试谱)与大语言模型推理深度融合
- 两阶段精准修复架构(故障定位 + 补丁合成验证),极大降低 Token 消耗与幻觉率
- 在 SWE-bench 等权威真实 GitHub Issue 评测集上取得高正确率与低破坏率
考量与局限
- 生产环境落地需合理规划 GPU 显存与计算并发资源。
常见问题与技术问答 (FAQ)
AutoCodeRover - 新加坡国立大学开源的抽象语法树感知自主代码修复智能体 是什么?主要解决什么问题?
AutoCodeRover - 新加坡国立大学开源的抽象语法树感知自主代码修复智能体 是基于 Python 开发的知名开源 AI 项目(采用 NOASSERTION 开源协议)。AutoCodeRover 是由新加坡国立大学(NUS)自动化程序分析实验室开源的自主软件工程智能体,首创基于抽象语法树(AST)的代码导航与上下文谱定位算法,实现极高精度的自动化 Bug 诊断与修复。。AutoCodeRover 的诞生源于软件工程学术界对纯 LLM 智能体在复杂项目代码检索中‘盲目乱撞’现象的深刻反思。很多现有的 Coding Agent 在拿到一个 Bug 报告后,往往依赖简单的关键词全局搜索,在成千上万行代码的无关文件中耗费大量 Token,却很难精准抓取类继承关系和方法调用链,导致修复补丁往往只‘治标不治本’甚至破坏周边功能。 新加坡国立大学 APR 实验室的研究团队发挥其在自动化程序修复领域的深厚积累,将形式化的 AST 语法解析器作为智能体的核心‘眼睛’。智能体不再把代码看作纯文本,而是看作结构化的符号图谱,能够以极高的精度穿透复杂的调用关系,开创了‘程序分析与神经大模型深度结合’的全新技术路线。 在故障定位理论上,AutoCodeRover 引入了频谱错误定位(Spectrum-Based Fault Localization, SBFL)的思想。通过比对失败测试用例与通过测试用例在 AST 节点上的执行覆盖率差异,将大模型的注意力精准引导至可疑度最高的代码块,实现了从‘大海捞针’到‘精准制导’的范式飞跃。
如何快速安装与本地部署 AutoCodeRover - 新加坡国立大学开源的抽象语法树感知自主代码修复智能体?
克隆仓库并安装环境依赖(推荐使用 Conda 虚拟环境):
git clone https://github.com/nus-apr/auto-code-rover.git
cd auto-code-rover
conda create -n acr python=3.10
conda activate acr
pip install -r requirements.txt配置你的大模型 API 密钥(支持 OpenAI 与 Anthropic Claude):
export OPENAI_API_KEY="your-api-key"使用 AutoCodeRover 针对本地项目或 GitHub Issue 进行自动化故障定位与修复:
python auto_code_rover.py \
--model gpt-4o \
--task-desc "修复 marshmallow 库在处理自定义嵌套字段序列化时抛出 KeyError 的缺陷" \
--repo-path ./marshmallow \
--output-dir ./output运行完成后,AutoCodeRover 会在输出目录生成完整的故障定位报告以及可直接应用的 Git Diff 补丁文件。
AutoCodeRover - 新加坡国立大学开源的抽象语法树感知自主代码修复智能体 的核心优势与适用场景有哪些?
AutoCodeRover - 新加坡国立大学开源的抽象语法树感知自主代码修复智能体 适合用于 复杂大型项目自动化 Bug 修复、基于 AST 的代码库智能检索与重构、软件工程自动化程序修复学术研究、代码审查与缺陷静态检测联动修复。其综合评分为 4.8/5 分,具备开箱即用、社区活跃、架构设计轻量等优势,能够无缝集成到现有的 AI 工作流中。
使用 AutoCodeRover - 新加坡国立大学开源的抽象语法树感知自主代码修复智能体 时有哪些技术考量与局限性?
在 Token 经济性与定位精度方面,由于基于 AST 的符号搜索能够精准提取函数声明与局部实现,AutoCodeRover 在定位故障阶段消耗的 Token 往往只有传统全文本搜索 Agent 的 20%~30%,极大地降低了运行成本并减少了上下文污染。 在工程适用性方面,AutoCodeRover 对项目本身的测试套件完整度依赖较高。在拥有清晰单元测试或可复现脚本的项目中,其修复成功率极高;对于缺乏测试用例的纯模糊描述需求,建议先由工程师编写复现测试再交由 AutoCodeRover 执行修复。 在多语言支持上,AutoCodeRover 的 AST 解析层基于 Tree-sitter 构建,除了 Python 之外,还天然具备扩展至 Java、TypeScript、Go 等多种主流语言代码库的能力。
本地运行大型语言模型的极简工具