Theme / v0.9.56

Graphify

Codebase 知識圖譜

指令詳解

graphify query 指令詳解

用自然語言問 graphify 出圖譜中的子圖,不需寫 Cypher

指令用途

graphify query "<自然語言問題>" 對一個已建好的 graphify 圖譜(graphify-out/graph.json)執行自然語言查詢。graphify 為你的問題計算 BFS seeds(找出最相關的關鍵字命中),然後回傳一個子圖(subgraph)含相關節點與邊。

📌 與傳統圖譜資料庫的差異:你不需要寫 Cypher 或 GraphQL;只要打中文 / 英文的問題,graphify 會自動挑關鍵字(過濾 stop-words)→ BFS 找子圖。


基本用法

graphify query "認證流程怎麼運作的?"

在 AI 助理內則是:

graphify query "auth 在哪裡用到的?"

預期輸出

Showing 8 of 8 nodes (ranked by relevance)

Node: login
  Source: auth.py:1
  Community: 1

Node: verify_password
  Source: auth.py:6
  ...

Edges (5):
  login -[calls]-> verify_password  [EXTRACTED]
  login -[calls]-> create_session   [EXTRACTED]
  create_session -[imports]-> Session [INFERRED]
  ...

每個節點都標 Source(檔案與行號)與 Community(Leiden 分群),每條邊都標 relation 與信心標籤 EXTRACTED / INFERRED


常用選項

選項 用途 範例
--dfs 用 DFS 走法(深度優先)而非 BFS graphify query "..." --dfs
--budget N 限制 token / 節點預算(大圖友善) graphify query "..." --budget 1500
--graph PATH 指定 graph.json 位置(預設 graphify-out/graph.json graphify query "..." --graph other/graph.json

子圖 vs 完整圖

graphify query 不會一次倒整份 JSON 給助理;它只回傳「relevance-ranked subgraph」,所以助理拿到的是精挑過的相關片段。這對降低 token 消耗非常關鍵。

為什麼要 budget 控制?

對「god node」(degree 極高的節點)一次倒出全部連結可能塞爆 context window。--budget 可以控制輸出大小。


範例對話

讓 AI 助理示範一次完整查詢:

使用者:這個專案的認證邏輯寫在哪?

助理:我先查 graphify 圖譜。
> graphify query "認證在哪裡實作?"

圖譜命中 4 個節點:
- login (auth.py:1) — 主登入入口
- verify_password (auth.py:6) — 密碼驗證
- create_session (session.py:14) — session 建立
- Session (session.py:1) — session 類別

邊關係:
login calls verify_password   [EXTRACTED]
login calls create_session    [EXTRACTED]
create_session instantiates Session [INFERRED]

→ 認證流程在 `auth.py` 的 login() 與 verify_password() 裡;session token 由 `session.py` 的 generate_token() 產生。

內部連結與外部參考


下一步

  1. graphify path-explain 指令詳解
  2. graphify prs 指令詳解
  3. 快速入門工作流

v0.9.56:Leaf node 查 callers 不再掉資料

MCP query_graph 在 v0.9.56 修正一個很典型的圖譜查詢問題:如果 seed node 只有 incoming edges,例如「被很多人呼叫、但自己不再呼叫其他函式」的 leaf function,舊行為可能無法往 caller 方向擴張。新版對這種 seed 會做 undirected traversal,與 CLI 行為一致。

因此這類問題現在更可靠:

  • 「誰呼叫 SaveResult()?」
  • 「這個 DTO 被哪些 handler 使用?」
  • 「這個 leaf validator 的上游路徑是什麼?」

另外,query scorer 從 v0.9.54 起把 rationale 命中視為獨立 ranking tier;只有設計理由文字命中的節點,不再與一般 source-path match 混在一起。