open-code-review
>
它会碰到什么
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
Open Code Review
This Codex plugin skill intentionally mirrors the canonical skill at
skills/open-code-review/SKILL.md. Keep both files synchronized when updating
OCR agent instructions; a symlink is avoided because plugin installs may only
materialize the plugin subtree.
A skill for invoking open-code-review (ocr) — an open-source AI code review CLI that reads Git diffs and generates structured, line-level review comments.
Workflow
Step 1: Gather Business Context
Analyze the review target (commits, branch, or changes) to extract concise business context. Pass this context via --background to improve review quality.
Step 2: Run Code Review
Run the OCR command with appropriate flags. Always pass business context via --background when available:
ocr review --audience agent --background "business context here" [user-args]
Argument handling:
- Background context (RECOMMENDED): use
--background "context"or-b "context"to provide business context for better review quality - Default (no user arguments): reviews staged, unstaged, and untracked changes (workspace mode)
- Specific commit: use
--commitor-cto review a single commit against its parent - Branch comparison: use
--from <ref>and--to <ref>to review diff between two refs - Timeout: effective timeout per review group =
--timeout× review rounds. Default--timeout 15with default effortmedium(2 rounds) gives 30 minutes;low/highgive 15/45 minutes. - Concurrency: default concurrency is 8 file workers; reduce with
--concurrency <n>if rate limits are hit - Preview mode: use
--previewor-pto preview which files will be reviewed without running the LLM - Output file: use
--output <path>to write the full result to a file instead of stdout. If the command fails withunknown flag: --output, do not continue the review with plain stdout. Ask the user whether to upgrade (npm i -g @alibaba-group/open-code-review@latest) and wait for the answer before proceeding. After the user confirms and the upgrade succeeds, rerun with--output. - Installation: if
ocrcommand is not found, install it by runningnpm i -g @alibaba-group/open-code-review
Common invocation patterns:
| User says | Command to run |
|-----------|---------------|
| "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 |
Output mode:
- Always use
--audience agentto suppress progress UI and emit only the final summary - Prevent output truncation: For large reviews or restricted tool environments, pass
--output /tmp/ocr_out.txtand inspect the file in full via a file reading tool instead of piping stdout throughtailorhead, which drops earlier review comments.
On failure: If ocr review exits non-zero (e.g. an LLM connection error), do not retry blindly — consult the Troubleshooting section below for the matching fix before re-running.
Step 3: Report
OCR output includes structured severity (critical / high / medium / low) and category (bug / security / performance / maintainability / test / style / documentation / other) on each comment. Present results grouped by severity, discarding low severity items that are likely false positives or nitpicks.
Step 4: Fix
Before applying fixes, check whether the user requested automatic fixes:
- If the user explicitly requested "review and fix" or similar, proceed with automatic fixes
- If the user only requested "review" without fix intent, ask for permission before applying any changes
When fixing issues and suggestions:
- Focus on critical, high, and medium severity items
- Apply fixes directly to the code when safe and well-defined
- For complex fixes requiring manual intervention, clearly describe what needs to be done
- Always verify fixes with the user before committing
Output Format
Each comment in OCR's output contains:
path: File pathcontent: Review comment textstart_line/end_line: Line range (both 0 means positioning failed)category: Issue category (bug, security, performance, maintainability, test, style, documentation, other)severity: Issue severity (critical, high, medium, low)suggestion_code: Optional fix suggestionexisting_code: Optional original code snippetthinking: Optional LLM reasoning process
Present results grouped by severity using this template:
## Code Review Results
**Files reviewed**: N
**Issues found**: X critical, Y high, Z medium
### Critical
- **`path/to/file.java:42`** [bug] — Brief description
> Recommendation: How to fix
### High
- **`path/to/file.java:26`** [bug] — Brief description
> Recommendation: How to fix
### Medium
- **`path/to/file.ts:88`** [performance] — Brief description
> Recommendation: How to fix (if applicable)
If no critical, high, or medium severity issues remain after filtering, state: "Review complete — no critical, high, or medium issues found in N files."
Handling mispositioned comments:
When start_line and end_line are both 0, the comment failed to locate the exact position in the file. In such cases:
- Read the comment content to understand the issue
- Examine the target file mentioned in the comment
- Identify the relevant code section based on the comment's context
- Apply the fix or suggestion to the correct location
Custom Review Rules
If the user wants project-specific rules, OCR resolves them in this priority order:
--rule <path>flag (highest)<repo>/.opencodereview/rule.json~/.opencodereview/rule.json- Built-in system defaults (lowest)
By default, the first matching user rule replaces the built-in system rule. Set merge_system_rule: true on a rule entry when the matched system rule and user rule should both be included.
Rule file format:
{
"rules": [
{
"path": "**/*.java",
"rule": "All new methods must validate required parameters for null",
"merge_system_rule": true
},
{
"path": "**/*mapper*.xml",
"rule": "Check SQL for injection risks and missing closing tags"
}
]
}
To preview which rule applies to a file before reviewing:
ocr rules check src/main/java/com/example/Foo.java
Advanced Review Options
Beyond the common flags above, ocr review exposes a few groups of controls. Run ocr review --help for the complete list.
Scoping
--exclude '<patterns>'— comma-separated gitignore-style patterns (for example--exclude '**/generated/,*/testdata/*'), merged withrule.jsonexcludes.--background-file <path>— read review context from a Markdown file. Takes precedence over--background.
Output
--format text|json|sarif—text(default) for humans;jsonfor machine-readable findings;sariffor code-scanning integrations such as GitHub Code Scanning.
Model
--provider <name>/--model <name>— override the configured provider/model for this run only (for example, to recheck a diff with a different model; the user names the model,ocr llm providerslists the built-ins).
Budget
--max-tokens <n>— per-group prompt ceiling; defaults to the configured value or the template default (200000).--max-tokens-budget <n>— cap total input + output tokens for the run. Once exceeded, dispatch stops, partial results are still published, and skipped files are reported asfailed(budget).--no-filter— keep all review comments and skip the LLM post-filtering call.
Gotchas
- LLM must be configured first —
ocr reviewwill fail loudly if no LLM is reachable. See the Troubleshooting section below if this happens. - Working directory matters —
ocr reviewoperates on the Git repo at the current directory. Use--repo /path/to/repoto run from elsewhere. - Untracked files are reviewed in workspace mode — running bare
ocr reviewincludes staged, unstaged, and untracked changes. Stage selectively if you want narrower scope. - Large diffs may hit token limits —
MAX_TOKENSsets the prompt budget (200000in the review template;ocr scanuses58888); conversation context is compressed to stay within this prompt budget. Model output is capped separately byMAX_COMPLETION_TOKENS(16384). A file whose diff alone exceeds ~80% ofMAX_TOKENSis skipped before the LLM is called. - Plan phase triggers on either of two thresholds — a group runs an extra risk-analysis phase before main review when its largest changed file reaches
PLAN_MODE_LINE_THRESHOLD(default50) or it holds 2+ files whose combined changed lines reachPLAN_MODE_GROUP_LINE_THRESHOLD(default100). This adds latency but improves quality. - Don't pass
--audience human— it streams progress UI that pollutes output. Always use--audience agent. - Comment language follows config — the
languageconfig controls review comment language, defaults toEnglish, and accepts any language name (for exampleEnglishor中文). - Avoid output truncation — Large review runs produce verbose output. Never pipe command output to
tailorheadas it drops review comments from earlier sections. Use--output <path>and read it in full; on older CLIs, follow the Output file guidance above. - Resume an interrupted review — a failed or interrupted range/commit review can be continued with
ocr review --resume <id>using the same--from/--toor--committarget (the id is printed asretry with: --resume <id>on failure, or find it withocr session list). Workspace resume is not supported.
Validation
After the review completes, verify success by checking:
- The command exited with code 0
- Comments were generated (or "No comments generated" message appears)
- Warnings (if any) are displayed in stderr
If errors occurred, check the stderr warnings for details about which files failed and why.
Troubleshooting
ocr: command not found
Install the CLI:
npm install -g @alibaba-group/open-code-review
unknown flag: --output
The CLI is older than v1.10.0. Do not continue the review with plain stdout. Ask the user whether to upgrade (npm i -g @alibaba-group/open-code-review@latest) and wait for the answer before proceeding. After the user confirms and the upgrade succeeds, rerun with --output.
ocr review fails with LLM connection error
Prompt the user to configure an LLM provider.
Interactive setup (recommended):
ocr config provider
Manual setup (alternative):
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
Verify connectivity with ocr llm test. Stop here and ask the user to provide credentials — never invent or hardcode API keys.
References
- Full docs: https://github.com/alibaba/open-code-review
- NPM package: https://www.npmjs.com/package/@alibaba-group/open-code-review
- Issue tracker: https://github.com/alibaba/open-code-review/issues
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。
它属于哪个仓库
plugins/open-code-review/skills/open-code-review/SKILL.md