worked/ 是 Graphify 的「真實產出收藏」。每個資料夾都有:README.md(語料說明 + 重現步驟)、GRAPH_REPORT.md(真實報告)、graph.json、review.md(誠實的成效評估——包括圖哪裡搞錯了)。README 的 contributing 章節也明說:worked examples 是最有用的貢獻。
這頁從最大到最小展示,並放上 rsl-siege-manager 的互動知識圖譜——那是真正可操作的 graphify 產出,英文與中文界面兩版。
下面這個圖是 graphify 真實產出(上游 v8,commit 6085fd66)。1886 節點、3876 邊、141 社群。可以拖曳、滾輪縮放、搜尋節點、點節點看資訊、用社群圖例勾選隱藏。兩個版本:英文原版與中文界面版(節點名稱是程式識別符,兩版都保持英文)。
註:graph.html 為 1.8MB 自含檔(資料全部內嵌),首次載入需要一點時間。節點 label 為程式識別符,故兩版皆保留英文;僅 UI 界面中文化。
以 httpx 案例的 GRAPH_REPORT.md 為例(這就是你的 AI 助手會讀的第一份東西):
# Graph Report - worked/httpx/raw (2026-04-05)
## Corpus Check
- 6 files · ~2,047 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 144 nodes · 330 edges · 6 communities detected
- Extraction: 53% EXTRACTED · 47% INFERRED · 0% AMBIGUOUS
- Token cost: 0 input · 0 output
## God Nodes (most connected - your core abstractions)
1. `Client` - 26 edges
2. `AsyncClient` - 25 edges
3. `Response` - 24 edges
4. `Request` - 21 edges
5. `BaseClient` - 18 edges
...
## Surprising Connections
- `Timeout` --uses--> `URL` [INFERRED]
worked/httpx/raw/client.py → worked/httpx/raw/models.py
...
注意「Token cost: 0」——純程式碼語料零 LLM。而 --uses--> 邊帶 [INFERRED] 標籤,就是 信任標籤 在報告上的體現。
| 案例 | 預期 |
|---|---|
| example | api.py 是連到四模組的 hub;storage.py 是最高度數 god node;parser.py 呼叫 validator/storage;架構筆記連回程式碼;2 社群。 |
| httpx | 144 節點 / 330 邊 / 6 社群;god nodes = Client、AsyncClient、Response…;驚喜連線:DigestAuth 連到 Response(auth.py 讀 Response 解析 WWW-Authenticate)。 |
| karpathy-repos | ~285 節點 / ~340 邊 / ~17 社群;god nodes = Value(micrograd)、GPT(nanoGPT);驚喜:nanoGPT 與 minGPT 的 Block 跨 repo 相連、FlashAttention 論文橋進兩個 repo 的 CausalSelfAttention。 |
| mixed-corpus | AST 就有 ~20 節點 / ~19 邊 / 3 社群(Graph Analysis / Clustering / Graph Building);attention_notes.md 被歸類為 paper(arXiv heuristic 命中 1706.03762)。 |
| rsl-siege-manager | 1886 節點 / 3876 邊 / 141 社群(89 shown);90% EXTRACTED;`built_at_commit: 6085fd66`。 |
每個案例的 README.md 都有重現步驟,共通流程:
# 例如 httpx
cd worked/httpx
graphify extract ./raw # 純程式碼,不需 API key
# 或開你的 AI 助手輸入:
/graphify ./raw
跑完檢查 graphify-out/:GRAPH_REPORT.md(報告)、graph.html(互動圖)、graph.json(資料)。用 graphify benchmark worked/httpx/graph.json 可以驗證 README 宣稱的數字。
graphify path "DigestAuth" "Response" 與 graphify explain "Client"——看輸出的路徑與 [EXTRACTED]/[INFERRED] 標籤,再對照 GRAPH_REPORT.md 的 Surprising Connections,你就實際體驗了「用圖取代 grep」。worked/ 是 Graphify 的「真實產出收藏」。每個資料夾都有 README.md(語料說明 + 重現步驟)、GRAPH_REPORT.md(真實報告)、graph.json、review.md(誠實的成效評估)。這反映了「可重現性」的開源精神。
案例從大到小展示:OpenCode(3903 節點)→ rsl-siege-manager(1886 節點)→ karpathy-repos(177 節點)→ httpx(193 節點)→ mixed-corpus(22 節點)→ example(73 節點)。這讓你可以根據自己的硬體與時間選擇合適的案例。
互動知識圖譜是真正的 graphify 產出——1.8MB 自含檔,所有資料內嵌,可以直接在瀏覽器中操作。
cd worked/httpxgraphify extract ./raw(純程式碼,不需 API key)graphify-out/ 目錄下的三個檔案graphify benchmark worked/httpx/graph.json,確認 README 宣稱的數字graphify path "DigestAuth" "Response",觀察路徑與標籤| 錯誤訊息 | 原因 | 解決方式 |
|---|---|---|
graph.html: file too large | 互動圖超過 1MB | 這是正常的,大型圖的 graph.html 會很大 |
benchmark: number mismatch | 本地跑的結果與 README 不符 | 檢查 graphify 版本是否與案例匹配 |
path: no path found | 兩個節點之間沒有路徑 | 檢查節點名稱是否正確,或嘗試其他節點對 |
前面是「跑完 httpx 案例」;這次換成真實的職場任務:你被指派接手一個陌生的大型開源 repo,要在三天內產出一份「架構 onboarding 指南」給團隊。
graphify clone <github-url> 抓 repo,graphify extract . 建圖(程式碼零 LLM)。對大 repo 先注意 detect 的 warning——語料過大會提示成本。graphify-out/GRAPH_REPORT.md——god nodes 告訴你核心抽象(如 Client、Request),社群清單告訴你子系統邊界。graphify path "入口" "核心元件" 還原「request 怎麼流進核心」;用 graphify explain <god-node> 理解單一抽象。「god node = 最高度數節點」看似簡單,但 analyze.py 的真正功夫在「排除誰」:
_is_file_node):檔案節點機械式累積 import/contains 邊,不是架構抽象。_BUILTIN_NOISE_LABELS):0.8.33 修過一個 bug——str、int、MagicMock 曾灌爆度數把真抽象擠出排名。所以「god node」的定義是「排除後的最高度數」,不是「最高度數」。報告每一段都由圖資料計算出來,不是 LLM 生成的故事——god nodes 的 degree、EXTRACTED 比例、token 成本都可回溯。這就是「稽核軌跡」:報告可信,因為每個數字都有出處。而 review.md 的存在(每個案例誠實寫出「圖哪裡搞錯了」)是這份可信度的文化層補充——連官方都承認圖會錯,你更該養成「懷疑圖、回去查邊」的習慣。
| 症狀 | 可能原因 | 解決方案 |
|---|---|---|
| 互動圖載入很慢或瀏覽器卡死 | graph.html 太大(rsl-siege-manager 已 1.8MB;節點破萬) | 用 _viz_node_limit 防護先確認上限;縮小語料或改用 graph.json + 其他視覺化工具 |
| 報告數字與 README 宣稱不符 | graphify 版本不同(上游 v8 vs 本地新版)或跑了 --code-only | 對齊版本(案例標註 built_at_commit);確認是否跳過 Pass 3 |
graphify path A B 找不到路徑 | 節點名是檔案節點而非抽象節點、或兩個節點真的不相連 | 先用 graphify query 確認節點存在與正確 label;換同社群內節點對試 |
god nodes 出現 str/int 之類 | 用的是舊版 graphify(0.8.33 前的 builtin noise bug) | 升級 graphify 重跑 analyze;確認 _BUILTIN_NOISE_LABELS 生效 |
| 自己重現的社群數對不上案例 | 上游 v8 的圖由特定 commit 建出(6085fd66),社群編號含隨機性 | 固定 seed(確定性)重跑;比「社群是否對應子系統」而非比編號 |
前面是跑完案例和產出 onboarding 指南。這次是用圖驅動重構決策:你接手一個 1500 節點的 legacy 專案,要用 graphify 識別「哪些模組該拆、哪些耦合該解、重構優先序」。
graphify extract . 建圖後,先讀 GRAPH_REPORT.md——找 god nodes(核心抽象)和 Surprising Connections(意外耦合)。graphify query 查「哪些社群最大?」→ 過大社群(>25% 節點)代表模組邊界模糊。用 graphify explain <god-node> 理解每個核心抽象的職責。graphify path "ModuleA" "ModuleB" 和 graphify path "ModuleB" "ModuleA" 找雙向路徑——循環依賴是重構的首要目標。graphify explain 確認每條跨社群邊的語義。| 面向 | 考量 | 實務建議 |
|---|---|---|
| 效能 | 互動圖(graph.html)在節點破萬時可能 >1.8MB,瀏覽器載入慢 | 用 _viz_node_limit 防護先確認上限;超大圖改用 graph.json + D3.js 自訂視覺化 |
| 品質 | god nodes 的定義是「排除後的最高度數」,不是「最高度數」——排除了檔案節點、概念節點、內建型別 | 檢查 _BUILTIN_NOISE_LABELS 是否包含你的語言的內建型別;用 review.md 記錄已知的圖錯誤 |
| 安全 | 互動圖的節點 label 可能含 XSS 攻擊向量 | 確認所有 exporter 走 sanitize_label() 的 HTML-escape;測 <script> 作為 label 跑 export |
| 面向 | 本文(實作案例) | 相關文 | 差異說明 |
|---|---|---|---|
| 案例產出 | 五個案例的 GRAPH_REPORT + 互動圖 + review.md | 運作原理 | 運作原理頁講三遍處理的理論;實作案例頁展示真實產出 |
| God nodes | 排除後的最高度數 + review.md 的「圖哪裡搞錯」 | 架構總覽 | 架構頁只列 analyze.py 的職責;實作案例頁展示 god nodes 的實際含義 |
| 互動圖 | rsl-siege-manager 的 1.8MB 自含檔,可拖曳/縮放/搜尋 | 程式碼對照 · export | 程式碼對照頁講 export.py 的 pyvis/HTML 生成邏輯 |
| 重現步驟 | 每個案例的 README.md 含完整重現步驟 | 效能基準 | 效能基準頁講 harness 的重現方式;實作案例頁講單一案例的重現 |
graphify extract ./raw),並用 graphify benchmark 驗證 README 宣稱的數字graphify path 找到兩個節點之間的路徑,並解釋路徑上每條邊的 EXTRACTED/INFERRED 標籤graphify explain 理解一個 god node 的職責,並對照原始碼確認