跳到主內容

Theme / v0.9.103

Graphify

Codebase 知識圖譜

基礎觀念

v0.9.93~v0.9.94:引用解析到真實宣告與 Ingestion 安全

🟡 中階|掌握 Graphify v0.9.93(22 個社群 PR:Kotlin type alias、C# delegate、Swift macro、Dart typedef、Python module function、Rust sibling-module use 等引用解析到真實宣告)與 v0.9.94(19 個社群 PR:ingestion 安全防護,畸形 URL 在第一次 fetch 與每個 redirect 前被拒);兩版 AST cache schema bump,升級後首次建置重新抽取。含互動測驗與檢查清單。

概述

本課涵蓋兩個 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" 的 .h header 改送到 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)、.graphifyrc BOM 修復(#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);CommonJS const 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_to edges(#4635、#4649);GO batch 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 Host header 修復 421(#4656);--help 列出完整且防漂移的 --platform 清單(#4655)。
隨堂測驗

v0.9.94 會在哪些時間點拒絕帶 user:pass@ 憑證的 URL?

💡 想先看個提示?

注意官方把「on every redirect」也寫進定位句。

動手升級檢查清單

升級 v0.9.94:動手檢查清單

逐項勾選,確認你已完成升級必要的步驟(進度會保存在此瀏覽器)

0 / 5

延伸閱讀