open-code-review

open-code-review

热门

使用 alibaba/open-code-review 的 `ocr` CLI 对 Git 变更进行 AI 驱动的代码审查。当用户要求审查代码、审查拉取请求、审查暂存/未暂存的更改、审查提交或比较分支以发现代码质量问题时使用。生成行级别的审查评论,并可在请求时自动应用修复。配合适当的审查规则,可以检测各种类型的问题,包括错误、安全漏洞、性能问题和代码质量问题。

1.5万Star
1049Fork
更新于 2026/7/28
SKILL.md
readonly只读
name
open-code-review
description

使用 alibaba/open-code-review 的 `ocr` CLI 对 Git 变更进行 AI 驱动的代码审查。当用户要求审查代码、审查拉取请求、审查暂存/未暂存的更改、审查提交或比较分支以发现代码质量问题时使用。生成行级别的审查评论,并可在请求时自动应用修复。配合适当的审查规则,可以检测各种类型的问题,包括错误、安全漏洞、性能问题和代码质量问题。

Open Code Review

一个用于调用 open-code-review (ocr) 的技能——这是一个开源的 AI 代码审查 CLI,可以读取 Git diff 并生成结构化的行级审查评论。

前置条件检查

在开始审查之前,请验证环境:

# 1. 检查 CLI 是否已安装
which ocr || echo "NOT INSTALLED"

# 2. 验证 LLM 连接
ocr llm test

如果 ocr 未安装,请先安装:

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

如果 ocr llm test 失败,用户必须配置 LLM。请使用以下选项之一指导用户:

选项 A — 环境变量(优先级最高,推荐用于 CI):

export OCR_LLM_URL=https://api.anthropic.com/v1/messages
export OCR_LLM_TOKEN=<api-key>
export OCR_LLM_MODEL=claude-opus-4-6
export OCR_USE_ANTHROPIC=true

选项 B — 持久化配置:

ocr config set llm.url https://api.anthropic.com/v1/messages
ocr config set llm.auth_token <api-key>
ocr config set llm.model claude-opus-4-6
ocr config set llm.use_anthropic true

在此处停止并询问用户提供凭据——切勿发明或硬编码 API 密钥。

工作流程

步骤 1:收集业务上下文

分析审查目标(提交、分支或更改)以提取简洁的业务上下文。通过 --background 传递此上下文以提高审查质量。

步骤 2:运行代码审查

使用适当的标志运行 OCR 命令。始终在可用时通过 --background 传递业务上下文

ocr review --audience agent --background "business context here" [user-args]

参数处理:

  • 背景上下文(推荐):使用 --background "context"-b "context" 提供业务上下文以获得更好的审查质量
  • 默认(无用户参数):审查暂存、未暂存和未跟踪的更改(工作区模式)
  • 特定提交:使用 --commit-c 审查单个提交与其父提交的差异
  • 分支比较:使用 --from <ref>--to <ref> 审查两个引用之间的差异
  • 超时:默认超时为每个文件 10 分钟;使用 --timeout <minutes> 调整
  • 并发:默认并发数为 8 个文件工作线程;如果遇到速率限制,使用 --concurrency <n> 减少
  • 预览模式:使用 --preview-p 预览将要审查的文件,而不运行 LLM
  • 安装:如果找不到 ocr 命令,通过运行 npm i -g @alibaba-group/open-code-review 安装

常用调用模式:

用户说 要运行的命令
"review my changes" / "review the working copy" ocr review --audience agent -b "context"
"review this PR" / "review feature branch" ocr review --audience agent -b "context" --from main --to <branch>
"review commit abc123" ocr review --audience agent -b "context" --commit abc123
"what would be reviewed?" (dry-run) ocr review --preview

输出模式:

  • 始终使用 --audience agent 以抑制进度 UI 并仅输出最终摘要

步骤 3:分类并报告

对于审查输出中的每条评论,按优先级分类并向用户报告所有问题:

  • :明显的错误、安全问题、明显错误或具有精确修复建议的合理建议
  • :合理的关注点但依赖于上下文、风格/性能建议或需要手动实现的修复
  • :可能是误报、缺乏足够上下文、吹毛求疵或无意义的建议

按优先级级别分组报告所有评论。

步骤 4:修复

在应用修复之前,检查用户是否请求了自动修复:

  • 如果用户明确要求“review and fix”或类似内容,则继续自动修复
  • 如果用户只要求“review”而没有修复意图,则在应用任何更改前请求许可

修复问题和建议时:

  • 专注于高优先级和中优先级的项目
  • 在安全且定义明确的情况下直接对代码应用修复
  • 对于需要手动干预的复杂修复,清楚描述需要做什么
  • 在提交之前始终与用户确认修复

输出格式

每条评论包含:

  • path:文件路径
  • content:审查评论文本
  • start_line / end_line:行范围(两者均为 0 表示定位失败)
  • suggestion_code:可选的修复建议
  • existing_code:可选的原始代码片段
  • thinking:可选的 LLM 推理过程

按优先级过滤评论后,使用以下模板呈现结果:

## 代码审查结果

**审查的文件数**:N
**发现的问题**:X 个高优先级 / Y 个中优先级

### 高优先级

- **`path/to/file.java:42`** — 简要描述
  > 建议:如何修复

### 中优先级

- **`path/to/file.ts:88`** — 简要描述
  > 建议:如何修复(如果适用)

如果过滤后未发现任何问题,只需说明:“审查完成——在 N 个文件中未发现问题。”

优先级分类:

  • :明显的错误、安全问题、明显错误或具有精确修复建议的合理建议
  • :合理的关注点但依赖于上下文、风格/性能建议或需要手动实现的修复
  • :静默丢弃(可能是误报、缺乏上下文、吹毛求疵或无意义的建议)

处理定位错误的评论:

start_lineend_line 均为 0 时,评论未能定位到文件中的确切位置。在这种情况下:

  1. 阅读评论内容以理解问题
  2. 检查评论中提到的目标文件
  3. 根据评论的上下文识别相关的代码段
  4. 将修复或建议应用到正确的位置

自定义审查规则

如果用户想要项目特定的规则,OCR 按以下优先级顺序解析:

  1. --rule <path> 标志(最高)
  2. <repo>/.opencodereview/rule.json
  3. ~/.opencodereview/rule.json
  4. 内置系统默认值(最低)

默认情况下,第一个匹配的用户规则会替换内置的系统规则。当匹配的系统规则和用户规则都应包含时,在规则条目上设置 merge_system_rule: true

规则文件格式:

{
  "rules": [
    {
      "path": "**/*.java",
      "rule": "所有新方法必须验证必需参数是否为 null",
      "merge_system_rule": true
    },
    {
      "path": "**/*mapper*.xml",
      "rule": "检查 SQL 是否存在注入风险和缺少闭合标签"
    }
  ]
}

要在审查前预览哪个规则适用于文件:

ocr rules check src/main/java/com/example/Foo.java

注意事项

  • 必须首先配置 LLM — 如果无法访问 LLM,ocr review 会大声失败。在首次审查前始终运行 ocr llm test
  • 工作目录很重要ocr review 对当前目录的 Git 仓库进行操作。使用 --repo /path/to/repo 从其他位置运行。
  • 工作区模式下会审查未跟踪的文件 — 直接运行 ocr review 会包括暂存、未暂存未跟踪的更改。如果需要更窄的范围,请选择性暂存。
  • 大型 diff 可能达到令牌限制 — 非常大的 diff 文件可能会被截断。默认的 MAX_TOKENS 为每个请求 58888。
  • 计划阶段在 50 行触发 — 超过 50 行更改的 diff 会在主审查之前运行额外的风险分析阶段。这会增加延迟但提高质量。
  • 不要传递 --audience human — 它会流式传输进度 UI,污染输出。始终使用 --audience agent
  • 评论语言遵循配置 — 将 language 配置设置为 EnglishChinese(默认:Chinese)以控制审查评论的语言。

验证

审查完成后,通过检查以下内容验证成功:

  1. 命令以退出码 0 结束
  2. 生成了评论(或出现“No comments generated”消息)
  3. 警告(如果有)显示在 stderr 中

如果发生错误,请检查 stderr 警告以了解哪些文件失败及其原因。

参考