概述
Graphify v0.9.102 於 2026-11-03 發布。官方 release notes 的定位是:
“A large correctness, performance and workflow release spanning the extractors, the query layer, incremental update, the hooks, the skill runbook and install.”
也就是說,這是一個橫跨抽取器(extractors)、查詢層(query layer)、增量更新(incremental update)、hooks、skill runbook 與安裝(install)的大型正確性、效能與工作流版本。本課逐項對應 release notes 原文;上游沒有細節的行為,這裡也不推測。
多語言呼叫解析修正(call-resolution, extractors)
Go:receiver 型別與 import 綁定
Release notes 原文:「same-file member calls resolve through the receiver’s type; cross-package pkg.T receivers bind only via the file’s import; interface method calls dispatch to implicit implementers (#4966, #4853, #4934).」
三件事:同檔成員呼叫(member call)改依 receiver 的型別解析;跨 package 的 pkg.T receiver 只能經檔案本身的 import 綁定;interface method call 會分派(dispatch)到 implicit implementer。
Rust:模組限定呼叫與巨集引數內呼叫
Release notes 原文:「module-qualified calls (crate::b::helper()) resolve cross-file; calls inside expression-macro arguments are linked (#4944, #4945).」
模組限定呼叫(module-qualified call)如 crate::b::helper() 可跨檔解析;寫在 expression macro 引數內的呼叫會被連結(linked)。
Kotlin 與 Python:重載、init 區塊、singleton 與裸呼叫
- Kotlin(#4956):「overloaded and
init {}-block calls resolve; unreachable external-inherited calls are dropped.」重載(overloaded)呼叫與init {}區塊內的呼叫可解析;不可達的 external-inherited 呼叫改為丟棄(dropped)。 - Python(#4972、#4933):「a module-level singleton’s member calls resolve through its type; a bare method call no longer self-binds.」module-level singleton 的成員呼叫依其型別解析;裸 method 呼叫不再自綁(self-bind)。
JS/TS:CommonJS extends、標註半解析與 default export
Release notes 原文:「class extends through a CommonJS require resolves; a typed tagged template and an import("mod").T<X> annotation no longer half-parse or mint a false dynamic_import edge; default-exported object methods resolve (#4700, #4976, #4967).」
經 CommonJS require 的 class extends 可解析;typed tagged template 與 import("mod").T<X> 標註不再半解析(half-parse)、也不再鑄造假的 dynamic_import edge;default-exported object methods 可解析。
Solidity 與 C++:相對 import 與 receiver 型別
- Solidity(#4985):「
../imports resolve to the real file.」../相對 import 會解析到真實檔案。 - C++(#4946、#4920、#4921、#4951):「receiver typing from params/fields, split-header owner binding, local-callable suppression, type-alias exact-spelling.」receiver 型別推導來源擴及 params/fields、split-header 的 owner binding、區域可呼叫值(local-callable)抑制、以及型別別名(type-alias)依精確拼寫(exact-spelling)綁定。
查詢(query):排序權重與 file-first 回答
Release notes 原文:「Source nodes rank above tests and docs (a soft weight, not exclusion), and answers are file-first (#4982).」
查詢結果中,source nodes 的排序高於 tests 與 docs。注意這是 soft weight(軟性權重),不是排除(exclusion)——tests/docs 仍會出現,只是排得比較後面。回答也改為 file-first(以檔案為優先)。
Release notes 原文:「graphify query reads query_budget/query_depth from .graphifyrc and gains a --depth flag (#4760).」
graphify query 現在會從 .graphifyrc 讀取 query_budget 與 query_depth 設定,並新增 --depth 旗標(flag)。
增量更新(incremental update)與 watch
Release notes 原文:「graphify update re-extracts only the files whose content changed, with a graph identical to a full rebuild; a contended incremental request is recorded instead of dropped (#4800, #4801, #4802).」
graphify update 只對內容變更的檔案重新抽取(re-extract),且產生的 graph 與完整重建(full rebuild)完全相同。當增量請求發生競爭(contended)時,請求會被記錄(recorded)而非直接丟棄(dropped)。
建置與快取(build / cache)
Release notes 原文:「The write guard no longer counts intentional ghost folds or dedup folds as dropped nodes; independently-sourced semantic evidence survives a fold; cache keys are case-preserving (#4957, #4952, #4927, #4950, #4937).」
三件事:write guard 不再把刻意的 ghost folds 或 dedup folds 計為 dropped nodes;獨立來源(independently-sourced)的語意證據(semantic evidence)在折疊(fold)後仍倖存;快取鍵(cache key)保留書寫時的大小寫(case-preserving)。
Hooks
Release notes 原文:「A file unchanged in content is not re-flagged stale by mtime; a dedicated Grep is held to the strict orientation gate; external searches emit no project hint (#4974, #4973, #4979).」
內容未變的檔案不再因 mtime 被重複標記為 stale(過期);專用的 Grep 受 strict orientation gate 約束;外部搜尋(external searches)不再發出 project hint。
效能(performance)
Release notes 原文:「Lower peak memory in load, resolution and extraction, and a faster cross-file repoint — all with identical output (#4960, #4958, #4959, #4981).」
load、resolution 與 extraction 的尖峰記憶體(peak memory)下降,跨檔 repoint 更快——而且輸出與之前完全相同(identical output),是純效能改進、不改行為。
Skill 與安裝(skill / install)
Release notes 原文:「The --update runbook re-queues partly-read docs instead of stamping them done; Step 4 threads --force; a hub-bypass report is added; uninstall removes the global skill registration (#4816, #4805, #4704, #4975).」
--update runbook 對僅部分讀取(partly-read)的 docs 改為重新排入佇列(re-queues),而不是蓋章標記為完成;Step 4 會傳遞(threads)--force;新增 hub-bypass report;uninstall 會移除全域 skill registration。
AST cache schema bump 至 37
Release notes 原文:「The AST cache schema is bumped to 37; warm caches re-run the affected extractions.」
AST cache schema 版號從 v0.9.101 的 36 升至 37;已有 warm cache 的使用者,受影響的抽取(extractions)會自動重跑。release notes 只說會重跑受影響的抽取,未提供重跑範圍或耗時數據,這裡不做推估。
自我測驗
v0.9.102 中,查詢結果把 source nodes 排在 tests 與 docs 之上,這代表 tests/docs 會被排除嗎?
💡 想先看個提示?
注意括號裡的「a soft weight, not exclusion」。
v0.9.102 的 `graphify update` 增量更新,會重抽哪些檔案?
💡 想先看個提示?
兩個關鍵詞:only the files whose content changed、identical to a full rebuild。
升級到 v0.9.102 後,AST cache schema 的變化與影響是?
💡 想先看個提示?
v0.9.101 是 schema 36,本版往上加一。
動手檢查清單
升級 v0.9.102:動手檢查清單
逐項勾選,確認你已完成升級必要的步驟(進度會保存在此瀏覽器)