快速開始

幾分鐘內跑通第一次程式碼評審

前置條件

Step 1 — 安裝 CLI

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

Step 2 — 配置 LLM

ocr config provider

互動式 TUI 引導你:選擇內建或自訂 provider → 填入 API key → 挑選 model → 自動存檔並跑 ocr llm test 驗證端點。之後換模型:

ocr config model

備選:非互動命令

在 CI 或無 TUI 的環境裡,用 ocr config set 直接寫入同一份配置:

ocr config set provider                    anthropic
ocr config set model                       claude-opus-4-6
ocr config set providers.anthropic.api_key sk-ant-xxxxxxxxxx

Step 3 — 測試連通性

ocr llm test

若報 no valid LLM endpoint configured,重查 Step 2 的配置。401/403 表示 token 錯誤或過期。

Step 4 — 第一次評審

cd path/to/your-repo

# 工作區模式 —— 評審 staged + unstaged + untracked 變更(預設)
ocr review

# 分支區間 —— 評審 feature-branch 自與 main 分叉以來的變更
ocr review --from main --to feature-branch

# 單一 commit
ocr review --commit abc123

想先看看會評審什麼?

ocr review --preview              # 工作區
ocr review -c abc123 --preview    # commit

--preview 跑過濾管線但跳過 LLM,印出檔案清單與排除原因——不花 token。

面向系統的 JSON 輸出

ocr review --format json --audience agent > review.json

--audience agent 屏蔽人性化進度 UI,讓 stdout 只剩 JSON / 最終摘要——正是上游 agent 或 CI 腳本所需。

📖 教學解說:快速開始深入

第一次評審的完整流程

從零開始的完整流程:

  1. npm install -g @alibaba-group/open-code-review → 安裝 CLI
  2. ocr config provider → 互動式選 provider + 填 API key
  3. ocr llm test → 確認連通性
  4. ocr review --preview → 先看會審什麼(不花 token)
  5. ocr review → 真正跑評審

第 ④ 步是新手最容易跳過的——--preview 是你的安全網。

--audience agent 在 CI 中的必要性

CI 腳本中必須傳 --audience agent——它屏蔽進度列 UI,讓 stdout 只剩 JSON / 最終摘要。不傳的話 stdout 混雜 ANSI 轉義碼,JSON 解析會失敗。

三種評審模式的選擇

不要糾結——模式由你手上的變更決定:

  • 有 staged/unstaged 變更 → ocr review(工作區模式)
  • 要審某個 commit → ocr review -c <sha>
  • 要比較兩個 ref → ocr review --from main --to feature

練習 / 驗收清單

  • 能完成從安裝到第一次評審的完整流程
  • 能使用 --preview 安全地預覽
  • 能解釋 --audience agent 在 CI 中的必要性
看完這頁你應該能說出:怎麼在一分鐘內把 OCR 跑起來、三種評審模式的差別、--audience agent 與 --format json 各控制什麼(前者控 UI、後者控結構)。

延伸閱讀:CLI 參考 · 設定 · 評審規則 · FAQ

① 進階真實情境 Worked Example:接手陌生 repo 的第一次「安全下車」評審

情境

你剛接手一個別人的 legacy 專案,壓根不懂它的結構,但明天就要上線一個功能。你想在動任何東西之前,先知道「這個 repo 現況的風險水位」。這是「審陌生 codebase」的典型開場——先摸底、再決定動刀。

Step 1 — 先看會審什麼:--preview 是安全網

ocr review --preview

但注意:如果這是「整個 repo 的現況」,ocr review(工作區模式)可能因為「沒有變更」而零檔可審。陌生 repo 正確的摸底工具是 ocr scan:

ocr scan --preview

Step 2 — 分層掃描:先掃核心目錄

ocr scan --path src,internal --exclude '**/generated/**,*.pb.go' \
  --format json --audience agent > audit.json

用 --path 限定到「你打算動的地方」,--exclude 擋掉生成碼——陌生 repo 最容易混入大量生成檔。

Step 3 — 看發現分級,決定動刀順序

jq -r '.comments[] | "\(.severity // "UNK") \(.path)"' audit.json | sort | uniq -c | sort -rn

Step 4 — 對高風險檔做單檔深度 scan

ocr scan --path internal/auth,internal/payment --max-tokens 150000 \
  --format json --audience agent

為什麼選這條審查路徑

陌生 repo 的關鍵是「不要一頭栽進 diff」——你連 baseline 都沒有。先用 ocr scan --preview 確認掃描範圍(避免把生成的、vendor 的、含 secrets 的目錄掃進去),再從核心目錄開始分層審。比起「先看懂全部再動手」,「先用 scan 摸出風險水位、再對熱點加深」是接手 legacy 最低成本且最安全的開場。

預期產出

audit.json: 23 files scanned, 8 comments
  → 5 條落在 internal/payment(熱點)
  → 3 條落在 src/legacy(遷移風險)
深掃 internal/payment → 追加 4 條(含 2 條安全)
→ 動手前你就知道:別碰 payment,先補測試再遷移

② 深入原理擴充:review vs scan 是「時間維度」的差異

review 審「變化」、scan 審「狀態」

ocr review 需要 Git 歷史,對照「改前 vs 改後」——它回答「這個改動對不對」。ocr scan 不需要 Git,直接讀工作樹現況——它回答「這個檔案現在健不健康」。陌生 repo 沒有「改前」可對照,所以 scan 才是正確工具;有 diff 的日常開發才用 review。這不是同一命令的兩種用法,而是兩個不同問題。

「看起來通過 review 但其實有隱患」的案例

# 你接手後跑:
ocr review          # exit 0, 0 comments → 「這個 repo 很乾淨!」
# 但你不知道: 這個 repo 從沒被 scan 過,bugs 是「積累」的,不是「新引入」的
# review 只看變更 → 沒變更 = 沒評論 = 乾淨(錯覺)

零評論的 review 只證明「最近沒人引進新問題」,不證明「repo 沒問題」。legacy 的隱患是累積的——用 review 摸不出來。防禦:接手 repo 的第一次評審永遠用 ocr scan 做「baseline 審計」,之後日常才用 review 做「增量把關」。把 scan 結果存檔(baseline.json),之後每季重掃比對趨勢。

③ 診斷式疑難排解

症狀可能原因解決方案
接手 repo 後 ocr review 零檔可審無變更(工作區乾淨),review 需要 diff改用 ocr scan 摸底(不需 Git 歷史)
scan 掃到一堆生成碼/ vendor沒設 --exclude加 --exclude '**/generated/**,*.pb.go,vendor/**'
scan 的評論數爆量整庫一次審,token 與評論都放大用 --path 分層;先核心目錄再往外
ocr llm test 在陌生環境失敗端點解析鏈沒找到三元組用 ocr config provider TUI 或 set env;確認沒殘留 ANTHROPIC_*
掃到含 secrets 的檔沒先 preview 就掃以後一律先 ocr scan --preview;把 secrets 檔加進 exclude

④ 進階挑戰題

  1. 挑戰一:接手 repo 的「第一次評審」你選 review 還是 scan?用一句話說出判斷準則。
  2. 挑戰二:設計一個「接手 checklist」:從 scan --preview 到存 baseline,列出 5 步與各自的輸出。
  3. 挑戰三:為什麼「scan 發現的問題」要用 JSON 存成 baseline?提出一個用 baseline 做「每季風險趨勢」的流程。

① 專案級端到端 Worked Example:企業 code review 平台導入(端到端)

情境

你是工程主管,要把 OCR 從「個人玩具」升級成全公司共用的 code review 平台。這不是「跑一條命令」——是「設定規則 → AI review → CI 整合 → 指標追蹤」四階段、跨多個 repo 的完整導入專案。下面是一條可複製的路徑。

Phase 1 — 平台設定:規則與配置先於所有人上線

# 1a. 建立團隊規則(版本化、可 review)
mkdir -p .opencodereview
cat > .opencodereview/rule.json << 'EOF'
{
  "include": ["src/**/*.{go,ts,tsx,py}"],
  "exclude": ["**/*.test.*", "**/generated/**", "**/vendor/**"],
  "rules": [
    { "path": "**/*", "rule": "Check for hardcoded secrets, SQL injection, and missing auth checks." },
    { "path": "src/api/**/*.go", "rule": "Go-specific: defer tx.Rollback() after db.Begin(); check error wrapping." }
  ]
}
EOF
# 1b. 確認規則層正確(逐檔驗證)
ocr rules check src/api/handler.go

Phase 2 — AI review:先在一顆試行 repo 跑通工作區模式

cd pilot-service
ocr config provider              # TUI 選 provider + model
ocr llm test                     # 確認連通
ocr review --preview             # 確認過濾範圍(不花 token)
ocr review --format json --audience agent > review.json
jq '.summary' review.json        # files_reviewed / comments / total_tokens

Phase 3 — CI 整合:複製到全部 repo 並加「合併門檻」

# 3a. 下載官方 GitHub Actions workflow
curl -o .github/workflows/ocr-review.yml \
  https://raw.githubusercontent.com/alibaba/open-code-review/main/examples/github_actions/ocr-review.yml
# 3b. 設定 secrets: OCR_LLM_URL / OCR_LLM_AUTH_TOKEN / OCR_LLM_MODEL
# 3c. 加一道「註記檢查」當合併門檻(見 cicd.html 的挑戰三)
#     → 沒有 OCR 註記的 PR 不能 merge

Phase 4 — 指標追蹤:用 telemetry 建立「導入成效」儀表板

# 4a. 在 CI 啟用遙測(OTLP/gRPC → collector:4317)
env:
  OCR_ENABLE_TELEMETRY: "1"
  OTEL_EXPORTER_OTLP_ENDPOINT: collector:4317
# 4b. Grafana 追蹤: 每週評論數、每 PR token 成本、平均時長、工具錯誤率
# 4c. 用 ocr.session 留存「每顆 PR 的審查軌跡」當品質稽核證據

為什麼選這條導入路徑

導入失敗九成不是工具問題,而是「設定、規則、門檻、指標」各自為政。把規則與配置先版本化(Phase 1),是為了讓「改規則」本身走 code review;先試行單 repo(Phase 2),是為了在放大規模前發現「規則太鬆/太嚴」;CI 門檻(Phase 3)確保「AI review 真的被用」;指標(Phase 4)讓你能跟老闆說「省了多少工時、擋了多少缺陷」——這是導入專案能持續的理由。

預期產出

Day 1:  pilot-service 跑通,平均 4 條評論/PR、1.2 萬 token/PR
Week 2: 規則 v2 上線(補 React hooks 規則),偽陽性降 30%
Week 4: 12 個 repo 全接 CI,合併門檻生效
Month 2: 儀表板顯示「擋下 47 條 high-severity 缺陷」→ 導入報告可交差

② 效能 / 品質 / 安全深度:第一次跑通 OCR 的三個面向

效能:第一次評審的成本預算

ocr review 的 token 成本 ≈ 每檔 prompt 上限 × 檔數 × (1 + plan/壓縮係數)。50 行以上的檔會多一次 plan 呼叫,長迴圈會觸發壓縮。第一次跑先用 --preview 數檔案數,再用 --format json 看 summary.total_tokens 建立基準——之後每次改動規則/模型都跟這個基準比,成本漂移立刻可偵測。

品質:先給脈絡,再談品質

第一次評審最容易犯的錯是不傳 --background。Agent 不知道這段變更在解決什麼問題,評論就變成「風格層級」的低價值建議。品質順序:--background(語意)> 規則(聚焦)> 模型(推理力)。先窮盡便宜的旋鈕,再花錢換模型。

安全:你的 diff 會離開機器

OCR 把 diff 送到你配置的 LLM 端點——這是唯一會外送的內容。導入前先檢查:① repo 裡有沒有含 secrets 的目錄(config/、.env)——用 --exclude 擋掉;② CI 的 OCR_LLM_AUTH_TOKEN 是 secret 不是一般變數;③ 對內網模型(如 vLLM)優先——如果公司有自架 LLM,diff 就不出內網。遙測(telemetry)不導出 prompt 內容,可安心開。

③ 文件間比較對照表

面向本文(快速開始)相關文差異說明
目標個人 5 分鐘跑通第一次評審cicd.html本文是「單機可用」,CI/CD 是「自動化到每個 PR」——導入專案從本文出發、以 cicd 收尾
配置深度只教最基本的 provider + modelconfiguration.html本文跳過端點解析鏈優先級、extra_body、retry_codes——那些在設定頁
命令範圍只有 review / config / llm testcli.htmlCLI 頁涵蓋 scan、session、viewer、rules check 等全部命令與參數表
規則不深入,只提「可自訂」rules.html四層優先級鏈、五重門、glob 語法都在規則頁——本文不重複

④ 互動式檢核清單

進階驗收:你能獨立完成企業導入的第一階段嗎?

  • - [ ] 能在 10 分鐘內從零裝好 OCR 並跑出第一次 --format json 評審
  • - [ ] 能說明 diff 會外送到哪、遙測不會外送什麼(隱私邊界)
  • - [ ] 能用 --preview 驗證過濾範圍並估算 token 成本
  • - [ ] 能把「公司規範」寫成一份版本化 rule.json 並用 ocr rules check 驗證
  • - [ ] 能對照 JSON 的 summary 建立每 PR 的 token 基準線
  • - [ ] 能畫出「導入四階段」並說明每階段的驗收標準