@alibaba-group/open-code-review 1.7.14 → 1.7.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja-JP.md +26 -803
- package/README.ko-KR.md +26 -761
- package/README.md +26 -811
- package/README.ru-RU.md +26 -807
- package/README.zh-CN.md +26 -790
- package/package.json +8 -8
package/README.zh-CN.md
CHANGED
|
@@ -6,8 +6,11 @@
|
|
|
6
6
|
</div>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
|
+
<a href="https://trendshift.io/repositories/41087?utm_source=repository-badge&utm_medium=badge&utm_campaign=badge-repository-41087" target="_blank" rel="noopener noreferrer">
|
|
10
|
+
<img src="https://trendshift.io/api/badge/repositories/41087" alt="alibaba%2Fopen-code-review | Trendshift" style="width: 280px; height: 60px;" width="280" height="60" />
|
|
11
|
+
</a>
|
|
9
12
|
<a href="https://trendshift.io/repositories/41087" target="_blank">
|
|
10
|
-
<img src="https://trendshift.io/api/badge/trendshift/repositories/41087/weekly?language=Go" alt="alibaba%2Fopen-code-review | Trendshift" style="width:
|
|
13
|
+
<img src="https://trendshift.io/api/badge/trendshift/repositories/41087/weekly?language=Go" alt="alibaba%2Fopen-code-review | Trendshift" style="width: 280px; height: 60px;" width="280" height="60" />
|
|
11
14
|
</a>
|
|
12
15
|
</p>
|
|
13
16
|
<p align="center">
|
|
@@ -99,116 +102,19 @@ Open Code Review 的核心设计理念是将确定性工程与 Agent 结合,
|
|
|
99
102
|
|
|
100
103
|
#### 安装
|
|
101
104
|
|
|
102
|
-
**通过 NPM 安装(推荐)**
|
|
103
|
-
|
|
104
105
|
```bash
|
|
105
106
|
npm install -g @alibaba-group/open-code-review
|
|
106
107
|
```
|
|
107
108
|
|
|
108
109
|
安装后,`ocr` 命令即可全局使用。
|
|
109
110
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
如果通过 NPM 安装,可手动更新到最新版本:
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
npm install -g @alibaba-group/open-code-review@latest
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
通过 NPM 安装的 `ocr` 还会默认在后台检查新版本并自动升级;如需关闭自动更新,可设置 `OCR_NO_UPDATE=1`。
|
|
119
|
-
|
|
120
|
-
如果通过安装脚本或手动下载二进制文件安装,重新运行对应的安装/下载命令即可替换为最新 release。需要固定版本时,可继续通过 `OCR_VERSION` 指定 release tag。
|
|
121
|
-
|
|
122
|
-
**从 GitHub Release 下载**
|
|
123
|
-
|
|
124
|
-
使用一条命令为你的操作系统/架构安装最新二进制文件(macOS / Linux):
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
curl -fsSL https://raw.githubusercontent.com/alibaba/open-code-review/main/install.sh | sh
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
该脚本会自动选择匹配的发布二进制文件,校验其 SHA-256 校验和,并将其作为 `ocr` 安装到 `/usr/local/bin`。可通过 `OCR_INSTALL_DIR` 覆盖安装目录,或通过 `OCR_VERSION` 指定发布版本:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
OCR_INSTALL_DIR="$HOME/.local/bin" OCR_VERSION=v1.3.13 \
|
|
134
|
-
sh -c "$(curl -fsSL https://raw.githubusercontent.com/alibaba/open-code-review/main/install.sh)"
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
在 Windows 上(PowerShell 5.1+):
|
|
138
|
-
|
|
139
|
-
```powershell
|
|
140
|
-
irm https://raw.githubusercontent.com/alibaba/open-code-review/main/install.ps1 | iex
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
该脚本会自动选择匹配的 Windows 发布二进制文件,校验其 SHA-256 校验和,并将其作为 `ocr.exe` 安装到 `%LOCALAPPDATA%\Programs\ocr`。可通过 `OCR_INSTALL_DIR` 覆盖安装目录,或通过 `OCR_VERSION` 指定发布版本:
|
|
144
|
-
|
|
145
|
-
```powershell
|
|
146
|
-
$env:OCR_INSTALL_DIR = "$env:USERPROFILE\bin"
|
|
147
|
-
$env:OCR_VERSION = "v1.3.13"
|
|
148
|
-
irm https://raw.githubusercontent.com/alibaba/open-code-review/main/install.ps1 | iex
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
将远程脚本直接管道到 shell 会执行来自互联网的代码。建议先下载并检查后再运行:
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
curl -fsSL https://raw.githubusercontent.com/alibaba/open-code-review/main/install.sh -o install.sh
|
|
155
|
-
less install.sh && sh install.sh
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
```powershell
|
|
159
|
-
irm https://raw.githubusercontent.com/alibaba/open-code-review/main/install.ps1 -OutFile install.ps1
|
|
160
|
-
notepad install.ps1 # 检查后执行: .\install.ps1
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
<details>
|
|
164
|
-
<summary>手动下载(所有平台,包括 Windows)</summary>
|
|
165
|
-
|
|
166
|
-
从 [GitHub Releases](https://github.com/alibaba/open-code-review/releases) 下载适用于你平台的二进制文件:
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
# macOS (Apple Silicon)
|
|
170
|
-
curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-darwin-arm64
|
|
171
|
-
chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
|
|
172
|
-
|
|
173
|
-
# macOS (Intel)
|
|
174
|
-
curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-darwin-amd64
|
|
175
|
-
chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
|
|
176
|
-
|
|
177
|
-
# Linux (x86_64)
|
|
178
|
-
curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-linux-amd64
|
|
179
|
-
chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
|
|
180
|
-
|
|
181
|
-
# Linux (ARM64)
|
|
182
|
-
curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-linux-arm64
|
|
183
|
-
chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
|
|
184
|
-
|
|
185
|
-
# Windows (x86_64) — 将 ocr.exe 移动到 PATH 目录中
|
|
186
|
-
curl -Lo ocr.exe https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-windows-amd64.exe
|
|
187
|
-
|
|
188
|
-
# Windows (ARM64) — 将 ocr.exe 移动到 PATH 目录中
|
|
189
|
-
curl -Lo ocr.exe https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-windows-arm64.exe
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
</details>
|
|
193
|
-
|
|
194
|
-
**从源码构建**
|
|
195
|
-
|
|
196
|
-
```bash
|
|
197
|
-
git clone https://github.com/alibaba/open-code-review.git
|
|
198
|
-
cd open-code-review
|
|
199
|
-
make build
|
|
200
|
-
sudo cp dist/opencodereview /usr/local/bin/ocr
|
|
201
|
-
```
|
|
111
|
+
其他安装方式(安装脚本、GitHub Release 二进制、源码构建),详见[安装指南](https://open-codereview.ai/docs/installation)。
|
|
202
112
|
|
|
203
113
|
#### 快速开始
|
|
204
114
|
|
|
205
115
|
**1. 配置 LLM**
|
|
206
116
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
OCR 通过**供应商(Provider)**模式统一管理 LLM 配置,内置了多种主流供应商,也支持添加自定义供应商以对接私有部署或其他兼容端点。配置存储于 `~/.opencodereview/config.json`。
|
|
210
|
-
|
|
211
|
-
**方式 A:交互式设置(推荐)**
|
|
117
|
+
在审查代码之前,必须先配置 LLM。除非你使用[委托模式](https://open-codereview.ai/docs/delegate)。
|
|
212
118
|
|
|
213
119
|
```bash
|
|
214
120
|
ocr config provider # 选择内置供应商或添加自定义供应商
|
|
@@ -219,91 +125,9 @@ ocr config model # 为当前供应商选择模型
|
|
|
219
125
|
|
|
220
126
|
交互式界面会引导你完成供应商选择、API Key 输入和模型配置,完成后自动测试连通性。
|
|
221
127
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
添加**自定义供应商**同样通过交互式界面完成 —— 需提供供应商名称、API 地址、协议类型(`anthropic` 或 `openai`)和 API Key。
|
|
225
|
-
|
|
226
|
-
**方式 B:命令行设置(适用于 CI/CD 等无交互环境)**
|
|
227
|
-
|
|
228
|
-
通过 `ocr config set` 命令直接写入供应商配置,适用于脚本和自动化场景。
|
|
229
|
-
|
|
230
|
-
使用内置供应商:
|
|
231
|
-
|
|
232
|
-
```bash
|
|
233
|
-
ocr config set provider anthropic
|
|
234
|
-
ocr config set providers.anthropic.api_key your-api-key-here
|
|
235
|
-
ocr config set providers.anthropic.model claude-sonnet-4-6
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
使用自定义供应商(对接私有网关或其他兼容端点):
|
|
239
|
-
|
|
240
|
-
```bash
|
|
241
|
-
ocr config set provider my-gateway
|
|
242
|
-
ocr config set custom_providers.my-gateway.url https://my-llm-gateway.internal/v1
|
|
243
|
-
ocr config set custom_providers.my-gateway.protocol openai
|
|
244
|
-
ocr config set custom_providers.my-gateway.api_key your-api-key-here
|
|
245
|
-
ocr config set custom_providers.my-gateway.model gpt-4o
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
> 自定义供应商的 `url` 和 `protocol` 为必填项。`protocol` 支持 `anthropic`、`openai`、`openai-responses`。
|
|
249
|
-
|
|
250
|
-
可选配置项:
|
|
251
|
-
|
|
252
|
-
| 键 | 描述 |
|
|
253
|
-
|----|------|
|
|
254
|
-
| `providers.<name>.auth_header` | 认证头:`x-api-key` 或 `authorization`(默认 `authorization`) |
|
|
255
|
-
| `providers.<name>.extra_body` | 合并到请求体的自定义 JSON 字段 |
|
|
256
|
-
| `providers.<name>.extra_headers` | 逗号分隔的 `key=value` 键值对,为每个请求添加自定义 HTTP 头 |
|
|
257
|
-
| `providers.<name>.models` | 用于交互式选择的模型列表 |
|
|
258
|
-
|
|
259
|
-
**`extra_headers`(可选):** 为每个 LLM API 请求添加自定义 HTTP 头。适用于代理、网关或需要额外头的企业端点(例如组织 ID、链路追踪 ID)。格式为逗号分隔的 `key=value` 键值对。包含逗号的值请用双引号包裹:
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
ocr config set llm.extra_headers "X-Org-ID=org-123,X-Forwarded-For=\"1.2.3.4,5.6.7.8\""
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
也可以按供应商单独设置额外头:
|
|
266
|
-
|
|
267
|
-
```bash
|
|
268
|
-
ocr config set providers.anthropic.extra_headers "X-Org-ID=org-123"
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
**环境变量(优先级最高)**
|
|
272
|
-
|
|
273
|
-
环境变量会覆盖配置文件中的设置,适用于 CI/CD 场景中不便写入配置文件的情况:
|
|
274
|
-
|
|
275
|
-
```bash
|
|
276
|
-
export OCR_LLM_URL=https://api.anthropic.com/v1/messages
|
|
277
|
-
export OCR_LLM_TOKEN=your-api-key-here
|
|
278
|
-
export OCR_LLM_MODEL=claude-opus-4-6
|
|
279
|
-
export OCR_USE_ANTHROPIC=true
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
若要走 OpenAI Responses API(GPT-5.x / o-系列模型),请改用 `OCR_LLM_PROTOCOL`:
|
|
283
|
-
|
|
284
|
-
```bash
|
|
285
|
-
export OCR_LLM_URL=https://api.openai.com/v1
|
|
286
|
-
export OCR_LLM_TOKEN=your-openai-key
|
|
287
|
-
export OCR_LLM_MODEL=gpt-5.4
|
|
288
|
-
export OCR_LLM_PROTOCOL=openai-responses
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
`OCR_LLM_PROTOCOL` 接受 `anthropic`、`openai`、`openai-responses`,与 `OCR_USE_ANTHROPIC` 同时设置时优先使用前者。
|
|
292
|
-
|
|
293
|
-
同时兼容 Claude Code 环境变量(`ANTHROPIC_BASE_URL`、`ANTHROPIC_AUTH_TOKEN`、`ANTHROPIC_MODEL`),并解析 `~/.zshrc` / `~/.bashrc` 中的相关导出。
|
|
294
|
-
|
|
295
|
-
> **CC-Switch 用户特别提醒**:如果你使用 [CC-Switch](https://github.com/farion1231/cc-switch) 并开启了[路由服务](https://www.ccswitch.io/zh/docs?section=proxy&item=service),可以将供应商的 `url` 配置成 CC-Switch 启动的代理地址,无需额外配置:
|
|
296
|
-
> - 路由 **Claude** 供应商:`providers.anthropic.url` 设为 `http://127.0.0.1:15721`
|
|
297
|
-
> - 路由 **Codex** 供应商:对应供应商的 `url` 设为 `http://127.0.0.1:15721/v1`
|
|
298
|
-
> - `api_key` 可设置为任意值,`extra_body` 设置依然生效
|
|
128
|
+
命令行设置、环境变量、自定义供应商等高级配置,详见[配置指南](https://open-codereview.ai/docs/configuration)。
|
|
299
129
|
|
|
300
|
-
**2.
|
|
301
|
-
|
|
302
|
-
```bash
|
|
303
|
-
ocr llm test
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
**3. 开始审查**
|
|
130
|
+
**2. 开始审查**
|
|
307
131
|
|
|
308
132
|
```bash
|
|
309
133
|
cd your-project
|
|
@@ -331,612 +155,24 @@ ocr delegate preview
|
|
|
331
155
|
ocr delegate rule src/main.go src/handler.go
|
|
332
156
|
```
|
|
333
157
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
详见 [skills/open-code-review-delegate/SKILL.md](skills/open-code-review-delegate/SKILL.md)。
|
|
355
|
-
|
|
356
|
-
#### 方式二:作为 Claude Code Plugin 安装
|
|
357
|
-
|
|
358
|
-
对于 [Claude Code](https://docs.anthropic.com/en/docs/claude-code),在 Claude Code 中通过以下命令安装命令插件:
|
|
359
|
-
|
|
360
|
-
```bash
|
|
361
|
-
/plugin marketplace add alibaba/open-code-review
|
|
362
|
-
/plugin install open-code-review@open-code-review
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
此命令注册 `/open-code-review:review` 斜杠命令,运行 OCR 并自动过滤和修复问题。同时提供 `/open-code-review:delegate-review` 委托模式命令(agent 使用自身能力进行评审,OCR 负责文件选择和规则解析)。
|
|
366
|
-
|
|
367
|
-
#### 方式三:作为 Codex Plugin 安装
|
|
368
|
-
|
|
369
|
-
对于本地 Codex,可以从此仓库安装 Open Code Review plugin:
|
|
370
|
-
|
|
371
|
-
```bash
|
|
372
|
-
codex plugin marketplace add alibaba/open-code-review
|
|
373
|
-
codex
|
|
374
|
-
/plugins
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
对于本地 checkout 或 fork:
|
|
378
|
-
|
|
379
|
-
```bash
|
|
380
|
-
codex plugin marketplace add .
|
|
381
|
-
codex
|
|
382
|
-
/plugins
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
安装并启用 `Open Code Review` 后,启动新的 Codex thread 并显式调用:
|
|
386
|
-
|
|
387
|
-
```text
|
|
388
|
-
@Open Code Review review my current changes
|
|
389
|
-
@Open Code Review review this branch against main
|
|
390
|
-
@Open Code Review review and fix high-confidence issues
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
这会注册一个 Codex skill,用于运行本地 OCR CLI:
|
|
394
|
-
|
|
395
|
-
```bash
|
|
396
|
-
ocr review --audience agent
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
此集成不会改变 OCR 的内部 LLM backend,也不需要为 Codex 配置 OpenAI Responses API endpoint。OCR 本身仍需要按照 CLI setup 部分安装并配置 `ocr` CLI。
|
|
400
|
-
|
|
401
|
-
韩文指南:[`plugins/open-code-review/CODEX.ko-KR.md`](plugins/open-code-review/CODEX.ko-KR.md)
|
|
402
|
-
|
|
403
|
-
#### 方式四:作为 Cursor Plugin 安装
|
|
404
|
-
|
|
405
|
-
对于 [Cursor](https://www.cursor.com/),可以从此仓库安装 Open Code Review plugin:
|
|
406
|
-
|
|
407
|
-
```
|
|
408
|
-
cursor-plugin marketplace add alibaba/open-code-review
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
也可以手动添加 marketplace。在 Cursor 中打开 `/plugins`,搜索 `Open Code Review` 并安装。
|
|
412
|
-
|
|
413
|
-
对于本地 checkout 或 fork:
|
|
414
|
-
|
|
415
|
-
```
|
|
416
|
-
cursor-plugin marketplace add .
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
安装后,在 Cursor 中调用:
|
|
420
|
-
|
|
421
|
-
```text
|
|
422
|
-
@Open Code Review review my current changes
|
|
423
|
-
@Open Code Review review this branch against main
|
|
424
|
-
@Open Code Review review and fix high-confidence issues
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
这会注册一个 Cursor skill,用于运行本地 OCR CLI:
|
|
428
|
-
|
|
429
|
-
```bash
|
|
430
|
-
ocr review --audience agent
|
|
431
|
-
```
|
|
432
|
-
|
|
433
|
-
此集成不会改变 OCR 的内部 LLM backend。OCR 本身仍需要按照 CLI setup 部分安装并配置 `ocr` CLI。
|
|
434
|
-
|
|
435
|
-
#### 方式五:直接复制命令文件
|
|
436
|
-
|
|
437
|
-
如果不想使用任何包管理器,可以直接复制命令文件,在 Claude Code 中使用 `/open-code-review` 斜杠命令。
|
|
438
|
-
|
|
439
|
-
**项目级**(通过 git 与团队共享):
|
|
440
|
-
|
|
441
|
-
```bash
|
|
442
|
-
mkdir -p .claude/commands
|
|
443
|
-
curl -o .claude/commands/open-code-review.md \
|
|
444
|
-
https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/claude-code/commands/review.md
|
|
445
|
-
```
|
|
446
|
-
|
|
447
|
-
**用户级**(个人全局使用,适用于所有项目):
|
|
448
|
-
|
|
449
|
-
```bash
|
|
450
|
-
mkdir -p ~/.claude/commands
|
|
451
|
-
curl -o ~/.claude/commands/open-code-review.md \
|
|
452
|
-
https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/claude-code/commands/review.md
|
|
453
|
-
```
|
|
454
|
-
|
|
455
|
-
委托模式(OCR 侧无需配置 LLM):
|
|
456
|
-
|
|
457
|
-
```bash
|
|
458
|
-
# 项目级
|
|
459
|
-
mkdir -p .claude/commands
|
|
460
|
-
curl -o .claude/commands/open-code-review-delegate.md \
|
|
461
|
-
https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/claude-code/commands/delegate-review.md
|
|
462
|
-
|
|
463
|
-
# 用户级
|
|
464
|
-
mkdir -p ~/.claude/commands
|
|
465
|
-
curl -o ~/.claude/commands/open-code-review-delegate.md \
|
|
466
|
-
https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/claude-code/commands/delegate-review.md
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
> **前提条件**:所有集成方式都需要安装 `ocr` CLI。标准模式还需要配置 LLM — 参见上文[安装](#安装)和[配置 LLM](#1-配置-llm)。委托模式 OCR 侧**不需要** LLM 配置。
|
|
470
|
-
|
|
471
|
-
### CI/CD 集成
|
|
472
|
-
|
|
473
|
-
OCR 可以集成到 CI/CD 流水线中,在 Merge Request / Pull Request 时自动进行代码审查。
|
|
474
|
-
|
|
475
|
-
CI 集成的核心命令:
|
|
476
|
-
|
|
477
|
-
```bash
|
|
478
|
-
ocr review \
|
|
479
|
-
--from "origin/main" \
|
|
480
|
-
--to "origin/feature-branch" \
|
|
481
|
-
--format json
|
|
482
|
-
```
|
|
483
|
-
|
|
484
|
-
`--format json` 参数输出适合 CI 脚本解析的机器可读结果。
|
|
485
|
-
|
|
486
|
-
每条评审结果都带有两个结构化字段,便于 CI 集成在无需解析评论文本的情况下排序、分组、过滤或卡点构建:
|
|
487
|
-
|
|
488
|
-
| 字段 | 允许的取值 | 说明 |
|
|
489
|
-
|------|-----------|------|
|
|
490
|
-
| `category` | `bug`、`security`、`performance`、`maintainability`、`test`、`style`、`documentation`、`other` | 问题所属的类别。 |
|
|
491
|
-
| `severity` | `critical`、`high`、`medium`、`low` | 问题的严重程度。 |
|
|
492
|
-
|
|
493
|
-
在 JSON 输出中,这两个字段与 `content`、`start_line` 等平级;在终端中,它们会以内联的 `[category · severity]` 徽章形式显示在评论前,并按严重程度着色。
|
|
494
|
-
|
|
495
|
-
集成示例请参见 [`examples/`](./examples/) 目录:
|
|
496
|
-
|
|
497
|
-
- [`github_actions/`](./examples/github_actions/) — GitHub Actions 集成示例
|
|
498
|
-
- [`gitlab_ci/`](./examples/gitlab_ci/) — GitLab CI 集成示例
|
|
499
|
-
- [`gitflic_ci/`](./examples/gitflic_ci/) — GitFlic CI 集成示例
|
|
500
|
-
- [`gerrit_ci/`](./examples/gerrit_ci/) — Gerrit (Jenkins / Gerrit Trigger) 集成示例
|
|
501
|
-
|
|
502
|
-
#### GitHub Action
|
|
503
|
-
|
|
504
|
-
对于 GitHub,本仓库还在仓库根目录提供了一个开箱即用的 composite Action([`action.yml`](./action.yml))。你无需自己编写 `ocr review` 脚本,直接引用它即可完成完整流程——checkout、安装 OCR、执行审查、发布行内评论与汇总评论、上传 artifacts,以及重试与幂等处理:
|
|
505
|
-
|
|
506
|
-
```yaml
|
|
507
|
-
- uses: alibaba/open-code-review@main
|
|
508
|
-
with:
|
|
509
|
-
llm_url: ${{ secrets.OCR_LLM_URL }}
|
|
510
|
-
llm_auth_token: ${{ secrets.OCR_LLM_AUTH_TOKEN }}
|
|
511
|
-
llm_model: ${{ vars.OCR_LLM_MODEL }}
|
|
512
|
-
llm_use_anthropic: ${{ vars.OCR_LLM_USE_ANTHROPIC }}
|
|
513
|
-
```
|
|
514
|
-
|
|
515
|
-
为保障可复现性,请固定到某个版本标签或 commit SHA。完整的 workflow 示例以及 inputs、outputs 与评论发布模式(置顶汇总、增量非破坏式发布)的完整列表,请参见 [`examples/github_actions/`](./examples/github_actions/) 目录。
|
|
516
|
-
|
|
517
|
-
## 命令
|
|
518
|
-
|
|
519
|
-
| 命令 | 别名 | 描述 |
|
|
520
|
-
|------|------|------|
|
|
521
|
-
| `ocr review` | `ocr r` | 开始基于 diff 的代码审查 |
|
|
522
|
-
| `ocr scan` | `ocr s` | 审查整个文件(无需 diff) |
|
|
523
|
-
| `ocr delegate preview` | `ocr d preview` | 预览可评审文件列表及模式/引用元数据(无需 LLM) |
|
|
524
|
-
| `ocr delegate rule <path...>` | `ocr d rule` | 输出按内容分组的评审规则(无需 LLM) |
|
|
525
|
-
| `ocr rules check <file>` | — | 预览某个文件路径生效的审查规则 |
|
|
526
|
-
| `ocr config provider` | — | 交互式供应商设置(内置、自定义或手动) |
|
|
527
|
-
| `ocr config model` | — | 为当前供应商交互式选择模型 |
|
|
528
|
-
| `ocr config set <key> <value>` | — | 设置配置项 |
|
|
529
|
-
| `ocr config unset custom_providers.<name>` | — | 删除自定义供应商 |
|
|
530
|
-
| `ocr llm test` | — | 测试 LLM 连通性 |
|
|
531
|
-
| `ocr llm providers` | — | 列出内置 LLM 供应商 |
|
|
532
|
-
| `ocr session list` | `ocr sessions list`, `ocr session ls` | 列出已保存的评审会话 |
|
|
533
|
-
| `ocr session show <id>` | `ocr sessions show <id>` | 查看单个会话及其逐文件检查点 |
|
|
534
|
-
| `ocr viewer` | `ocr v` | 启动 WebUI 会话查看器,地址 `localhost:5483` |
|
|
535
|
-
| `ocr version` | — | 显示版本信息 |
|
|
536
|
-
|
|
537
|
-
### `ocr review` 参数
|
|
538
|
-
|
|
539
|
-
| 参数 | 缩写 | 默认值 | 描述 |
|
|
540
|
-
|------|------|--------|------|
|
|
541
|
-
| `--repo` | — | 当前目录 | Git 仓库根目录 |
|
|
542
|
-
| `--from` | — | — | 源引用(如 `main`) |
|
|
543
|
-
| `--to` | — | — | 目标引用(如 `feature-branch`) |
|
|
544
|
-
| `--commit` | `-c` | — | 审查单个提交 |
|
|
545
|
-
| `--exclude` | — | — | 以逗号分隔的 gitignore 风格模式,用于跳过匹配文件;与 rule.json 中的 excludes 合并 |
|
|
546
|
-
| `--preview` | `-p` | `false` | 预览将被审查的文件列表,不调用 LLM |
|
|
547
|
-
| `--resume` | — | — | 从之前兼容的区间或单 commit 评审会话恢复 |
|
|
548
|
-
| `--format` | `-f` | `text` | 输出格式:`text` 或 `json` |
|
|
549
|
-
| `--concurrency` | — | `8` | 最大并发文件审查数 |
|
|
550
|
-
| `--timeout` | — | `10` | 并发任务超时时间(分钟) |
|
|
551
|
-
| `--audience` | — | `human` | `human`(显示进度)或 `agent`(仅输出摘要) |
|
|
552
|
-
| `--background` | `-b` | — | 可选的需求/业务背景信息;使用 `--commit` 时如未指定则自动从 commit message 中提取 |
|
|
553
|
-
| `--background-file` | `-B` | — | 来自 Markdown 文件的可选需求/业务背景信息;与 `--background` 同时使用时,内联内容排在前面 |
|
|
554
|
-
| `--model` | — | — | 为本次审查选择或覆盖 LLM 模型 |
|
|
555
|
-
| `--rule` | — | — | 自定义 JSON 审查规则路径 |
|
|
556
|
-
| `--max-tools` | — | 内置默认 | 每个文件的最大工具调用轮次;仅在大于模板默认值时生效 |
|
|
557
|
-
| `--max-git-procs` | — | 内置默认 | 最大并发 git 子进程数 |
|
|
558
|
-
| `--tools` | — | — | 自定义 JSON 工具配置路径 |
|
|
559
|
-
|
|
560
|
-
#### 可恢复评审与会话
|
|
561
|
-
|
|
562
|
-
每次 `ocr review` 都会在 `~/.opencodereview/sessions/` 下保存本地会话日志。
|
|
563
|
-
正常完成的文本输出只展示评审结果,不打印 session ID;可使用
|
|
564
|
-
`ocr session list/show` 查找已保存会话,或用 `--format json` 在机器可读输出中获取
|
|
565
|
-
`session_id`。如果区间或单 commit 评审被中断,可列出保存的会话,并从匹配相同评审目标的会话恢复:
|
|
566
|
-
|
|
567
|
-
```bash
|
|
568
|
-
ocr session list
|
|
569
|
-
ocr session show <session-id>
|
|
570
|
-
ocr review --from main --to feature-branch --resume <session-id>
|
|
571
|
-
ocr review --commit abc123 --resume <session-id>
|
|
572
|
-
```
|
|
573
|
-
|
|
574
|
-
恢复逻辑是严格的:仅支持分支区间和单 commit 评审,不支持工作区评审;当前
|
|
575
|
-
`--from/--to` 或 `--commit` 必须与保存的会话一致。`--preview` 不能与 `--resume` 同时使用。
|
|
576
|
-
|
|
577
|
-
使用 `--format json` 时,恢复运行会包含:
|
|
578
|
-
|
|
579
|
-
- `session_id` — 当前运行的 session ID
|
|
580
|
-
- `resume.resumed_from` — 来源 session ID
|
|
581
|
-
- `resume.reused_files` — 从已保存检查点复用的文件数
|
|
582
|
-
- `resume.rerun_files` — 本次重新评审的文件数
|
|
583
|
-
|
|
584
|
-
### `ocr session` 参数
|
|
585
|
-
|
|
586
|
-
| 命令 | 参数 | 默认值 | 描述 |
|
|
587
|
-
|------|------|--------|------|
|
|
588
|
-
| `ocr session list` | `--repo` | 当前目录 | 要列出会话的仓库 |
|
|
589
|
-
| `ocr session list` | `--json` | `false` | 以 JSON 输出会话摘要 |
|
|
590
|
-
| `ocr session list` | `--limit` | `20` | 限制列出的会话数量;`0` 表示不限 |
|
|
591
|
-
| `ocr session show <id>` | `--repo` | 当前目录 | 要查看会话的仓库 |
|
|
592
|
-
| `ocr session show <id>` | `--json` | `false` | 以 JSON 输出会话元数据和逐文件条目 |
|
|
593
|
-
|
|
594
|
-
### `ocr scan` 参数
|
|
595
|
-
|
|
596
|
-
`ocr scan` 审查整个文件而非 diff —— 适用于审计不熟悉的代码库、迁移前扫描,或任何没有有意义 diff 的目录。它也可以在非 git 目录中工作(会回退到遵循 `.gitignore` 的文件系统遍历)。
|
|
597
|
-
|
|
598
|
-
| 参数 | 缩写 | 默认值 | 描述 |
|
|
599
|
-
|------|------|--------|------|
|
|
600
|
-
| `--path` | — | 整个仓库 | 以逗号分隔的待扫描目录/文件 |
|
|
601
|
-
| `--exclude` | — | — | 以逗号分隔的 gitignore 风格模式,用于跳过匹配文件;与 rule.json 中的 excludes 合并 |
|
|
602
|
-
| `--preview` | `-p` | `false` | 列出将被扫描的文件,不运行 LLM |
|
|
603
|
-
| `--max-tokens-budget` | — | `0`(无限制) | 限制总 token 使用量;超出后停止分发 |
|
|
604
|
-
| `--no-plan` | — | `false` | 跳过按文件的规划预处理 |
|
|
605
|
-
| `--no-dedup` | — | `false` | 跳过按批次的相似评论去重 |
|
|
606
|
-
| `--no-summary` | — | `false` | 跳过项目级别的总结 |
|
|
607
|
-
| `--batch` | — | `by-language` | 批处理策略:`none`、`by-language` 或 `by-directory` |
|
|
608
|
-
| `--format` | `-f` | `text` | 输出格式:`text` 或 `json`(JSON 包含 `project_summary` 字段) |
|
|
609
|
-
| `--concurrency` | — | `8` | 最大并发文件扫描数 |
|
|
610
|
-
| `--rule` | — | — | 自定义 JSON 审查规则路径 |
|
|
611
|
-
| `--repo` | — | 当前目录 | 要扫描的仓库或目录根路径 |
|
|
612
|
-
|
|
613
|
-
每次运行前,`ocr scan` 会打印粗略的 token 费用估算。使用 `--preview` 先查看文件列表,使用 `--max-tokens-budget` 限制大型仓库的开销。
|
|
614
|
-
|
|
615
|
-
### `ocr delegate` 参数
|
|
616
|
-
|
|
617
|
-
`ocr delegate` 是面向 AI 编程 agent 的委托模式。它提供确定性的文件选择和规则解析,不调用任何 LLM — 由宿主 agent 使用自身能力执行实际评审。
|
|
618
|
-
|
|
619
|
-
| 子命令 | 说明 |
|
|
620
|
-
|--------|------|
|
|
621
|
-
| `ocr delegate preview` | 输出可评审文件列表及模式/引用元数据 |
|
|
622
|
-
| `ocr delegate rule <path...>` | 输出按内容分组的评审规则 |
|
|
623
|
-
|
|
624
|
-
两个子命令共享以下参数:
|
|
625
|
-
|
|
626
|
-
| 参数 | 缩写 | 默认值 | 说明 |
|
|
627
|
-
|------|------|--------|------|
|
|
628
|
-
| `--repo` | — | 当前目录 | Git 仓库根目录 |
|
|
629
|
-
| `--from` | — | — | 源引用(如 `main`) |
|
|
630
|
-
| `--to` | — | — | 目标引用(如 `feature-branch`) |
|
|
631
|
-
| `--commit` | `-c` | — | 单次提交 |
|
|
632
|
-
| `--exclude` | — | — | 逗号分隔的 gitignore 风格排除模式 |
|
|
633
|
-
| `--rule` | — | — | 自定义 JSON 评审规则路径 |
|
|
634
|
-
| `--background` | `-b` | — | 可选的需求/业务上下文 |
|
|
635
|
-
| `--background-file` | `-B` | — | 从 Markdown 文件读取业务上下文 |
|
|
636
|
-
| `--max-git-procs` | — | `16` | 最大并发 git 子进程数 |
|
|
637
|
-
|
|
638
|
-
## 示例
|
|
639
|
-
|
|
640
|
-
```bash
|
|
641
|
-
# 交互式供应商和模型设置
|
|
642
|
-
ocr config provider
|
|
643
|
-
ocr config model
|
|
644
|
-
ocr llm providers
|
|
645
|
-
|
|
646
|
-
# 删除自定义供应商
|
|
647
|
-
ocr config unset custom_providers.my-gateway
|
|
648
|
-
|
|
649
|
-
# 预览将被审查的文件(不调用 LLM)
|
|
650
|
-
ocr review --preview
|
|
651
|
-
ocr review -c abc123 -p
|
|
652
|
-
|
|
653
|
-
# 使用默认设置审查工作区变更
|
|
654
|
-
ocr review
|
|
655
|
-
|
|
656
|
-
# 以更高并发审查分支差异
|
|
657
|
-
ocr review --from main --to my-feature --concurrency 4
|
|
658
|
-
|
|
659
|
-
# 审查特定提交并以 JSON 格式输出详细信息
|
|
660
|
-
ocr review --commit abc123 --format json --audience agent
|
|
661
|
-
|
|
662
|
-
# 恢复中断的区间或单 commit 评审
|
|
663
|
-
ocr session list
|
|
664
|
-
ocr session show <session-id>
|
|
665
|
-
ocr review --from main --to my-feature --resume <session-id>
|
|
666
|
-
ocr review --commit abc123 --resume <session-id>
|
|
667
|
-
|
|
668
|
-
# 为本次审查选择或覆盖模型
|
|
669
|
-
ocr review --model claude-opus-4-6
|
|
670
|
-
ocr review --commit abc123 --model claude-sonnet-4-6
|
|
671
|
-
|
|
672
|
-
# 提供需求背景以获得更有针对性的审查
|
|
673
|
-
ocr review --background "为登录 API 添加限流"
|
|
674
|
-
|
|
675
|
-
# 从 Markdown 文件提供需求背景
|
|
676
|
-
ocr review --background-file ./docs/my_business_context.md
|
|
677
|
-
|
|
678
|
-
# 将内联背景与本地背景文件结合使用(两者都会生效)
|
|
679
|
-
ocr review --background "关注鉴权" --background-file ./docs/my_business_context.md
|
|
680
|
-
|
|
681
|
-
# 使用自定义审查规则
|
|
682
|
-
ocr review --rule /path/to/my-rules.json
|
|
683
|
-
|
|
684
|
-
# 预览某个文件路径生效的规则
|
|
685
|
-
ocr rules check src/main/java/com/example/Foo.java
|
|
686
|
-
ocr rules check --rule custom.json src/main/resources/mapper/UserMapper.xml
|
|
687
|
-
|
|
688
|
-
# 全量文件扫描:先预览文件列表(不调用 LLM)
|
|
689
|
-
ocr scan --preview
|
|
690
|
-
|
|
691
|
-
# 扫描整个仓库,限制消耗约 500k token
|
|
692
|
-
ocr scan --max-tokens-budget 500000
|
|
693
|
-
|
|
694
|
-
# 扫描子目录,跳过生成的/测试文件
|
|
695
|
-
ocr scan --path internal --exclude '**/*_test.go,**/generated/**'
|
|
696
|
-
|
|
697
|
-
# 扫描非 git 目录,使用 JSON 输出(包含 project_summary)
|
|
698
|
-
ocr scan --repo /path/to/plain/dir --format json
|
|
699
|
-
|
|
700
|
-
# 最快扫描:跳过规划、去重和项目总结
|
|
701
|
-
ocr scan --no-plan --no-dedup --no-summary
|
|
702
|
-
|
|
703
|
-
# 委托模式 — 让 AI agent 驱动评审(无需 LLM 配置)
|
|
704
|
-
ocr delegate preview
|
|
705
|
-
ocr delegate preview --from main --to feature-branch
|
|
706
|
-
ocr delegate preview --commit abc123
|
|
707
|
-
ocr delegate rule internal/handler.go internal/service.go cmd/main.go
|
|
708
|
-
|
|
709
|
-
# 在浏览器中查看审查会话历史
|
|
710
|
-
ocr viewer
|
|
711
|
-
ocr viewer --addr :3000
|
|
712
|
-
```
|
|
713
|
-
|
|
714
|
-
## 评审规则
|
|
715
|
-
|
|
716
|
-
OCR 通过四层优先级链解析评审规则。每层采用首次匹配原则:如果文件路径匹配到某个模式,则使用该规则;否则穿透到下一层。
|
|
717
|
-
|
|
718
|
-
| 优先级 | 来源 | 路径 | 描述 |
|
|
719
|
-
|--------|------|------|------|
|
|
720
|
-
| 1(最高) | `--rule` 参数 | 用户指定路径 | CLI 显式覆盖 |
|
|
721
|
-
| 2 | 项目配置 | `<repoDir>/.opencodereview/rule.json` | 项目级规则,可提交到 git |
|
|
722
|
-
| 3 | 全局配置 | `~/.opencodereview/rule.json` | 用户级个人偏好 |
|
|
723
|
-
| 4(最低) | 系统默认 | 内嵌 `system_rules.json` | 覆盖常见语言和文件类型的内置规则 |
|
|
724
|
-
|
|
725
|
-
### 规则文件格式
|
|
726
|
-
|
|
727
|
-
第 1–3 层使用相同的 JSON 格式:
|
|
728
|
-
|
|
729
|
-
```json
|
|
730
|
-
{
|
|
731
|
-
"rules": [
|
|
732
|
-
{
|
|
733
|
-
"path": "force-api/**/*.java",
|
|
734
|
-
"rule": "所有新方法必须对必填参数进行空值校验",
|
|
735
|
-
"merge_system_rule": true
|
|
736
|
-
},
|
|
737
|
-
{
|
|
738
|
-
"path": "**/*mapper*.xml",
|
|
739
|
-
"rule": "检查 SQL 注入风险、参数错误和缺少闭合标签"
|
|
740
|
-
}
|
|
741
|
-
]
|
|
742
|
-
}
|
|
743
|
-
```
|
|
744
|
-
|
|
745
|
-
- `path` 支持 `**` 递归匹配和 `{java,kt}` 大括号展开。
|
|
746
|
-
- `merge_system_rule` 为可选字段。设为 `true` 时,命中的内置系统规则会与该用户规则合并;否则用户规则会替换系统规则。
|
|
747
|
-
- 在每一层内,规则按声明顺序评估 —— 首次匹配生效。
|
|
748
|
-
- 如果规则文件不存在,将被静默跳过。
|
|
749
|
-
|
|
750
|
-
**`rule` 字段同时支持内联内容和文件路径。**系统按以下顺序自动判断:
|
|
751
|
-
|
|
752
|
-
1. 如果值包含换行 → **内联内容**(多行规则永远不会被当作文件路径)。
|
|
753
|
-
2. 如果值是单行、不含空格、且以 `.md` / `.txt` / `.markdown` 结尾 → **文件路径**。
|
|
754
|
-
- 绝对路径(以 `/` 开头)直接使用。
|
|
755
|
-
- 相对路径在项目根目录下查找,路径穿越(如 `../../etc/passwd.md`)会被拦截。找不到则 `[WARN]` 并清空该规则(不会回退为内联)。
|
|
756
|
-
- 文件需通过安全校验:白名单扩展名、≤ 512 KB、symlink 解析后目标也必须是白名单扩展名。校验失败则清空该规则。
|
|
757
|
-
3. 否则 → **内联内容**。
|
|
758
|
-
|
|
759
|
-
```json
|
|
760
|
-
{
|
|
761
|
-
"rules": [
|
|
762
|
-
{
|
|
763
|
-
"path": "**/*mapper*.xml",
|
|
764
|
-
"rule": "docs/sql-rules.md"
|
|
765
|
-
},
|
|
766
|
-
{
|
|
767
|
-
"path": "**/*.java",
|
|
768
|
-
"rule": "始终检查空值安全和资源泄漏"
|
|
769
|
-
},
|
|
770
|
-
{
|
|
771
|
-
"path": "**/*.go",
|
|
772
|
-
"rule": "shared/go-concurrency.md"
|
|
773
|
-
},
|
|
774
|
-
{
|
|
775
|
-
"path": "**/*.py",
|
|
776
|
-
"rule": "/Users/me/team-rules/python.md"
|
|
777
|
-
}
|
|
778
|
-
]
|
|
779
|
-
}
|
|
780
|
-
```
|
|
781
|
-
|
|
782
|
-
- `docs/sql-rules.md` — 相对路径,从 `<project>/docs/sql-rules.md` 加载。
|
|
783
|
-
- `始终检查空值安全…` — 内联字符串,直接使用。
|
|
784
|
-
- `shared/go-concurrency.md` — 相对路径,同上。
|
|
785
|
-
- `/Users/me/team-rules/python.md` — 绝对路径,直接使用。
|
|
786
|
-
|
|
787
|
-
> 绝对路径可以访问项目目录之外的文件,这是有意为之的设计——`rule.json` 由项目维护者编写,属于受信输入。团队可将共享规则放在统一路径下(如 `/opt/company-rules/`),无需在各项目中复制。
|
|
788
|
-
|
|
789
|
-
### 路径过滤
|
|
790
|
-
|
|
791
|
-
规则文件同时支持 `include` 和 `exclude` 字段,用于控制哪些文件进入审查范围:
|
|
792
|
-
|
|
793
|
-
```json
|
|
794
|
-
{
|
|
795
|
-
"rules": [
|
|
796
|
-
{"path": "**/*.java", "rule": "检查空值安全"}
|
|
797
|
-
],
|
|
798
|
-
"include": ["src/main/**/*.java", "lib/**/*.kt"],
|
|
799
|
-
"exclude": ["**/generated/**", "vendor/**"]
|
|
800
|
-
}
|
|
801
|
-
```
|
|
802
|
-
|
|
803
|
-
**过滤决策优先级(从高到低):**
|
|
804
|
-
|
|
805
|
-
| 步骤 | 条件 | 结果 |
|
|
806
|
-
|------|------|------|
|
|
807
|
-
| 1 | 文件为二进制文件 | 排除 |
|
|
808
|
-
| 2 | 路径匹配用户 `exclude` 模式 | 排除 |
|
|
809
|
-
| 3 | 文件扩展名不在支持列表中 | 排除 |
|
|
810
|
-
| 4 | 配置了 `include` 且路径匹配 | **纳入审查**(跳过步骤 5) |
|
|
811
|
-
| 5 | 路径匹配内置默认排除模式(测试文件等) | 排除 |
|
|
812
|
-
| 6 | 以上均不满足 | 纳入审查 |
|
|
813
|
-
|
|
814
|
-
**生效逻辑:**
|
|
815
|
-
|
|
816
|
-
- `include` 和 `exclude` 遵循与评审规则相同的优先级链(`--rule` > 项目配置 > 全局配置),取**最高优先级中配置了 include/exclude 的那一层**整体生效,不会跨层合并。
|
|
817
|
-
- `exclude` 始终优先于 `include` —— 同时匹配两者的文件会被排除。
|
|
818
|
-
- `include` 的作用是**绕过内置默认排除模式**(如测试文件),而非限制审查范围 —— 未匹配 `include` 的文件仍会正常进入后续的默认过滤判断。
|
|
819
|
-
- 模式语法:支持 `**` 递归匹配、`*` 单级匹配和 `{a,b}` 大括号展开,匹配时不区分大小写。
|
|
820
|
-
|
|
821
|
-
**内置默认排除模式**(用于过滤测试文件等,可通过 `include` 覆盖):
|
|
822
|
-
|
|
823
|
-
```
|
|
824
|
-
**/*_test.go, **/*Test.java, **/*Tests.java, **/*_test.rs,
|
|
825
|
-
**/*.test.{js,jsx,ts,tsx}, **/*.spec.{js,jsx,ts,tsx}, **/__tests__/**,
|
|
826
|
-
**/src/test/java/**/*.java, **/src/test/**/*.kt,
|
|
827
|
-
**/test/**/*_test.py, **/tests/**/*_test.py, **/*_test.py,
|
|
828
|
-
**/*_spec.rb, **/spec/**/*_spec.rb, **/oh_modules/**
|
|
829
|
-
```
|
|
830
|
-
|
|
831
|
-
## 配置参考
|
|
832
|
-
|
|
833
|
-
配置文件:`~/.opencodereview/config.json`
|
|
834
|
-
|
|
835
|
-
| 键 | 类型 | 示例 |
|
|
836
|
-
|----|------|------|
|
|
837
|
-
| `provider` | string | `anthropic` \| `openai` \| `dashscope` \| `deepseek` \| `z-ai` |
|
|
838
|
-
| `providers.<name>.api_key` | string | 供应商 API 密钥 |
|
|
839
|
-
| `providers.<name>.url` | string | 供应商 Base URL 覆盖 |
|
|
840
|
-
| `providers.<name>.protocol` | string | `anthropic` \| `openai` \| `openai-responses` |
|
|
841
|
-
| `providers.<name>.model` | string | 供应商模型名称 |
|
|
842
|
-
| `providers.<name>.models` | array | 用于交互式选择的可选供应商模型列表 |
|
|
843
|
-
| `providers.<name>.auth_header` | string | `x-api-key` \| `authorization` |
|
|
844
|
-
| `providers.<name>.extra_body` | object | 合并到每个请求体的 JSON 对象 |
|
|
845
|
-
| `providers.<name>.timeout_sec` | integer | 每次请求的 HTTP 超时时间(秒),默认 `300` |
|
|
846
|
-
| `providers.<name>.extra_headers` | string | 逗号分隔的 `key=value` HTTP 头 |
|
|
847
|
-
| `custom_providers.<name>.*` | — | 与 `providers.<name>.*` 相同的字段,包括可选的 `models` |
|
|
848
|
-
| `llm.url` | string | `https://api.openai.com/v1/chat/completions` |
|
|
849
|
-
| `llm.auth_token` | string | `sk-xxxxxxx` |
|
|
850
|
-
| `llm.auth_header` | string | 仅 Anthropic:`x-api-key` \| `authorization` |
|
|
851
|
-
| `llm.extra_body` | object | 合并到每个请求体的 JSON 对象 |
|
|
852
|
-
| `llm.timeout_sec` | integer | 每次请求的 HTTP 超时时间(秒),默认 `300` |
|
|
853
|
-
| `llm.extra_headers` | string | 逗号分隔的 `key=value` HTTP 头 |
|
|
854
|
-
| `llm.model` | string | `claude-opus-4-6` |
|
|
855
|
-
| `llm.protocol` | string | `anthropic` \| `openai` \| `openai-responses`;优先级高于 `llm.use_anthropic` |
|
|
856
|
-
| `llm.use_anthropic` | boolean | `true` \| `false`(兼容字段,推荐改用 `llm.protocol`) |
|
|
857
|
-
| `mcp_servers.<name>.command` | string | 启动 MCP 服务器的命令 |
|
|
858
|
-
| `mcp_servers.<name>.args` | array | MCP 服务器的命令行参数 |
|
|
859
|
-
| `mcp_servers.<name>.env` | array | 环境变量,`KEY=VALUE` 格式 |
|
|
860
|
-
| `mcp_servers.<name>.tools` | array | 允许使用的工具名称(为空则允许所有工具) |
|
|
861
|
-
| `mcp_servers.<name>.setup` | string | 启动服务器前运行的初始化命令 |
|
|
862
|
-
| `language` | string | 任意语言名称,例如 `English`、`Chinese`(默认:`English`) |
|
|
863
|
-
| `telemetry.enabled` | boolean | `true` \| `false` |
|
|
864
|
-
| `telemetry.exporter` | string | `console` \| `otlp` |
|
|
865
|
-
| `telemetry.otlp_endpoint` | string | OTLP 采集器地址 |
|
|
866
|
-
| `telemetry.content_logging` | boolean | 在遥测数据中包含提示词 |
|
|
867
|
-
|
|
868
|
-
环境变量优先级高于配置文件。
|
|
869
|
-
|
|
870
|
-
### MCP Server
|
|
871
|
-
|
|
872
|
-
Open Code Review 支持 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 服务器,允许评审 Agent 在代码评审过程中通过 stdio 传输协议调用外部工具。
|
|
873
|
-
|
|
874
|
-
通过 CLI 配置 MCP 服务器:
|
|
875
|
-
|
|
876
|
-
```bash
|
|
877
|
-
# 添加 MCP 服务器
|
|
878
|
-
ocr config set mcp_servers.<name>.command <command>
|
|
879
|
-
ocr config set mcp_servers.<name>.args '["arg1","arg2"]'
|
|
880
|
-
ocr config set mcp_servers.<name>.env '["KEY=VALUE"]'
|
|
881
|
-
ocr config set mcp_servers.<name>.tools '["tool_name"]'
|
|
882
|
-
ocr config set mcp_servers.<name>.setup '<setup command>'
|
|
883
|
-
|
|
884
|
-
# 删除 MCP 服务器
|
|
885
|
-
ocr config unset mcp_servers.<name>
|
|
886
|
-
```
|
|
887
|
-
|
|
888
|
-
| 字段 | 必填 | 说明 |
|
|
889
|
-
|------|------|------|
|
|
890
|
-
| `command` | 是 | 启动 MCP 服务器的可执行命令 |
|
|
891
|
-
| `args` | 否 | 传递给服务器的命令行参数 |
|
|
892
|
-
| `env` | 否 | 环境变量,`KEY=VALUE` 格式 |
|
|
893
|
-
| `tools` | 否 | 允许使用的工具名称;为空则服务器的所有工具均可用 |
|
|
894
|
-
| `setup` | 否 | 启动服务器前运行的 shell 命令(例如构建索引) |
|
|
895
|
-
|
|
896
|
-
> **注意:** 如果 MCP 工具的名称与内置工具冲突,该工具将被跳过并输出警告。`setup` 命令的超时时间为 5 分钟。
|
|
897
|
-
|
|
898
|
-
**示例:添加 [CodeGraph](https://github.com/nicholasgasior/codegraph) 增强代码结构分析能力**
|
|
899
|
-
|
|
900
|
-
```bash
|
|
901
|
-
ocr config set mcp_servers.codegraph.command codegraph
|
|
902
|
-
ocr config set mcp_servers.codegraph.args '["serve","--mcp"]'
|
|
903
|
-
ocr config set mcp_servers.codegraph.tools '["codegraph_explore"]'
|
|
904
|
-
ocr config set mcp_servers.codegraph.setup 'codegraph init && codegraph index'
|
|
905
|
-
```
|
|
906
|
-
|
|
907
|
-
### 环境变量
|
|
908
|
-
|
|
909
|
-
| 变量 | 用途 |
|
|
910
|
-
|------|------|
|
|
911
|
-
| `OCR_LLM_URL` | LLM API 端点 URL |
|
|
912
|
-
| `OCR_LLM_TOKEN` | API 密钥 / 认证令牌 |
|
|
913
|
-
| `OCR_LLM_AUTH_HEADER` | Anthropic 认证头(`x-api-key` 或 `authorization`) |
|
|
914
|
-
| `OCR_LLM_EXTRA_HEADERS` | 逗号分隔的 `key=value` HTTP 头 |
|
|
915
|
-
| `OCR_LLM_MODEL` | 模型名称 |
|
|
916
|
-
| `OCR_LLM_PROTOCOL` | 协议:`anthropic` \| `openai` \| `openai-responses`;优先级高于 `OCR_USE_ANTHROPIC` |
|
|
917
|
-
| `OCR_LLM_TIMEOUT` | 每次请求的 HTTP 超时时间(秒),覆盖配置文件中的 `timeout_sec` |
|
|
918
|
-
| `OCR_USE_ANTHROPIC` | `true` = Anthropic,`false` = OpenAI Chat Completions(兼容字段,推荐改用 `OCR_LLM_PROTOCOL`) |
|
|
919
|
-
|
|
920
|
-
## 遥测
|
|
921
|
-
|
|
922
|
-
OpenTelemetry 集成,用于可观测性(spans、metrics)。默认关闭。
|
|
923
|
-
|
|
924
|
-
```bash
|
|
925
|
-
ocr config set telemetry.enabled true
|
|
926
|
-
ocr config set telemetry.exporter otlp
|
|
927
|
-
ocr config set telemetry.otlp_endpoint localhost:4317
|
|
928
|
-
```
|
|
929
|
-
|
|
930
|
-
设置 `telemetry.content_logging` 可在导出数据中包含 LLM 提示词和响应。
|
|
931
|
-
|
|
932
|
-
**协议选择:** 通过环境变量 `OTEL_EXPORTER_OTLP_PROTOCOL` 选择导出协议:
|
|
933
|
-
|
|
934
|
-
| 值 | 传输方式 | 说明 |
|
|
935
|
-
|---|---|---|
|
|
936
|
-
| `grpc`(默认) | gRPC | 默认端口 4317 |
|
|
937
|
-
| `http/protobuf` | HTTP | 默认端口 4318 |
|
|
938
|
-
|
|
939
|
-
**Endpoint 格式:** `telemetry.otlp_endpoint` 的值为 `host:port` 或 `http://host:port`,无需包含路径。SDK 会根据 [OTLP 规范](https://opentelemetry.io/docs/specs/otlp/#otlphttp-request)自动追加信号路径(如 `/v1/traces`)。
|
|
158
|
+
## 文档
|
|
159
|
+
|
|
160
|
+
完整文档见 **[open-codereview.ai/docs](https://open-codereview.ai/docs)**:
|
|
161
|
+
|
|
162
|
+
- [快速开始](https://open-codereview.ai/docs/quickstart) —— 安装并运行你的第一次评审
|
|
163
|
+
- [安装](https://open-codereview.ai/docs/installation) —— 覆盖各平台与包管理器
|
|
164
|
+
- [CLI 参考](https://open-codereview.ai/docs/cli-reference) —— 所有命令与参数
|
|
165
|
+
- [评审规则](https://open-codereview.ai/docs/review-rules) —— 深度定制规则进行评审,过滤路径、指定路径等
|
|
166
|
+
- [配置](https://open-codereview.ai/docs/configuration) —— 配置项与环境变量
|
|
167
|
+
- [MCP 服务器](https://open-codereview.ai/docs/mcp) —— 用外部工具扩展评审 agent
|
|
168
|
+
- 编程 Agent 集成 —— 将 OCR 集成到 Claude Code、Codex、Cursor 等
|
|
169
|
+
- [Skill](https://open-codereview.ai/docs/agent-skill) —— 作为可复用的 Agent Skill 安装
|
|
170
|
+
- [Plugin](https://open-codereview.ai/docs/claude-code) —— 作为 Claude Code / Codex / Cursor 插件安装
|
|
171
|
+
- [委托模式](https://open-codereview.ai/docs/delegate) —— 让 Agent 使用自身的 LLM 进行评审
|
|
172
|
+
- [CI/CD 集成](https://open-codereview.ai/docs/cicd) —— 支持 GitHub Actions、GitLab CI、GitFlic CI、Gerrit 集成
|
|
173
|
+
- [会话查看器](https://open-codereview.ai/docs/viewer) —— 在浏览器中浏览和回放评审会话
|
|
174
|
+
- [遥测](https://open-codereview.ai/docs/telemetry) —— OpenTelemetry 集成,用于可观测性
|
|
175
|
+
- [FAQ](https://open-codereview.ai/docs/faq) —— 常见问题与故障排查
|
|
940
176
|
|
|
941
177
|
## 贡献
|
|
942
178
|
|