← 返回日报
🌐 机器翻译 · DeepSeek · GitHub

alibaba open-code-review


alibaba open-code-review

OpenCodeReview 英文 | 简体中文 | 日本語 | 한국어 | Русский

什么是 Open Code Review?

Open Code Review 是一款 AI 驱动的代码审查 CLI 工具。它最初是阿里巴巴集团内部的官方 AI 代码审查助手——在过去两年中,它已服务了数万名开发者,识别了数百万个代码缺陷。经过大规模充分验证后,我们将其孵化为一个面向社区的开源项目。只需配置一个模型端点即可开始使用。它读取 Git diff,通过具备工具调用能力的 agent 将变更文件发送给可配置的 LLM,并生成具有行级精度的结构化审查评论。该 agent 可以读取完整文件内容、搜索代码库、检查其他变更文件以获取上下文,并产出深度审查——而不仅仅是表面的 diff 反馈。除了 diff 审查之外,ocr scan 还可以审查整个文件,用于审计没有有意义 diff 的不熟悉代码库或目录。访问官方网站了解更多详情。

基准测试

与通用 agent(Claude Code)相比,Open Code Review 在相同底层模型下实现了显著更高的 Precision 和 F1,同时仅消耗约 1/9 的 token,并更快完成审查。请注意,其 Recall 低于通用 agent——这是有意为之的权衡,偏向精确性而非噪音。

一个真实世界的代码审查基准,由 50 个热门开源仓库、200 个真实 Pull Request 和 10 种编程语言构建——由 80 多位资深工程师交叉验证(1,505 个标注的真实问题)。在 Hugging Face 上探索 AACR-Bench 数据集。

| 指标 | 衡量内容 | 为何重要 | |------|----------|----------| | F1 | 精确率与召回率的调和平均值 | 整体审查质量的最佳单一指标 | | Precision | 报告问题中真实缺陷的比例 | 越高 = 需要分诊的误报越少 | | Recall | 被发现的真实缺陷比例 | 越高 = 审查中遗漏的问题越少 | | Avg Time | 每次审查的实际耗时 | 影响 CI 流水线延迟 | | Avg Token | 每次审查消耗的总 token 数 | 直接影响 API 成本 |

为什么选择 Open Code Review?

通用 Agent 的问题

如果你使用过 Claude Code 等通用 agent 配合 Skills 进行代码审查,你可能遇到过以下痛点:

根本原因:纯语言驱动的架构对审查过程缺乏硬性约束。

核心设计:确定性工程 × Agent 混合

Open Code Review 的核心理念是将确定性工程与 agent 相结合,各司其职。

确定性工程——硬性约束

对于绝不能出错的审查步骤,由工程逻辑——而非语言模型——来保证正确性:

Agent 的优势集中在最关键的地方——动态决策和动态上下文检索:

Git >= 2.41——Open Code Review 依赖 Git 进行 diff 生成、代码搜索和仓库操作。

CLI 安装

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

安装后,ocr 命令全局可用。其他安装方式(安装脚本、GitHub Release 二进制文件、从源码构建),请参阅 Installation。

快速开始

1. 配置 LLM

在审查代码之前,你必须配置一个 LLM,除非你使用 Delegation Mode。

ocr config provider   # 选择内置 provider 或添加自定义 provider
ocr config model      # 为当前活跃的 provider 选择一个模型

交互式 UI 会引导你完成 provider 选择、API key 输入和模型配置,然后自动测试连通性。CLI 设置、环境变量、自定义 provider 及其他高级配置,请参阅 Configuration。

2. 审查

cd your-project

# 工作区模式——审查所有已暂存、未暂存和未跟踪的变更
ocr review

# 分支范围——审查 feature-branch 自分叉以来相对 main 的变更(merge-base 模式)
ocr review --from main --to feature-branch

# 单个提交
ocr review --commit abc123

# 恢复中断的范围或提交审查
ocr session list
ocr review --from main --to feature-branch --resume < session-id >

# 全文件扫描——审查整个文件而非 diff(无需 git 历史记录)
📖 阅读原文 →