cmd/opencodereview/delegate_cmd.go(10,084 bytes)delegate_cmd.go 定義 ocr delegate。這是 OCR「把 LLM 推理交給宿主 Agent」的橋樑:OCR 只做確定性工程(檔案篩選、規則解析),把「可評審檔案清單 + 每檔規則 + ref 元資料」輸出成結構化 JSON,讓 Claude Code / OpenCode 等宿主用自己的 LLM 做評審。核心是 preview 與 rule 兩個子命令,全程不呼叫任何 LLM。
delegateContext 聚合 delegate 需要的元件:diff.Provider(從 --from/--to/--commit 建構)、rules.Resolver(從 --rule 建構)、模式與 merge-base。它是 preview 與 rule 兩個子命令共享的「載入一次」邏輯。
preview(ctx) 呼叫 agent 的 diff preview(過濾後的可評審檔案),previewFiles 把 []model.Diff 轉成 []delegatePreviewFileJSON(path、status、插入/刪除行數),reviewable 旗標標記哪些檔實際會送評。輸出經 writeDelegateJSON 序列化。
delegateSchemaVersion = "1" 讓輸出結構可以版本演進而不破壞宿主 Agent 的解析。這是「給另一個 agent 吃的 API」該有的設計——schema 版本化 + 純 JSON stdout。
傳入 Step 1 的檔案路徑,OCR 依「共享相同規則的檔案歸為一組」輸出 []delegateRuleGroupJSON——避免重複貼規則給宿主。規則來自四層鏈(見 internal/config/rules)。
mergeBase 回傳 range 模式的 merge-base SHA(宿主用 git diff 需要它);reviewMode 回傳 workspace/range/commit;resolver 回傳規則解析器。這些是 Step 3(取 diff)與 Step 2(取規則)的依據。
延伸閱讀:委託模式文件 · internal/agent