@alibaba-group/open-code-review 1.7.5 → 1.7.7

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
@@ -13,7 +13,6 @@
13
13
  <p align="center">
14
14
  <a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
15
15
  <a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
16
- <a href="https://goreportcard.com/report/github.com/alibaba/open-code-review"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/alibaba/open-code-review?style=flat-square" /></a>
17
16
  <a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
18
17
  <a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
19
18
  <a href="https://www.bestpractices.dev/projects/13328"><img alt="OpenSSF Best Practices" src="https://img.shields.io/badge/OpenSSF-Silver-4C566A?style=flat-square" /></a>
@@ -108,6 +107,18 @@ npm install -g @alibaba-group/open-code-review
108
107
 
109
108
  インストール後、`ocr`コマンドがグローバルに利用可能になります。
110
109
 
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
+ インストールスクリプトまたは手動ダウンロードしたバイナリでインストールした場合は、同じインストール/ダウンロードコマンドを再実行すると、ローカルのバイナリを最新リリースに置き換えられます。特定のリリースタグに固定する必要がある場合は `OCR_VERSION` を使います。
121
+
111
122
  **GitHub Releaseから**
112
123
 
113
124
  1 つのコマンドで、お使いの OS / アーキテクチャ向けの最新バイナリをインストールできます(macOS / Linux):
@@ -269,6 +280,10 @@ ocr review --from main --to feature-branch
269
280
  # 単一コミット
270
281
  ocr review --commit abc123
271
282
 
283
+ # 中断した範囲または単一 commit レビューを再開
284
+ ocr session list
285
+ ocr review --from main --to feature-branch --resume <session-id>
286
+
272
287
  # フルファイルスキャン — diffではなくファイル全体をレビュー(git履歴不要)
273
288
  ocr scan # リポジトリ全体をスキャン
274
289
  ocr scan --path internal/agent # ディレクトリまたは特定のファイルをスキャン
@@ -419,6 +434,21 @@ JSON出力ではこの2つのフィールドは`content`や`start_line`などと
419
434
  - [`gitlab_ci/`](./examples/gitlab_ci/) — GitLab CI統合の例
420
435
  - [`gitflic_ci/`](./examples/gitflic_ci/) — GitFlic CI統合の例
421
436
 
437
+ #### GitHub Action
438
+
439
+ GitHub 向けに、本リポジトリはリポジトリルートにすぐ使える composite Action([`action.yml`](./action.yml))を同梱しています。自分で `ocr review` をスクリプト化する代わりに、これを直接参照するだけで、checkout、OCR のインストール、レビューの実行、インラインコメントとサマリーコメントの投稿、アーティファクトのアップロード、再試行・冪等性までの全パイプラインを処理できます:
440
+
441
+ ```yaml
442
+ - uses: alibaba/open-code-review@main
443
+ with:
444
+ llm_url: ${{ secrets.OCR_LLM_URL }}
445
+ llm_auth_token: ${{ secrets.OCR_LLM_AUTH_TOKEN }}
446
+ llm_model: ${{ vars.OCR_LLM_MODEL }}
447
+ llm_use_anthropic: ${{ vars.OCR_LLM_USE_ANTHROPIC }}
448
+ ```
449
+
450
+ 再現性を高めるため、バージョンタグまたはコミット SHA に固定してください。完全なワークフローデモ、inputs/outputs の全一覧、コメント投稿モード(スティッキーサマリー、非破壊的なインクリメンタル投稿)については [`examples/github_actions/`](./examples/github_actions/) ディレクトリを参照してください。
451
+
422
452
  ## コマンド
423
453
 
424
454
  | コマンド | エイリアス | 説明 |
@@ -432,6 +462,8 @@ JSON出力ではこの2つのフィールドは`content`や`start_line`などと
432
462
  | `ocr config unset custom_providers.<name>` | — | カスタムプロバイダーを削除 |
433
463
  | `ocr llm test` | — | LLMの疎通テスト |
434
464
  | `ocr llm providers` | — | ビルトインLLMプロバイダーを一覧表示 |
465
+ | `ocr session list` | `ocr sessions list`, `ocr session ls` | 保存済みレビューセッションを一覧表示 |
466
+ | `ocr session show <id>` | `ocr sessions show <id>` | 1つのセッションとファイル単位のチェックポイントを表示 |
435
467
  | `ocr viewer` | `ocr v` | `localhost:5483`でWebUIセッションビューアーを起動 |
436
468
  | `ocr version` | — | バージョン情報を表示 |
437
469
 
@@ -445,17 +477,54 @@ JSON出力ではこの2つのフィールドは`content`や`start_line`などと
445
477
  | `--commit` | `-c` | — | レビュー対象の単一コミット |
446
478
  | `--exclude` | — | — | カンマ区切りのgitignoreスタイルパターンでスキップ対象を指定;rule.jsonのexcludesとマージ |
447
479
  | `--preview` | `-p` | `false` | LLMを実行せずにレビュー対象ファイルをプレビュー |
480
+ | `--resume` | — | — | 以前の互換性のある範囲または単一 commit レビューセッションから再開 |
448
481
  | `--format` | `-f` | `text` | 出力形式:`text`または`json` |
449
482
  | `--concurrency` | — | `8` | ファイルレビューの最大同時実行数 |
450
483
  | `--timeout` | — | `10` | 同時実行タスクのタイムアウト(分) |
451
484
  | `--audience` | — | `human` | `human`(進捗を表示)または`agent`(サマリーのみ) |
452
485
  | `--background` | `-b` | — | レビューのための任意の要件/ビジネスコンテキスト。`--commit`使用時に未指定の場合、コミットメッセージから自動取得 |
486
+ | `--background-file` | `-B` | — | Markdownファイルから読み込む任意の要件/ビジネスコンテキスト。`--background`と併用した場合はインラインの値が先に配置されます |
453
487
  | `--model` | — | — | このレビューでLLMモデルを選択または上書き |
454
488
  | `--rule` | — | — | カスタムJSONレビュールールへのパス |
455
489
  | `--max-tools` | — | 組み込み値 | ファイルごとのツール呼び出しラウンドの上限。テンプレートのデフォルトより大きい場合のみ有効 |
456
490
  | `--max-git-procs` | — | 組み込み値 | gitサブプロセスの最大同時実行数 |
457
491
  | `--tools` | — | — | カスタムJSONツール設定へのパス |
458
492
 
493
+ #### 再開可能なレビューとセッション
494
+
495
+ すべての `ocr review` 実行は、`~/.opencodereview/sessions/` 配下にローカル
496
+ セッションログを保存します。正常終了したテキスト出力はレビュー結果に集中し、session ID
497
+ は表示しません。保存済みセッションは `ocr session list/show` で確認でき、
498
+ `--format json` では機械可読出力に `session_id` が含まれます。範囲または単一 commit
499
+ レビューが中断された場合は、保存済みセッションを一覧表示し、同じレビュー対象に一致するセッションから再開します:
500
+
501
+ ```bash
502
+ ocr session list
503
+ ocr session show <session-id>
504
+ ocr review --from main --to feature-branch --resume <session-id>
505
+ ocr review --commit abc123 --resume <session-id>
506
+ ```
507
+
508
+ 再開は意図的に厳密です。範囲レビューと単一 commit レビューのみ対応し、ワークスペースレビューは再開できません。
509
+ 現在の `--from/--to` または `--commit` は保存済みセッションと一致する必要があります。`--preview` と `--resume` は併用できません。
510
+
511
+ `--format json` を使用すると、再開した実行には次が含まれます:
512
+
513
+ - `session_id` — 現在の実行の session ID
514
+ - `resume.resumed_from` — 再開元の session ID
515
+ - `resume.reused_files` — 保存済みチェックポイントから再利用したファイル数
516
+ - `resume.rerun_files` — 現在の実行で再レビューしたファイル数
517
+
518
+ ### `ocr session`のフラグ
519
+
520
+ | コマンド | フラグ | デフォルト | 説明 |
521
+ |---------|------|---------|------|
522
+ | `ocr session list` | `--repo` | カレントディレクトリ | 一覧表示するセッションのリポジトリ |
523
+ | `ocr session list` | `--json` | `false` | セッション概要をJSONで出力 |
524
+ | `ocr session list` | `--limit` | `20` | 一覧表示するセッション数の上限。`0` は無制限 |
525
+ | `ocr session show <id>` | `--repo` | カレントディレクトリ | 確認するセッションのリポジトリ |
526
+ | `ocr session show <id>` | `--json` | `false` | セッションメタデータとファイル単位の項目をJSONで出力 |
527
+
459
528
  ### `ocr scan`のフラグ
460
529
 
461
530
  `ocr scan` はdiffではなくファイル全体をレビューします — 不慣れなコードベースの監査、マイグレーション前のスキャン、意味のあるdiffがないディレクトリなどに有用です。非gitディレクトリでも動作します(`.gitignore` を尊重するファイルシステムウォークにフォールバック)。
@@ -501,6 +570,12 @@ ocr review --from main --to my-feature --concurrency 4
501
570
  # 特定のコミットを詳細なJSON出力でレビュー
502
571
  ocr review --commit abc123 --format json --audience agent
503
572
 
573
+ # 中断した範囲または単一 commit レビューを再開
574
+ ocr session list
575
+ ocr session show <session-id>
576
+ ocr review --from main --to my-feature --resume <session-id>
577
+ ocr review --commit abc123 --resume <session-id>
578
+
504
579
  # このレビューでモデルを選択またはオーバーライド
505
580
  ocr review --model claude-opus-4-6
506
581
  ocr review --commit abc123 --model claude-sonnet-4-6
@@ -508,6 +583,12 @@ ocr review --commit abc123 --model claude-sonnet-4-6
508
583
  # 要件コンテキストを提供してより的確なレビューを実施
509
584
  ocr review --background "ログインAPIにレート制限を追加"
510
585
 
586
+ # Markdownファイルから要件コンテキストを提供
587
+ ocr review --background-file ./docs/my_business_context.md
588
+
589
+ # インラインのコンテキストとローカルのコンテキストファイルを組み合わせる(両方が使用されます)
590
+ ocr review --background "認証に注目" --background-file ./docs/my_business_context.md
591
+
511
592
  # カスタムレビュールールを使用
512
593
  ocr review --rule /path/to/my-rules.json
513
594
 
@@ -773,11 +854,11 @@ ocr config set telemetry.otlp_endpoint localhost:4317
773
854
 
774
855
  ## コントリビューション
775
856
 
776
- 開発環境のセットアップ、コーディングガイドライン、プルリクエストの提出方法については[CONTRIBUTING.md](CONTRIBUTING.md)を参照してください。
777
-
778
- ## Star History
857
+ このプロジェクトは、貢献してくださるすべての方々のおかげで成り立っています。開発環境のセットアップ、コーディングガイドライン、プルリクエストの提出方法については[CONTRIBUTING.md](CONTRIBUTING.md)を参照してください。
779
858
 
780
- [![Star History Chart](https://api.star-history.com/svg?repos=alibaba/open-code-review&type=Date)](https://star-history.com/#alibaba/open-code-review&Date)
859
+ <a href="https://github.com/alibaba/open-code-review/graphs/contributors">
860
+ <img src="https://contrib.rocks/image?repo=alibaba/open-code-review" />
861
+ </a>
781
862
 
782
863
  ## ライセンス
783
864
 
package/README.ko-KR.md CHANGED
@@ -13,7 +13,6 @@
13
13
  <p align="center">
14
14
  <a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
15
15
  <a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
16
- <a href="https://goreportcard.com/report/github.com/alibaba/open-code-review"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/alibaba/open-code-review?style=flat-square" /></a>
17
16
  <a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
18
17
  <a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
19
18
  <a href="https://www.bestpractices.dev/projects/13328"><img alt="OpenSSF Best Practices" src="https://img.shields.io/badge/OpenSSF-Silver-4C566A?style=flat-square" /></a>
@@ -108,6 +107,18 @@ npm install -g @alibaba-group/open-code-review
108
107
 
109
108
  설치 후 `ocr` 명령을 전역에서 사용할 수 있습니다.
110
109
 
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
+ 설치 스크립트나 수동 다운로드한 binary로 설치했다면 같은 설치/다운로드 명령을 다시 실행해 로컬 binary를 최신 release로 교체할 수 있습니다. 특정 release tag로 고정해야 한다면 `OCR_VERSION`을 사용하세요.
121
+
111
122
  **GitHub Release 사용**
112
123
 
113
124
  명령 한 번으로 사용 중인 OS/아키텍처에 맞는 최신 binary를 설치합니다 (macOS / Linux):
@@ -269,6 +280,10 @@ ocr review --from main --to feature-branch
269
280
  # 단일 commit
270
281
  ocr review --commit abc123
271
282
 
283
+ # 중단된 range 또는 단일 commit review 재개
284
+ ocr session list
285
+ ocr review --from main --to feature-branch --resume <session-id>
286
+
272
287
  # 전체 파일 스캔 — diff 대신 파일 전체를 리뷰 (git 이력 불필요)
273
288
  ocr scan # 전체 repository 스캔
274
289
  ocr scan --path internal/agent # 디렉터리 또는 특정 파일 스캔
@@ -419,6 +434,21 @@ JSON 출력에서 두 field는 `content`, `start_line` 등과 같은 수준의 s
419
434
  - [`gitlab_ci/`](./examples/gitlab_ci/): GitLab CI 통합 예시
420
435
  - [`gitflic_ci/`](./examples/gitflic_ci/): GitFlic CI 통합 예시
421
436
 
437
+ #### GitHub Action
438
+
439
+ GitHub의 경우, 이 리포지터리는 루트에 바로 사용할 수 있는 composite Action([`action.yml`](./action.yml))을 제공합니다. 직접 `ocr review` 스크립트를 작성하는 대신 이를 참조하기만 하면 전체 파이프라인 — checkout, OCR 설치, review 실행, inline/summary comment 게시, artifact 업로드, 재시도 및 멱등성 — 을 모두 처리합니다:
440
+
441
+ ```yaml
442
+ - uses: alibaba/open-code-review@main
443
+ with:
444
+ llm_url: ${{ secrets.OCR_LLM_URL }}
445
+ llm_auth_token: ${{ secrets.OCR_LLM_AUTH_TOKEN }}
446
+ llm_model: ${{ vars.OCR_LLM_MODEL }}
447
+ llm_use_anthropic: ${{ vars.OCR_LLM_USE_ANTHROPIC }}
448
+ ```
449
+
450
+ 재현성을 위해 version tag나 commit SHA에 고정하세요. 전체 workflow 데모와 inputs/outputs, comment 게시 모드(sticky summary, incremental non-destructive posting)의 전체 목록은 [`examples/github_actions/`](./examples/github_actions/) 디렉터리를 참고하세요.
451
+
422
452
  ## Commands
423
453
 
424
454
  | Command | Alias | Description |
@@ -432,6 +462,8 @@ JSON 출력에서 두 field는 `content`, `start_line` 등과 같은 수준의 s
432
462
  | `ocr config unset custom_providers.<name>` | - | custom provider 삭제 |
433
463
  | `ocr llm test` | - | LLM 연결 테스트 |
434
464
  | `ocr llm providers` | - | built-in LLM provider 목록 표시 |
465
+ | `ocr session list` | `ocr sessions list`, `ocr session ls` | 저장된 review session 목록 표시 |
466
+ | `ocr session show <id>` | `ocr sessions show <id>` | 단일 session과 파일별 checkpoint 확인 |
435
467
  | `ocr viewer` | `ocr v` | `localhost:5483`에서 WebUI session viewer 실행 |
436
468
  | `ocr version` | - | version 정보 표시 |
437
469
 
@@ -445,17 +477,54 @@ JSON 출력에서 두 field는 `content`, `start_line` 등과 같은 수준의 s
445
477
  | `--commit` | `-c` | - | 리뷰할 단일 commit |
446
478
  | `--exclude` | - | - | 건너뛸 파일의 쉼표 구분 gitignore 스타일 패턴; rule.json의 excludes와 병합 |
447
479
  | `--preview` | `-p` | `false` | LLM 실행 없이 리뷰 대상 파일 미리보기 |
480
+ | `--resume` | - | - | 이전의 호환되는 range 또는 단일 commit review session에서 재개 |
448
481
  | `--format` | `-f` | `text` | Output format: `text` 또는 `json` |
449
482
  | `--concurrency` | - | `8` | 최대 동시 파일 리뷰 수 |
450
483
  | `--timeout` | - | `10` | 동시 task timeout(분) |
451
484
  | `--audience` | - | `human` | `human`(progress 표시) 또는 `agent`(summary only) |
452
485
  | `--background` | `-b` | - | 리뷰를 위한 선택적 요구사항/비즈니스 컨텍스트. `--commit` 사용 시 미지정이면 commit message에서 자동 추출 |
486
+ | `--background-file` | `-B` | - | Markdown 파일에서 읽어오는 선택적 요구사항/비즈니스 컨텍스트. `--background`와 함께 사용하면 inline 값이 먼저 배치됩니다 |
453
487
  | `--model` | - | - | 이번 리뷰에서 LLM model 선택 또는 override |
454
488
  | `--rule` | - | - | custom JSON review rules 경로 |
455
489
  | `--max-tools` | - | built-in | 파일별 최대 tool call round. template default보다 클 때만 적용 |
456
490
  | `--max-git-procs` | - | built-in | 최대 동시 git subprocess 수 |
457
491
  | `--tools` | - | - | custom JSON tools config 경로 |
458
492
 
493
+ #### Resumable Reviews and Sessions
494
+
495
+ 모든 `ocr review` 실행은 `~/.opencodereview/sessions/` 아래에 local session log를 저장합니다.
496
+ 정상 완료된 text output은 review 결과에 집중하며 session ID를 출력하지 않습니다.
497
+ 저장된 session은 `ocr session list/show`로 찾을 수 있고, `--format json`을 사용하면
498
+ machine-readable output에 `session_id`가 포함됩니다. range 또는 단일 commit review가 중단된 경우,
499
+ 저장된 session을 나열한 뒤 동일한 review target과 일치하는 session에서 재개합니다.
500
+
501
+ ```bash
502
+ ocr session list
503
+ ocr session show <session-id>
504
+ ocr review --from main --to feature-branch --resume <session-id>
505
+ ocr review --commit abc123 --resume <session-id>
506
+ ```
507
+
508
+ Resume은 의도적으로 엄격합니다. branch range와 단일 commit review만 지원하고 workspace review는 지원하지 않습니다.
509
+ 현재 `--from/--to` 또는 `--commit`은 저장된 session과 일치해야 합니다. `--preview`와 `--resume`은 함께 사용할 수 없습니다.
510
+
511
+ `--format json`을 사용하면 재개된 run에는 다음 field가 포함됩니다.
512
+
513
+ - `session_id`: 현재 run의 session ID
514
+ - `resume.resumed_from`: source session ID
515
+ - `resume.reused_files`: 저장된 checkpoint에서 재사용한 파일 수
516
+ - `resume.rerun_files`: 현재 run에서 다시 review한 파일 수
517
+
518
+ ### `ocr session` Flags
519
+
520
+ | Command | Flag | Default | Description |
521
+ |---------|------|---------|-------------|
522
+ | `ocr session list` | `--repo` | current dir | session을 나열할 repository |
523
+ | `ocr session list` | `--json` | `false` | session summary를 JSON으로 출력 |
524
+ | `ocr session list` | `--limit` | `20` | 나열할 session 수 제한. `0`은 unlimited |
525
+ | `ocr session show <id>` | `--repo` | current dir | 확인할 session의 repository |
526
+ | `ocr session show <id>` | `--json` | `false` | session metadata와 파일별 item을 JSON으로 출력 |
527
+
459
528
  ### `ocr scan` Flags
460
529
 
461
530
  `ocr scan`은 diff가 아닌 전체 파일을 리뷰합니다 — 익숙하지 않은 코드베이스 감사, 마이그레이션 전 스캔, 의미 있는 diff가 없는 디렉터리 등에 유용합니다. 비-git 디렉터리에서도 작동합니다 (`.gitignore`를 따르는 파일 시스템 탐색으로 폴백).
@@ -501,6 +570,12 @@ ocr review --from main --to my-feature --concurrency 4
501
570
  # 특정 commit을 verbose JSON output으로 리뷰
502
571
  ocr review --commit abc123 --format json --audience agent
503
572
 
573
+ # 중단된 range 또는 단일 commit review 재개
574
+ ocr session list
575
+ ocr session show <session-id>
576
+ ocr review --from main --to my-feature --resume <session-id>
577
+ ocr review --commit abc123 --resume <session-id>
578
+
504
579
  # 이번 리뷰에서 model 선택 또는 override
505
580
  ocr review --model claude-opus-4-6
506
581
  ocr review --commit abc123 --model claude-sonnet-4-6
@@ -508,6 +583,12 @@ ocr review --commit abc123 --model claude-sonnet-4-6
508
583
  # 요구사항 컨텍스트를 제공하여 더 정확한 리뷰 수행
509
584
  ocr review --background "로그인 API에 rate limiting 추가"
510
585
 
586
+ # Markdown 파일에서 요구사항 컨텍스트 제공
587
+ ocr review --background-file ./docs/my_business_context.md
588
+
589
+ # inline 컨텍스트와 로컬 컨텍스트 파일을 함께 사용(둘 다 적용됨)
590
+ ocr review --background "인증에 집중" --background-file ./docs/my_business_context.md
591
+
511
592
  # custom review rules 사용
512
593
  ocr review --rule /path/to/my-rules.json
513
594
 
@@ -730,11 +811,11 @@ exported data에 LLM prompt와 response를 포함하려면 `telemetry.content_lo
730
811
 
731
812
  ## Contributing
732
813
 
733
- 개발 환경 설정, coding guideline, pull request 제출 방법은 [CONTRIBUTING.ko-KR.md](CONTRIBUTING.ko-KR.md)를 참고하세요.
734
-
735
- ## Star History
814
+ 이 프로젝트는 기여해 주신 모든 분들 덕분에 존재합니다. 개발 환경 설정, coding guideline, pull request 제출 방법은 [CONTRIBUTING.ko-KR.md](CONTRIBUTING.ko-KR.md)를 참고하세요.
736
815
 
737
- [![Star History Chart](https://api.star-history.com/svg?repos=alibaba/open-code-review&type=Date)](https://star-history.com/#alibaba/open-code-review&Date)
816
+ <a href="https://github.com/alibaba/open-code-review/graphs/contributors">
817
+ <img src="https://contrib.rocks/image?repo=alibaba/open-code-review" />
818
+ </a>
738
819
 
739
820
  ## License
740
821
 
package/README.md CHANGED
@@ -13,7 +13,6 @@
13
13
  <p align="center">
14
14
  <a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
15
15
  <a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
16
- <a href="https://goreportcard.com/report/github.com/alibaba/open-code-review"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/alibaba/open-code-review?style=flat-square" /></a>
17
16
  <a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
18
17
  <a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
19
18
  <a href="https://www.bestpractices.dev/projects/13328"><img alt="OpenSSF Best Practices" src="https://img.shields.io/badge/OpenSSF-Silver-4C566A?style=flat-square" /></a>
@@ -108,6 +107,18 @@ npm install -g @alibaba-group/open-code-review
108
107
 
109
108
  After installation, the `ocr` command is available globally.
110
109
 
110
+ **Update**
111
+
112
+ If you installed via NPM, update manually to the latest version:
113
+
114
+ ```bash
115
+ npm install -g @alibaba-group/open-code-review@latest
116
+ ```
117
+
118
+ NPM installations also check for newer versions in the background by default and upgrade automatically. To disable auto-updates, set `OCR_NO_UPDATE=1`.
119
+
120
+ If you installed with the install script or a manually downloaded binary, rerun the same install/download command to replace the local binary with the latest release. Use `OCR_VERSION` when you need to pin a specific release tag.
121
+
111
122
  **From GitHub Release**
112
123
 
113
124
  Install the latest binary for your OS/architecture with one command (macOS / Linux):
@@ -269,6 +280,10 @@ ocr review --from main --to feature-branch
269
280
  # Single commit
270
281
  ocr review --commit abc123
271
282
 
283
+ # Resume an interrupted range or commit review
284
+ ocr session list
285
+ ocr review --from main --to feature-branch --resume <session-id>
286
+
272
287
  # Full-file scan — review whole files instead of a diff (no git history needed)
273
288
  ocr scan # scan the entire repository
274
289
  ocr scan --path internal/agent # scan a directory or specific files
@@ -421,6 +436,21 @@ See the [`examples/`](./examples/) directory for integration examples:
421
436
  - [`gitlab_ci/`](./examples/gitlab_ci/) — GitLab CI integration example
422
437
  - [`gitflic_ci/`](./examples/gitflic_ci/) — GitFlic CI integration example
423
438
 
439
+ #### GitHub Action
440
+
441
+ For GitHub, this repository also ships a ready-to-use composite Action at the repo root ([`action.yml`](./action.yml)). Instead of scripting `ocr review` yourself, reference it directly and it handles the full pipeline — checkout, OCR install, running the review, posting inline and summary comments, uploading artifacts, and retry/idempotency:
442
+
443
+ ```yaml
444
+ - uses: alibaba/open-code-review@main
445
+ with:
446
+ llm_url: ${{ secrets.OCR_LLM_URL }}
447
+ llm_auth_token: ${{ secrets.OCR_LLM_AUTH_TOKEN }}
448
+ llm_model: ${{ vars.OCR_LLM_MODEL }}
449
+ llm_use_anthropic: ${{ vars.OCR_LLM_USE_ANTHROPIC }}
450
+ ```
451
+
452
+ Pin to a version tag or commit SHA for reproducibility. See the [`examples/github_actions/`](./examples/github_actions/) directory for a complete workflow demo and the full list of inputs, outputs, and comment-posting modes (sticky summary, incremental non-destructive posting).
453
+
424
454
  ## Commands
425
455
 
426
456
  | Command | Alias | Description |
@@ -434,6 +464,8 @@ See the [`examples/`](./examples/) directory for integration examples:
434
464
  | `ocr config unset custom_providers.<name>` | — | Delete a custom provider |
435
465
  | `ocr llm test` | — | Test LLM connectivity |
436
466
  | `ocr llm providers` | — | List built-in LLM providers |
467
+ | `ocr session list` | `ocr sessions list`, `ocr session ls` | List saved review sessions |
468
+ | `ocr session show <id>` | `ocr sessions show <id>` | Inspect one session and its per-file checkpoints |
437
469
  | `ocr viewer` | `ocr v` | Launch WebUI session viewer on `localhost:5483` |
438
470
  | `ocr version` | — | Show version info |
439
471
 
@@ -447,16 +479,55 @@ See the [`examples/`](./examples/) directory for integration examples:
447
479
  | `--commit` | `-c` | — | Single commit to review |
448
480
  | `--exclude` | — | — | Comma-separated gitignore-style patterns to skip; merged with rule.json excludes |
449
481
  | `--preview` | `-p` | `false` | Preview which files will be reviewed without running the LLM |
482
+ | `--resume` | — | — | Resume from a previous compatible range or commit review session |
450
483
  | `--format` | `-f` | `text` | Output format: `text` or `json` |
451
484
  | `--concurrency` | — | `8` | Max concurrent file reviews |
452
485
  | `--timeout` | — | `10` | Concurrent task timeout in minutes |
453
486
  | `--audience` | — | `human` | `human` (show progress) or `agent` (summary only) |
454
487
  | `--background` | `-b` | — | Optional requirement/business context for the review; auto-filled from commit message when using `--commit` |
488
+ | `--background-file` | `-B` | — | Optional requirement/business context from a Markdown file; Combined with `--background` the inline value is given first |
455
489
  | `--model` | — | — | Select or override the LLM model for this review |
456
490
  | `--rule` | — | — | Path to custom JSON review rules |
457
491
  | `--max-tools` | — | built-in | Max tool call rounds per file; only takes effect when greater than template default |
458
- | `--max-git-procs` | — | built-in | Max concurrent git subprocesses |
459
- | `--tools` | — | | Path to custom JSON tools config |
492
+ | `--max-git-procs` | — | `16` | Max concurrent git subprocesses |
493
+ | `--tools` | — | built-in | Path to custom JSON tools config |
494
+
495
+ #### Resumable Reviews and Sessions
496
+
497
+ Every `ocr review` run persists a local session log under
498
+ `~/.opencodereview/sessions/`. Successful text output stays focused on review
499
+ results and does not print the session ID; use `ocr session list/show` to find
500
+ saved sessions, or `--format json` to include `session_id` in machine-readable
501
+ output. If a range or commit review is interrupted, list the saved sessions and
502
+ resume from the one that matches the same review target:
503
+
504
+ ```bash
505
+ ocr session list
506
+ ocr session show <session-id>
507
+ ocr review --from main --to feature-branch --resume <session-id>
508
+ ocr review --commit abc123 --resume <session-id>
509
+ ```
510
+
511
+ Resume is intentionally strict: it only supports branch-range and single-commit
512
+ reviews, not workspace reviews, and the current `--from/--to` or `--commit`
513
+ must match the saved session. `--preview` cannot be combined with `--resume`.
514
+
515
+ When `--format json` is used, resumed runs include:
516
+
517
+ - `session_id` — the current run's session ID
518
+ - `resume.resumed_from` — the source session ID
519
+ - `resume.reused_files` — files reused from saved checkpoints
520
+ - `resume.rerun_files` — files reviewed again in the current run
521
+
522
+ ### `ocr session` Flags
523
+
524
+ | Command | Flag | Default | Description |
525
+ |---------|------|---------|-------------|
526
+ | `ocr session list` | `--repo` | current dir | Repository whose sessions should be listed |
527
+ | `ocr session list` | `--json` | `false` | Emit session summaries as JSON |
528
+ | `ocr session list` | `--limit` | `20` | Cap listed sessions; use `0` for unlimited |
529
+ | `ocr session show <id>` | `--repo` | current dir | Repository whose session should be inspected |
530
+ | `ocr session show <id>` | `--json` | `false` | Emit session metadata and per-file items as JSON |
460
531
 
461
532
  ### `ocr scan` Flags
462
533
 
@@ -506,6 +577,12 @@ ocr review --from main --to my-feature --concurrency 4
506
577
  # Review a specific commit with verbose JSON output
507
578
  ocr review --commit abc123 --format json --audience agent
508
579
 
580
+ # Resume an interrupted range or commit review
581
+ ocr session list
582
+ ocr session show <session-id>
583
+ ocr review --from main --to my-feature --resume <session-id>
584
+ ocr review --commit abc123 --resume <session-id>
585
+
509
586
  # Select or override model for this review
510
587
  ocr review --model claude-opus-4-6
511
588
  ocr review --commit abc123 --model claude-sonnet-4-6
@@ -513,6 +590,12 @@ ocr review --commit abc123 --model claude-sonnet-4-6
513
590
  # Provide requirement context for more targeted review
514
591
  ocr review --background "Adding rate limiting to the login API"
515
592
 
593
+ # Provide requirement context from a Markdown file
594
+ ocr review --background-file ./docs/my_business_context.md
595
+
596
+ # Combine inline context with a local context file (both are used)
597
+ ocr review --background "Focus on auth" --background-file ./docs/my_business_context.md
598
+
516
599
  # Use custom review rules
517
600
  ocr review --rule /path/to/my-rules.json
518
601
 
@@ -779,11 +862,11 @@ Set `telemetry.content_logging` to include LLM prompts and responses in exported
779
862
 
780
863
  ## Contributing
781
864
 
782
- See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, coding guidelines, and how to submit pull requests.
783
-
784
- ## Star History
865
+ This project exists thanks to all the people who contribute. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, coding guidelines, and how to submit pull requests.
785
866
 
786
- [![Star History Chart](https://api.star-history.com/svg?repos=alibaba/open-code-review&type=Date)](https://star-history.com/#alibaba/open-code-review&Date)
867
+ <a href="https://github.com/alibaba/open-code-review/graphs/contributors">
868
+ <img src="https://contrib.rocks/image?repo=alibaba/open-code-review" />
869
+ </a>
787
870
 
788
871
  ## License
789
872
 
package/README.ru-RU.md CHANGED
@@ -13,7 +13,6 @@
13
13
  <p align="center">
14
14
  <a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
15
15
  <a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
16
- <a href="https://goreportcard.com/report/github.com/alibaba/open-code-review"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/alibaba/open-code-review?style=flat-square" /></a>
17
16
  <a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
18
17
  <a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
19
18
  <a href="https://www.bestpractices.dev/projects/13328"><img alt="OpenSSF Best Practices" src="https://img.shields.io/badge/OpenSSF-Silver-4C566A?style=flat-square" /></a>
@@ -108,6 +107,18 @@ npm install -g @alibaba-group/open-code-review
108
107
 
109
108
  После установки команда `ocr` доступна глобально.
110
109
 
110
+ **Обновление**
111
+
112
+ Если установка выполнена через NPM, обновите вручную до последней версии:
113
+
114
+ ```bash
115
+ npm install -g @alibaba-group/open-code-review@latest
116
+ ```
117
+
118
+ Установка через NPM также по умолчанию проверяет новые версии в фоне и обновляется автоматически. Чтобы отключить автообновления, задайте `OCR_NO_UPDATE=1`.
119
+
120
+ Если вы устанавливали через install script или вручную скачанный бинарный файл, повторно запустите ту же команду установки/скачивания, чтобы заменить локальный бинарный файл последним релизом. Используйте `OCR_VERSION`, если нужно зафиксировать конкретный тег релиза.
121
+
111
122
  **Из GitHub Release**
112
123
 
113
124
  Установите свежий бинарный файл для вашей ОС/архитектуры одной командой (macOS / Linux):
@@ -269,6 +280,10 @@ ocr review --from main --to feature-branch
269
280
  # Один коммит
270
281
  ocr review --commit abc123
271
282
 
283
+ # Возобновить прерванное ревью диапазона или одного коммита
284
+ ocr session list
285
+ ocr review --from main --to feature-branch --resume <session-id>
286
+
272
287
  # Полнофайловое сканирование — ревью целых файлов вместо диффа (история git не нужна)
273
288
  ocr scan # сканировать весь репозиторий
274
289
  ocr scan --path internal/agent # сканировать каталог или конкретные файлы
@@ -421,6 +436,21 @@ ocr review \
421
436
  - [`gitlab_ci/`](./examples/gitlab_ci/) — пример интеграции с GitLab CI
422
437
  - [`gitflic_ci/`](./examples/gitflic_ci/) — пример интеграции с GitFlic CI
423
438
 
439
+ #### GitHub Action
440
+
441
+ Для GitHub в корне репозитория также поставляется готовая к использованию composite Action ([`action.yml`](./action.yml)). Вместо того чтобы вручную скриптовать `ocr review`, просто подключите её — она берёт на себя весь конвейер: checkout, установку OCR, запуск ревью, публикацию инлайн- и сводных комментариев, загрузку артефактов, а также повтор и идемпотентность:
442
+
443
+ ```yaml
444
+ - uses: alibaba/open-code-review@main
445
+ with:
446
+ llm_url: ${{ secrets.OCR_LLM_URL }}
447
+ llm_auth_token: ${{ secrets.OCR_LLM_AUTH_TOKEN }}
448
+ llm_model: ${{ vars.OCR_LLM_MODEL }}
449
+ llm_use_anthropic: ${{ vars.OCR_LLM_USE_ANTHROPIC }}
450
+ ```
451
+
452
+ Для воспроизводимости зафиксируйте тег версии или SHA коммита. Полный демо-воркфлоу, а также полный список входов, выходов и режимов публикации комментариев (закреплённая сводка, инкрементальная неразрушающая публикация) см. в каталоге [`examples/github_actions/`](./examples/github_actions/).
453
+
424
454
  ## Команды
425
455
 
426
456
  | Команда | Алиас | Описание |
@@ -434,6 +464,8 @@ ocr review \
434
464
  | `ocr config unset custom_providers.<name>` | — | Удалить пользовательского провайдера |
435
465
  | `ocr llm test` | — | Проверить подключение к LLM |
436
466
  | `ocr llm providers` | — | Показать список встроенных LLM-провайдеров |
467
+ | `ocr session list` | `ocr sessions list`, `ocr session ls` | Показать сохранённые сессии ревью |
468
+ | `ocr session show <id>` | `ocr sessions show <id>` | Показать одну сессию и её checkpoint'ы по файлам |
437
469
  | `ocr viewer` | `ocr v` | Запустить WebUI-просмотрщик сессий на `localhost:5483` |
438
470
  | `ocr version` | — | Показать информацию о версии |
439
471
 
@@ -447,17 +479,56 @@ ocr review \
447
479
  | `--commit` | `-c` | — | Один коммит для ревью |
448
480
  | `--exclude` | — | — | Паттерны в стиле gitignore через запятую для пропуска файлов; объединяются с excludes из rule.json |
449
481
  | `--preview` | `-p` | `false` | Показать, какие файлы попадут в ревью, без запуска LLM |
482
+ | `--resume` | — | — | Возобновить предыдущую совместимую сессию ревью диапазона или одного коммита |
450
483
  | `--format` | `-f` | `text` | Формат вывода: `text` или `json` |
451
484
  | `--concurrency` | — | `8` | Максимум одновременных ревью файлов |
452
485
  | `--timeout` | — | `10` | Таймаут конкурентной задачи в минутах |
453
486
  | `--audience` | — | `human` | `human` (показывать прогресс) или `agent` (только сводка) |
454
487
  | `--background` | `-b` | — | Необязательный контекст требований/бизнес-логики для ревью; при `--commit` автоматически заполняется из сообщения коммита |
488
+ | `--background-file` | `-B` | — | Необязательный контекст требований/бизнес-логики из Markdown-файла; при совместном использовании с `--background` встроенное значение идёт первым |
455
489
  | `--model` | — | — | Выбрать или переопределить LLM-модель для этого ревью |
456
490
  | `--rule` | — | — | Путь к пользовательским JSON-правилам ревью |
457
491
  | `--max-tools` | — | встроенное | Максимум раундов вызова инструментов на файл; действует, только если больше значения шаблона по умолчанию |
458
492
  | `--max-git-procs` | — | встроенное | Максимум одновременных git-подпроцессов |
459
493
  | `--tools` | — | — | Путь к пользовательскому JSON-конфигу инструментов |
460
494
 
495
+ #### Возобновляемые ревью и сессии
496
+
497
+ Каждый запуск `ocr review` сохраняет локальный журнал сессии в
498
+ `~/.opencodereview/sessions/`. Успешный текстовый вывод остаётся сфокусированным
499
+ на результате ревью и не печатает session ID. Сохранённые сессии можно найти через
500
+ `ocr session list/show`, а `--format json` добавляет `session_id` в машиночитаемый
501
+ вывод. Если ревью диапазона или одного коммита было прервано, выберите сохранённую
502
+ сессию с тем же целевым ревью и возобновите её:
503
+
504
+ ```bash
505
+ ocr session list
506
+ ocr session show <session-id>
507
+ ocr review --from main --to feature-branch --resume <session-id>
508
+ ocr review --commit abc123 --resume <session-id>
509
+ ```
510
+
511
+ Возобновление намеренно строгое: поддерживаются только ревью диапазона веток и одного
512
+ коммита, но не ревью рабочей копии. Текущие `--from/--to` или `--commit` должны
513
+ совпадать с сохранённой сессией. `--preview` нельзя использовать вместе с `--resume`.
514
+
515
+ При `--format json` возобновлённый запуск включает:
516
+
517
+ - `session_id` — session ID текущего запуска
518
+ - `resume.resumed_from` — исходный session ID
519
+ - `resume.reused_files` — файлы, повторно использованные из сохранённых checkpoint'ов
520
+ - `resume.rerun_files` — файлы, заново проверенные в текущем запуске
521
+
522
+ ### Флаги `ocr session`
523
+
524
+ | Команда | Флаг | По умолчанию | Описание |
525
+ |---------|------|--------------|----------|
526
+ | `ocr session list` | `--repo` | текущий каталог | Репозиторий, для которого нужно показать сессии |
527
+ | `ocr session list` | `--json` | `false` | Вывести сводки сессий в JSON |
528
+ | `ocr session list` | `--limit` | `20` | Ограничить количество сессий; `0` означает без ограничения |
529
+ | `ocr session show <id>` | `--repo` | текущий каталог | Репозиторий, сессию которого нужно посмотреть |
530
+ | `ocr session show <id>` | `--json` | `false` | Вывести метаданные сессии и элементы по файлам в JSON |
531
+
461
532
  ### Флаги `ocr scan`
462
533
 
463
534
  `ocr scan` проверяет целые файлы, а не дифф — удобно для аудита незнакомой кодовой базы, предмиграционного сканирования или любого каталога без значимого диффа. Работает и в каталогах без git (используется обход файловой системы с учётом `.gitignore`).
@@ -503,6 +574,12 @@ ocr review --from main --to my-feature --concurrency 4
503
574
  # Ревью конкретного коммита с подробным JSON-выводом
504
575
  ocr review --commit abc123 --format json --audience agent
505
576
 
577
+ # Возобновить прерванное ревью диапазона или одного коммита
578
+ ocr session list
579
+ ocr session show <session-id>
580
+ ocr review --from main --to my-feature --resume <session-id>
581
+ ocr review --commit abc123 --resume <session-id>
582
+
506
583
  # Выбрать или переопределить модель для этого ревью
507
584
  ocr review --model claude-opus-4-6
508
585
  ocr review --commit abc123 --model claude-sonnet-4-6
@@ -510,6 +587,12 @@ ocr review --commit abc123 --model claude-sonnet-4-6
510
587
  # Передать контекст требований для более прицельного ревью
511
588
  ocr review --background "Добавляем rate limiting в API логина"
512
589
 
590
+ # Передать контекст требований из Markdown-файла
591
+ ocr review --background-file ./docs/my_business_context.md
592
+
593
+ # Совместить встроенный контекст с локальным файлом контекста (используются оба)
594
+ ocr review --background "Фокус на аутентификации" --background-file ./docs/my_business_context.md
595
+
513
596
  # Использовать собственные правила ревью
514
597
  ocr review --rule /path/to/my-rules.json
515
598
 
@@ -775,11 +858,11 @@ ocr config set telemetry.otlp_endpoint localhost:4317
775
858
 
776
859
  ## Участие в разработке
777
860
 
778
- В [CONTRIBUTING.ru-RU.md](CONTRIBUTING.ru-RU.md) описаны настройка окружения разработки, рекомендации по коду и порядок отправки pull request'ов.
779
-
780
- ## История звёзд
861
+ Этот проект существует благодаря всем, кто вносит свой вклад. В [CONTRIBUTING.ru-RU.md](CONTRIBUTING.ru-RU.md) описаны настройка окружения разработки, рекомендации по коду и порядок отправки pull request'ов.
781
862
 
782
- [![Star History Chart](https://api.star-history.com/svg?repos=alibaba/open-code-review&type=Date)](https://star-history.com/#alibaba/open-code-review&Date)
863
+ <a href="https://github.com/alibaba/open-code-review/graphs/contributors">
864
+ <img src="https://contrib.rocks/image?repo=alibaba/open-code-review" />
865
+ </a>
783
866
 
784
867
  ## Лицензия
785
868
 
package/README.zh-CN.md CHANGED
@@ -13,7 +13,6 @@
13
13
  <p align="center">
14
14
  <a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
15
15
  <a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
16
- <a href="https://goreportcard.com/report/github.com/alibaba/open-code-review"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/alibaba/open-code-review?style=flat-square" /></a>
17
16
  <a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
18
17
  <a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
19
18
  <a href="https://www.bestpractices.dev/projects/13328"><img alt="OpenSSF Best Practices" src="https://img.shields.io/badge/OpenSSF-Silver-4C566A?style=flat-square" /></a>
@@ -108,6 +107,18 @@ npm install -g @alibaba-group/open-code-review
108
107
 
109
108
  安装后,`ocr` 命令即可全局使用。
110
109
 
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
+
111
122
  **从 GitHub Release 下载**
112
123
 
113
124
  使用一条命令为你的操作系统/架构安装最新二进制文件(macOS / Linux):
@@ -269,6 +280,10 @@ ocr review --from main --to feature-branch
269
280
  # 单个提交
270
281
  ocr review --commit abc123
271
282
 
283
+ # 恢复中断的区间或单 commit 评审
284
+ ocr session list
285
+ ocr review --from main --to feature-branch --resume <session-id>
286
+
272
287
  # 全量文件扫描 —— 审查整个文件而非 diff(无需 git 历史)
273
288
  ocr scan # 扫描整个仓库
274
289
  ocr scan --path internal/agent # 扫描指定目录或文件
@@ -419,6 +434,21 @@ ocr review \
419
434
  - [`gitlab_ci/`](./examples/gitlab_ci/) — GitLab CI 集成示例
420
435
  - [`gitflic_ci/`](./examples/gitflic_ci/) — GitFlic CI 集成示例
421
436
 
437
+ #### GitHub Action
438
+
439
+ 对于 GitHub,本仓库还在仓库根目录提供了一个开箱即用的 composite Action([`action.yml`](./action.yml))。你无需自己编写 `ocr review` 脚本,直接引用它即可完成完整流程——checkout、安装 OCR、执行审查、发布行内评论与汇总评论、上传 artifacts,以及重试与幂等处理:
440
+
441
+ ```yaml
442
+ - uses: alibaba/open-code-review@main
443
+ with:
444
+ llm_url: ${{ secrets.OCR_LLM_URL }}
445
+ llm_auth_token: ${{ secrets.OCR_LLM_AUTH_TOKEN }}
446
+ llm_model: ${{ vars.OCR_LLM_MODEL }}
447
+ llm_use_anthropic: ${{ vars.OCR_LLM_USE_ANTHROPIC }}
448
+ ```
449
+
450
+ 为保障可复现性,请固定到某个版本标签或 commit SHA。完整的 workflow 示例以及 inputs、outputs 与评论发布模式(置顶汇总、增量非破坏式发布)的完整列表,请参见 [`examples/github_actions/`](./examples/github_actions/) 目录。
451
+
422
452
  ## 命令
423
453
 
424
454
  | 命令 | 别名 | 描述 |
@@ -432,6 +462,8 @@ ocr review \
432
462
  | `ocr config unset custom_providers.<name>` | — | 删除自定义供应商 |
433
463
  | `ocr llm test` | — | 测试 LLM 连通性 |
434
464
  | `ocr llm providers` | — | 列出内置 LLM 供应商 |
465
+ | `ocr session list` | `ocr sessions list`, `ocr session ls` | 列出已保存的评审会话 |
466
+ | `ocr session show <id>` | `ocr sessions show <id>` | 查看单个会话及其逐文件检查点 |
435
467
  | `ocr viewer` | `ocr v` | 启动 WebUI 会话查看器,地址 `localhost:5483` |
436
468
  | `ocr version` | — | 显示版本信息 |
437
469
 
@@ -445,17 +477,53 @@ ocr review \
445
477
  | `--commit` | `-c` | — | 审查单个提交 |
446
478
  | `--exclude` | — | — | 以逗号分隔的 gitignore 风格模式,用于跳过匹配文件;与 rule.json 中的 excludes 合并 |
447
479
  | `--preview` | `-p` | `false` | 预览将被审查的文件列表,不调用 LLM |
480
+ | `--resume` | — | — | 从之前兼容的区间或单 commit 评审会话恢复 |
448
481
  | `--format` | `-f` | `text` | 输出格式:`text` 或 `json` |
449
482
  | `--concurrency` | — | `8` | 最大并发文件审查数 |
450
483
  | `--timeout` | — | `10` | 并发任务超时时间(分钟) |
451
484
  | `--audience` | — | `human` | `human`(显示进度)或 `agent`(仅输出摘要) |
452
485
  | `--background` | `-b` | — | 可选的需求/业务背景信息;使用 `--commit` 时如未指定则自动从 commit message 中提取 |
486
+ | `--background-file` | `-B` | — | 来自 Markdown 文件的可选需求/业务背景信息;与 `--background` 同时使用时,内联内容排在前面 |
453
487
  | `--model` | — | — | 为本次审查选择或覆盖 LLM 模型 |
454
488
  | `--rule` | — | — | 自定义 JSON 审查规则路径 |
455
489
  | `--max-tools` | — | 内置默认 | 每个文件的最大工具调用轮次;仅在大于模板默认值时生效 |
456
490
  | `--max-git-procs` | — | 内置默认 | 最大并发 git 子进程数 |
457
491
  | `--tools` | — | — | 自定义 JSON 工具配置路径 |
458
492
 
493
+ #### 可恢复评审与会话
494
+
495
+ 每次 `ocr review` 都会在 `~/.opencodereview/sessions/` 下保存本地会话日志。
496
+ 正常完成的文本输出只展示评审结果,不打印 session ID;可使用
497
+ `ocr session list/show` 查找已保存会话,或用 `--format json` 在机器可读输出中获取
498
+ `session_id`。如果区间或单 commit 评审被中断,可列出保存的会话,并从匹配相同评审目标的会话恢复:
499
+
500
+ ```bash
501
+ ocr session list
502
+ ocr session show <session-id>
503
+ ocr review --from main --to feature-branch --resume <session-id>
504
+ ocr review --commit abc123 --resume <session-id>
505
+ ```
506
+
507
+ 恢复逻辑是严格的:仅支持分支区间和单 commit 评审,不支持工作区评审;当前
508
+ `--from/--to` 或 `--commit` 必须与保存的会话一致。`--preview` 不能与 `--resume` 同时使用。
509
+
510
+ 使用 `--format json` 时,恢复运行会包含:
511
+
512
+ - `session_id` — 当前运行的 session ID
513
+ - `resume.resumed_from` — 来源 session ID
514
+ - `resume.reused_files` — 从已保存检查点复用的文件数
515
+ - `resume.rerun_files` — 本次重新评审的文件数
516
+
517
+ ### `ocr session` 参数
518
+
519
+ | 命令 | 参数 | 默认值 | 描述 |
520
+ |------|------|--------|------|
521
+ | `ocr session list` | `--repo` | 当前目录 | 要列出会话的仓库 |
522
+ | `ocr session list` | `--json` | `false` | 以 JSON 输出会话摘要 |
523
+ | `ocr session list` | `--limit` | `20` | 限制列出的会话数量;`0` 表示不限 |
524
+ | `ocr session show <id>` | `--repo` | 当前目录 | 要查看会话的仓库 |
525
+ | `ocr session show <id>` | `--json` | `false` | 以 JSON 输出会话元数据和逐文件条目 |
526
+
459
527
  ### `ocr scan` 参数
460
528
 
461
529
  `ocr scan` 审查整个文件而非 diff —— 适用于审计不熟悉的代码库、迁移前扫描,或任何没有有意义 diff 的目录。它也可以在非 git 目录中工作(会回退到遵循 `.gitignore` 的文件系统遍历)。
@@ -501,6 +569,12 @@ ocr review --from main --to my-feature --concurrency 4
501
569
  # 审查特定提交并以 JSON 格式输出详细信息
502
570
  ocr review --commit abc123 --format json --audience agent
503
571
 
572
+ # 恢复中断的区间或单 commit 评审
573
+ ocr session list
574
+ ocr session show <session-id>
575
+ ocr review --from main --to my-feature --resume <session-id>
576
+ ocr review --commit abc123 --resume <session-id>
577
+
504
578
  # 为本次审查选择或覆盖模型
505
579
  ocr review --model claude-opus-4-6
506
580
  ocr review --commit abc123 --model claude-sonnet-4-6
@@ -508,6 +582,12 @@ ocr review --commit abc123 --model claude-sonnet-4-6
508
582
  # 提供需求背景以获得更有针对性的审查
509
583
  ocr review --background "为登录 API 添加限流"
510
584
 
585
+ # 从 Markdown 文件提供需求背景
586
+ ocr review --background-file ./docs/my_business_context.md
587
+
588
+ # 将内联背景与本地背景文件结合使用(两者都会生效)
589
+ ocr review --background "关注鉴权" --background-file ./docs/my_business_context.md
590
+
511
591
  # 使用自定义审查规则
512
592
  ocr review --rule /path/to/my-rules.json
513
593
 
@@ -763,11 +843,11 @@ ocr config set telemetry.otlp_endpoint localhost:4317
763
843
 
764
844
  ## 贡献
765
845
 
766
- 参见 [CONTRIBUTING.zh-CN.md](CONTRIBUTING.zh-CN.md) 了解开发环境搭建、编码规范以及如何提交 Pull Request。
767
-
768
- ## Star History
846
+ 感谢所有为本项目做出贡献的人。参见 [CONTRIBUTING.zh-CN.md](CONTRIBUTING.zh-CN.md) 了解开发环境搭建、编码规范以及如何提交 Pull Request。
769
847
 
770
- [![Star History Chart](https://api.star-history.com/svg?repos=alibaba/open-code-review&type=Date)](https://star-history.com/#alibaba/open-code-review&Date)
848
+ <a href="https://github.com/alibaba/open-code-review/graphs/contributors">
849
+ <img src="https://contrib.rocks/image?repo=alibaba/open-code-review" />
850
+ </a>
771
851
 
772
852
  ## 许可证
773
853
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alibaba-group/open-code-review",
3
- "version": "1.7.5",
3
+ "version": "1.7.7",
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.7.5",
32
- "@alibaba-group/ocr-darwin-x64": "1.7.5",
33
- "@alibaba-group/ocr-linux-arm64": "1.7.5",
34
- "@alibaba-group/ocr-linux-x64": "1.7.5",
35
- "@alibaba-group/ocr-win32-arm64": "1.7.5",
36
- "@alibaba-group/ocr-win32-x64": "1.7.5"
31
+ "@alibaba-group/ocr-darwin-arm64": "1.7.7",
32
+ "@alibaba-group/ocr-darwin-x64": "1.7.7",
33
+ "@alibaba-group/ocr-linux-arm64": "1.7.7",
34
+ "@alibaba-group/ocr-linux-x64": "1.7.7",
35
+ "@alibaba-group/ocr-win32-arm64": "1.7.7",
36
+ "@alibaba-group/ocr-win32-x64": "1.7.7"
37
37
  },
38
38
  "engines": {
39
39
  "node": ">=14"