這是本站的旗艦案例。我們用 graphify 分析了 OpenCode(開源 AI 程式碼代理,194K+ stars)的核心套件 packages/opencode——也就是「我們正在用 OpenCode 建這個 graphify 教學站」這件事的 meta 版本。
語料:packages/opencode/src 的 363 個 TypeScript 檔(docstring、規格、測試以外的核心原始碼)。TypeScript 是程式碼,所以 --code-only 就能全程在本機用 tree-sitter 解析,不需要任何 API key。
# 1. 淺 clone + sparse checkout(只抓需要的套件)
git clone --depth 1 --branch dev --filter=blob:none --sparse \
https://github.com/anomalyco/opencode.git
git sparse-checkout set packages/opencode
# 2. code-only 抽取(零 API key,純本機 AST)
graphify extract packages/opencode/src --code-only
# 3. 分群 + 生成報告與互動圖
graphify cluster-only .
dev 分支 commit fe82a1b6,套件版本 opencode@1.18.15,分析日期 2026-08-08。OpenCode 是活躍開發的專案,數據會隨版本演進而變。以下為本次分析的真實產出——3903 個節點,可以直接拖曳、搜尋、點節點看資訊。節點名稱是程式識別符,兩版皆保留英文;僅 UI 界面中文化。
| 指標 | 本站結果 |
|---|---|
| 節點數 | 3903 |
| 邊數 | 8701 |
| 社群數 | 159 |
| EXTRACTED 邊 | 98% |
| INFERRED 邊 | 2% |
0 個 token 成本(純 AST 抽取)。INFERRED 平均信賴 0.62。
RunFooter — 66 條邊Filesystem — 50 條邊InstanceState — 44 條邊SessionID — 43 條邊reduceSessionData() — 39 條邊Config — 39 條邊createLayer() — 38 條邊Session — 34 條邊EventV2Bridge — 31 條邊Provider — 31 條邊高度合理的 god nodes:Session / InstanceState / SessionID 是 agent 對話狀態的核心;Config 是設定樞紐;Provider 是模型供應商抽象;Filesystem 是檔案系統抽象。RunFooter 度數最高,是 TUI 畫面底部組件的結構樞紐。
最有意思的推論邊(全部 INFERRED,平均信賴 0.62):
routeHttpApiWorkspace() --indirect_call--> plan() — HTTP API 的 workspace 路由中介層,間接呼叫到 session 的 plan()。跨 server/…/middleware/ 到 session/,揭露了 API 層與 agent 規劃層的耦合。make() --indirect_call--> loaded() / messages() / model() — acp/service.ts 的建構函數間接觸發了 session 指令載入與 LLM native request。間接呼叫解析(indirect_call)抓到的跨檔呼叫,正是純檔案搜索看不到的部分。這些 indirect_call 邊的價值在於:它們是 graphify 的跨檔解析(第二遍)從 AST 推出的,不需要讀原始檔——「用圖取代 grep」的最佳示範。
159 個社群。最大的社群(76 節點)以 session/prompt.ts 為 hub(agent 的 prompt 組裝層),其次 run/types.ts(執行類型)。TUI、provider、httpapi 各自形成獨立社群——架構分層清楚可見。
# 依上述步驟即可完全重現。產出對照:
# worked/opencode/graph.html(互動圖)· GRAPH_REPORT.md(報告)
graphify benchmark worked/opencode/graph.json # 若想量 token 節省