Theme / v0.9.56

Graphify

Codebase 知識圖譜

基礎觀念

v0.9.44 → v0.9.51:八個 patch 的提取修正與跨 repo 合併

涵蓋 v0.9.44 至 v0.9.51 八個 patch:提取與語言支援修正、merge-graphs 跨 repo 能力,以及增量重建與匯出的穩定性改進。

八個 patch 一次升級

v0.9.44 至 v0.9.51 共八個 patch,主軸有三條:提取正確性(語言支援與節點識別)、graphify merge-graphs 的跨 repo 能力,以及增量重建與匯出的穩定性。都建議在下次 graphify update 時一併升級。

提取與語言支援修正

v0.9.44 修正 JS/TS inline 與巢狀 function expression:參數與局部變數會 shadow 同名 callable,不再製造假的 indirect_call 邊。v0.9.45 之後,Go 的匯出 / 未匯出符號僅大小寫之別(Run vs run)不再被 collapse 成同一 node;v0.9.50 讓 Ruby 以 ! / ? / = 結尾的方法保持各自 node id(save vs save!)。

語言側還有:Java annotation 對型別發出 references 邊(v0.9.46,含 class-literal 參數);C# property 成為 class member node、SQL BEGIN / COMMIT 區塊內的 CREATE TABLE 可提取(v0.9.49);TS/JS 的 new Foo() 對被建構類別發出 calls 邊(v0.9.51)。Markdown node 也新增 node_kind(page vs heading)與 frontmatter 屬性解析。

merge-graphs 跨 repo 能力

graphify merge-graphs 在 v0.9.49 對跨 repo 共享型別(同 fully-qualified namespace + name)發出 same_type_as 邊,多 repo 分析終於能看見「這兩個 repo 用的是同一個型別」。v0.9.50 接著把各輸入的社群(community)id 依 offset 錯開,不再跨 repo 融合 community 0,原 id 保留在 local_community 屬性,跨 repo 的社群比對更可靠。

穩定性與效能

團隊協作方面:v0.9.44 的 graphify hook install 會讀 committed 的 .graphifyrcviz_node_limit)烘焙進 git hooks,hook 重生後仍有效、env var 仍可覆寫;git-tracked 但又符合 .gitignore 的檔案不再被丟出語料(corpus)。graphify install 也支援 $CLAUDE_CONFIG_DIR(Claude always-on)。

增量重建與查詢:graphify query_ 當 token 分隔符,user_service 可命中 user-service(v0.9.46);post-checkout hook 在 HEAD 未變時跳過重建,git checkout -b 不再觸發全圖重建;.graphify_root 指向子資料夾時增量重建不再整圖崩潰(v0.9.45)。

效能與匯出:慢檔的 chunk timeout 改為二分切分(bisection),不再拖垮整個 chunk(v0.9.47);cache 以 symlink 身分 keying,alias 與 target 各自獨立;GraphML / Obsidian exporter 只清除該格式禁止的控制字元,不再中止整個 export,並新增 extract --no-dedup;大圖的 graphify update / label / cluster-only 不再缺 graph.html,失敗時保留舊檔(v0.9.48)。

v0.9.51 把資料完整性再往上推:incomplete-build shrink guard 在 chunk「hollow / 不可解析 / 缺 files」時保持武裝,靜默損失內容的 run 不會以更小的圖覆寫既有 graph,需要強制時用 --allow-partialextract --force --code-only 真正全量重掃,不再留下過期的 import / alias 解析。Leiden 社群偵測也對無向邊端點 canonicalize,跨機器的社群指派不再漂移。

來源:Graphify releases