GitHub 趋势 · 第 70 期

阿里开源的 AI 代码审查工具,把「输的那个指标」写在了 README 里

#GitHub趋势#AI代码审查#阿里开源

先给结论:这个项目最值得读的不是功能表,是官方自己划的那条边界 —— 它明说 Recall(召回率)低于通用 Agent,并把这件事解释成一次有意的取舍:宁可少报,也不要噪声。一个工具敢把输的指标写进第一段,比它宣称赢了多少项更值得信。

用通用 Agent 做代码审查,官方总结了三个反复出现的毛病:变更集一大就挑文件审、位置漂移(报出来的问题对不上真实行号)、质量随提示词波动。它给的根因只有一句:纯语言驱动的架构,对审查过程没有硬约束

它是什么

Open Code Review(命令是 ocr)是阿里开源的 AI 代码审查 CLI。它原本是阿里内部官方的 AI 代码审查助手,按 README 的说法已经运行两年、服务过数万名开发者、识别出数百万个代码缺陷,在被大规模验证之后孵化成了开源项目。用 Go 写,Apache-2.0,仓库 2026 年 5 月建,到抓取时 22,376 star

工作机制是读 Git diff,把改动过的文件交给一个带工具调用能力的 Agent。这个 Agent 能读完整文件、搜代码库、翻其他改动文件补上下文,最后产出带行号定位的结构化审查意见。除了审 diff,还有 ocr scan 做整文件扫描 —— 用来审那些没有有意义 diff 的目录,比如第一次接手一个陌生代码库。

核心设计:确定性工程 + Agent 的分工

它的核心主张是把「不能出错的步骤」从模型手里拿走,交给工程逻辑;模型只负责真正需要动态判断的部分。两边具体分到哪些活,README 写得很清楚:

环节由谁负责做法
选文件工程逻辑确定哪些文件必须审、哪些过滤掉,保证不漏重要改动
文件分组工程逻辑相关文件合成一个审查单元(如中英 properties 捆在一起),每个单元跑独立子 Agent,天然支持并发
规则匹配工程逻辑按文件特征匹配规则,走模板引擎而不是语言提示
定位与反思工程逻辑独立的评论定位模块 + 评论反思模块
提示词Agent为代码审查专门调过的模板,同时压低 token 消耗
工具集Agent从生产数据的工具调用轨迹里蒸馏出来的专用工具集

效果那一段,官方给了两个方向的数字:同等底层模型下,Precision 与 F1 明显更高、token 约为通用 Agent 的 1/9、耗时更短;同时 Recall 低于通用 Agent。基准口径是 50 个热门开源仓库、200 个真实 PR、10 种编程语言,由 80+ 位资深工程师交叉校验出 1,505 条标注。

它给「用 AI 写代码」立了 8 条规矩

仓库根目录有一份 AGENTS.md(4,702 字节),它不是介绍项目的,是给「要改这个仓库」的人立的规矩。八条,每条都是硬要求,没有一句「建议」:

第 6 条值得单独拎出来:modular 在同一件事上的要求正好相反 —— 那边要求给 AI 辅助的提交打上 Assisted-by: AI 标签,这边禁止出现任何把功劳归给 AI 的 trailer。同一种 trailer,两家大厂给出完全相反的规则:一家要你标出来,一家要你别标。

还有一条不常见的 CI 门槛写在同一份文件里:make english-check 会拦下源码里任何非 ASCII 字母 —— 汉字、假名、谚文、西里尔字母都拦,连德语变音符甚至全角标点都不放过,一个全角冒号或全角括号也会被拦下,只有符号和 emoji 放行。翻译有各自的家(README.<locale>.md、文档站的 locale 目录、i18n 表),那些目录不在扫描范围内;个别例外要在行尾挂一个 allow-non-english: <reason> 标记说明理由。一个中文公司的项目,把「源码里不准出现一个汉字」做成了 CI 检查。

顺带一个体量上的细节:五个 README 语言版本里,俄语版 19,260 字节最长,日语 15,918、韩语 13,531、英文 12,829,简体中文版 12,397 字节是最短的那一版。而 AGENTS.md 里有一条硬规则 —— 改 README.md 必须同步四个本地化版本。

另外根目录同时摆了 .agents/.claude/.claude-plugin/ 三套入口,而 CLAUDE.md 只有 11 字节,全文就一行 @AGENTS.md。也就是说这个仓库没给 Claude 单独写说明,只是把上层入口指回同一份文件 —— 4,702 字节的 AGENTS.md 是正身,11 字节的 CLAUDE.md 是路牌。

上手

前置条件只有一条:Git >= 2.41。安装走 npm,装完命令是 ocr

# 安装(主通道是 npm)
npm install -g @alibaba-group/open-code-review

# 配模型:必须先配,除非走下面的 delegation 模式
ocr config provider
ocr config model

# 审工作区里已暂存 / 未暂存 / 未跟踪的全部改动
ocr review

# 按分支区间审(审 feature-branch 从 main 分叉之后的所有改动)
ocr review --from main --to feature-branch

# 只审一个 commit
ocr review --commit abc123

# 中断之后接着审
ocr session list
ocr review --from main --to feature-branch --resume <session-id>

另外三条路:整文件扫描、给宿主 Agent 用的 JSON 输出、以及不用配 LLM 的 delegation 模式。

# 整文件扫描:不需要 git 历史
ocr scan
ocr scan --path internal/agent

# 输出 JSON,推荐给宿主的 AI agent 读
ocr review --format json --output result.json

# delegation 模式:让宿主 Agent 自己审,OCR 只负责选文件和解析规则,不需要 OCR 的 key
ocr delegate preview
ocr delegate rule src/main.go src/handler.go

我的判断

适合谁:CI 里需要一个稳定、低噪声的增量审查环节的团队;已经有自建模型端点、不想再为 review 单独烧一笔 token 的团队;以及想让 Agent 复用自己工作流的场景 —— delegation 模式不需要配 OCR 的 key,等于把选哪些文件、套哪些规则这两件工程活外包出去,推理仍然跑在你自己的宿主 Agent 里。

不适合谁:指望它顶掉人工 review 兜底的人。官方自己写了 Recall 低于通用 Agent,它优化的目标是报出来的得是真问题,而不是一个都别漏。要的是覆盖率而不是信噪比,那它的取舍方向正好和你相反。另外 Git 版本低于 2.41 的环境直接出局。

:① 版本别只信一个端点。抓取时 /releases/latest 返回 v1.11.9,而 /tags 的第一项已经是 v1.12.0,两个端点不一致,判版本要看 tag 列表。

效果数字全在图片里。50 个仓库、200 个 PR、1,505 条标注这些口径写在正文,但 F1、Precision、Recall、平均耗时、平均 token 五个指标的数值全在一张 PNG 里 —— 正文里能读到的只有一个约 1/9 token 的概述,没有一行可核的表格数字。

对比对象是自己挑的。所谓通用 Agent 那一档,以及这个基准本身,都出自项目自己,不是第三方评测;开头那句服务过数万名开发者、识别出数百万个代码缺陷,同样是内部数字,外部无从核实。

发行产物的体量容易低估。最新一版挂了六个平台二进制,每个 53–58 MB,合计约 332.8 MB,是仓库自身体积(51,535 KB)的约 6.3 倍。

star 涨得快,长期跟的人少。22,376 star 对 66 个 watcher(约 0.3%)、158 个未关 issue。装之前建议先按你的语言和 CI 平台搜一遍 issue 关键词。

仓库:github.com/alibaba/open-code-review | 官网:open-codereview.ai

Star:22,376(REST API 实测)/ 22,677(Trending Go 日榜同期快照)| 今日 +115

Fork:1,665 | Watcher:66 | 未关 issue:158

许可:Apache-2.0(仓库根 LICENSE 11,356 字节,标准全文,无附加条款)

主要语言:Go | 仓库体积:51,535 KB | 默认分支:main | archived:false | 维护者类型:Organization

创建:2026-05-18 | 最近推送:2026-09-11

最新 release:v1.11.9(2026-09-11 发布,6 个平台二进制 + sha256sum.txt);tag 列表首位:v1.12.0

数据来源:GitHub Trending 官方页面 + GitHub REST API | 抓取时间:2026-09-13 (GMT+8)

你们团队现在用 AI 审 PR 吗?是把 diff 直接丢给通用 Agent,还是接了这种专用工具?

还有一个更实际的问题:如果一个工具明确告诉你「我召回率不如通用 Agent,但我只在有把握的时候才报」,你会把它放进 CI 的必过项,还是只当一份参考?

下期预告:分语言榜继续零新面孔的话,兑现欠了两期的「把模型塞进小设备与边缘」主题族横向合集;一旦出现高动量新面孔,就回到单项目精读。

#GitHub趋势#AI代码审查#开源工具