ocr scan 直接從工作樹讀取每個檔案的目前內容交給 LLM 評審,不需要 Git diff。適合:
ocr scan # 掃描整個倉庫
ocr scan --path internal/agent # 掃描單一目錄
ocr scan --path internal/agent,internal/llm/client.go
ocr scan --exclude '**/generated/*,*.pb.go'
ocr scan --preview # 看會掃哪些檔(不花 token)
| 參數 | 簡寫 | 預設 | 說明 |
|---|---|---|---|
--path <list> | — | 整個倉庫 | 逗號分隔的 repo 相對目錄或檔案 |
--exclude <patterns> | — | — | 逗號分隔的 gitignore 風格排除模式;與 rule.json 的 excludes 合併 |
--preview | -p | false | 列舉並過濾但跳過 LLM |
與 ocr review 一樣接受 --format json、--audience agent、--resume、--provider、--model、--max-tokens 等。
| 面向 | ocr review | ocr scan |
|---|---|---|
| 輸入 | Git diff(三種模式) | 整個工作樹檔案 |
| 需要 Git 歷史 | 是 | 否 |
| 適用 | PR / commit 評審 | 整檔審計、陌生 codebase |
| 預覽 | --preview | --preview |
ocr review 審的是「變更了什麼」(Git diff),ocr scan 審的是「檔案長什麼樣」(完整內容)。這不是功能差異——是使用場景差異:
--path 接受逗號分隔的目錄或檔案,可以精確控制掃描範圍。配合 --exclude 排除生成碼:
ocr scan --path src/api,src/db --exclude '**/generated/*,*.pb.go'
這只掃描 API 和 DB 層,排除 protobuf 生成檔。
跑 ocr scan --preview 可以不花 token 看到會掃描哪些檔案。這是第一次 scan 的必跑步驟——確保你不會掃到不該掃的(如含敏感資料的目錄)。
ocr scan 與 ocr review 的根本差異(diff vs 整檔)、--path 與 --exclude 的用法、以及何時該用 scan。