graphify 開箱實測:把本站程式碼畫成 1,885 個節點的知識圖譜,兩個坑先看
GitHub 熱榜十三萬星的 graphify,拿本站 439 個檔案實際跑一遍:程式碼解析不用模型、不上傳、十幾秒;但 SQL 要另裝解析器,分群命名會直接用你機器上的 claude 額度。
- 本站上線
- 2026/10/23 下午01:56
這篇要回答:GitHub 熱榜上十三萬星的 graphify,拿一個真實的、自己寫的專案餵進去,畫出來的圖有沒有用,中間會踩到什麼。我們把本站的程式碼(git 追蹤的 439 個檔案,不含任何密鑰與 node_modules)複製一份,在一台 NUC 上從安裝做到匯出互動圖,全程錄影。影片在本文下方。
它是什麼
graphify(PyPI 套件名是 graphifyy,兩個 y)把一個專案的函式、類別、import、呼叫關係解析成一張圖,存成 graph.json,再提供 query、path、explain、affected 等指令讓 AI 編碼助手(Claude Code、Cursor、Codex 等)查圖而不是逐檔翻找。程式碼的部分用 tree-sitter 做 AST 解析,在本機完成,不需要語言模型,也不上傳;文件、PDF、圖片才會走模型做語意抽取。
怎麼裝、怎麼跑
| 步驟 | 指令 | 結果 |
|---|---|---|
| 安裝 | uv tool install graphifyy | 版本 0.9.94 |
| 建圖(只解析程式碼) | graphify extract . --code-only | 322 個程式檔,十幾秒;1,744 個節點、4,349 條邊、113 個社群 |
| 補 SQL 解析器後重跑 | uv tool install --force 'graphifyy[sql]' 再 extract | 只重解析 44 個 .sql;1,885 個節點、4,548 條邊、150 個社群 |
| 分群與命名 | graphify cluster-only . | 產出 GRAPH_REPORT.md,150 個社群各有英文名稱 |
| 匯出互動圖 | graphify export html、graphify export callflow-html | graph.html(1.9 MB,純前端,不用伺服器)與呼叫流程頁 |
整個流程在 NUC 上加起來不到兩分鐘,其中最久的是分群命名那一步。
畫出來的圖準不準
- 神節點(連線最多):第一名是後台的資料庫連線函式 conn(),98 條邊;第二名是前端的 sql 模板,91 條;第四名是會員登入 currentMember(),55 條。和我們自己對這個站的理解一致:後台每支程式都先連資料庫,前端每個需要登入的頁面都先問一次會員身分。
- 社群命名:150 個社群的名字如 Video Production、Article Quality Gates、LinkedIn Auto Posting、Auth Login Flow,對照原始碼大多說得通;少數小社群被併成「Misc」類。
- path:問「文章頁到資料庫怎麼連」,答兩步:文章頁 import 了 sql 模板。正確。
- affected:問「改了 currentMember() 會動到誰」,列出 29 個呼叫它的位置(帳號頁、留言、按讚、實驗室 API 等)。我們抽查帳號頁、留言 API、實驗室頁,呼叫都確實存在。
- query:用英文問「文章怎麼發到網站上」,它回 141 個相關節點(預設只顯示 84 個,超過 token 預算會截斷)。這不是答案,是把相關程式碼圈出來給助手讀。
互動圖裡每條邊都標 EXTRACTED 或 INFERRED;本站這張圖 99% 是 EXTRACTED,INFERRED 只有 47 條,平均信心 0.85。
踩到的兩個坑
1. SQL 檔整批被跳過。 第一次 extract 的警告寫著 44 個 .sql 檔「沒有貢獻任何節點」,因為 tree_sitter_sql 沒裝;要用 graphifyy[sql] 這個 extra 重裝。這個站的資料表定義全在 .sql,少了它圖就少一塊。
2. 命名那一步會用掉你的 Claude 額度。 --code-only 只產 graph.json,沒有圖也沒有報告;要再跑 cluster-only。這一步要替社群取名字,它找不到 API key 時,會直接呼叫機器上已登入的 claude 指令(claude -p)來命名,本次用掉 71,140 個輸入 token、1,976 個輸出 token。不想花這個額度,加 --no-label,或設 GRAPHIFY_BACKEND=none。
另外 graphify tree 產出的 GRAPH_TREE.html 在我們的瀏覽器裡打開是空白的,沒有深究。
結論
程式碼這部分真的做到了它說的:不用模型、不上傳、十幾秒。對一個自己寫的專案,它分出來的群和腦中的結構大致吻合;對不熟的專案,這張圖會比 README 更快告訴你從哪裡下手。要圖和報告得多跑兩步、SQL 要另外裝、命名那步會用額度,這三件事先知道就不會卡住。
測試環境
- Intel NUC 15、Ubuntu、uv 0.13
- graphify 0.9.94,2026-10-23 測
- 受測專案:本站原始碼,git 追蹤 439 個檔(Python 101、TypeScript/TSX 121、SQL 44,其餘為設定與腳本)
出處
- GitHub:Graphify-Labs/graphify(133,124 星,2026-10-23 查)
- 文件:docs.graphify.com(CLI reference、Exports、How Graphify works)
這篇對你有用嗎?
登入會員後可以按反應與留言。登入
留言 0
- 還沒有留言。
留言公開顯示暱稱,不顯示你的真實姓名與信箱。含多個連結或疑似廣告的留言會先經編輯確認;檢舉達 3 次的留言會自動隱藏。隱私政策
發現錯誤?
回報會進入待處理清單;核實後更正,並在文中註記更正紀錄。