cmd/ + internal/ + bin/ + scripts/(293 檔)· 對齊 commit 9148bfd · graphify 0.9.40worked/ocr-source/。OpenCodeReview(OCR)本身就是一個 AI 驅動的 code review CLI。用 graphify 再掃一次 OCR 的源碼,有幾個教學價值:
上游 main @ 9148bfd(2026-08-13)的第一方程式碼:
| 部分 | 內容 | 檔案數 |
|---|---|---|
cmd/opencodereview/ | CLI 命令層(main / review / scan / delegate / config / provider TUI) | ~60 |
internal/ | 核心套件(agent / diff / llm / llmloop / tool / rules / session / mcp / viewer / telemetry) | ~215 |
bin/ + scripts/ | NPM wrapper(ocr.js)與安裝/發布腳本 | ~16 |
| 合計 | 純 code 語料(--code-only,零 LLM 成本) | 293 |
刻意排除 internal/llm/bpe_data/*.tiktoken、pages/(官方網站 React 專案)與 docs 內容——圖要呈現「OCR 的 Go 核心工程」。
| 指標 | 本站實測 |
|---|---|
| 語料檔案數 | 293 |
| 節點 | 4,128 |
| 邊 | 12,278 |
| 社群 | 168(156 顯示,12 個過薄省略) |
| 抽取 | 72% EXTRACTED · 28% INFERRED · 0% AMBIGUOUS(INFERRED 3,414 邊,平均信心 0.8) |
| Import Cycles | None detected |
| LLM / API 成本 | 0(純 AST,本機執行) |
| 工具版本 | graphify 0.9.40 |
graphify 報告指出連接最多邊的「樞紐節點」——正是 OCR 架構中最關鍵的函式:
| 函式 | 邊數 | 位置 |
|---|---|---|
contains() | 335 | 測試 helper(大量測試共用的斷言工具) |
newProviderTUI() | 176 | cmd/opencodereview/provider_tui.go——provider 設定 TUI 的建構入口 |
writeFile() | 175 | 測試寫檔 helper |
context | 131 | Go context 型別節點 |
main() | 87 | cmd/opencodereview/main.go——單一二進位入口 |
God nodes 以測試 helper 與 TUI 為大宗(因為測試碼呼叫密集);想找「商業邏輯樞紐」要看 Community 對應的 module 層。
168 個社群,最大的幾個直接對應 OCR 的模組:
| 社群(graphify 編號) | 節點 | 對應 OCR 模組 |
|---|---|---|
| Community 1 | 97 | provider 設定 TUI 測試(provider_tui_*_test.go) |
| Community 2 | 94 | provider TUI 模型/檢視(key 處理、tab 導覽) |
| Community 3 | 83 | diff hunk 解析(Hunk / ParseHunks 及其測試) |
| Community 4 | 87 | LLM 端點解析(ResolveEndpoint 家族與測試) |
| Community 5 | 74 | 記憶壓縮與訊息計數(buildMessageXML / CountMessagesTokens) |
| Community 7 | 76 | 規則解析鏈(LoadDefault / NewResolver / readRuleFileSafe) |
| Community 10 | 45 | diff Provider(Mode / InputResolution / firstLine) |
完整 168 社群清單見 GRAPH_REPORT.md。社群名保留 "Community N" 佔位(graphify 無 LLM backend 標籤模式),可對應到語料路徑判讀模組。
4,128 節點未超過 graphify 的節點級檢視上限,但為方便一眼看模組結構,這裡以社群聚合檢視呈現。
# 0. 安裝 graphify(PyPI 套件名 graphifyy,雙 y)
uv tool install graphifyy
# 1. 準備語料(只保留第一方程式碼)
git clone https://github.com/alibaba/open-code-review.git ocr
git -C ocr checkout 9148bfdded6578c597adf893bbc0c698ea5423b9
mkdir corpus && cp -R ocr/cmd corpus/ && cp -R ocr/internal corpus/
cp -R ocr/bin corpus/ && cp -R ocr/scripts corpus/
# 2. 跑完整 pipeline(code-only,零 API key)
graphify corpus --code-only
# 3. 產出在 corpus/graphify-out/
# graph.html 互動圖
# graph.json 全量圖資料(4,128 nodes / 12,278 edges)
# GRAPH_REPORT.md 審計報告
# 4. 中文化 UI(選擇性)
cp graphify-out/graph.html graphify-out/graph-zh.html
# 替換 lang="en" → lang="zh-Hant" 及 UI 字串(Search / Node Info / Communities…)
pages/(官方網站 React 專案)、internal/llm/bpe_data/*.tiktoken 與 docs——節點數不代表 OCR 全 repo。