Skip to content

open-code-review — 用确定性工程驾驭 LLM 的代码审查

阿里巴巴内部打磨两年、服务数万名开发者的 AI Code Review 工具开源版。核心思路不是训练更强的模型,而是设计更聪明的流程来驾驭模型:确定性管线(Deterministic Pipeline)处理"不容许出错"的环节,LLM Agent 只在划定好的边界内做语义推理,最终用约 1/9 的 token 成本换来更高的精准度(Precision)与更低噪音。

[!info] 基本信息 - 仓库:https://github.com/alibaba/open-code-review(Apache-2.0,Go + npm 分发) - 实测 Stars / Forks:26.9k / 1.9k(2026-09-20 验证) - 前身:阿里内部官方 AI 审查助理,两年服务数万开发者、识别数百万缺陷 - 安装:npm i -g @alibaba-group/open-code-review,命令名 ocr - 前置:Git >= 2.41(依赖 Git 做 diff 生成与代码搜索,视频未提) - 模型兼容:OpenAI / Anthropic / DashScope / DeepSeek / Z.AI 及自定义端点

目录


背景与痛点

用 Claude Code 等通用型 Agent 做 code review,开发者普遍撞上三堵墙(官方 README 原文确认同样表述):

痛点 表现 根因
覆盖不全(Incomplete coverage) 大变更集(changeset)下 Agent「挑重点看」,漏审关联档案 单一长上下文中注意力被稀释
位置漂移(Position drift) 指出的问题行号与真实代码对不上,核对成本高 LLM 对绝对行号天然不可靠
品质不稳 + 成本高 prompt 微调导致结果天差地远;token 消耗惊人 纯自然语言驱动缺乏硬性流程约束

根本成因:一个纯粹由自然语言驱动的架构,缺乏对审查流程的硬性规定(hard constraints)——行为既难预测也难控制。这与 Claude Code Hooks - 确定性自动化防线 的结论完全同构:用确定性机制替代不可靠的提示词约束,是当前 Agent 工程的共同收敛方向。

通用 Agent 审查的失败链条:

  大 PR ──> 全部塞进上下文 ──> 注意力稀释 ──> 漏审(低覆盖)
                │
                ├──> 行号靠模型记忆 ──────> 位置漂移(误报核对成本)
                │
                └──> 流程靠 prompt 描述 ──> 结果随 prompt 抖动(品质不稳)
                                              +
                                        整包重复发送(token 爆炸)

核心架构

「Deterministic Engineering × Agent」混合架构,可以想象成一个分工精密的作战指挥室:

                    ┌─────────────────────────────────────┐
                    │      确定性工程管线(作战参谋)         │
                    │  处理所有「不容许出错」的环节            │
                    └─────────────────────────────────────┘
  Git diff ──> ① 精确档案筛选 ──> ② 智慧分组(Bundle)
       (哪些该审/该滤)      (message_en + message_zh 打包)
                                  │
                                  ▼
                    ③ 规则匹配(Rule Matching)
                    (按档案特性路由:SQLi / XSS / 执行绪安全…)
                                  │
          ┌───────────────────────┼───────────────────────┐
          ▼                       ▼                       ▼
   ┌─────────────┐        ┌─────────────┐          ┌─────────────┐
   │ Sub-agent A │ 并行   │ Sub-agent B │   并行   │ Sub-agent C │
   │(隔离上下文)│ <───>  │(隔离上下文)│  <────>  │(隔离上下文)│
   └─────────────┘        └─────────────┘          └─────────────┘
          │                       │                       │
          └───────────────────────┼───────────────────────┘
                                  ▼
                    ┌─────────────────────────────────────┐
                    │  ④ 定位与反思模块(独立校对员)         │
                    │  三层渐进式行号定位 + 幻觉拦截          │
                    └─────────────────────────────────────┘
                                  │
                                  ▼
                        行级精准的审查评论

三大模块分工

模块 角色比喻 职责 官方补充细节(视频未提)
确定性管线 作战参谋 Git 精确筛选档案;语义/功能维度分组打包;按档案特性匹配审查规则 规则匹配基于模板引擎(template-engine),比纯语言驱动的规则引导更稳定可预测
LLM Agent 前线情报专家 在管线划定边界内动态读完整档案、搜索 codebase、交叉比对其他变更档案,深度推理 工具集从大规模生产环境的工具调用轨迹蒸馏而来(调用频率分布、单工具重复率),非通用 Agent 工具箱
定位与反思模块 校对员 评论产出前二次确认,校正行号与内容,压低误报率 官网称定位模块采用三层渐进式 LLM 策略(3-tier progressive);反思模块拦截幻觉与知识漂移

设计原则提炼

  1. 分而治之(Divide & Conquer):相关档案打包成独立任务 bundle,每个 bundle 由隔离上下文的 sub-agent 并行审查——上下文不膨胀,速度更快
  2. 工程管保证确定性,模型只做语义判断:档案选择、分组、规则路由、行号定位、异步调度全部工程化;风险识别、上下文探索、问题分类交给 Agent
  3. 注意力聚焦从源头减噪:规则匹配把每个 bundle 的判读范围缩到最小,无效 token 在进入模型前就被消灭

这套思路与 Loop Engineering 全攻略 - 从 Prompt 到 Agent Loop 中「L3 确定性测试做硬门禁、LLM 补语义盲区」的分层完全一致,也与 Markdown 取代程式碼 - Skill 就是新程式語言 里「确定性系统 vs 概率系统」的边界划分互为印证。


实务应用与工程落地

三种典型场景 + 完整命令(已对照官方 CLI Reference 验证):

1. 本机预审(Local Pre-check)

发 PR 前先在本地过一遍,提前修掉问题:

# 安装(npm 全局,命令名 ocr)
npm i -g @alibaba-group/open-code-review
ocr version

# 配置模型(交互式 TUI,自动测连通性)
ocr config provider
ocr llm test

# 审查当前工作区所有变更(staged + unstaged + untracked)
ocr review

# 审查分支范围(merge-base 模式)
ocr review --from main --to feature-auth

# 审查单个 commit
ocr review --commit abc123

# 带业务背景上下文(官方称最高杠杆的 flag)
ocr review --background "Focus on auth refactoring"

2. CI/CD 自动化闸门

GitHub Actions / GitLab CI / Gerrit 均有官方集成(仓库根目录自带 action.yml),提交时自动扫描 SQL Injection、XSS 等安全风险:

# CI 中机器可读输出(stdout 保持纯 JSON)
ocr review --format json --audience agent

# SARIF 2.1.0 报告,直接对接 GitHub Code Scanning
ocr review --format sarif -o results.sarif

# 控制 CI 延迟与成本
ocr review --concurrency 8 --timeout 15 --effort medium

3. 全项目审计(Codebase Audit)

接手陌生 codebase 时做全域健康检查:

# 扫整个仓库(无需 git 历史)
ocr scan

# 扫特定目录或档案
ocr scan ./internal/auth

场景决策树

需要审查?
├── 有 git diff(开发中 / PR / commit)
│   ├── 本地还没推 ──────────> ocr review(workspace 模式)
│   ├── 已推分支 ────────────> ocr review --from main --to <branch>
│   └── 要挂 CI 闸门 ────────> ocr review --format sarif + Actions
├── 无 diff(接手陌生项目)
│   └── 全局健康检查 ─────────> ocr scan ./target-dir
└── 不想配 API key(已有编码 Agent)
    └── Delegation Mode ─────> ocr 只管档案筛选+规则路由,
                               审查由宿主 Agent(Claude Code/
                               Codex/Cursor)用自己的模型执行

Delegation Mode 是视频漏掉的重点:OCR 负责确定性的档案选择与规则解析,LLM 推理交给宿主编码 Agent——「确定性骨架 + 借用别人的模型」,对已在用 Claude Code 的团队几乎零迁移成本。另有 VSCode 扩展、MCP Server、Session Viewer(浏览器回放审查会话)等生态件。


核心取舍:Precision vs Recall

设计上刻意牺牲召回率换极高精准度——这是本项目最值得玩味的决策:

维度 open-code-review 通用 Agent(如 Claude Code)
定位 高风险缺陷「资深顾问」 什么都看什么都包的「初阶审查员」
回报的问题 极高机率是真问题(低误报) 误报多,triage 成本高
代价 可能漏掉罕见/复杂的边界缺陷 覆盖广但噪音大、token 贵
适合 CI 自动闸门、成本延迟敏感团队 探索式人工深审

潜在风险清单:

  • ❌ 过度依赖 → 它刻意放过的少见缺陷会被系统性忽略(低 Recall 是设计而非缺陷)
  • ❌ 资安疑虑 → 原始码仍会送往外部 LLM 服务;企业落地需搭配去敏遮蔽或私有化部署(官方预设 provider 含 DashScope/自定义端点,支持私有模型)
  • ⚠️ 稳定性待验证 → 有开发者小规模测试发现无法完成所有案例审查;作者承认样本太小仅供参考。第三方实测(samuellawrentz.com)也指出其「Rules First, Model Second」的设计在真实 commit 上有效,但案例数有限
  • ⚠️ Recall 可调但更贵 → 官方 CLI 提供 --effort low|medium|high(1/2/3 轮审查),high 提升召回但成本按比例上升

总结:它的价值不在于发明更聪明的 AI,而在于设计更聪明的流程来驾驭 AI——用严谨的工程化手段,把 LLM 的不确定性限制在可控范围内,把 AI 从天马行空的创意伙伴变成专注、高效、成本可控的生产力工具。


AACR-Bench 基准数据

官方开源基准:50 个热门开源仓库 / 200 个真实 PR / 10 种语言,80+ 位资深工程师交叉标注出 1,505 个 ground-truth 问题(数据集在 HuggingFace:Alibaba-Aone/aacr-bench)。

同模型(Claude-4.6-Opus)下 OCR vs Claude Code 直接对比:

指标 OCR v1.3.1 Claude Code v2.1.169 差距
F1 25.10% 11.57% 2.17×
Precision 33.90% 7.23% 4.69×
Recall 20.00%(301/1505) 28.90%(435/1505) OCR 低——印证「牺牲召回」
Avg Time 1m23s 13m6s 9.5× 快
Avg Token 385K 5,664K ≈ 1/14.7

榜首为 Claude-4.6-Opus + OCR;第二名 Qwen3.8-Max + OCR(F1 23.00%)。官方口径「~1/9 token」来自 1,000 PRs 规模统计,同模型单点对比实际可达 1/15——方向一致,量级甚至更夸张。


验证与勘误记录

视频声称 vs 一手来源交叉验证(2026-09-20):

视频声称 验证结果 来源
阿里巴巴开源、内部大规模验证过 ✅ README:阿里集团内部官方审查助理,两年服务数万开发者、识别数百万缺陷 GitHub README
GitHub 累积超 34,000 颗星,一天 +3,000 ⚠️ 实测 26.9k stars / 1.9k forks(2026-09-20),与 34K 不符;star 数不会下降,视频数字疑似夸大或口径不同 GitHub 仓库页
九分之一 token 成本 ✅ README「~1/9 of the tokens」;同模型基准实测 385K vs 5,664K ≈ 1/15 README + 官网 benchmark
刻意牺牲 Recall 换 Precision ✅ README 原文确认 deliberate trade-off;基准数据 Recall 20.0% vs Claude Code 28.9% README + 官网
ocr review / ocr scan 指令 ✅ 官方 CLI Reference 完整确认,另有 --effort、--format sarif、session 管理等大量视频未提的能力 官网 CLI 文档
内建 NPE、执行绪安全、XSS、SQL Injection 多语言规则 ✅ README About 确认,且覆盖 40+ 语言/档案类型(Java/TS/Go/Python/Kotlin/Rust/C++/Swift/Solidity…) GitHub README
相容 OpenAI 与 Anthropic ✅ 支持 Anthropic Messages / OpenAI Chat Completions / OpenAI Responses 三协议,预设 provider 另含 DashScope、DeepSeek、Z.AI 官网首页
前身服务过「数万名开发者」 ✅ README 原文 tens of thousands of developers;官网另称内部 20K+ 活跃用户、3M+ 真实任务 README + 官网

视频未提但值得知道的:Git >= 2.41 前置要求;Delegation Mode(免配 API key,借宿主 Agent 的模型);--effort 三档审查深度;AACR-Bench 开源数据集;VSCode 扩展 / MCP Server / Session Viewer / OpenTelemetry 遥测。


参考资料

相关笔记