阿里开源了一款 AI 代码审查工具:同样的大模型,token 只要通用 Agent 的 1/9

3 阅读5分钟

阿里开源了一款 AI 代码审查工具:同样的大模型,token 只要通用 Agent 的 1/9

最近在 GitHub 上刷到 Alibaba 开源的 open-code-review(下文简称 OCR),Star 已经 38k。这个项目不是那种"为了开源而开源"的KPI 产物——它在阿里内部跑了两年,是官方的 AI Code Review 助手,服务过几万名工程师,官方说累计发现了数百万个代码缺陷。今年 5 月才挂到 GitHub 上,Apache-2.0 协议,主语言 Go。

如果你用 Claude Code、Cursor 这类通用 Agent 跑过代码审查,大概率踩过这几个坑:改动一多它就"挑着看",总有文件被悄悄跳过;报出来的行号和文件路径对不上,得自己再核一遍;prompt 稍微动两个字,审查结果就明显波动。OCR 就是冲着这些问题做的。

思路:别把所有事都交给大模型

通用 Agent 做 review 的毛病,说到底是纯 prompt 驱动的架构对流程没有硬约束。OCR 的做法是把整个审查流程劈成两半:

该由代码保证的,就不劳烦模型。哪些文件要审、哪些该过滤,用工程逻辑判定;相关的文件自动打包成一个审查单元(比如 message_en.propertiesmessage_zh.properties 会捆在一起),每个单元作为独立子 Agent 在隔离上下文里跑,所以改动量再大也不会失控,还天然支持并发。规则匹配走模板引擎而不是自然语言,结果稳定可预测。

该由模型判断的,才交给 Agent。Prompt 模板是专门为代码审查调过的;工具集也不是通用那一套,而是从生产环境里大量工具调用轨迹中蒸馏出来的——哪些工具调用频率高、哪些重复率高、加新工具对调用链有什么影响,都分析过。

行号是怎么钉准的

"AI 评论指错行"是这类工具最影响体验的问题。OCR 为此做了两个独立模块:

一个是行级定位模块,用三层渐进式的 LLM 策略把每条评论钉到精确行号;另一个是反射模块,专门拦截幻觉和知识漂移。关键在于这两个模块都在 Agent 主流程之外,属于工程兜底,而不是指望模型自己"长记性"。

几个实用的设计

审查深度可调。low / medium / high 三档,low 换速度,high 用在不能漏的关键变更上。比较聪明的是 Agent 一轮没找到新风险会自动收敛,不会为了"深"而无限烧 token。

上下文压缩。为代码审查场景专门设计的三层分区(frozen / compress / active),上下文再长也能做深度审查,不至于中途截断。

模型随便换。支持 Anthropic Messages API、OpenAI Chat Completions、OpenAI Responses 三种协议,内置 Anthropic、OpenAI、DashScope、DeepSeek、Z.AI 几个预设,也支持自定义端点做私有化部署。国内用 DeepSeek 或者通义的成本很低。

内置规则集覆盖 40 多种语言。Java、TypeScript、Go、Python、Kotlin、Rust、C/C++、Swift,甚至 Solidity 和 Verilog 都有,常见检查项包括 NPE、线程安全、XSS、SQL 注入、资源泄漏这些。

跑分:精度上去了,成本下来了

项目团队开源了一个叫 AACR-Bench 的基准数据集:50 个流行开源仓库、200 个真实 PR、10 种编程语言,80 多位资深工程师标注出 1505 条 ground-truth 问题,数据集放在 HuggingFace 上(Alibaba-Aone/aacr-bench)。

同样的底层模型,OCR 对比 Claude Code 这类通用 Agent:Precision 和 F1 明显更高,token 消耗大约是 1/9,速度也更快。Recall 反而比通用 Agent 低——这是有意的选择,代码审查场景里误报的代价(人工逐条排查)比漏报高,团队明确选了"精度优先于噪音"。

上手

前置要求就一个:Git >= 2.41。

npm install -g @alibaba-group/open-code-review

npm 包会按 os/cpu 字段自动解析对应平台的二进制,不需要 postinstall 再下载,国内网络友好。装完就有全局的 ocr 命令。

配置模型是个交互式向导,选 Provider、填 key、选模型,最后自动测连通性:

ocr config provider
ocr config model

不想自己配 LLM 的话还有个委托模式:OCR 只负责文件筛选和规则解析,审查交给你已经配好的 Coding Agent 自己跑,完全不需要给 OCR 单独配 key:

ocr delegate preview
ocr delegate rule src/main.go src/handler.go

日常审查:

cd your-project

# 审查工作区所有改动(staged / unstaged / untracked)
ocr review

# 审查 feature 分支相对 main 的全部改动
ocr review --from main --to feature-branch

# 单个 commit
ocr review --commit abc123

# 全文件扫描,不依赖 git diff,适合审计陌生代码库
ocr scan --path internal/agent

# 输出 JSON 给上游 Agent 消费
ocr review --format json --output result.json

审查中断了可以用 ocr session list 找到会话,加 --resume <session-id> 接着跑。

集成

它不打算替代你的 IDE 和 Agent,而是往现有流程里嵌:

  • Coding Agent 插件:Claude Code、Codex、Cursor、Kimi Code、OpenCode 都有官方插件
  • IDE:VSCode 和 JetBrains IDEA 插件(IDEA 插件今年 9 月刚合入)
  • CI:GitHub Actions、GitLab CI、Gerrit 都有现成集成
  • 另外提供 MCP Server,以及浏览器端的 Session Viewer,可以回放审查会话、把评论标记为已修复或忽略

谁适合用

个人开发者拿来当开箱即用的审查工具,比直接让通用 Agent 审更准也更省;小团队可以直接接进 CI,PR 提上来跑一轮;中大型团队看中 Apache-2.0 加私有化端点支持,可以自建部署。

我的看法是,这个项目有意思的地方在于它没有追"通用 Agent"的热点,而是在代码审查这一个场景里把工程做扎实了:流程硬约束、行级定位、反射兜底、跑分公开可查。如果你被通用 Agent 审查不稳定、token 烧太快这些问题困扰过,值得装来试试。

  • GitHub:github.com/alibaba/open-code-review
  • 文档:open-codereview.ai/docs