@alibaba-group/open-code-review 1.6.1 → 1.6.3

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 CHANGED
@@ -24,6 +24,7 @@
24
24
  <a href="#supported-platforms"><img alt="Linux" src="https://img.shields.io/badge/Linux-supported-blue.svg" /></a>
25
25
  <a href="#supported-agents"><img alt="Claude Code" src="https://img.shields.io/badge/Claude_Code-supported-blueviolet.svg" /></a>
26
26
  <a href="#supported-agents"><img alt="Codex" src="https://img.shields.io/badge/Codex-supported-blueviolet.svg" /></a>
27
+ <a href="#supported-agents"><img alt="Cursor" src="https://img.shields.io/badge/Cursor-supported-blueviolet.svg" /></a>
27
28
  </p>
28
29
  <p align="center">
29
30
  <a href="README.md">English</a> | <a href="README.zh-CN.md">简体中文</a> | 日本語 | <a href="README.ko-KR.md">한국어</a> | <a href="README.ru-RU.md">Русский</a>
@@ -162,6 +163,8 @@ sudo cp dist/opencodereview /usr/local/bin/ocr
162
163
 
163
164
  **コードレビューの前に必ずLLMを設定する必要があります。**
164
165
 
166
+ OCRは統一された**プロバイダー(Provider)**システムでLLM設定を管理します。多数の主要プロバイダーが組み込まれており、プライベートデプロイメントやその他の互換エンドポイントに接続するためのカスタムプロバイダーの追加もサポートしています。設定は`~/.opencodereview/config.json`に保存されます。
167
+
165
168
  **オプションA: 対話的セットアップ(推奨)**
166
169
 
167
170
  ```bash
@@ -171,26 +174,60 @@ ocr config model # アクティブなプロバイダーのモデル
171
174
 
172
175
  ![Provider setup](imgs/providers.jpg)
173
176
 
174
- **オプションB: 手動設定**
177
+ 対話的UIがプロバイダーの選択、APIキーの入力、モデル設定をガイドし、完了後に自動的に接続テストを行います。
178
+
179
+ `ocr llm providers`を実行すると、すべてのビルトインプロバイダーを確認できます。ビルトインプロバイダーにはAPI URLとプロトコルがプリセットされているため、APIキーを提供するだけで使用できます。対応する環境変数(例:`ANTHROPIC_API_KEY`、`OPENAI_API_KEY`)が設定済みの場合、APIキーは自動的に読み取られます。
180
+
181
+ **カスタムプロバイダー**も対話的UIから追加できます — プロバイダー名、API URL、プロトコルタイプ(`anthropic`または`openai`)、APIキーを入力します。
182
+
183
+ **オプションB: CLIセットアップ(CI/CDなど非対話環境向け)**
184
+
185
+ `ocr config set`コマンドでプロバイダー設定を直接書き込みます。スクリプトや自動化に適しています。
186
+
187
+ ビルトインプロバイダーを使用する場合:
188
+
189
+ ```bash
190
+ ocr config set provider anthropic
191
+ ocr config set providers.anthropic.api_key your-api-key-here
192
+ ocr config set providers.anthropic.model claude-sonnet-4-6
193
+ ```
194
+
195
+ カスタムプロバイダーを使用する場合(プライベートゲートウェイやその他の互換エンドポイント):
175
196
 
176
197
  ```bash
177
- ocr config set llm.url https://api.anthropic.com/v1/messages
178
- ocr config set llm.auth_token your-api-key-here
179
- ocr config set llm.model claude-opus-4-6
180
- ocr config set llm.use_anthropic true
198
+ ocr config set provider my-gateway
199
+ ocr config set custom_providers.my-gateway.url https://my-llm-gateway.internal/v1
200
+ ocr config set custom_providers.my-gateway.protocol openai
201
+ ocr config set custom_providers.my-gateway.api_key your-api-key-here
202
+ ocr config set custom_providers.my-gateway.model gpt-4o
181
203
  ```
182
204
 
183
- 設定は`~/.opencodereview/config.json`に保存されます。
205
+ > カスタムプロバイダーでは`url`と`protocol`が必須です。サポートされるプロトコル:`anthropic`、`openai`。
184
206
 
185
- **`auth_header`(オプション):** Anthropic使用時にAPIキーを送信するHTTPヘッダーを制御します。省略時のデフォルトは`authorization`(Bearerトークン)です。標準の`sk-ant-*` APIキーを使用する場合は、`x-api-key`に設定する必要があります:
207
+ オプション設定:
208
+
209
+ | キー | 説明 |
210
+ |------|------|
211
+ | `providers.<name>.auth_header` | 認証ヘッダー:`x-api-key`または`authorization`(デフォルト:`authorization`) |
212
+ | `providers.<name>.extra_body` | リクエストボディにマージされるカスタムJSONフィールド |
213
+ | `providers.<name>.extra_headers` | カンマ区切りの `key=value` ペアで、各リクエストに追加されるカスタムHTTPヘッダー |
214
+ | `providers.<name>.models` | 対話的選択用のモデルリスト |
215
+
216
+ **`extra_headers`(オプション):** すべてのLLM APIリクエストにカスタムHTTPヘッダーを追加します。プロキシ、ゲートウェイ、追加ヘッダーを必要とするエンタープライズエンドポイント(組織ID、トレースIDなど)に便利です。形式はカンマ区切りの `key=value` ペアです。カンマを含む値はダブルクォートで囲んでください:
217
+
218
+ ```bash
219
+ ocr config set llm.extra_headers "X-Org-ID=org-123,X-Forwarded-For=\"1.2.3.4,5.6.7.8\""
220
+ ```
221
+
222
+ プロバイダーごとに追加ヘッダーを設定することもできます:
186
223
 
187
224
  ```bash
188
- ocr config set llm.auth_header x-api-key
225
+ ocr config set providers.anthropic.extra_headers "X-Org-ID=org-123"
189
226
  ```
190
227
 
191
- サポートされる値:`x-api-key`、`authorization`(エイリアス:`bearer`)。それ以外の値はエラーになります。
228
+ **環境変数(最優先)**
192
229
 
193
- **オプションC: 環境変数(最優先)**
230
+ 環境変数は設定ファイルの設定を上書きします。設定ファイルの書き込みが不便なCI/CDシナリオに適しています:
194
231
 
195
232
  ```bash
196
233
  export OCR_LLM_URL=https://api.anthropic.com/v1/messages
@@ -199,14 +236,12 @@ export OCR_LLM_MODEL=claude-opus-4-6
199
236
  export OCR_USE_ANTHROPIC=true
200
237
  ```
201
238
 
202
- また、Claude Codeの環境変数(`ANTHROPIC_BASE_URL`、`ANTHROPIC_AUTH_TOKEN`、`ANTHROPIC_MODEL`)とも互換性があり、`~/.zshrc` / `~/.bashrc`からこれらのexportをパースします。
239
+ Claude Codeの環境変数(`ANTHROPIC_BASE_URL`、`ANTHROPIC_AUTH_TOKEN`、`ANTHROPIC_MODEL`)とも互換性があり、`~/.zshrc` / `~/.bashrc`からこれらのexportをパースします。
203
240
 
204
- > **CC-Switchユーザー向けの注意**: [CC-Switch](https://github.com/farion1231/cc-switch)を[ルーティングサービス](https://www.ccswitch.io/en/docs?section=proxy&item=service)有効で使用している場合、追加設定なしで`llm.url`をCC-Switchのプロキシアドレスに向けることができます:
205
- > - **Claude**プロバイダーの場合: `llm.url`を`http://127.0.0.1:15721`に設定
206
- > - **Codex**プロバイダーの場合: `llm.url`を`http://127.0.0.1:15721/v1`に設定
207
- > - `llm.model`はプロバイダー設定に応じて設定
208
- > - `llm.auth_token`は任意の値で構いません
209
- > - `extra_body`設定は引き続き有効です
241
+ > **CC-Switchユーザー向けの注意**: [CC-Switch](https://github.com/farion1231/cc-switch)を[ルーティングサービス](https://www.ccswitch.io/en/docs?section=proxy&item=service)有効で使用している場合、プロバイダーの`url`をCC-Switchのプロキシアドレスに向けることで、追加設定なしで利用できます:
242
+ > - **Claude**プロバイダーの場合:`providers.anthropic.url`を`http://127.0.0.1:15721`に設定
243
+ > - **Codex**プロバイダーの場合:対応するプロバイダーの`url`を`http://127.0.0.1:15721/v1`に設定
244
+ > - `api_key`は任意の値で構いません。`extra_body`設定は引き続き有効です
210
245
 
211
246
  **2. 疎通テスト**
212
247
 
@@ -294,7 +329,39 @@ ocr review --audience agent
294
329
 
295
330
  韓国語ガイド:[`plugins/open-code-review/CODEX.ko-KR.md`](plugins/open-code-review/CODEX.ko-KR.md)
296
331
 
297
- #### オプション4: コマンドファイルを直接コピー
332
+ #### オプション4: Cursorプラグインとしてインストール
333
+
334
+ [Cursor](https://www.cursor.com/)では、このリポジトリからOpen Code Reviewプラグインをインストールできます:
335
+
336
+ ```
337
+ cursor-plugin marketplace add alibaba/open-code-review
338
+ ```
339
+
340
+ 手動でmarketplaceを追加することもできます。Cursorで`/plugins`を開き、`Open Code Review`を検索してインストールしてください。
341
+
342
+ ローカルcheckoutまたはforkの場合:
343
+
344
+ ```
345
+ cursor-plugin marketplace add .
346
+ ```
347
+
348
+ インストール後、Cursorで次のように呼び出します:
349
+
350
+ ```text
351
+ @Open Code Review review my current changes
352
+ @Open Code Review review this branch against main
353
+ @Open Code Review review and fix high-confidence issues
354
+ ```
355
+
356
+ これにより、ローカルOCR CLIを実行するCursor skillが登録されます:
357
+
358
+ ```bash
359
+ ocr review --audience agent
360
+ ```
361
+
362
+ この統合はOCRの内部LLM backendを変更しません。OCR自体には、CLI setupセクションで説明されている`ocr` CLIのインストールと設定が引き続き必要です。
363
+
364
+ #### オプション5: コマンドファイルを直接コピー
298
365
 
299
366
  パッケージマネージャーを使わずに素早くセットアップしたい場合は、コマンドファイルをコピーするだけでClaude Codeで`/open-code-review`スラッシュコマンドを使えるようになります。
300
367
 
@@ -553,10 +620,14 @@ OCRは4層の優先度チェーンを使ってレビュールールを解決し
553
620
  | `providers.<name>.model` | string | プロバイダーのモデル名 |
554
621
  | `providers.<name>.models` | array | 対話的選択に使う任意のプロバイダーモデル一覧 |
555
622
  | `providers.<name>.auth_header` | string | `x-api-key` \| `authorization` |
623
+ | `providers.<name>.extra_body` | object | すべてのリクエストボディにマージされるJSONオブジェクト |
624
+ | `providers.<name>.extra_headers` | string | カンマ区切りの `key=value` HTTPヘッダー |
556
625
  | `custom_providers.<name>.*` | — | 任意の`models`を含む`providers.<name>.*`と同じフィールド |
557
626
  | `llm.url` | string | `https://api.openai.com/v1/chat/completions` |
558
627
  | `llm.auth_token` | string | `sk-xxxxxxx` |
559
628
  | `llm.auth_header` | string | Anthropicのみ:`x-api-key` \| `authorization` |
629
+ | `llm.extra_body` | object | すべてのリクエストボディにマージされるJSONオブジェクト |
630
+ | `llm.extra_headers` | string | カンマ区切りの `key=value` HTTPヘッダー |
560
631
  | `llm.model` | string | `claude-opus-4-6` |
561
632
  | `llm.use_anthropic` | boolean | `true` \| `false` |
562
633
  | `language` | string | 任意の言語名、例:`English`、`Chinese`(デフォルト:`English`) |
@@ -574,6 +645,7 @@ OCRは4層の優先度チェーンを使ってレビュールールを解決し
574
645
  | `OCR_LLM_URL` | LLM APIエンドポイントURL |
575
646
  | `OCR_LLM_TOKEN` | APIキー / 認証トークン |
576
647
  | `OCR_LLM_AUTH_HEADER` | Anthropic認証ヘッダー(`x-api-key`または`authorization`) |
648
+ | `OCR_LLM_EXTRA_HEADERS` | カンマ区切りの `key=value` HTTPヘッダー |
577
649
  | `OCR_LLM_MODEL` | モデル名 |
578
650
  | `OCR_USE_ANTHROPIC` | `true` = Anthropic、`false` = OpenAI |
579
651
 
package/README.ko-KR.md CHANGED
@@ -24,6 +24,7 @@
24
24
  <a href="#supported-platforms"><img alt="Linux" src="https://img.shields.io/badge/Linux-supported-blue.svg" /></a>
25
25
  <a href="#supported-agents"><img alt="Claude Code" src="https://img.shields.io/badge/Claude_Code-supported-blueviolet.svg" /></a>
26
26
  <a href="#supported-agents"><img alt="Codex" src="https://img.shields.io/badge/Codex-supported-blueviolet.svg" /></a>
27
+ <a href="#supported-agents"><img alt="Cursor" src="https://img.shields.io/badge/Cursor-supported-blueviolet.svg" /></a>
27
28
  </p>
28
29
  <p align="center">
29
30
  <a href="README.md">English</a> | <a href="README.zh-CN.md">简体中文</a> | <a href="README.ja-JP.md">日本語</a> | 한국어 | <a href="README.ru-RU.md">Русский</a>
@@ -162,6 +163,8 @@ sudo cp dist/opencodereview /usr/local/bin/ocr
162
163
 
163
164
  **코드 리뷰를 실행하기 전에 반드시 LLM을 설정해야 합니다.**
164
165
 
166
+ OCR은 통합 **Provider** 시스템으로 LLM 설정을 관리합니다. 다양한 주요 provider가 내장되어 있으며, 프라이빗 배포 또는 기타 호환 엔드포인트에 연결하기 위한 커스텀 provider 추가도 지원합니다. 설정은 `~/.opencodereview/config.json`에 저장됩니다.
167
+
165
168
  **Option A: 대화형 설정 (권장)**
166
169
 
167
170
  ```bash
@@ -171,26 +174,60 @@ ocr config model # 활성 provider의 model 선택
171
174
 
172
175
  ![Provider setup](imgs/providers.jpg)
173
176
 
174
- **Option B: 수동 설정**
177
+ 대화형 UI가 provider 선택, API key 입력, model 설정을 안내하며, 완료 후 자동으로 연결 테스트를 수행합니다.
178
+
179
+ `ocr llm providers`를 실행하면 모든 built-in provider를 확인할 수 있습니다. Built-in provider에는 API URL과 프로토콜이 사전 설정되어 있어 API key만 제공하면 바로 사용할 수 있습니다. 해당 환경 변수(예: `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`)가 이미 설정되어 있으면 API key가 자동으로 읽힙니다.
180
+
181
+ **커스텀 provider**도 대화형 UI에서 추가할 수 있습니다 — provider 이름, API URL, 프로토콜 타입(`anthropic` 또는 `openai`), API key를 입력합니다.
182
+
183
+ **Option B: CLI 설정 (CI/CD 등 비대화형 환경용)**
184
+
185
+ `ocr config set` 명령으로 provider 설정을 직접 작성합니다. 스크립트 및 자동화에 적합합니다.
186
+
187
+ Built-in provider 사용:
188
+
189
+ ```bash
190
+ ocr config set provider anthropic
191
+ ocr config set providers.anthropic.api_key your-api-key-here
192
+ ocr config set providers.anthropic.model claude-sonnet-4-6
193
+ ```
194
+
195
+ 커스텀 provider 사용 (프라이빗 게이트웨이 또는 기타 호환 엔드포인트):
175
196
 
176
197
  ```bash
177
- ocr config set llm.url https://api.anthropic.com/v1/messages
178
- ocr config set llm.auth_token your-api-key-here
179
- ocr config set llm.model claude-opus-4-6
180
- ocr config set llm.use_anthropic true
198
+ ocr config set provider my-gateway
199
+ ocr config set custom_providers.my-gateway.url https://my-llm-gateway.internal/v1
200
+ ocr config set custom_providers.my-gateway.protocol openai
201
+ ocr config set custom_providers.my-gateway.api_key your-api-key-here
202
+ ocr config set custom_providers.my-gateway.model gpt-4o
181
203
  ```
182
204
 
183
- config는 `~/.opencodereview/config.json`에 저장됩니다.
205
+ > 커스텀 provider에서는 `url`과 `protocol`이 필수입니다. 지원 프로토콜: `anthropic`, `openai`.
184
206
 
185
- **`auth_header` (선택사항):** Anthropic 사용 시 API key를 전송할 HTTP header를 제어합니다. 생략하면 기본값은 `authorization` (Bearer token)입니다. 표준 `sk-ant-*` API key를 사용하는 경우 `x-api-key`로 설정해야 합니다:
207
+ 선택 설정:
208
+
209
+ | 키 | 설명 |
210
+ |----|------|
211
+ | `providers.<name>.auth_header` | 인증 header: `x-api-key` 또는 `authorization` (기본값: `authorization`) |
212
+ | `providers.<name>.extra_body` | 요청 body에 병합되는 커스텀 JSON 필드 |
213
+ | `providers.<name>.extra_headers` | 쉼표로 구분된 `key=value` 쌍, 각 요청에 추가되는 커스텀 HTTP 헤더 |
214
+ | `providers.<name>.models` | 대화형 선택용 model 목록 |
215
+
216
+ **`extra_headers` (선택사항):** 모든 LLM API 요청에 커스텀 HTTP 헤더를 추가합니다. 프록시, 게이트웨이, 추가 헤더가 필요한 엔터프라이즈 엔드포인트(조직 ID, 트레이싱 ID 등)에 유용합니다. 형식은 쉼표로 구분된 `key=value` 쌍입니다. 쉼표가 포함된 값은 큰따옴표로 묶으세요:
217
+
218
+ ```bash
219
+ ocr config set llm.extra_headers "X-Org-ID=org-123,X-Forwarded-For=\"1.2.3.4,5.6.7.8\""
220
+ ```
221
+
222
+ provider 별로 추가 헤더를 설정할 수도 있습니다:
186
223
 
187
224
  ```bash
188
- ocr config set llm.auth_header x-api-key
225
+ ocr config set providers.anthropic.extra_headers "X-Org-ID=org-123"
189
226
  ```
190
227
 
191
- 지원되는 값: `x-api-key`, `authorization` (별칭: `bearer`). 그 외 값은 오류로 처리됩니다.
228
+ **환경 변수 (가장 높은 우선순위)**
192
229
 
193
- **Option C: 환경 변수(가장 높은 우선순위)**
230
+ 환경 변수는 설정 파일의 값을 덮어씁니다. 설정 파일 작성이 불편한 CI/CD 시나리오에 적합합니다:
194
231
 
195
232
  ```bash
196
233
  export OCR_LLM_URL=https://api.anthropic.com/v1/messages
@@ -201,12 +238,10 @@ export OCR_USE_ANTHROPIC=true
201
238
 
202
239
  Claude Code 환경 변수(`ANTHROPIC_BASE_URL`, `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_MODEL`)와도 호환되며, `~/.zshrc` / `~/.bashrc`의 export도 파싱합니다.
203
240
 
204
- > **CC-Switch 사용자 참고**: [CC-Switch](https://github.com/farion1231/cc-switch)를 [routing service](https://www.ccswitch.io/en/docs?section=proxy&item=service)와 함께 사용한다면, 추가 설정 없이 `llm.url`을 CC-Switch proxy 주소로 지정할있습니다.
205
- > - **Claude** provider: `llm.url`을 `http://127.0.0.1:15721`로 설정
206
- > - **Codex** provider: `llm.url`을 `http://127.0.0.1:15721/v1`로 설정
207
- > - provider 설정에 맞게 `llm.model` 설정
208
- > - `llm.auth_token`은 아무 값이나 사용할 수 있음
209
- > - `extra_body` 설정은 그대로 적용됨
241
+ > **CC-Switch 사용자 참고**: [CC-Switch](https://github.com/farion1231/cc-switch)를 [routing service](https://www.ccswitch.io/en/docs?section=proxy&item=service)와 함께 사용한다면, provider의 `url`을 CC-Switch proxy 주소로 지정하여 추가 설정 없이 사용할 있습니다:
242
+ > - **Claude** provider: `providers.anthropic.url`을 `http://127.0.0.1:15721`로 설정
243
+ > - **Codex** provider: 해당 provider의 `url`을 `http://127.0.0.1:15721/v1`로 설정
244
+ > - `api_key`는 아무 값이나 사용 가능, `extra_body` 설정은 그대로 적용됨
210
245
 
211
246
  **2. 연결 테스트**
212
247
 
@@ -294,7 +329,39 @@ ocr review --audience agent
294
329
 
295
330
  한국어 가이드: [`plugins/open-code-review/CODEX.ko-KR.md`](plugins/open-code-review/CODEX.ko-KR.md)
296
331
 
297
- #### Option 4: Command 파일 직접 복사
332
+ #### Option 4: Cursor Plugin으로 설치
333
+
334
+ [Cursor](https://www.cursor.com/)에서는 이 repository에서 Open Code Review plugin을 설치합니다:
335
+
336
+ ```
337
+ cursor-plugin marketplace add alibaba/open-code-review
338
+ ```
339
+
340
+ 수동으로 marketplace를 추가할 수도 있습니다. Cursor에서 `/plugins`를 열고 `Open Code Review`를 검색하여 설치합니다.
341
+
342
+ local checkout이나 fork에서는 다음을 사용할 수 있습니다:
343
+
344
+ ```
345
+ cursor-plugin marketplace add .
346
+ ```
347
+
348
+ 설치 후, Cursor에서 다음과 같이 호출합니다:
349
+
350
+ ```text
351
+ @Open Code Review review my current changes
352
+ @Open Code Review review this branch against main
353
+ @Open Code Review review and fix high-confidence issues
354
+ ```
355
+
356
+ 이 plugin은 local OCR CLI를 실행하는 Cursor skill을 등록합니다:
357
+
358
+ ```bash
359
+ ocr review --audience agent
360
+ ```
361
+
362
+ 이 통합은 OCR의 내부 LLM backend를 변경하지 않습니다. OCR 자체는 CLI 설정 섹션에 설명된 대로 `ocr` CLI 설치와 설정이 필요합니다.
363
+
364
+ #### Option 5: Command 파일 직접 복사
298
365
 
299
366
  package manager 없이 빠르게 설정하려면 command 파일을 복사해 Claude Code에서 `/open-code-review` slash command를 사용할 수 있습니다.
300
367
 
@@ -511,10 +578,14 @@ Config file: `~/.opencodereview/config.json`
511
578
  | `providers.<name>.model` | string | Provider의 model 이름 |
512
579
  | `providers.<name>.models` | array | 대화형 선택에 사용할 optional provider model 목록 |
513
580
  | `providers.<name>.auth_header` | string | `x-api-key` \| `authorization` |
581
+ | `providers.<name>.extra_body` | object | 모든 요청 본문에 병합되는 JSON 객체 |
582
+ | `providers.<name>.extra_headers` | string | 쉼표로 구분된 `key=value` HTTP 헤더 |
514
583
  | `custom_providers.<name>.*` | — | optional `models`를 포함한 `providers.<name>.*`과 동일한 필드 |
515
584
  | `llm.url` | string | `https://api.openai.com/v1/chat/completions` |
516
585
  | `llm.auth_token` | string | `sk-xxxxxxx` |
517
586
  | `llm.auth_header` | string | Anthropic only: `x-api-key` \| `authorization` |
587
+ | `llm.extra_body` | object | 모든 요청 본문에 병합되는 JSON 객체 |
588
+ | `llm.extra_headers` | string | 쉼표로 구분된 `key=value` HTTP 헤더 |
518
589
  | `llm.model` | string | `claude-opus-4-6` |
519
590
  | `llm.use_anthropic` | boolean | `true` \| `false` |
520
591
  | `language` | string | 임의의 언어 이름, 예: `English`, `Chinese` (기본값: `English`) |
@@ -532,6 +603,7 @@ Config file: `~/.opencodereview/config.json`
532
603
  | `OCR_LLM_URL` | LLM API endpoint URL |
533
604
  | `OCR_LLM_TOKEN` | API key / auth token |
534
605
  | `OCR_LLM_AUTH_HEADER` | Anthropic auth header (`x-api-key` 또는 `authorization`) |
606
+ | `OCR_LLM_EXTRA_HEADERS` | 쉼표로 구분된 `key=value` HTTP 헤더 |
535
607
  | `OCR_LLM_MODEL` | Model name |
536
608
  | `OCR_USE_ANTHROPIC` | `true` = Anthropic, `false` = OpenAI |
537
609
 
package/README.md CHANGED
@@ -24,6 +24,7 @@
24
24
  <a href="#supported-platforms"><img alt="Linux" src="https://img.shields.io/badge/Linux-supported-blue.svg" /></a>
25
25
  <a href="#supported-agents"><img alt="Claude Code" src="https://img.shields.io/badge/Claude_Code-supported-blueviolet.svg" /></a>
26
26
  <a href="#supported-agents"><img alt="Codex" src="https://img.shields.io/badge/Codex-supported-blueviolet.svg" /></a>
27
+ <a href="#supported-agents"><img alt="Cursor" src="https://img.shields.io/badge/Cursor-supported-blueviolet.svg" /></a>
27
28
  </p>
28
29
  <p align="center">
29
30
  English | <a href="README.zh-CN.md">简体中文</a> | <a href="README.ja-JP.md">日本語</a> | <a href="README.ko-KR.md">한국어</a> | <a href="README.ru-RU.md">Русский</a>
@@ -162,6 +163,8 @@ sudo cp dist/opencodereview /usr/local/bin/ocr
162
163
 
163
164
  **You must configure an LLM before reviewing code.**
164
165
 
166
+ OCR manages LLM configuration through a unified **Provider** system. It ships with many popular built-in providers and also supports adding custom providers to connect to private deployments or other compatible endpoints. Config is stored in `~/.opencodereview/config.json`.
167
+
165
168
  **Option A: Interactive setup (Recommended)**
166
169
 
167
170
  ```bash
@@ -171,26 +174,60 @@ ocr config model # Pick a model for the active provider
171
174
 
172
175
  ![Provider setup](imgs/providers.jpg)
173
176
 
174
- **Option B: Manual config**
177
+ The interactive UI guides you through provider selection, API key entry, and model configuration, then automatically tests connectivity.
178
+
179
+ Run `ocr llm providers` to see all built-in providers. Built-in providers come with preset API URLs and protocols — just supply an API key to get started. If the corresponding environment variable is already set (e.g. `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`), the API key is picked up automatically.
180
+
181
+ **Custom providers** can also be added through the interactive UI — you'll need to provide a name, API URL, protocol type (`anthropic` or `openai`), and API key.
182
+
183
+ **Option B: CLI setup (for CI/CD and non-interactive environments)**
184
+
185
+ Use `ocr config set` to write provider configuration directly, suitable for scripts and automation.
186
+
187
+ Using a built-in provider:
188
+
189
+ ```bash
190
+ ocr config set provider anthropic
191
+ ocr config set providers.anthropic.api_key your-api-key-here
192
+ ocr config set providers.anthropic.model claude-sonnet-4-6
193
+ ```
194
+
195
+ Using a custom provider (private gateway or other compatible endpoint):
175
196
 
176
197
  ```bash
177
- ocr config set llm.url https://api.anthropic.com/v1/messages
178
- ocr config set llm.auth_token your-api-key-here
179
- ocr config set llm.model claude-opus-4-6
180
- ocr config set llm.use_anthropic true
198
+ ocr config set provider my-gateway
199
+ ocr config set custom_providers.my-gateway.url https://my-llm-gateway.internal/v1
200
+ ocr config set custom_providers.my-gateway.protocol openai
201
+ ocr config set custom_providers.my-gateway.api_key your-api-key-here
202
+ ocr config set custom_providers.my-gateway.model gpt-4o
181
203
  ```
182
204
 
183
- Config is stored in `~/.opencodereview/config.json`.
205
+ > `url` and `protocol` are required for custom providers. Supported protocols: `anthropic`, `openai`.
184
206
 
185
- **`auth_header` (optional):** Controls which HTTP header carries the API key when using Anthropic. Defaults to `authorization` (Bearer token) if omitted. If you use a standard `sk-ant-*` API key, you must set it to `x-api-key`:
207
+ Optional settings:
208
+
209
+ | Key | Description |
210
+ |-----|-------------|
211
+ | `providers.<name>.auth_header` | Auth header: `x-api-key` or `authorization` (default: `authorization`) |
212
+ | `providers.<name>.extra_body` | Custom JSON fields merged into the request body |
213
+ | `providers.<name>.extra_headers` | Comma-separated `key=value` pairs of custom HTTP headers added to every request |
214
+ | `providers.<name>.models` | Model list for interactive selection |
215
+
216
+ **`extra_headers` (optional):** Adds custom HTTP headers to every LLM API request. Useful for proxies, gateways, or enterprise endpoints that require additional headers (e.g. organization IDs, tracing IDs). Format is comma-separated `key=value` pairs. Double-quote values that contain commas:
217
+
218
+ ```bash
219
+ ocr config set llm.extra_headers "X-Org-ID=org-123,X-Forwarded-For=\"1.2.3.4,5.6.7.8\""
220
+ ```
221
+
222
+ You can also set extra headers per-provider:
186
223
 
187
224
  ```bash
188
- ocr config set llm.auth_header x-api-key
225
+ ocr config set providers.anthropic.extra_headers "X-Org-ID=org-123"
189
226
  ```
190
227
 
191
- Supported values: `x-api-key`, `authorization` (alias: `bearer`). Other values are rejected with an error.
228
+ **Environment variables (highest priority)**
192
229
 
193
- **Option C: Environment variables (highest priority)**
230
+ Environment variables override config file settings, useful in CI/CD where writing config files is inconvenient:
194
231
 
195
232
  ```bash
196
233
  export OCR_LLM_URL=https://api.anthropic.com/v1/messages
@@ -199,14 +236,12 @@ export OCR_LLM_MODEL=claude-opus-4-6
199
236
  export OCR_USE_ANTHROPIC=true
200
237
  ```
201
238
 
202
- It is also compatible with Claude Code environment variables (`ANTHROPIC_BASE_URL`, `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_MODEL`) and parses `~/.zshrc` / `~/.bashrc` for those exports.
239
+ Also compatible with Claude Code environment variables (`ANTHROPIC_BASE_URL`, `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_MODEL`) and parses `~/.zshrc` / `~/.bashrc` for those exports.
203
240
 
204
- > **Note for CC-Switch Users**: If you are using [CC-Switch](https://github.com/farion1231/cc-switch) with [routing service](https://www.ccswitch.io/en/docs?section=proxy&item=service) enabled, you can point `llm.url` to the CC-Switch proxy address without additional configuration:
205
- > - For **Claude** provider: set `llm.url` to `http://127.0.0.1:15721`
206
- > - For **Codex** provider: set `llm.url` to `http://127.0.0.1:15721/v1`
207
- > - Set `llm.model` according to your provider settings
208
- > - `llm.auth_token` can be any value
209
- > - `extra_body` settings still apply
241
+ > **Note for CC-Switch Users**: If you are using [CC-Switch](https://github.com/farion1231/cc-switch) with [routing service](https://www.ccswitch.io/en/docs?section=proxy&item=service) enabled, you can point the provider's `url` to the CC-Switch proxy address without additional configuration:
242
+ > - For **Claude** provider: set `providers.anthropic.url` to `http://127.0.0.1:15721`
243
+ > - For **Codex** provider: set the corresponding provider's `url` to `http://127.0.0.1:15721/v1`
244
+ > - `api_key` can be any value; `extra_body` settings still apply
210
245
 
211
246
  **2. Test Connectivity**
212
247
 
@@ -294,7 +329,39 @@ This integration does not change OCR's internal LLM backend and does not require
294
329
 
295
330
  Korean guide: [`plugins/open-code-review/CODEX.ko-KR.md`](plugins/open-code-review/CODEX.ko-KR.md)
296
331
 
297
- #### Option 4: Copy the Command File Directly
332
+ #### Option 4: Install as a Cursor Plugin
333
+
334
+ For [Cursor](https://www.cursor.com/), install the Open Code Review plugin from this repository:
335
+
336
+ ```
337
+ cursor-plugin marketplace add alibaba/open-code-review
338
+ ```
339
+
340
+ Or add the marketplace manually. In Cursor, open `/plugins`, search for `Open Code Review`, and install it.
341
+
342
+ For a local checkout or fork:
343
+
344
+ ```
345
+ cursor-plugin marketplace add .
346
+ ```
347
+
348
+ After installation, invoke it in Cursor:
349
+
350
+ ```text
351
+ @Open Code Review review my current changes
352
+ @Open Code Review review this branch against main
353
+ @Open Code Review review and fix high-confidence issues
354
+ ```
355
+
356
+ This registers a Cursor skill that runs the local OCR CLI:
357
+
358
+ ```bash
359
+ ocr review --audience agent
360
+ ```
361
+
362
+ This integration does not change OCR's internal LLM backend. OCR itself still requires the `ocr` CLI to be installed and configured as described in the CLI setup section.
363
+
364
+ #### Option 5: Copy the Command File Directly
298
365
 
299
366
  For a quick setup without any package manager, simply copy the command file to use the `/open-code-review` slash command in Claude Code.
300
367
 
@@ -558,10 +625,14 @@ Config file: `~/.opencodereview/config.json`
558
625
  | `providers.<name>.model` | string | Model name for the provider |
559
626
  | `providers.<name>.models` | array | Optional provider model list for interactive selection |
560
627
  | `providers.<name>.auth_header` | string | `x-api-key` \| `authorization` |
628
+ | `providers.<name>.extra_body` | object | JSON object merged into every request body |
629
+ | `providers.<name>.extra_headers` | string | Comma-separated `key=value` HTTP headers |
561
630
  | `custom_providers.<name>.*` | — | Same fields as `providers.<name>.*`, including optional `models` |
562
631
  | `llm.url` | string | `https://api.openai.com/v1/chat/completions` |
563
632
  | `llm.auth_token` | string | `sk-xxxxxxx` |
564
633
  | `llm.auth_header` | string | Anthropic only: `x-api-key` \| `authorization` |
634
+ | `llm.extra_body` | object | JSON object merged into every request body |
635
+ | `llm.extra_headers` | string | Comma-separated `key=value` HTTP headers |
565
636
  | `llm.model` | string | `claude-opus-4-6` |
566
637
  | `llm.use_anthropic` | boolean | `true` \| `false` |
567
638
  | `language` | string | Any language name, e.g. `English`, `Chinese` (default: `English`) |
@@ -579,6 +650,7 @@ Environment variables take precedence over the config file.
579
650
  | `OCR_LLM_URL` | LLM API endpoint URL |
580
651
  | `OCR_LLM_TOKEN` | API key / auth token |
581
652
  | `OCR_LLM_AUTH_HEADER` | Anthropic auth header (`x-api-key` or `authorization`) |
653
+ | `OCR_LLM_EXTRA_HEADERS` | Comma-separated `key=value` HTTP headers |
582
654
  | `OCR_LLM_MODEL` | Model name |
583
655
  | `OCR_USE_ANTHROPIC` | `true` = Anthropic, `false` = OpenAI |
584
656
 
package/README.ru-RU.md CHANGED
@@ -24,6 +24,7 @@
24
24
  <a href="#supported-platforms"><img alt="Linux" src="https://img.shields.io/badge/Linux-supported-blue.svg" /></a>
25
25
  <a href="#supported-agents"><img alt="Claude Code" src="https://img.shields.io/badge/Claude_Code-supported-blueviolet.svg" /></a>
26
26
  <a href="#supported-agents"><img alt="Codex" src="https://img.shields.io/badge/Codex-supported-blueviolet.svg" /></a>
27
+ <a href="#supported-agents"><img alt="Cursor" src="https://img.shields.io/badge/Cursor-supported-blueviolet.svg" /></a>
27
28
  </p>
28
29
  <p align="center">
29
30
  <a href="README.md">English</a> | <a href="README.zh-CN.md">简体中文</a> | <a href="README.ja-JP.md">日本語</a> | <a href="README.ko-KR.md">한국어</a> | Русский
@@ -162,6 +163,8 @@ sudo cp dist/opencodereview /usr/local/bin/ocr
162
163
 
163
164
  **Перед запуском ревью необходимо настроить LLM.**
164
165
 
166
+ OCR управляет конфигурацией LLM через единую систему **провайдеров (Provider)**. Множество популярных провайдеров встроено, также поддерживается добавление пользовательских провайдеров для подключения к приватным развёртываниям или другим совместимым эндпоинтам. Конфигурация хранится в `~/.opencodereview/config.json`.
167
+
165
168
  **Вариант A: интерактивная настройка (рекомендуется)**
166
169
 
167
170
  ```bash
@@ -171,26 +174,60 @@ ocr config model # Выбрать модель для активно
171
174
 
172
175
  ![Provider setup](imgs/providers.jpg)
173
176
 
174
- **Вариант B: ручная настройка**
177
+ Интерактивный UI проведёт вас через выбор провайдера, ввод API-ключа и настройку модели, после чего автоматически проверит подключение.
178
+
179
+ Выполните `ocr llm providers`, чтобы увидеть все встроенные провайдеры. У встроенных провайдеров предустановлены URL API и протокол — достаточно указать API-ключ. Если соответствующая переменная окружения уже задана (например, `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`), API-ключ будет подхвачен автоматически.
180
+
181
+ **Пользовательские провайдеры** также добавляются через интерактивный UI — потребуется указать имя, URL API, тип протокола (`anthropic` или `openai`) и API-ключ.
182
+
183
+ **Вариант B: настройка через CLI (для CI/CD и неинтерактивных сред)**
184
+
185
+ Используйте `ocr config set` для записи конфигурации провайдера напрямую — подходит для скриптов и автоматизации.
186
+
187
+ Использование встроенного провайдера:
188
+
189
+ ```bash
190
+ ocr config set provider anthropic
191
+ ocr config set providers.anthropic.api_key your-api-key-here
192
+ ocr config set providers.anthropic.model claude-sonnet-4-6
193
+ ```
194
+
195
+ Использование пользовательского провайдера (приватный шлюз или другой совместимый эндпоинт):
175
196
 
176
197
  ```bash
177
- ocr config set llm.url https://api.anthropic.com/v1/messages
178
- ocr config set llm.auth_token your-api-key-here
179
- ocr config set llm.model claude-opus-4-6
180
- ocr config set llm.use_anthropic true
198
+ ocr config set provider my-gateway
199
+ ocr config set custom_providers.my-gateway.url https://my-llm-gateway.internal/v1
200
+ ocr config set custom_providers.my-gateway.protocol openai
201
+ ocr config set custom_providers.my-gateway.api_key your-api-key-here
202
+ ocr config set custom_providers.my-gateway.model gpt-4o
181
203
  ```
182
204
 
183
- Конфигурация хранится в `~/.opencodereview/config.json`.
205
+ > Для пользовательских провайдеров `url` и `protocol` обязательны. Поддерживаемые протоколы: `anthropic`, `openai`.
184
206
 
185
- **`auth_header` (необязательно):** определяет, в каком HTTP-заголовке передаётся API-ключ при работе с Anthropic. Если не задан, по умолчанию используется `authorization` (Bearer-токен). Если у вас стандартный API-ключ вида `sk-ant-*`, необходимо установить значение `x-api-key`:
207
+ Дополнительные настройки:
208
+
209
+ | Ключ | Описание |
210
+ |------|----------|
211
+ | `providers.<name>.auth_header` | Заголовок аутентификации: `x-api-key` или `authorization` (по умолчанию: `authorization`) |
212
+ | `providers.<name>.extra_body` | Пользовательские JSON-поля, добавляемые в тело запроса |
213
+ | `providers.<name>.extra_headers` | Пары `key=value`, разделённые запятыми — пользовательские HTTP-заголовки для каждого запроса |
214
+ | `providers.<name>.models` | Список моделей для интерактивного выбора |
215
+
216
+ **`extra_headers` (необязательно):** добавляет пользовательские HTTP-заголовки к каждому запросу к LLM API. Полезно для прокси, шлюзов или корпоративных эндпоинтов, требующих дополнительных заголовков (например, ID организации, ID трассировки). Формат — пары `key=value`, разделённые запятыми. Значения с запятыми заключается в двойные кавычки:
217
+
218
+ ```bash
219
+ ocr config set llm.extra_headers "X-Org-ID=org-123,X-Forwarded-For=\"1.2.3.4,5.6.7.8\""
220
+ ```
221
+
222
+ Дополнительные заголовки также можно задать для отдельного провайдера:
186
223
 
187
224
  ```bash
188
- ocr config set llm.auth_header x-api-key
225
+ ocr config set providers.anthropic.extra_headers "X-Org-ID=org-123"
189
226
  ```
190
227
 
191
- Поддерживаемые значения: `x-api-key`, `authorization` (алиас: `bearer`). Прочие значения отклоняются с ошибкой.
228
+ **Переменные окружения (наивысший приоритет)**
192
229
 
193
- **Вариант C: переменные окружения (наивысший приоритет)**
230
+ Переменные окружения переопределяют настройки из файла конфигурации — удобно в CI/CD, где запись в конфиг-файл затруднена:
194
231
 
195
232
  ```bash
196
233
  export OCR_LLM_URL=https://api.anthropic.com/v1/messages
@@ -199,14 +236,12 @@ export OCR_LLM_MODEL=claude-opus-4-6
199
236
  export OCR_USE_ANTHROPIC=true
200
237
  ```
201
238
 
202
- Инструмент также совместим с переменными окружения Claude Code (`ANTHROPIC_BASE_URL`, `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_MODEL`) и разбирает `~/.zshrc` / `~/.bashrc` в поисках соответствующих export'ов.
239
+ Также совместим с переменными окружения Claude Code (`ANTHROPIC_BASE_URL`, `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_MODEL`) и разбирает `~/.zshrc` / `~/.bashrc` в поисках соответствующих export'ов.
203
240
 
204
- > **Примечание для пользователей CC-Switch**: если вы используете [CC-Switch](https://github.com/farion1231/cc-switch) с включённым [routing service](https://www.ccswitch.io/en/docs?section=proxy&item=service), можно указать в `llm.url` адрес прокси CC-Switch без дополнительной настройки:
205
- > - для провайдера **Claude**: установите `llm.url` в `http://127.0.0.1:15721`
206
- > - для провайдера **Codex**: установите `llm.url` в `http://127.0.0.1:15721/v1`
207
- > - `llm.model` задайте в соответствии с настройками вашего провайдера
208
- > - `llm.auth_token` может быть любым
209
- > - настройки `extra_body` продолжают действовать
241
+ > **Примечание для пользователей CC-Switch**: если вы используете [CC-Switch](https://github.com/farion1231/cc-switch) с включённым [routing service](https://www.ccswitch.io/en/docs?section=proxy&item=service), можно указать в `url` провайдера адрес прокси CC-Switch без дополнительной настройки:
242
+ > - Для провайдера **Claude**: установите `providers.anthropic.url` в `http://127.0.0.1:15721`
243
+ > - Для провайдера **Codex**: установите `url` соответствующего провайдера в `http://127.0.0.1:15721/v1`
244
+ > - `api_key` может быть любым, настройки `extra_body` продолжают действовать
210
245
 
211
246
  **2. Проверьте подключение**
212
247
 
@@ -294,7 +329,39 @@ ocr review --audience agent
294
329
 
295
330
  Руководство на корейском: [`plugins/open-code-review/CODEX.ko-KR.md`](plugins/open-code-review/CODEX.ko-KR.md)
296
331
 
297
- #### Вариант 4: просто скопировать файл команды
332
+ #### Вариант 4: установка как плагин Cursor
333
+
334
+ Для [Cursor](https://www.cursor.com/) установите плагин Open Code Review из этого репозитория:
335
+
336
+ ```
337
+ cursor-plugin marketplace add alibaba/open-code-review
338
+ ```
339
+
340
+ Или добавьте маркетплейс вручную. В Cursor откройте `/plugins`, найдите `Open Code Review` и установите.
341
+
342
+ Для локального чекаута или форка:
343
+
344
+ ```
345
+ cursor-plugin marketplace add .
346
+ ```
347
+
348
+ После установки вызывайте плагин в Cursor:
349
+
350
+ ```text
351
+ @Open Code Review review my current changes
352
+ @Open Code Review review this branch against main
353
+ @Open Code Review review and fix high-confidence issues
354
+ ```
355
+
356
+ Это зарегистрирует Cursor-скилл, запускающий локальный CLI OCR:
357
+
358
+ ```bash
359
+ ocr review --audience agent
360
+ ```
361
+
362
+ Эта интеграция не меняет внутренний LLM-бэкенд OCR. Самому OCR по-прежнему нужен установленный и настроенный CLI `ocr`, как описано в разделе про настройку CLI.
363
+
364
+ #### Вариант 5: просто скопировать файл команды
298
365
 
299
366
  Для быстрой настройки без пакетных менеджеров достаточно скопировать файл команды, чтобы использовать slash-команду `/open-code-review` в Claude Code.
300
367
 
@@ -555,10 +622,14 @@ OCR разрешает правила ревью по цепочке приор
555
622
  | `providers.<name>.model` | string | Имя модели провайдера |
556
623
  | `providers.<name>.models` | array | Необязательный список моделей для интерактивного выбора |
557
624
  | `providers.<name>.auth_header` | string | `x-api-key` \| `authorization` |
625
+ | `providers.<name>.extra_body` | object | JSON-объект, добавляемый в каждое тело запроса |
626
+ | `providers.<name>.extra_headers` | string | HTTP-заголовки `key=value` через запятую |
558
627
  | `custom_providers.<name>.*` | — | Те же поля, что и `providers.<name>.*`, включая необязательное `models` |
559
628
  | `llm.url` | string | `https://api.openai.com/v1/chat/completions` |
560
629
  | `llm.auth_token` | string | `sk-xxxxxxx` |
561
630
  | `llm.auth_header` | string | Только для Anthropic: `x-api-key` \| `authorization` |
631
+ | `llm.extra_body` | object | JSON-объект, добавляемый в каждое тело запроса |
632
+ | `llm.extra_headers` | string | HTTP-заголовки `key=value` через запятую |
562
633
  | `llm.model` | string | `claude-opus-4-6` |
563
634
  | `llm.use_anthropic` | boolean | `true` \| `false` |
564
635
  | `language` | string | Любое название языка, например `English`, `Chinese` (по умолчанию: `English`) |
@@ -576,6 +647,7 @@ OCR разрешает правила ревью по цепочке приор
576
647
  | `OCR_LLM_URL` | URL эндпоинта LLM API |
577
648
  | `OCR_LLM_TOKEN` | API-ключ / токен авторизации |
578
649
  | `OCR_LLM_AUTH_HEADER` | Заголовок авторизации Anthropic (`x-api-key` или `authorization`) |
650
+ | `OCR_LLM_EXTRA_HEADERS` | HTTP-заголовки `key=value` через запятую |
579
651
  | `OCR_LLM_MODEL` | Имя модели |
580
652
  | `OCR_USE_ANTHROPIC` | `true` = Anthropic, `false` = OpenAI |
581
653
 
package/README.zh-CN.md CHANGED
@@ -24,6 +24,7 @@
24
24
  <a href="#supported-platforms"><img alt="Linux" src="https://img.shields.io/badge/Linux-supported-blue.svg" /></a>
25
25
  <a href="#supported-agents"><img alt="Claude Code" src="https://img.shields.io/badge/Claude_Code-supported-blueviolet.svg" /></a>
26
26
  <a href="#supported-agents"><img alt="Codex" src="https://img.shields.io/badge/Codex-supported-blueviolet.svg" /></a>
27
+ <a href="#supported-agents"><img alt="Cursor" src="https://img.shields.io/badge/Cursor-supported-blueviolet.svg" /></a>
27
28
  </p>
28
29
  <p align="center">
29
30
  <a href="README.md">English</a> | 简体中文 | <a href="README.ja-JP.md">日本語</a> | <a href="README.ko-KR.md">한국어</a> | <a href="README.ru-RU.md">Русский</a>
@@ -162,6 +163,8 @@ sudo cp dist/opencodereview /usr/local/bin/ocr
162
163
 
163
164
  **在审查代码之前,必须先配置 LLM。**
164
165
 
166
+ OCR 通过**供应商(Provider)**模式统一管理 LLM 配置,内置了多种主流供应商,也支持添加自定义供应商以对接私有部署或其他兼容端点。配置存储于 `~/.opencodereview/config.json`。
167
+
165
168
  **方式 A:交互式设置(推荐)**
166
169
 
167
170
  ```bash
@@ -171,26 +174,60 @@ ocr config model # 为当前供应商选择模型
171
174
 
172
175
  ![Provider setup](imgs/providers.jpg)
173
176
 
174
- **方式 B:手动配置**
177
+ 交互式界面会引导你完成供应商选择、API Key 输入和模型配置,完成后自动测试连通性。
178
+
179
+ 运行 `ocr llm providers` 可查看所有内置供应商。内置供应商预设了 API 地址和协议,只需提供 API Key 即可使用。如果对应的环境变量已设置(如 `ANTHROPIC_API_KEY`、`OPENAI_API_KEY`),API Key 会自动读取,无需手动输入。
180
+
181
+ 添加**自定义供应商**同样通过交互式界面完成 —— 需提供供应商名称、API 地址、协议类型(`anthropic` 或 `openai`)和 API Key。
182
+
183
+ **方式 B:命令行设置(适用于 CI/CD 等无交互环境)**
184
+
185
+ 通过 `ocr config set` 命令直接写入供应商配置,适用于脚本和自动化场景。
186
+
187
+ 使用内置供应商:
188
+
189
+ ```bash
190
+ ocr config set provider anthropic
191
+ ocr config set providers.anthropic.api_key your-api-key-here
192
+ ocr config set providers.anthropic.model claude-sonnet-4-6
193
+ ```
194
+
195
+ 使用自定义供应商(对接私有网关或其他兼容端点):
175
196
 
176
197
  ```bash
177
- ocr config set llm.url https://api.anthropic.com/v1/messages
178
- ocr config set llm.auth_token your-api-key-here
179
- ocr config set llm.model claude-opus-4-6
180
- ocr config set llm.use_anthropic true
198
+ ocr config set provider my-gateway
199
+ ocr config set custom_providers.my-gateway.url https://my-llm-gateway.internal/v1
200
+ ocr config set custom_providers.my-gateway.protocol openai
201
+ ocr config set custom_providers.my-gateway.api_key your-api-key-here
202
+ ocr config set custom_providers.my-gateway.model gpt-4o
181
203
  ```
182
204
 
183
- 配置存储于 `~/.opencodereview/config.json`。
205
+ > 自定义供应商的 `url` 和 `protocol` 为必填项。`protocol` 支持 `anthropic` 和 `openai` 两种。
184
206
 
185
- **`auth_header`(可选):** 控制使用 Anthropic 时通过哪个 HTTP header 传递 API key。省略时默认为 `authorization`(Bearer token)。如果你使用标准 `sk-ant-*` API key,需要将其设为 `x-api-key`:
207
+ 可选配置项:
208
+
209
+ | 键 | 描述 |
210
+ |----|------|
211
+ | `providers.<name>.auth_header` | 认证头:`x-api-key` 或 `authorization`(默认 `authorization`) |
212
+ | `providers.<name>.extra_body` | 合并到请求体的自定义 JSON 字段 |
213
+ | `providers.<name>.extra_headers` | 逗号分隔的 `key=value` 键值对,为每个请求添加自定义 HTTP 头 |
214
+ | `providers.<name>.models` | 用于交互式选择的模型列表 |
215
+
216
+ **`extra_headers`(可选):** 为每个 LLM API 请求添加自定义 HTTP 头。适用于代理、网关或需要额外头的企业端点(例如组织 ID、链路追踪 ID)。格式为逗号分隔的 `key=value` 键值对。包含逗号的值请用双引号包裹:
217
+
218
+ ```bash
219
+ ocr config set llm.extra_headers "X-Org-ID=org-123,X-Forwarded-For=\"1.2.3.4,5.6.7.8\""
220
+ ```
221
+
222
+ 也可以按供应商单独设置额外头:
186
223
 
187
224
  ```bash
188
- ocr config set llm.auth_header x-api-key
225
+ ocr config set providers.anthropic.extra_headers "X-Org-ID=org-123"
189
226
  ```
190
227
 
191
- 支持的值:`x-api-key`、`authorization`(别名:`bearer`)。其他值会直接报错。
228
+ **环境变量(优先级最高)**
192
229
 
193
- **方式 C:环境变量(优先级最高)**
230
+ 环境变量会覆盖配置文件中的设置,适用于 CI/CD 场景中不便写入配置文件的情况:
194
231
 
195
232
  ```bash
196
233
  export OCR_LLM_URL=https://api.anthropic.com/v1/messages
@@ -199,14 +236,12 @@ export OCR_LLM_MODEL=claude-opus-4-6
199
236
  export OCR_USE_ANTHROPIC=true
200
237
  ```
201
238
 
202
- 同时兼容了 Claude Code 环境变量(`ANTHROPIC_BASE_URL`、`ANTHROPIC_AUTH_TOKEN`、`ANTHROPIC_MODEL`),并解析 `~/.zshrc` / `~/.bashrc` 中的相关导出。
239
+ 同时兼容 Claude Code 环境变量(`ANTHROPIC_BASE_URL`、`ANTHROPIC_AUTH_TOKEN`、`ANTHROPIC_MODEL`),并解析 `~/.zshrc` / `~/.bashrc` 中的相关导出。
203
240
 
204
- > **CC-Switch 用户特别提醒**:如果你使用 [CC-Switch](https://github.com/farion1231/cc-switch) 并开启了[路由服务](https://www.ccswitch.io/zh/docs?section=proxy&item=service),可以将 `llm.url` 配置成 CC-Switch 启动的代理地址,无需额外配置:
205
- > - 如果路由的是 **Claude** 供应商:设置 `llm.url` `http://127.0.0.1:15721`
206
- > - 如果路由的是 **Codex** 供应商:设置 `llm.url` `http://127.0.0.1:15721/v1`
207
- > - `llm.model` 根据你的供应商设置进行配置
208
- > - `llm.auth_token` 可以设置成任意值
209
- > - `extra_body` 设置依然生效
241
+ > **CC-Switch 用户特别提醒**:如果你使用 [CC-Switch](https://github.com/farion1231/cc-switch) 并开启了[路由服务](https://www.ccswitch.io/zh/docs?section=proxy&item=service),可以将供应商的 `url` 配置成 CC-Switch 启动的代理地址,无需额外配置:
242
+ > - 路由 **Claude** 供应商:`providers.anthropic.url` 设为 `http://127.0.0.1:15721`
243
+ > - 路由 **Codex** 供应商:对应供应商的 `url` 设为 `http://127.0.0.1:15721/v1`
244
+ > - `api_key` 可设置为任意值,`extra_body` 设置依然生效
210
245
 
211
246
  **2. 测试连通性**
212
247
 
@@ -294,7 +329,39 @@ ocr review --audience agent
294
329
 
295
330
  韩文指南:[`plugins/open-code-review/CODEX.ko-KR.md`](plugins/open-code-review/CODEX.ko-KR.md)
296
331
 
297
- #### 方式四:直接复制命令文件
332
+ #### 方式四:作为 Cursor Plugin 安装
333
+
334
+ 对于 [Cursor](https://www.cursor.com/),可以从此仓库安装 Open Code Review plugin:
335
+
336
+ ```
337
+ cursor-plugin marketplace add alibaba/open-code-review
338
+ ```
339
+
340
+ 也可以手动添加 marketplace。在 Cursor 中打开 `/plugins`,搜索 `Open Code Review` 并安装。
341
+
342
+ 对于本地 checkout 或 fork:
343
+
344
+ ```
345
+ cursor-plugin marketplace add .
346
+ ```
347
+
348
+ 安装后,在 Cursor 中调用:
349
+
350
+ ```text
351
+ @Open Code Review review my current changes
352
+ @Open Code Review review this branch against main
353
+ @Open Code Review review and fix high-confidence issues
354
+ ```
355
+
356
+ 这会注册一个 Cursor skill,用于运行本地 OCR CLI:
357
+
358
+ ```bash
359
+ ocr review --audience agent
360
+ ```
361
+
362
+ 此集成不会改变 OCR 的内部 LLM backend。OCR 本身仍需要按照 CLI setup 部分安装并配置 `ocr` CLI。
363
+
364
+ #### 方式五:直接复制命令文件
298
365
 
299
366
  如果不想使用任何包管理器,可以直接复制命令文件,在 Claude Code 中使用 `/open-code-review` 斜杠命令。
300
367
 
@@ -543,10 +610,14 @@ OCR 通过四层优先级链解析评审规则。每层采用首次匹配原则
543
610
  | `providers.<name>.model` | string | 供应商模型名称 |
544
611
  | `providers.<name>.models` | array | 用于交互式选择的可选供应商模型列表 |
545
612
  | `providers.<name>.auth_header` | string | `x-api-key` \| `authorization` |
613
+ | `providers.<name>.extra_body` | object | 合并到每个请求体的 JSON 对象 |
614
+ | `providers.<name>.extra_headers` | string | 逗号分隔的 `key=value` HTTP 头 |
546
615
  | `custom_providers.<name>.*` | — | 与 `providers.<name>.*` 相同的字段,包括可选的 `models` |
547
616
  | `llm.url` | string | `https://api.openai.com/v1/chat/completions` |
548
617
  | `llm.auth_token` | string | `sk-xxxxxxx` |
549
618
  | `llm.auth_header` | string | 仅 Anthropic:`x-api-key` \| `authorization` |
619
+ | `llm.extra_body` | object | 合并到每个请求体的 JSON 对象 |
620
+ | `llm.extra_headers` | string | 逗号分隔的 `key=value` HTTP 头 |
550
621
  | `llm.model` | string | `claude-opus-4-6` |
551
622
  | `llm.use_anthropic` | boolean | `true` \| `false` |
552
623
  | `language` | string | 任意语言名称,例如 `English`、`Chinese`(默认:`English`) |
@@ -564,6 +635,7 @@ OCR 通过四层优先级链解析评审规则。每层采用首次匹配原则
564
635
  | `OCR_LLM_URL` | LLM API 端点 URL |
565
636
  | `OCR_LLM_TOKEN` | API 密钥 / 认证令牌 |
566
637
  | `OCR_LLM_AUTH_HEADER` | Anthropic 认证头(`x-api-key` 或 `authorization`) |
638
+ | `OCR_LLM_EXTRA_HEADERS` | 逗号分隔的 `key=value` HTTP 头 |
567
639
  | `OCR_LLM_MODEL` | 模型名称 |
568
640
  | `OCR_USE_ANTHROPIC` | `true` = Anthropic,`false` = OpenAI |
569
641
 
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alibaba-group/open-code-review",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "description": "OpenCodeReview CLI — AI-powered code review tool",
5
5
  "bin": {
6
6
  "ocr": "bin/ocr.js"
@@ -28,12 +28,12 @@
28
28
  "checksumPattern": "https://github.com/alibaba/open-code-review/releases/download/v{version}/sha256sum.txt"
29
29
  },
30
30
  "optionalDependencies": {
31
- "@alibaba-group/ocr-darwin-arm64": "1.6.1",
32
- "@alibaba-group/ocr-darwin-x64": "1.6.1",
33
- "@alibaba-group/ocr-linux-arm64": "1.6.1",
34
- "@alibaba-group/ocr-linux-x64": "1.6.1",
35
- "@alibaba-group/ocr-win32-arm64": "1.6.1",
36
- "@alibaba-group/ocr-win32-x64": "1.6.1"
31
+ "@alibaba-group/ocr-darwin-arm64": "1.6.3",
32
+ "@alibaba-group/ocr-darwin-x64": "1.6.3",
33
+ "@alibaba-group/ocr-linux-arm64": "1.6.3",
34
+ "@alibaba-group/ocr-linux-x64": "1.6.3",
35
+ "@alibaba-group/ocr-win32-arm64": "1.6.3",
36
+ "@alibaba-group/ocr-win32-x64": "1.6.3"
37
37
  },
38
38
  "engines": {
39
39
  "node": ">=14"