Open Code Review:阿里巴巴开源AI代码审查CLI工具
- #代码审查
- #AI工具
- #开源
- #阿里巴巴
- #CLI
Open Code Review:阿里巴巴开源AI代码审查CLI工具
简介
Open Code Review 是一个 AI 驱动的代码审查 CLI 工具。它最初是阿里巴巴集团内部的官方AI代码审查助手——在过去两年中,服务了数万名开发者,发现了数百万个代码缺陷。经过大规模充分验证后,我们将其孵化成一个社区开源项目。
只需配置一个模型端点即可开始使用。它读取 Git diff,通过一个具备工具调用能力的智能体将变更文件发送给可配置的LLM,并生成具有行级精度的结构化审查评论。该智能体可以读取完整文件内容、搜索代码库、检查其他变更文件以获取上下文,并生成深入审查——而不仅仅是表面的diff反馈。
为什么选择 Open Code Review?
通用智能体的问题
如果你使用过像 Claude Code 搭配 Skills 这样的通用智能体进行代码审查,很可能遇到过这些痛点:
- 覆盖不全 — 在较大的变更集上,智能体倾向于“偷工减料”,只选择性地审查部分文件而遗漏其他文件。
- 位置漂移 — 报告的问题经常与实际代码位置不匹配,行号或文件引用偏离目标。
- 质量不稳定 — 自然语言驱动的 Skills 难以调试,审查质量随微小的提示变化而显著波动。
根本原因:纯粹语言驱动的架构缺乏对审查过程的硬约束。
核心设计:确定性工程 × 智能体混合
Open Code Review 的核心理念是将确定性工程与智能体相结合,各司其职。
确定性工程——硬约束
对于必须万无一失的审查步骤,由工程逻辑(而非语言模型)保证正确性:
- 精确文件选择 — 准确判断哪些文件需要审查、哪些应该过滤,确保不遗漏重要变更。
- 智能文件捆绑 — 将相关文件分组为一个审查单元(例如,message_en.properties 和 message_zh.properties 捆绑在一起)。每个捆绑作为一个子智能体运行,具有隔离的上下文——这是一种分治策略,能在非常大的变更集上保持稳定,并自然支持并发审查。
- 细粒度规则匹配 — 将审查规则与每个文件特征匹配,使模型注意力高度集中,从源头消除信息噪声。与纯粹语言驱动的规则指导相比,基于模板引擎的规则匹配更加稳定和可预测。
- 外部定位与反思模块 — 独立的评论定位和评论反思模块系统地提高了AI反馈的位置准确性和内容准确性。
智能体——动态决策
智能体的优势集中在最需要的地方——动态决策和动态上下文检索:
- 场景调优的提示词 — 针对代码审查深度优化的提示模板,在提高效果的同时减少token消耗。
- 场景调优的工具集 — 基于大规模生产数据中工具调用轨迹的深度分析(包括调用频率分布、每个工具重复率以及新工具对整个调用链的影响)提炼而成,形成一套比通用智能体工具包更稳定、更可预测的专用工具集。
如何使用
CLI 安装
通过 NPM 安装(推荐)
npm install -g @alibaba-group/open-code-review
安装后,ocr 命令全局可用。
从 GitHub Release 下载
# macOS (Apple Silicon)
curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-darwin-arm64
chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
# macOS (Intel)
curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-darwin-amd64
chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
# Linux (x86_64)
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
# Linux (ARM64)
curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-linux-arm64
chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
# Windows (x86_64) — 将 ocr.exe 移动到 PATH 中的目录
curl -Lo ocr.exe https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-windows-amd64.exe
# Windows (ARM64) — 将 ocr.exe 移动到 PATH 中的目录
curl -Lo ocr.exe https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-windows-arm64.exe
从源码构建
git clone https://github.com/alibaba/open-code-review.git
cd open-code-review
make build
sudo cp dist/opencodereview /usr/local/bin/ocr
快速开始
1. 配置 LLM
审查代码前必须配置 LLM。
# 方式 A:交互式配置
ocr config set llm.url https://api.anthropic.com/v1/messages
ocr config set llm.auth_token your-api-key-here
ocr config set llm.model claude-opus-4-6
ocr config set llm.use_anthropic true
# 方式 B:环境变量(最高优先级)
export OCR_LLM_URL=https://api.anthropic.com/v1/messages
export OCR_LLM_TOKEN=your-api-key-here
export OCR_LLM_MODEL=claude-opus-4-6
export OCR_USE_ANTHROPIC=true
配置存储在 ~/.opencodereview/config.json 中。它也兼容 Claude Code 环境变量(ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL),并会解析 ~/.zshrc / ~/.bashrc 中的导出。
CC-Switch 用户注意事项:如果你使用启用了路由服务的 CC-Switch,可以将 llm.url 指向 CC-Switch 代理地址,无需额外配置:
- 对于 Claude 提供商:设置
llm.url为http://127.0.0.1:15721 - 对于 CodeX 提供商:设置
llm.url为http://127.0.0.1:15721/v1 - 根据提供商设置设置
llm.model llm.auth_token可以是任意值extra_body设置仍然适用
2. 测试连接
ocr llm test
3. 审查代码
cd your-project
# 工作区模式 — 审查所有暂存、未暂存和未跟踪的变更
ocr review
# 分支范围 — 比较两个引用
ocr review --from main --to feature-branch
# 单个提交
ocr review --commit abc123
与编码助手集成
OCR 可以作为斜杠命令无缝集成到 AI 编码助手中,实现在代理工作流中直接进行代码审查。
选项 1:安装为 Skill
使用 npx 将 OCR skill 安装到你的项目中:
npx skills add alibaba/open-code-review --skill open-code-review
这将从 skills 注册表中安装 open-code-review skill,教你的编码助手如何调用 ocr 进行代码审查、按优先级分类问题,并可选择性地应用修复。
选项 2:安装为 Claude Code 插件
对于 Claude Code,通过在 Claude Code 中执行以下命令安装命令插件:
/plugin marketplace add alibaba/open-code-review
/plugin install open-code-review@open-code-review
这注册了 /open-code-review:review 斜杠命令,该命令运行 OCR 并自动过滤和修复问题。
选项 3:直接复制命令文件
想要快速设置而无需使用包管理器,只需复制命令文件即可在 Claude Code 中使用 /open-code-review 斜杠命令。
项目级别(通过 git 与团队共享):
mkdir -p .claude/commands
curl -o .claude/commands/open-code-review.md \
https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/commands/review.md
用户级别(所有项目中的个人全局使用):
mkdir -p ~/.claude/commands
curl -o ~/.claude/commands/open-code-review.md \
https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/commands/review.md
先决条件:所有集成方法都需要安装 ocr CLI 并配置 LLM。请参阅上面的安装和配置 LLM 部分。
CI/CD 集成
OCR 可以集成到 CI/CD 管道中,以自动审查合并请求/拉取请求。
用于 CI 集成的核心命令:
ocr review \
--from "origin/main" \
--to "origin/feature-branch" \
--format json
--format json 标志输出机器可读的结果,适合在 CI 脚本中解析。
查看 examples/ 目录获取集成示例:
github_actions/— GitHub Actions 集成示例gitlab_ci/— GitLab CI 集成示例
命令与标志
| 命令 | 别名 | 描述 |
|---|---|---|
ocr review | ocr r | 启动代码审查 |
ocr rules check <file> | - | 预览哪个审查规则适用于文件路径 |
ocr config set <key> <value> | - | 设置配置值 |
ocr llm test | - | 测试 LLM 连接 |
ocr viewer | ocr v | 在 localhost:5483 启动 WebUI 会话查看器 |
ocr version | - | 显示版本信息 |
ocr review 标志:
| 标志 | 简写 | 默认值 | 描述 |
|---|---|---|---|
--repo | - | 当前目录 | Git 仓库根目录 |
--from | - | - | 源引用(如 main) |
--to | - | - | 目标引用(如 feature-branch) |
--commit | -c | - | 要审查的单个提交 |
--preview | -p | false | 预览将审查哪些文件,而不运行 LLM |
--format | -f | text | 输出格式:text 或 json |
--concurrency | - | 8 | 最大并发文件审查数 |
--timeout | - | 10 | 并发任务超时时间(分钟) |
--audience | - | human | human(显示进度)或 agent(仅摘要) |
--rule | - | - | 自定义 JSON 审查规则路径 |
--max-tools | - | built-in | 每个文件的最大工具调用轮次;仅当大于模板默认值时生效 |
--tools | - | - | 自定义 JSON 工具配置路径 |
示例
# 预览将要审查的文件(无 LLM 调用)
ocr review --preview
ocr review -c abc123 -p
# 使用默认设置审查工作区变更
ocr review
# 审查分支差异,提高并发数
ocr review --from main --to my-feature --concurrency 4
# 审查特定提交,输出详细 JSON
ocr review --commit abc123 --format json --audience agent
# 使用自定义审查规则
ocr review --rule /path/to/my-rules.json
# 预览哪个规则适用于文件
ocr rules check src/main/java/com/example/Foo.java
ocr rules check --rule custom.json src/main/resources/mapper/UserMapper.xml
# 在浏览器中查看审查会话历史
ocr viewer
ocr viewer --addr :3000
查看器安全
查看器通过 HTTP 提供会话 JSONL 内容(LLM 请求消息和响应)。它对每个请求强制执行 Host 头允许列表:回环名称(localhost、127.0.0.0/8、::1)和具体绑定主机始终允许。通配符绑定(--addr :3000、--addr 0.0.0.0:3000)和其他非回环主机名必须通过 OCR_VIEWER_ALLOWED_HOSTS 环境变量(逗号分隔)添加:
OCR_VIEWER_ALLOWED_HOSTS=review.internal,ocr.lan ocr viewer --addr :3000
这可以阻止针对本地查看器的 DNS 重绑定攻击。
审查规则
OCR 使用四层优先级链解析审查规则。每一层采用优先匹配原则:如果文件路径匹配某个模式,则使用该规则;否则会落到下一层。
| 优先级 | 来源 | 路径 | 描述 |
|---|---|---|---|
| 1(最高) | --rule 标志 | 用户指定路径 | CLI 显式覆盖 |
| 2 | 项目配置 | <repoDir>/.opencodereview/rule.json | 每个项目的规则,可以提交到 git |
| 3 | 全局配置 | ~/.opencodereview/rule.json | 用户范围的个人偏好 |
| 4(最低) | 系统默认 | 内嵌 system_rules.json | 内置规则覆盖常见场景 |
评论