
在 OpenCode 中原生接入 Open Code Reviewocr_review 與 ocr_health 工具/斜杠命令集成指南【免費下載鏈接】open-code-reviewFast, efficient, battle-tested at Alibabas scale. Hybrid architecture code review tool: deterministic pipelines LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI Anthropic compatible.項目地址: https://gitcode.com/GitHub_Trending/op/open-code-reviewOpen Code ReviewOCR是一套采用「確定性流水線 LLM Agent」混合架構的代碼審查工具而本指南要解決的是如何把它的能力以原生工具tool與斜杠命令slash command的形式嵌入 OpenCode 編碼代理。讀完本文你將掌握插件文件的一鍵安裝全局/單項目兩種方式、ocr_review與ocr_health兩個工具的完整參數語義與調用姿勢、插件底層進程調度與安全邊界無 shell 啟動、超時熔斷、輸出限額、取消終止以及本地開發與回歸測試流程。一、插件是什么把 OCR 變成 OpenCode 的原生能力OpenCode 集成位于倉庫的 plugins/open-code-review/opencode/ 目錄核心是一個 TypeScript 插件文件 open-code-review.ts它通過opencode-ai/pluginSDK開發依賴固定為1.18.5見 package.json向 OpenCode 注冊兩類能力注冊項類型作用ocr_reviewTool審查工作區改動、單個 commit 或一段 ref 范圍返回結構化 JSON 審查結論ocr_healthTool顯示已安裝 OCR 的版本號并測試其配置的 LLM 連接是否可用/ocr-reviewSlash command便捷提示詞引導模型調用ocr_review工具/ocr-healthSlash command便捷提示詞引導模型調用ocr_health工具關鍵設計是兼容性優先注冊斜杠命令時使用config.command[ocr-review] ?? {...}的寫法open-code-review.ts即只有用戶尚未自定義同名命令時才注入默認模板已有用戶命令會被原樣保留。這一點由測試plugin registers tools and preserves existing user commands明確驗證test/open-code-review.test.mjs。從源碼結構看插件采用單入口導出設計export const OpenCodeReviewPlugin: Plugin是模塊唯一導出項測試module exposes only one OpenCode plugin entry point用assert.deepEqual(Object.keys(module), [OpenCodeReviewPlugin])加以約束避免與其他插件命名沖突。二、前置條件先裝好 OCR CLI 并完成 LLM 配置插件本身不打包 OCR 可執行文件它是在運行時通過spawn(ocr, ...)調用本地 CLI 的因此必須先安裝并配置 OpenCodeReviewnpm install -g alibaba-group/open-code-review ocr config provider ocr config model ocr llm test其中ocr config provider與ocr config model用于交互式配置 LLM 提供商與模型ocr llm test則發送一條測試對話驗證連通性。從 CLI 源碼看llm_cmd.go 中的llm test子命令會加載配置、解析 LLM 端點、讀取internal/config/testconnection下的測試任務模板并以 30 秒默認超時發起一次真實對話llm_cmd.go成功時打印 Source/URL/Model 與? Connection test successful。測試通過后再使用本插件可避免把「配置問題」誤判為「審查失敗」。插件對「OCR 未安裝」這一場景也有兜底處理子進程啟動拋出ENOENT時runOcr會將其轉換為一條明確的錯誤提示——OpenCodeReview is not installed or ocr is not on PATH. Install it with: npm install -g alibaba-group/open-code-reviewopen-code-review.ts對應測試見 test/open-code-review.test.mjs。三、安裝全局與單項目兩種方式3.1 全局安裝對所有項目生效將插件文件放入 OpenCode 的全局插件目錄mkdir -p ~/.config/opencode/plugins隨后把倉庫中的 open-code-review.ts 復制或按原文檔用curl -fsSL從上游 raw 地址下載到該目錄并命名為open-code-review.ts。例如git clone https://gitcode.com/GitHub_Trending/op/open-code-review cp open-code-review/plugins/open-code-review/opencode/open-code-review.ts ~/.config/opencode/plugins/安裝完成后重啟 OpenCode使插件生效。3.2 單項目安裝隨項目共享在項目根目錄執行mkdir -p .opencode/plugins將插件文件放入.opencode/plugins/open-code-review.ts。若希望該集成隨項目團隊共享請把插件文件一并提交進版本庫commit the plugin file。兩種安裝方式的差異僅在插件目錄位置插件行為完全一致由于文件會隨項目分發單項目安裝更適合團隊內部推廣審查規范。四、使用方式斜杠命令與自然語言調用4.1 斜杠命令安裝完成后即可在 OpenCode 對話中使用/ocr-review current workspace; focus on authentication regressions /ocr-review compare main to feature/auth-refresh /ocr-health/ocr-review的默認模板把斜杠后的文本視為「審查意圖 目標細節 業務上下文」并指示模型未指定目標時審查當前工作區改動最終按嚴重級別輸出帶精確文件與行號引用的結論open-code-review.ts。/ocr-health則要求模型調用ocr_health并簡潔解釋任何配置問題。4.2 自然語言調用工具OpenCode 的 Agent 可以直接理解工具語義無需斜杠命令也能觸發Use ocr_review to review my current changes. The goal is to add rate limiting without changing the public API.ocr_review工具的描述open-code-review.ts明確告知模型可審查工作區改動、單個 commit 或 ref 范圍返回結構化行級 JSON 結論previewtrue可在不消耗 LLM 的情況下查看審查范圍。4.3 先用 preview 探明審查范圍把preview設為true可以在不發起任何 LLM 請求的前提下列出將被審查的文件清單適合在正式審查前核對范圍是否符合預期。preview 模式下插件會省略--format json參數并追加--previewopen-code-review.ts測試preview omits JSON mode and adds --preview精確斷言了這一參數形態test/open-code-review.test.mjs。五、ocr_review 參數全解析插件通過 tool.schema 為ocr_review聲明了完整的參數 Schema讓 OpenCode 的模型可以按需填參。下表為全部參數及其語義參數類型說明commitstring審查單個 commit對比其父提交from/tostring分支/范圍比較的基與目標 ref必須成對出現resumestring按會話 ID 恢復上一次 OCR 審查backgroundstring業務或需求上下文審查需滿足的實現目標excludestring逗號分隔的 gitignore 風格排除模式modelstring覆蓋 OCR 配置中設定的模型concurrencyint最大并發文件審查數timeoutMinutesint單文件 OCR 超時分鐘overallTimeoutMinutesint整個 OCR 進程的可選墻鐘超時分鐘maxToolsint每個子任務的最大工具調用輪數OCR 強制最低 50maxGitProcessesint最大并發 Git 子進程數previewboolean不調用 LLM僅列出將被審查的文件5.1 參數互斥規則buildReviewArgs在啟動任何進程前先做參數合法性校驗open-code-review.ts沖突組合會直接拋錯、絕不落到 CLIfrom/to必須同時提供否則報 Both from and to are required for a branch comparison.commit與from/to范圍互斥Use either commit or a from/to range, not both.resume不能與commit或from/to范圍組合。preview與resume不能同時使用。這些規則在 test/open-code-review.test.mjs 中有完整的負向用例矩陣覆蓋。底層 CLI 側同樣存在對應校驗——validateDiffModeshared_flags.go與validateReviewOptionsshared_flags.go會再次把關--preview與--resume互斥在 CLI 層同樣生效。5.2 參數到 CLI 標志的映射插件把 Schema 參數逐項映射為 OCR CLI 標志open-code-review.ts恒定的基礎參數是review --audience agent --repo 倉庫根目錄非 preview 時追加--format json。--audience agent與--format json的組合意味著輸出面向機器消費從 CLI 側實現看--audience只接受human/agent兩個枚舉值shared_flags.goagent模式輸出純摘要、不渲染人類進度條--format支持text/json/sarifshared_flags.go。在 review_cmd.go 的示例中可以看到各標志的直接用法。其余參數的 CLI 映射與默認值依據 shared_flags.go 與 flags_test.goconcurrency→--concurrencyCLI 默認 8 個并發文件組審查timeoutMinutes→--timeoutCLI 默認單任務超時 15 分鐘maxTools→--max-toolsCLI 默認 0即采用模板默認且低于 50 的值會被鉗制到 50——flags_test.go驗證了--max-tools 30會被強制為 50maxGitProcesses→--max-git-procsCLI 默認 16 個并發 Git 子進程exclude→--exclude逗號分隔的 gitignore 風格模式與規則文件中的排除項合并model→--model僅覆蓋本次運行的模型不修改持久化配置。一個典型的完整參數組裝結果來自測試斷言 test/open-code-review.test.mjs形如review --audience agent --format json --repo worktree --background Add rate limiting --timeout 30六、ocr_health版本與連接自檢ocr_health工具不接受任何參數執行時并發發起兩個子進程調用open-code-review.tsocr version30 秒超時讀取已安裝 OCR 版本ocr llm test60 秒超時向配置的 LLM 發送測試對話。兩者通過Promise.allSettled并行執行并合并結果——即使版本檢查成功而 LLM 檢查失敗也會同時報告兩邊狀態測試ocr_health reports both version success and LLM failure驗證了這種「部分成功」的輸出語義見 test/open-code-review.test.mjs。這使/ocr-health成為排查「版本過舊 / 憑據缺失 / 端點不可達」三類問題的第一站。七、行為與安全邊界插件如何管控 OCR 子進程原文檔的「Behavior and safety」一節定義了插件對子進程的硬性約束其實現細節可從 runOcr 逐條對應以參數數組啟動、shell: falsespawn(invocation.command, [...prefixArgs, ...args], { shell: false })直接把參數數組交給exec系統調用不經任何 shell 解釋。即使參數中混入main; touch /tmp/unsafe這類可疑 ref也會被原樣作為一個 argv 值傳遞不存在命令注入面測試ocr_review passes suspicious-looking refs as one argv value without a shell對此做了專門驗證見 test/open-code-review.test.mjs。整體超時熔斷ocr_review默認使用 30 分鐘整體墻鐘超時defaultOverallMs 30 * 60 * 1000測試ocr_review defaults to 30-minute overall timeout斷言了這一點可用overallTimeoutMinutes覆蓋runOcr底層函數自身的兜底默認是 15 分鐘open-code-review.ts與單文件--timeout相互獨立——測試ocr_review keeps per-file and overall timeouts independent驗證了兩套超時并行生效。超時后先發SIGTERM3 秒內未退出再升級SIGKILL。10 MiB 輸出限額stdout 與 stderr 的累計字節數合并計數appendChunk見 open-code-review.ts任一方向超限都會終止進程并拋出 OCR output exceeded the 10485760-byte safety limit。測試用「stdout 6 MiB stderr 6 MiB」的組合驗證了跨流合并計數的行為test/open-code-review.test.mjs。取消即終止OpenCode 取消工具AbortSignal時插件對子進程執行整組終止——非 Windows 平臺process.kill(-child.pid, SIGTERM)殺死整個進程組Windows 平臺改用taskkill /pid pid /T /Fopen-code-review.ts。detached: true的啟動參數保證了子進程擁有獨立進程組從而可被整組回收測試覆蓋了「正常取消」「子進程無視 SIGTERM 時強制 SIGKILL」「孫進程也被一并清理」三個層級test/open-code-review.test.mjs。憑據不動子進程繼承env: process.envOCR 憑據繼續留在既有的 OCR 配置或環境變量中插件不做任何代理或改寫。工作區模式范圍未指定 commit/范圍時OCR 的 workspace 模式覆蓋 staged、unstaged 與 untracked 三類改動——CLI 側ModeWorkspace的定義即「current workspace (staged unstaged untracked)」internal/diff/git.go并包含對 unborn無 HEAD倉庫的兜底處理。此外還有一層輸出校驗非 preview 模式下若 OCR 退出碼非零runOcr會拋出攜帶 stderr/stdout 的OcrExecutionError測試ocr_review reports non-zero exits with OCR output驗證了exitCode與錯誤信息被透傳退出碼為零但輸出不是合法 JSON 時同樣拋錯ocr_review rejects invalid JSON output只有空輸出會被寬容地解釋為 No changes detected。這一層校驗保證了 OpenCode 拿到的永遠是結構化、可信的數據而不是被截斷或損壞的半成品。八、本地開發與回歸測試倉庫為插件提供了完整的開發閉環package.json 的 scripts 與 tsconfig.jsoncd plugins/open-code-review/opencode npm install npm run checknpm run checktypechecktsc --noEmittest先tsc構建到dist/再用 Node 內置 test runner 執行test/*.test.mjs。測試套件通過偽造ocr可執行文件withFakeOcr把一段 Node 腳本偽裝成 PATH 上的ocr見 test/open-code-review.test.mjs來驗證插件的參數組裝、退出碼處理、超時與取消行為無需真實 LLM 或真實倉庫即可回歸。若需調整工具參數或安全策略改完 open-code-review.ts 后跑一遍npm run check即可獲得完整保障。九、小結OpenCode 集成把 Open Code Review 從獨立 CLI 變成了編碼代理的原生工具ocr_review負責輸出結構化 JSON 審查結論ocr_health負責自檢斜杠命令負責給模型一個明確的調用入口而插件層的參數互斥校驗、無 shell 啟動、雙超時與輸出限額、取消整組終止共同構成了「可被 Agent 安全調度」的邊界。配合 OCR 自帶的--audience agent機器友好輸出與 workspace/commit/range 三種審查模式團隊可以在 OpenCode 工作流中無縫復用已有的 LLM 代碼審查能力。【免費下載鏈接】open-code-reviewFast, efficient, battle-tested at Alibabas scale. Hybrid architecture code review tool: deterministic pipelines LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI Anthropic compatible.項目地址: https://gitcode.com/GitHub_Trending/op/open-code-review創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考