Open Code Review 实战指南:用阿里巴巴的混合架构 AI 工具做好代码审查
问题:AI 代码审查的「精度瓶颈」
如果你用过 Claude Code 或 Cursor 让 AI 做代码审查,大概率遇到过这些问题:
- 覆盖不全——改动文件多了,AI 只审了其中一部分
- 位置漂移——报的问题跟实际代码行号对不上
- 质量波动——同样的 Prompt,今天审得好明天审得差
这些问题的根源在于:纯语言驱动的架构缺少对审查过程的硬约束。AI Agent 像人类一样会「偷懒」——审到一半觉得够了就停,或者因为上下文太长而遗漏关键文件。
阿里巴巴内部也有同样的痛点。经过两年、数万开发者的内部验证后,他们把成果做成了开源项目——Open Code Review。
什么是 Open Code Review
Open Code Review(简称 OCR)是一个 AI 驱动的代码审查 CLI 工具。核心设计是确定性工程 + Agent 混合架构——把「绝对不能出错」的部分交给工程逻辑,把「需要动态判断」的部分交给 LLM。
- 仓库:github.com/alibaba/open-code-review
- 语言:Go|许可证:Apache-2.0
- Stars:1469|**89 forks
- 安装:
npm install -g @alibaba-group/open-code-review
对比纯 Agent 方案(如用 Claude Code Skills 做审查),OCR 的核心差异在于:
| 特征 | 纯 Agent 方案 | Open Code Review |
|---|---|---|
| 文件选择 | 靠模型理解 | 确定性规则匹配 |
| 位置精度 | 可能漂移 | 后处理反射模块修正 |
| 审查稳定性 | Prompt 波动影响大 | 模板引擎 + 规则分层 |
| 大变更集 | 容易遗漏文件 | 文件分片 + 子 Agent 并发 |
| 自定义规则 | 难以实现 | JSON 规则文件,四层优先级 |
安装与配置
安装
推荐通过 NPM 安装:
npm install -g @alibaba-group/open-code-review
安装后 ocr 命令全局可用。也可以从 GitHub Releases 直接下载二进制:
curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-linux-amd64 chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
配置 LLM
OCR 需要配置一个 LLM 端点。支持 OpenAI 和 Anthropic 兼容 API:
ocr config set llm.url https://api.anthropic.com/v1/messages ocr config set llm.auth_token sk-ant-xxxxx ocr config set llm.model claude-sonnet-4-6 ocr config set llm.use_anthropic true export OCR_LLM_URL=https://api.openai.com/v1/chat/completions export OCR_LLM_TOKEN=sk-xxxxx export OCR_LLM_MODEL=gpt-4o
OCR 还会自动读取 Claude Code 的环境变量(ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL),甚至能从 ~/.zshrc 和 ~/.bashrc 中解析这些变量。
配置完成后测试连通性:
ocr llm test
如果返回 Connection OK,就可以开始审查代码了。
日常使用场景
场景一:审查工作区变更
在项目目录下直接运行:
cd your-project ocr review
这会审查所有已暂存(staged)、未暂存和未跟踪的变更。默认按并发数 8 执行,超时时间 10 分钟。
场景二:审查分支差异
在提交 PR 前,对比当前分支和主分支:
ocr review --from main --to feature-branch
场景三:审查特定提交
ocr review --commit abc1234
配合 --format json 输出机器可读的审查结果:
ocr review --from main --to feature-branch --format json --audience agent
--audience agent 模式只输出摘要信息,适合 CI 管道解析。
场景四:预览审查范围
如果你不确定 OCR 会审查哪些文件,先用预览模式看看:
ocr review --preview
这不会调用 LLM,只输出文件选择结果,帮你确认配置是否正确。
自定义审查规则
OCR 的审查规则有四层优先级:
- CLI 指定:
ocr review --rule /path/to/rule.json - 项目级:
/.opencodereview/rule.json - 全局级:
~/.opencodereview/rule.json - 系统内置:内嵌的通用规则集
规则文件 JSON 格式:
{
"rules": [
{
"path": "**/*.java",
"rule": "检查空指针异常风险:所有方法参数和返回值必须做 null 检查"
},
{
"path": "**/*mapper*.xml",
"rule": "检查 SQL 注入风险、参数类型错误和缺少闭合标签"
},
{
"path": "api/**/*.ts",
"rule": "所有 API 端点必须包含输入校验和错误处理"
}
]
}
path 支持 ** 通配和 {java,kt} 大括号展开。同层规则按声明顺序匹配。
配合 ocr rules check 命令可以预览某个文件匹配哪条规则:
ocr rules check src/main/java/com/example/UserService.java
集成到工作流
与编码 Agent 集成
OCR 可以直接安装为 Claude Code 的插件:
/plugin marketplace add alibaba/open-code-review /plugin install open-code-review@open-code-review
然后就可以用 /open-code-review:review 命令触发审查,AI 会自动帮你过滤和修复发现问题。
也可以直接用 npx 安装 Skill:
npx skills add alibaba/open-code-review --skill open-code-review
CI/CD 集成
OCR 提供了开箱即用的 GitHub Actions 和 GitLab CI 集成示例:
GitHub Actions:
name: AI Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: npm install -g @alibaba-group/open-code-review
- run: ocr review --from origin/main --to origin/${{ github.head_ref }} --format json
env:
OCR_LLM_TOKEN: ${{ secrets.OCR_LLM_TOKEN }}
OCR_LLM_URL: ${{ secrets.OCR_LLM_URL }}
OCR_LLM_MODEL: claude-sonnet-4-6
OCR_USE_ANTHROPIC: true
浏览审查历史
OCR 内置了一个 WebUI 查看器:
ocr viewer
启动后在 localhost:5483 打开浏览器即可查看审查会话记录。每个审查会话的 LLM 请求和响应都保存为 JSONL 格式,方便调试和审计。
出于安全考虑,查看器只允许 loopback 地址访问。如果需要开放其他主机访问:
OCR_VIEWER_ALLOWED_HOSTS=review.internal,ocr.lan ocr viewer --addr :3000
几个实用技巧
- 审查前预览:
ocr review --preview确认文件选择正确后再执行,避免浪费 Token - 自定义规则提效:在项目根目录创建
.opencodereview/rule.json,按团队规范编写规则,能让审查结果更贴合实际 - 并发数与超时调整:大项目调低并发(
--concurrency 4)避免 API 限流;小项目调高并发(--concurrency 12)加速 - Telemetry 调试:
ocr config set telemetry.enabled true开启 OTLP 追踪,方便排查审查质量波动的根因 - 与 Codex 配套使用:在 Codex CLI 中 OCR 审查结果可以作为二次处理的输入,形成「OCR 审查 → AI 修复」的闭环
小结
Open Code Review 最大的价值不在于「能审查代码」——这个 AI 早就做到了。它的价值在于用确定性工程约束解决了 AI 审查的核心痛点:覆盖不全、位置漂移、质量波动。
对于团队来说,在 CI 中加入 OCR 只需要几行 YAML 配置,带来的收益却是每次 PR 都能获得稳定的、可追溯的 AI 审查反馈。如果你正被 AI 代码审查的「开盲盒」体验困扰,OCR 值得一试。