整合

把 OCR 嵌入你的 coding agent —— Skill、Command、OpenCode、CI

整合方式一覽

模式誰呼叫 LLM?適用場景
Agent SkillOCRagent 呼叫 ocr review,OCR 驅動完整評審(修復前先問)
Command(Claude Code)OCRClaude Code 的斜線命令,OCR 驅動評審(預設自動修復)
OpenCode 工具OCR註冊 ocr_review / ocr_health 原生工具
委託模式宿主 AgentOCR 提供工程架構,宿主 Agent 用自己的 LLM

Agent Skill

把 OCR 註冊為可呼叫的 skill,讓 agent 框架以正確的參數、前置檢查與分級標準呼叫它。

npx skills add alibaba/open-code-review --skill open-code-review

SKILL.md 讓 agent 執行七步:前置檢查 → CLI 缺失自動安裝 → 無 LLM 停下詢問 → 提取業務脈絡 → 跑評審 → 分級(High/Medium/Low)→ 按需修復。完整 prompt 在 skills/open-code-review/SKILL.md。

前置條件:你需要預先配好 LLM——skill 不會替你完成,會停下來詢問。

Command(Claude Code Plugin)

在 Claude Code 內端到端跑——評審 diff、分類發現、自動套用值得採納的修復。

/plugin marketplace add alibaba/open-code-review
/plugin install open-code-review@open-code-review

註冊 /open-code-review:review 斜線命令。與 Agent Skill 不同,此命令預設自動修復——適合「評審並清理」工作流。命令檔是帶 frontmatter 的純 markdown,其他支援 command 約定的 agent 也能用。

OpenCode 工具

mkdir -p ~/.config/opencode/plugins
curl -fsSL \
  https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/opencode/open-code-review.ts \
  -o ~/.config/opencode/plugins/open-code-review.ts

註冊原生工具:ocr_review(評審工作區 / commit / ref 範圍,回傳結構化 JSON)、ocr_health(顯示版本與 LLM 連通性),以及 /ocr-review、/ocr-health 斜線命令。評審用 --audience agent + JSON 輸出、15 分鐘超時、10 MiB 輸出上限。

委託模式

讓宿主 Agent 用自己的 LLM 執行評審,OCR 只負責檔案篩選與規則解析——詳見 委託模式專頁。

CI/CD

在每個 PR / MR 上跑 OCR。上游提供 GitHub Actions 與 GitLab CI 兩條現成管線——詳見 CI/CD 專頁。

📖 教學解說:整合實戰

四種模式的決策樹

問三個問題:① OCR 的 LLM 要用誰的?② 要自動修復嗎?③ 用什麼 agent 框架?

  • 用自己的 API key + 不修復 + 任意框架 → Agent Skill
  • 用自己的 API key + 要修復 + Claude Code → Command
  • OCR 端無 LLM + 宿主有訂閱 → 委託模式
  • 需要原生工具整合 → OpenCode 工具

Agent Skill 的七步流程

SKILL.md 讓 agent 執行:① 前置檢查(Git? LLM?)→ ② CLI 缺失自動安裝 → ③ 無 LLM 停下詢問 → ④ 提取業務脈絡 → ⑤ 跑評審 → ⑥ 分級(High/Medium/Low)→ ⑦ 按需修復。關鍵:第 ⑦ 步是修復前先問,不像 Command 的預設自動修復。

OpenCode 工具的註冊機制

把 open-code-review.ts 放到 ~/.config/opencode/plugins/ 就自動註冊。它暴露 ocr_review(結構化 JSON)和 ocr_health(版本+連通性),以及 /ocr-review、/ocr-health 斜線命令。審計用 --audience agent + JSON 輸出、15 分鐘超時、10 MiB 輸出上限。

練習 / 驗收清單

  • 能區分四種整合模式的「誰呼叫 LLM」
  • 能解釋 Agent Skill vs Command 的差異
  • 能描述 OpenCode 的 ocr_review / ocr_health 工具
  • 能選擇適合自己場景的整合模式
看完這頁你應該能說出:四種整合模式的「誰呼叫 LLM」、Agent Skill(修復前先問)vs Command(預設自動修復)的差異、以及 OpenCode 的 ocr_review / ocr_health 工具。

延伸閱讀:委託模式 · CI/CD · 快速開始

① 進階真實情境 Worked Example:在 OpenCode 裡讓 agent 自己「評審 → 修復 → 復審」

情境

你在 OpenCode 開發一個功能,改了 6 個檔。你要不離開 OpenCode:讓 agent 呼叫 ocr_review 取得結構化評論 → 讀取 ocr_health 確認環境 → 依分級修復 → 再呼叫一次 ocr_review 驗證已修。

Step 1 — 註冊 plugin(一次性)

mkdir -p ~/.config/opencode/plugins
curl -fsSL \
  https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/opencode/open-code-review.ts \
  -o ~/.config/opencode/plugins/open-code-review.ts

Step 2 — 先確認環境(agent 呼叫 ocr_health)

ocr_health
# → version: 1.9.2, LLM: connected, provider: anthropic

Step 3 — 評審(agent 呼叫 ocr_review)

ocr_review(scope: "workspace")
# → JSON: 6 files reviewed, 4 comments
#   HIGH: auth.go — token 過期未驗證
#   MED:  store.go — 未驗證 user-supplied path

Step 4 — 依分級修復(agent 自己動手)

先修 HIGH(auth.go)再修 MED(store.go),Low 跳過。修完 git add 進 staged。

Step 5 — 復審驗證

ocr_review(scope: "workspace")
# → 若 HIGH 已消失、原 HIGH 位置乾淨 → 確認修復

為什麼選這條審查路徑

OpenCode 原生工具把「評審」變成 agent 可程式化的函式——評審 → 修復 → 復審是單一閉環,不需要開新終端、不需要手動貼 JSON。ocr_health 是前置檢查(避免對壞掉的 LLM 端點白跑一次評審),ocr_review 回傳的結構化 JSON 讓 agent 能「依 severity 排修復順序」而不是一股腦全改。

預期產出

round 1: HIGH(1) MED(1) LOW(2) → 修 HIGH + MED
round 2: HIGH(0) MED(0) LOW(2) → 乾淨通過(Low 可留)
→ 修復閉環完成

② 深入原理擴充:skill vs command vs 原生工具的執行權限差異

三者的「誰執行」與「權限」不同

方式誰呼叫 LLM修復動作執行者
Agent SkillOCR修復前先問宿主 agent 執行
CommandOCR預設自動修復Claude Code 執行
OpenCode 工具OCRagent 自行決定OpenCode agent 執行

原生工具是「工具呼叫即函式」——agent 拿到的是結構化 JSON,不是一段要它照做的 prompt。這比 skill 更「確定性」:沒有 prompt 解析歧義,agent 直接讀 comments[] 的欄位決定下一步。

「看起來整合成功但其實有隱患」的案例

# OpenCode agent 收到 4 條評論,直接全數自動修復:
# 1. 依建議改了 auth.go 的邏輯
# 2. 但建議是「引用外部檔案」的脈絡性建議,agent 沒讀那個檔案
# 3. 修完跑測試 → 通過(測試沒覆蓋到)
# 4. 復審 ocr_review → HIGH 消失(因為行號變了,錨定不到)

「HIGH 消失」在復審裡不一定是「修好了」——行號變動後錨定可能失敗,評論被 REVIEW_FILTER_TASK 當「不匹配」濾掉。防禦:復審前對照「被修的位置的程式碼」而非只看「評論數歸零」;修復後跑一次 git diff 確認改動落在預期範圍;對「引用型」建議,先讀被引用的檔案再動手。

③ 診斷式疑難排解

症狀可能原因解決方案
plugin 註冊後 ocr_review 不存在plugin 檔沒放對路徑 / 沒重載確認在 ~/.config/opencode/plugins/;重啟 OpenCode 或重載 plugin
ocr_health 顯示 LLM 未連線OCR 端點解析鏈沒找到三元組跑 ocr config set 或匯出 OCR_LLM_* env,再 ocr_health
agent 修復後復審「HIGH 消失但沒修好」行號變動導致錨定失敗,filter 誤刪對照 git diff 確認修復落在預期位置;看 re_location_task 泳道
skill 停在「修復前先問」你不想要Skill 設計如此改用 Command(預設自動修復)或 OpenCode 工具
自動修復引入了新 bugagent 沒讀被引用的檔案就套用建議要求 agent 修復前先 file_read 引用檔;修復後跑測試

④ 進階挑戰題

  1. 挑戰一:設計一個 OpenCode agent 的修復策略:收到 4 條評論(HIGH/MED/LOW),依什麼順序修?哪些可以跳過?修完如何「驗證」才算真的修好?
  2. 挑戰二:比較 skill 的「修復前先問」與 command 的「預設自動修復」——在什麼團隊文化下選哪個?
  3. 挑戰三:為什麼 OpenCode 工具用「15 分鐘超時 + 10 MiB 輸出上限」?如果評論很多超過 10 MiB 會發生什麼?