概述
本課涵蓋兩個 release:v0.9.93(2026-10-20 發布,22 個社群 PR)與 v0.9.94(2026-10-22 發布,19 個社群 PR)。v0.9.93 的主軸是引用解析(reference resolution)——過去只會鑄出無來源 stub(sourceless stub)的多種語言宣告引用,現在解析到真實宣告;v0.9.94 的主軸是 ingestion 安全防護——畸形或帶憑證的 URL 在請求送出前就被拒絕。
v0.9.93:引用解析到真實宣告
v0.9.93 的定位原文:「a reference to a Kotlin type alias, C# delegate, Swift macro, Dart typedef, Python module function or Rust sibling-module use now resolves to its real declaration instead of minting a sourceless stub」——六類引用不再產生無來源的 stub 節點:
| 語言 | 修正 | PR |
|---|---|---|
| Kotlin | typealias 宣告被抽取,以 alias 型別標註的 field/parameter 解析到宣告 |
#4553、#4557 |
| C# | delegate 宣告被抽取,references 解析到它;內建 Func<>/Action<> 仍維持 external |
#4552、#4556 |
| Swift | macro 宣告被抽取,獨立的 #macro(...) 呼叫解析到宣告;未知/標準庫 macro 維持 unresolved |
#4551、#4555 |
| Dart | typedef(含舊式 typedef R name(args))抽取為 type alias,不再變成 bogus variable |
#4582 |
| Python | module.func() 解析到模組下精確名為 func 的 child,同 key 兄弟不再讓 lookup 歧義而丟邊 |
#4577 |
| Rust | 根於 sibling mod 的 use(如 use item::Thing;)抵達宣告;external 的 use serde::... 不劫持同名 local type |
#4564、#4567 |
其他抽取與管線修復
- GPU qualifiers(#4550、#4554):
.metal/.cu檔中的 Metal/CUDA 位址/執行空間 qualifiers(kernel、device、constant、__global__、__device__等)不再鑄出無來源 god nodes;kernel function 仍正常抽取、<<<...>>>launch 仍解析。 extern "C"header(#4526):含extern "C"的.hheader 改送到 C++ extractor,C API header 不再抽出零個符號。- 無副檔名 script(#4535):shebang 帶版本化直譯器(
#!/usr/bin/env python3.11、ruby3.2等)的 script 正確分類語言。 - Obsidian wikilink(#4559):目標以 scan root 自己的資料夾名開頭的 vault 相對路徑
[[wikilink]]解析到真實頁面而非 ghost node。 - Skill 半讀檔恢復(#3987、#2225):subagent 只讀了一部分的長檔不再永久靜默損失——skill 抽取路徑上每個 chunk 自行回報涵蓋行數,涵蓋不足的檔案寫入
.graphify_partial.txt、標記為 partial,下一次--update重新派發並以 replace-on-re-extract 換成完整節點集。 - Credential 脫敏(#4566):變成 rationale label 的註解/文件字串中的 credential 形狀文字(API keys、tokens、private-key headers、
user:pass@URLs)在進入 graph.json、viz 與 exports 前被遮蔽;git SHA 與 UUID 等一般識別字保留原樣。 - CLI 與查詢:
--version/--help不再改寫或備份 skill 檔(#4545);裸名撞多節點時以 candidates 列表拒絕並回傳 ambiguous exit code(#4511、#4517);explain/path 中兩個不同 repo 的同路徑檔案保持可區分(#4512)。 - 其他:confidence 折疊(#4529、#4531)、truncated-reply 標籤 JSON 解碼(#4537)、
.graphifyrcBOM 修復(#4538)、GraphML multigraph 匯出修復(#4536)、PR 工具的斜線 branch 與 legacy CI status 修復(#4534、#4533)、PDF 讀取失敗的一次性警告(#4527)。
v0.9.94:Ingestion 安全防護
v0.9.94 的核心是 ingestion 的安全把關,官方原文:
a fetched URL with no hostname, with a malformed or zero port, or with embedded
user:pass@credentials is now rejected before the request leaves, on the first fetch and on every redirect
validate_url 在請求送出之前、以及每一次 redirect 之前拒絕三類 URL:
- 無 hostname:如
http:///path。 - 畸形或零 port:非數字、超出範圍、或為 0 的 port。
- 內嵌憑證:URL 中帶
user:pass@credentials。
畸形或帶憑證的 URL 不再被 fetch 或寫入圖譜;path/query 中正常的 @ 與合法的高 port 仍通過(#4643、#4644、#4645)。text capture 也改用 lstat——dangling symlink 視為已占用、capture 改道,不再沿連結寫到 corpus 之外(#4657)。
v0.9.94 其他修復
- 抽取與解析:Maven POM 只貢獻自己的
<dependencies>,<dependencyManagement>不再發出 dependency edges(#4596);JS/TS untyped receiver 的成員呼叫延後到 receiver-typed 解析(#4598、#4605);CommonJSconst X = require('./m')不再鑄出遮蔽 exported class 的 node(#4621、#4634);Objective-C category node ids 維持 repo 相對路徑(#4666、#4642)。 - SQL 專題:T-SQL bracketed identifiers 去括號、stored procedure 發出
reads_from/writes_toedges(#4635、#4649);GObatch separator 結束語句(#4651、#4652);先引用後CREATE TABLE的表折疊到真實定義、不同 schema 的同名表保持可區分(#4653、#4654)。 - 查詢與工具:markdown 裸方法名只在 owning class 被引用時連結(#4609、#4617);MCP
get_node/get_neighbors與explain對 substring near-miss 給候選建議而非回傳無關節點(#3917、#4618);cross-repo call edge 指向真正的 call site(#4668、#4669)。 - 其他:Objective-C 跨 header/impl 的成員呼叫解析(#4673、#4674);增量建置不再重新排入 extractor 因設計而拒絕的檔案(#2543、#4672);Codex hook command 引號包住含空格路徑(#4662);IPv6 bracketed
Hostheader 修復 421(#4656);--help列出完整且防漂移的--platform清單(#4655)。
v0.9.94 會在哪些時間點拒絕帶 user:pass@ 憑證的 URL?
💡 想先看個提示?
注意官方把「on every redirect」也寫進定位句。
動手升級檢查清單
升級 v0.9.94:動手檢查清單
逐項勾選,確認你已完成升級必要的步驟(進度會保存在此瀏覽器)
延伸閱讀
- 官方 v0.9.93 release notes
- 官方 v0.9.94 release notes
- 前一課:
v0992-community-fixes-solidity-c3——Solidity C3 linearization 與 23 個社群修正