Graphify 教學手冊

版本:v0.3.17(2026-04-08)
適用對象:資深工程師、架構師、DevOps 團隊
定位:企業級知識圖譜建置與維運實戰手冊
授權:MIT License


目錄


第 1 章:Graphify 概述

1.1 什麼是 Graphify

Graphify 是由 AI 工程師 Safi Shamsi 開發的開源工具(GitHub 星數 13.8k+),能將任何資料夾(程式碼、PDF、圖片、Markdown)自動轉化為可查詢的知識圖譜(Knowledge Graph)

其核心靈感來自 Tesla 前 AI 主管 Andrej Karpathy 的 /raw 資料夾概念——將散亂的原始資料結構化,以圖譜形式呈現實體與關係,讓 AI 助手可以「看到結構」而非「暴力搜尋」。

核心價值主張

  • 完全多模態:支援 20 種程式語言 + PDF + 圖片 + Markdown
  • Token 節省 71.5 倍(相較直接讀取原始檔案)
  • 完全本地運行,無資料外洩風險
  • 100% Python,MIT 授權

1.2 工具定位與比較

比較項目傳統 IDE 搜尋GitHub Code SearchRAG(向量搜尋)Graphify
分析粒度關鍵字匹配語法層級搜尋語義相似度結構化圖譜 + 語義
跨檔案關係有限模糊明確的 EXTRACTED / INFERRED 邊
多模態支援僅程式碼需額外處理原生支援 Code + PDF + Image
Token 效率N/AN/A高消耗71.5x 節省
離線運行視實作✓ 完全本地
置信度追蹤✓ EXTRACTED / INFERRED / AMBIGUOUS
持久性雲端索引Vector DBJSON + HTML + Obsidian

1.3 使用情境

情境說明Graphify 價值
舊系統逆向工程10 年以上系統,文件缺失自動建立架構圖、找出 God Nodes
系統理解 / Onboarding新人快速掌握大型專案結構GRAPH_REPORT.md + Wiki 導航
微服務架構盤點跨服務依賴關係不明跨 Repo 圖譜、影響分析
技術債評估識別高耦合節點God Nodes + 社區偵測
知識管理論文 + 程式碼關聯多模態語義抽取
AI 開發輔助提升 Copilot / Claude 效率Always-On Hook 引導 AI 導航

1.4 與 AI Agent 的關係

Graphify 本質上是一個**「AI Coding Assistant Skill(技能)」**,設計為 AI 編程助手的擴充能力:

graph LR
    A[開發者] -->|提問| B[AI Coding Assistant]
    B -->|/graphify 指令| C[Graphify Skill]
    C -->|AST 解析| D[Tree-sitter]
    C -->|語義抽取| E[Claude Subagents]
    D --> F[Knowledge Graph]
    E --> F
    F -->|結構化回答| B
    B -->|精準回答| A

支援平台

平台安裝指令觸發方式
Claude Codegraphify install/graphify .
Codexgraphify install --platform codex$graphify .
OpenCodegraphify install --platform opencode/graphify .
OpenClawgraphify install --platform claw/graphify .
Factory Droidgraphify install --platform droid/graphify .
Traegraphify install --platform trae/graphify .
Trae CNgraphify install --platform trae-cn/graphify .

1.5 核心特色摘要

特色說明
全自動建圖支援 20 種程式語言 + PDF + 圖片 + Office 文件
兩階段處理AST(零 Token)+ 語義抽取(Claude Subagents 並行)
置信度標籤EXTRACTED / INFERRED / AMBIGUOUS 三級分類
Leiden 社區偵測基於拓撲的社區偵測(非 embedding)
SHA256 快取增量更新,僅處理變更檔案
多格式匯出HTML / JSON / Obsidian / SVG / GraphML / Neo4j / Wiki
MCP Server標準 MCP stdio 伺服器,可與任何支援 MCP 的工具整合
Git Hookspost-commit / post-checkout 自動重建圖譜
Hyperedges群組關係連結 3+ 個節點(如所有實作同一介面的類別)
記憶回饋迴圈Q&A 結果儲存至 graphify-out/memory/--update 時自動提取
Token 基準測試每次 pipeline 自動計算 Token 節省比例

📌 實務建議:對於 50 個以上檔案的專案,Graphify 的 Token 節省效益最為顯著(71.5x+)。小型專案(< 10 檔案)的價值在於結構清晰度而非壓縮比。

1.6 Penpax 與生態系統發展

Graphify 定位為圖譜基礎層(Graph Layer)。官方團隊正基於 Graphify 構建 Penpax——一個裝置端數位分身(On-Device Digital Twin)

特性說明
連結範圍會議、瀏覽紀錄、檔案、電子郵件、程式碼
更新方式持續自動更新知識圖譜
隱私設計無雲端、不訓練使用者資料
基礎技術建構於 Graphify 知識圖譜之上
graph TB
    subgraph "Graphify 生態系統"
        GF[Graphify
知識圖譜引擎] PP[Penpax
裝置端數位分身] AI[AI Coding Assistants
Claude Code / Codex / Trae] end GF -->|圖譜層| PP GF -->|Skill 整合| AI PP -->|連結會議/郵件/程式碼| USR[使用者] AI -->|結構化導航| DEV[開發者]

📌 企業關注:Penpax 的「無雲端」設計可能符合金融業與政府機構的資料在地化需求。建議持續關注其 waitlist 與發布動態。


第 2 章:系統架構設計

2.1 整體架構圖

graph TB
    subgraph "輸入層"
        CODE[程式碼
20 種語言] DOC[文件
.md .txt .rst] OFFICE[Office
.docx .xlsx] PDF[論文
.pdf] IMG[圖片
.png .jpg .webp .gif] end subgraph "處理層" DETECT[detect.py
檔案收集與過濾] subgraph "提取引擎" AST[AST 解析
Tree-sitter
零 Token] SEM[語義抽取
Claude Subagents
並行處理] end VALIDATE[validate.py
Schema 驗證] BUILD[build.py
Graph 建構] CLUSTER[cluster.py
Leiden 社區偵測] ANALYZE[analyze.py
God Nodes / Surprises] end subgraph "輸出層" REPORT[GRAPH_REPORT.md
分析報告] HTML[graph.html
互動式圖譜] JSON[graph.json
持久化圖譜] OBSIDIAN[Obsidian Vault
Wikilinks] WIKI[Wiki
Agent 導航] EXPORT[SVG / GraphML / Neo4j] MCP[MCP Server
stdio] end subgraph "快取層" CACHE[cache.py
SHA256 語義快取] end CODE --> DETECT DOC --> DETECT OFFICE --> DETECT PDF --> DETECT IMG --> DETECT DETECT --> AST DETECT --> SEM AST --> VALIDATE SEM --> VALIDATE CACHE -.->|跳過未變更| SEM VALIDATE --> BUILD BUILD --> CLUSTER CLUSTER --> ANALYZE ANALYZE --> REPORT ANALYZE --> HTML ANALYZE --> JSON ANALYZE --> OBSIDIAN ANALYZE --> WIKI ANALYZE --> EXPORT JSON --> MCP

2.2 Pipeline 詳解

Graphify 的核心處理流程為 7 個純函數階段,無共享狀態:

detect() → extract() → build_graph() → cluster() → analyze() → report() → export()
flowchart LR
    A[detect
目錄掃描] --> B[extract
提取節點/邊] B --> C[build_graph
NetworkX圖] C --> D[cluster
Leiden社區] D --> E[analyze
分析結果] E --> F[report
GRAPH_REPORT] F --> G[export
多格式輸出] style A fill:#e1f5fe style B fill:#fff3e0 style C fill:#e8f5e9 style D fill:#fce4ec style E fill:#f3e5f5 style F fill:#fff8e1 style G fill:#e0f2f1

階段詳解

階段模組輸入輸出說明
1. detectdetect.py目錄路徑[Path] 過濾列表過濾 .graphifyignore、跳過 symlinks
2. extractextract.py檔案路徑{nodes, edges} dict程式碼走 AST,文件/圖片走 Claude
3. build_graphbuild.py提取結果列表nx.Graph合併所有提取,包含 hyperedges
4. clustercluster.pyNetworkX Graph帶 community 屬性的 GraphLeiden 社區偵測,大社區自動分裂
5. analyzeanalyze.pyGraph分析字典God Nodes、Surprising Connections、建議問題
6. reportreport.pyGraph + 分析GRAPH_REPORT.md人類可讀報告
7. exportexport.pyGraph + 輸出目錄多格式檔案HTML / JSON / Obsidian / SVG / Wiki 等

2.3 模組職責對照表

模組核心函數功能
detect.pycollect_files(root)目錄掃描 → 過濾後的檔案列表
extract.pyextract(path)檔案 → {nodes, edges}
build.pybuild_graph(extractions)提取列表 → NetworkX Graph
cluster.pycluster(G)Graph → 帶社區屬性的 Graph
analyze.pyanalyze(G)Graph → 分析結果字典
report.pyrender_report(G, analysis)Graph + 分析 → Markdown 報告
export.pyexport(G, out_dir, ...)Graph → 多格式輸出
ingest.pyingest(url, ...)URL → 本地檔案
cache.pycheck_semantic_cache()語義快取判斷(SHA256)
security.py驗證函數群URL / 路徑 / 標籤安全驗證
validate.pyvalidate_extraction(data)提取結果 Schema 驗證
serve.pystart_server(graph_path)Graph → MCP stdio 伺服器
watch.pywatch(root, flag_path)目錄監視 → 變更旗標
benchmark.pyrun_benchmark(graph_path)Token 節省基準測試

2.4 Graph 資料模型

每個提取器產出的標準 Schema:

{
  "nodes": [
    {
      "id": "unique_string",
      "label": "human readable name",
      "source_file": "path/to/file.java",
      "source_location": "L42",
      "file_type": "code|doc|paper|image|rationale"
    }
  ],
  "edges": [
    {
      "source": "id_a",
      "target": "id_b",
      "relation": "calls|imports|uses|inherits|implements|semantically_similar_to|rationale_for",
      "confidence": "EXTRACTED|INFERRED|AMBIGUOUS",
      "confidence_score": 0.85,
      "source_file": "path/to/file.java",
      "source_location": "L42"
    }
  ]
}

Schema 驗證validate.pybuild_graph() 消費提取結果前會強制驗證此 Schema,不符合規格的資料會被拒絕並拋出錯誤。

合法 file_typecodedocpaperimagerationale(v0.3.7+ 新增)。

特殊節點/邊類型

類型說明
rationale_for設計理由(從 # WHY:, # NOTE:, # HACK:, # IMPORTANT:, JavaDoc 提取)
semantically_similar_to語義相似(跨檔案概念連結,標記為 INFERRED)
calls函數/方法呼叫關係
imports匯入/引用關係
uses使用/依賴關係
inherits繼承關係
implements介面實作關係

Hyperedges(超邊)詳解

傳統圖譜僅支援兩兩配對的邊(pairwise edges),無法精確表達 3 個以上節點的群組關係。Graphify 的 Hyperedges 解決此問題:

場景Hyperedge 範例傳統邊的不足
介面實作所有實作 PaymentProcessor 介面的類別需要 N 條獨立的 implements 邊,失去「共同實作」語義
認證流程Auth flow 中的所有函數僅有線性呼叫鏈,無法表達整體流程群組
論文概念同一論文章節中的關聯概念概念間兩兩連結會產生 $\binom{n}{2}$ 條冗餘邊
{
  "hyperedges": [
    {
      "nodes": ["StripeProcessor", "PayPalProcessor", "BankTransferProcessor"],
      "relation": "implements",
      "target": "PaymentProcessor",
      "confidence": "EXTRACTED",
      "source_file": "src/main/java/com/payment/"
    }
  ]
}

📌 實務建議:在 Neo4j 中,Hyperedges 可透過中間節點(Intermediate Node)模式表達,便於進行群組查詢與影響分析。

2.5 Confidence Labels(信賴標籤)

標籤信賴度說明範例
EXTRACTED1.0原始碼中明確存在import 語句、直接函數呼叫
INFERRED0.0 - 1.0合理推論Call-graph 二次掃描、上下文共現
AMBIGUOUSN/A不確定,需人工審查模糊的跨模組依賴

📌 企業實務:在銀行系統分析中,建議設定 CI 管線告警:當 AMBIGUOUS 邊佔比超過 15% 時,應安排人工審查。

2.6 與企業系統整合架構

graph TB
    subgraph "版本控制"
        GH[GitHub / GitLab]
    end

    subgraph "CI/CD Pipeline"
        CI[GitHub Actions / Jenkins]
        HOOK[Git Hooks
post-commit] end subgraph "Graphify" GF[Graphify CLI] GR[graph.json] REP[GRAPH_REPORT.md] WIKI_OUT[Wiki 文件] end subgraph "知識平台" OBS[Obsidian] NEO[Neo4j] CONF[Confluence] end subgraph "AI Agent 系統" CLAUDE[Claude Code] COPILOT[GitHub Copilot] MCP_S[MCP Server] end GH -->|push| CI CI -->|觸發| GF HOOK -->|commit| GF GF --> GR GF --> REP GF --> WIKI_OUT GR --> MCP_S GR --> NEO REP --> OBS WIKI_OUT --> CONF MCP_S --> CLAUDE REP --> COPILOT

2.7 技術棧

元件技術說明
圖譜引擎NetworkX純 Python 圖譜庫
社區偵測Leiden(graspologic)基於拓撲的社區偵測
AST 解析tree-sitter ≥ 0.2120 語言支援
語義抽取Claude / GPT-4根據平台自動選擇
視覺化vis.js互動式 HTML 圖譜
安全模組security.pyURL / 路徑 / 標籤驗證
伺服器MCP stdio無網路監聽,標準輸入輸出

📌 注意:不需要 Neo4j 伺服器即可運行。Neo4j 僅為可選的匯出目標。


第 3 章:安裝與環境建置

3.1 環境需求

項目最低需求建議
Python3.10+3.12
AI 平台Claude Code / Codex / OpenCode / OpenClaw / TraeClaude Code(官方主力支援)
作業系統Windows / Linux / macOS全平台支援
磁碟空間視專案大小建議 ≥ 1 GB(含快取)
記憶體4 GB≥ 8 GB(大型專案)

3.2 安裝步驟(各平台)

Windows

# 1. 確認 Python 版本
python --version   # 需 3.10+

# 2. 安裝 Graphify(PyPI 名稱暫為 graphifyy)
pip install graphifyy

# 3. 安裝 Skill(自動偵測 Windows)
graphify install

# 4. 驗證安裝
graphify --version

Linux / macOS

# 1. 確認 Python 版本
python3 --version   # 需 3.10+

# 2. 安裝 Graphify
pip install graphifyy

# 3. 安裝 Skill
graphify install

# 4. 驗證安裝
graphify --version

手動安裝(curl)

# 適用於無法使用 pip 的環境
curl -sSL https://raw.githubusercontent.com/safishamsi/graphify/v3/install.sh | bash

Office 文件支援(選用)

# 支援 .docx / .xlsx 轉換
pip install graphifyy[office]

3.3 多平台支援

平台安裝指令特殊設定
Claude Code(Linux/Mac)graphify install
Claude Code(Windows)graphify installgraphify install --platform windows自動偵測
Codexgraphify install --platform codex需設定 multi_agent = true(見下方)
OpenCodegraphify install --platform opencode
OpenClawgraphify install --platform claw使用循序提取(無並行支援)
Factory Droidgraphify install --platform droid使用 Task tool 進行並行
Traegraphify install --platform trae不支援 PreToolUse hooks
Trae CNgraphify install --platform trae-cn不支援 PreToolUse hooks

Codex 額外設定

# ~/.codex/config.toml
[features]
multi_agent = true   # 啟用並行提取

3.4 Docker 部署方式(企業推薦)

# Dockerfile
FROM python:3.12-slim

# 安裝系統依賴
RUN apt-get update && apt-get install -y --no-install-recommends \
    git \
    && rm -rf /var/lib/apt/lists/*

# 安裝 Graphify
RUN pip install --no-cache-dir graphifyy

# 設定工作目錄
WORKDIR /workspace

# 預設指令
ENTRYPOINT ["graphify"]
CMD ["--help"]
# 建置 Docker Image
docker build -t graphify:latest .

# 執行分析(掛載本地專案目錄)
docker run --rm \
  -v /path/to/project:/workspace \
  -v /path/to/output:/workspace/graphify-out \
  graphify:latest /workspace --no-viz

Docker Compose(企業 CI 整合)

# docker-compose.yml
version: '3.8'
services:
  graphify:
    build: .
    volumes:
      - ./src:/workspace/src:ro
      - ./graphify-out:/workspace/graphify-out
    command: ["/workspace/src", "--no-viz"]
    environment:
      - PYTHONUNBUFFERED=1

3.5 安全性設定

Graphify 的安全機制為預設啟用,無需額外設定:

設定項目說明
本地模式圖譜分析期間不進行任何網路呼叫
API Key使用所屬 AI 平台的 API Key(不儲存、不傳輸)
無遙測無 telemetry、usage tracking、analytics
路徑保護所有輸出限制在 graphify-out/ 目錄內
URL 驗證僅允許 http/https,封鎖私有 IP、元資料端點

3.6 常見安裝問題排除

問題原因解法
ModuleNotFoundErrorpipx 安裝後 .graphify_python 被清理升級至 v0.3.16+
Windows UnicodeEncodeError箭頭字元編碼問題升級至 v0.3.10+(已用 -> 替代)
PowerShell ANSI 亂碼graspologic ANSI escape codes升級至 v0.3.15+
tree-sitter AST 為空tree-sitter 版本過低確保 tree-sitter >= 0.21(v0.3.17 已固定)
.jsx 檔案未偵測舊版未註冊 JSX升級至 v0.3.16+

📌 企業建議:使用 Docker 部署可避免大多數環境相容性問題,並確保團隊一致的執行環境。


第 4 章:基本使用教學

4.1 初始化專案

在專案根目錄開啟 AI Coding Assistant(以 Claude Code 為例):

# 進入專案目錄
cd /path/to/your-project

# 在 Claude Code 中輸入
/graphify .

首次執行會:

  1. 掃描目錄中所有支援的檔案
  2. 使用 Tree-sitter 進行 AST 解析(程式碼,零 Token)
  3. 使用 Claude Subagents 進行語義抽取(文件/圖片)
  4. 建構 NetworkX 圖譜
  5. 執行 Leiden 社區偵測
  6. 產出報告與匯出檔案

4.2 建立知識圖譜

# 基本使用 - 分析當前目錄
/graphify .

# 分析指定資料夾
/graphify ./src

# 深度模式 - 更積極的 INFERRED 邊提取
/graphify ./src --mode deep

# 僅重新聚類(已有圖譜時)
/graphify ./src --cluster-only

# 不產生 HTML 視覺化(CI 環境推薦)
/graphify ./src --no-viz

執行結果目錄結構

graphify-out/
├── graph.html          # 互動式圖譜(vis.js)- 點擊節點、搜尋、社區篩選
├── GRAPH_REPORT.md     # God Nodes、Surprising Connections、建議問題
├── graph.json          # 持久化圖譜 - 數週後仍可查詢
├── obsidian/           # Obsidian Vault(--obsidian 時產出)
├── wiki/               # Wikipedia 風格文章(--wiki 時產出)
├── memory/             # Q&A 記憶回饋(自動累積)
└── cache/              # SHA256 快取 - 增量更新僅處理變更檔案

graph.html 互動功能

graph.html 使用 vis.js 渲染,提供以下互動能力:

功能說明
節點大小依照 degree(連接數)自動調整,God Nodes 最大
點擊檢視點擊任何節點開啟詳情面板,顯示屬性與來源檔案
鄰居導航詳情面板中的鄰居節點可點擊跳轉
搜尋框輸入關鍵字即時搜尋節點
社區篩選按 Leiden 社區過濾,專注查看特定模組群組
物理聚類基於力導向圖的物理模擬,相關節點自動靠攏
色彩編碼不同社區以不同顏色區分

支援檔案類型完整列表

類別副檔名處理方式
程式碼.py .ts .js .jsx .tsx .go .rs .java .c .cpp .rb .cs .kt .scala .php .swift .lua .zig .ps1 .ex .exs .m .mm .jlAST(Tree-sitter)+ call-graph + docstring / comment rationale
文件.md .txt .rst概念 + 關係 + 設計理由(Claude 提取)
Office.docx .xlsx轉為 Markdown 後 Claude 提取(需 pip install graphifyy[office]
論文.pdf引用挖掘 + 概念提取(pypdf,本地讀取)
圖片.png .jpg .webp .gifClaude Vision — 螢幕截圖、架構圖、任何語言

4.3 指令完整說明

核心指令

指令說明
/graphify .分析當前目錄
/graphify ./path分析指定資料夾
/graphify ./path --mode deep深度模式(更多 INFERRED 邊)
/graphify ./path --update增量更新(僅處理變更檔案)
/graphify ./path --cluster-only僅重新聚類
/graphify ./path --no-viz跳過 HTML 產生
/graphify ./path --watchWatch 模式(自動同步)

新增內容

指令說明
/graphify add <URL>擷取論文 / 推文並更新圖譜
/graphify add <URL> --author "Name"標記原作者
/graphify add <URL> --contributor "Name"標記貢獻者

查詢指令

指令說明
/graphify query "問題"BFS 查詢圖譜
/graphify query "問題" --dfsDFS 路徑追蹤
/graphify query "問題" --budget 1500限制 Token 預算
/graphify path "NodeA" "NodeB"查找兩節點間路徑
/graphify explain "NodeName"解釋特定節點

匯出指令

指令說明
/graphify ./path --obsidian產出 Obsidian Vault
/graphify ./path --obsidian --obsidian-dir ~/vaults/proj自訂 Obsidian 路徑
/graphify ./path --wiki產出 Agent 導航 Wiki
/graphify ./path --svg匯出 SVG
/graphify ./path --graphml匯出 GraphML(Gephi / yEd)
/graphify ./path --neo4j產生 Cypher 語句
/graphify ./path --neo4j-push bolt://localhost:7687直接推送至 Neo4j
/graphify ./path --mcp啟動 MCP stdio 伺服器

Git Hooks 管理

指令說明
graphify hook install安裝 post-commit / post-checkout hooks
graphify hook uninstall移除 hooks
graphify hook status檢查 hooks 狀態

Always-On 助手設定

指令說明
graphify claude installCLAUDE.md + PreToolUse hook
graphify claude uninstall移除 Claude 設定
graphify codex installAGENTS.md + PreToolUse hook
graphify opencode installAGENTS.md
graphify claw installAGENTS.md
graphify droid installAGENTS.md
graphify trae installAGENTS.md
graphify trae-cn installAGENTS.md

4.4 輸出內容說明

GRAPH_REPORT.md 包含

區段說明
God Nodes最高度數(degree)的概念節點 —— 系統的核心連接點
Surprising Connections按複合分數排序,Code-Paper 邊分數更高,附帶「為什麼」說明
Suggested Questions4~5 個圖譜特別適合回答的問題
設計理由# WHY:, # NOTE:, # HACK: 註解和 JavaDoc 提取的 rationale_for 節點
Token Benchmark自動計算的 Token 節省比例

graph.json 使用方式

# 不要一次性貼到 prompt —— 使用 query 提取子圖
graphify query "show the auth flow" --graph graphify-out/graph.json
graphify query "what connects DigestAuth to Response?" --graph graphify-out/graph.json

輸出包含:節點標籤、邊類型、信賴標籤、來源檔案、來源位置。

4.5 .graphifyignore 設定

在專案根目錄建立 .graphifyignore,語法與 .gitignore 相同:

# .graphifyignore
vendor/
node_modules/
dist/
target/
*.generated.py
*.min.js
__pycache__/
.git/

📌 企業建議:務必排除 node_modules/target/dist/ 等建置產物,以避免圖譜被大量無關節點淹沒。

4.6 Always-On 模式設定

安裝 Always-On 後,AI 助手在每次 Glob / Grep 呼叫前都會自動讀取 GRAPH_REPORT.md

# 安裝(以 Claude Code 為例)
graphify claude install

運作原理

  1. 寫入 CLAUDE.md 區段,告知 Claude 先讀 graphify-out/GRAPH_REPORT.md
  2. 安裝 PreToolUse hook(.claude/settings.json),在每次 Glob/Grep 前觸發
  3. Claude 看到提示:「Knowledge graph exists. Read GRAPH_REPORT.md for god nodes and community structure before searching raw files.」

類比:Always-On hook = 給 AI 一張地圖。/graphify 指令 = 讓 AI 精確導航地圖。

4.7 查詢知識圖譜

# 從終端機直接查詢(不需 AI 助手)
graphify query "what connects attention to the optimizer?"
graphify query "show the auth flow" --dfs
graphify query "what is CfgNode?" --budget 500
graphify query "..." --graph path/to/graph.json

# 在 AI 助手中使用
/graphify query "這個 API 呼叫了哪些服務?"
/graphify path "UserController" "DatabaseService"
/graphify explain "AuthenticationFilter"

📌 實務建議:先用 GRAPH_REPORT.md 了解整體結構,再用 query / path / explain 深入細節。


第 5 章:進階使用(企業必備)

5.1 多 Repo 分析

對於微服務或 Monorepo 架構,可分別建圖後合併:

# 方法一:直接分析包含多個子專案的目錄
/graphify ./microservices/

# 方法二:逐一分析後使用 Neo4j 合併
/graphify ./service-a --neo4j
/graphify ./service-b --neo4j
# 將所有 cypher.txt 導入同一 Neo4j 實例

# 方法三:使用 Neo4j 直接推送
/graphify ./service-a --neo4j-push bolt://localhost:7687
/graphify ./service-b --neo4j-push bolt://localhost:7687

5.2 增量更新與 Watch 模式

# 增量更新 - 僅重新提取有變更的檔案(SHA256 快取)
/graphify ./src --update

# Watch 模式 - 背景持續同步
/graphify ./src --watch

Watch 模式行為

  • 程式碼變更:立即觸發 AST 重建(無 LLM 成本)
  • 文件/圖片變更:通知使用者執行 --update 進行 LLM 重新分析
  • 適用場景:多 Agent 並行開發時,圖譜自動保持最新

增量更新注意事項

  • v0.3.14+ 已修復刪除檔案的幽靈節點問題(--update 會先清理再合併)
  • v0.3.17+ 語義提取按目錄分組,跨 chunk 關係更精確

5.3 Git Hooks 自動建圖

# 安裝 git hooks(平台無關)
graphify hook install

# 檢查狀態
graphify hook status

# 移除
graphify hook uninstall

安裝後行為

  • post-commit:每次 commit 後自動重建圖譜
  • post-checkout:切換分支後自動重建
  • 失敗處理:hook 失敗會以非零退出碼通知 git
  • pipx 相容:v0.3.15+ 正確偵測 pipx 安裝的 graphify

5.4 與 CI/CD 整合

GitHub Actions 範例

# .github/workflows/graphify.yml
name: Build Knowledge Graph

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  graphify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      
      - name: Install Graphify
        run: pip install graphifyy
      
      - name: Build Knowledge Graph
        run: |
          graphify /github/workspace/src --no-viz
          # 產出 graphify-out/GRAPH_REPORT.md 和 graph.json
      
      - name: Upload Graph Artifacts
        uses: actions/upload-artifact@v4
        with:
          name: knowledge-graph
          path: graphify-out/
      
      - name: Check AMBIGUOUS edges ratio
        run: |
          python -c "
          import json
          with open('graphify-out/graph.json') as f:
              data = json.load(f)
          edges = data.get('links', [])
          ambiguous = sum(1 for e in edges if e.get('confidence') == 'AMBIGUOUS')
          total = len(edges)
          ratio = ambiguous / total if total > 0 else 0
          print(f'AMBIGUOUS edges: {ambiguous}/{total} ({ratio:.1%})')
          if ratio > 0.15:
              print('::warning::AMBIGUOUS edge ratio exceeds 15%')
          "
flowchart LR
    A[git push] --> B[GitHub Actions]
    B --> C[Install Graphify]
    C --> D[Build Graph
--no-viz] D --> E[Upload Artifacts] D --> F[Quality Gate
AMBIGUOUS < 15%] E --> G[團隊下載
GRAPH_REPORT.md] F -->|Pass| H[PR Approved] F -->|Fail| I[需人工審查]

5.5 與 AI 助手整合

Claude Code(原生支援)

# 安裝 Always-On
graphify claude install

# 在 Claude Code 中使用
/graphify .                      # 建立圖譜
/graphify query "核心 API 流程"   # 查詢

Codex

graphify install --platform codex
graphify codex install

# Codex 使用 $ 而非 /
$graphify .

搭配 MCP Server

# 啟動 MCP 伺服器
python -m graphify.serve graphify-out/graph.json

# 提供以下工具給 AI 助手
# - query_graph: 查詢圖譜
# - get_node: 取得節點詳情
# - get_neighbors: 取得鄰居節點
# - shortest_path: 最短路徑
# - god_nodes: God Nodes 列表

5.6 MCP Server 模式

# 啟動 MCP stdio 伺服器
graphify ./src --mcp

# 或從已建好的圖譜啟動
python -m graphify.serve graphify-out/graph.json

MCP 工具列表

工具說明
query_graph結構化查詢圖譜
get_node取得單一節點詳情
get_neighbors取得指定節點的鄰居
shortest_path計算兩節點間最短路徑
god_nodes列出最高連接度節點

📌 注意:MCP 伺服器僅透過 stdio 通訊,不開啟網路監聽。

5.7 知識圖譜查詢應用(RAG 強化)

Graphify 的 graph.json 不適合一次性貼入 prompt。正確的工作流程:

flowchart TD
    A[開始] --> B[閱讀 GRAPH_REPORT.md
了解整體結構] B --> C{需要深入?} C -->|是| D[graphify query
提取子圖] C -->|否| E[直接回答] D --> F[將子圖輸出
作為上下文] F --> G[提交給 LLM] G --> H[取得精準回答]

Graph RAG Prompt 範例

使用以下圖譜查詢輸出來回答問題。優先依據圖譜結構,
引用來源檔案路徑。

[graphify query 輸出結果]

問題:AuthenticationFilter 的完整呼叫鏈是什麼?

5.8 多格式匯出

格式指令旗標適用場景
HTML預設互動式探索
JSON預設程式化查詢、持久化
Obsidian--obsidian個人知識管理
SVG--svg靜態文件、簡報
GraphML--graphmlGephi / yEd 分析
Neo4j Cypher--neo4j大規模圖譜查詢
Neo4j Push--neo4j-push bolt://host:port直接推送至 Neo4j
Wiki--wikiAgent 導航、團隊文件
MCP--mcpAI 工具整合

5.9 Wiki 生成

/graphify ./src --wiki

產出結構

graphify-out/wiki/
├── index.md              # 入口頁面,社區總覽
├── community_0.md        # 社區文章,含內部節點與跨社區連結
├── community_1.md
├── god_node_UserService.md  # God Node 專屬文章
└── ...

特色

  • Wikipedia 風格的 Markdown 文章
  • 跨社區 Wikilinks
  • Cohesion scores
  • 審計追蹤
  • 導航頁腳

📌 企業應用:將 Wiki 輸出同步至 Confluence 或內部文件系統,作為「系統知識庫」供全團隊瀏覽。

5.10 記憶回饋迴圈(Memory Feedback Loop)

Graphify 自 v0.1.0 起內建記憶回饋機制:將使用者與圖譜的 Q&A 互動結果持久化,在後續更新時自動融入圖譜。

運作流程

flowchart LR
    A[使用者提問] --> B[graphify query]
    B --> C[圖譜走訪
產出答案] C --> D[答案儲存至
graphify-out/memory/] D --> E[下次 --update] E --> F[memory/ 中的 Q&A
作為新輸入提取] F --> G[圖譜更新
新邊/新節點] G --> B

檔案結構

graphify-out/
├── memory/
│   ├── qa_2026-04-08_001.json    # Q&A 記錄
│   ├── qa_2026-04-08_002.json
│   └── ...
├── graph.json
└── GRAPH_REPORT.md

使用方式

# 正常查詢 — Q&A 結果自動儲存至 memory/
/graphify query "核心認證流程是什麼?"

# 下次增量更新時,memory/ 中的 Q&A 自動納入提取
/graphify ./src --update

企業價值

面向說明
知識累積團隊反覆提問的知識自動沉澱為圖譜的一部分
圖譜演進圖譜隨使用自然成長,涵蓋更多隱含關係
上下文強化後續查詢可利用先前 Q&A 發現的邊與節點

📌 注意:Memory 檔案隨 graphify-out/ 一同管理。建議在 .gitignore 中決定是否追蹤 graphify-out/memory/——追蹤可讓團隊共享累積知識,不追蹤則保持個人查詢隱私。


第 6 章:實戰案例

6.1 案例一:舊系統逆向工程(Java / Spring)

問題背景

某銀行核心系統已運行 15 年,技術棧為 Java 8 + Spring Framework 4.x + Oracle DB。原始團隊已全數離職,僅剩程式碼與使用手冊,無設計文件。新團隊需要在 3 個月內完成現代化評估。

解法

# Step 1: 建立知識圖譜
/graphify ./legacy-banking-system --mode deep

# Step 2: 檢視 God Nodes 找出核心元件
cat graphify-out/GRAPH_REPORT.md

# Step 3: 查詢特定流程
/graphify query "交易處理流程"
/graphify path "TransactionController" "OracleDAO"
/graphify explain "TransactionService"

# Step 4: 建立 Wiki 供團隊瀏覽
/graphify ./legacy-banking-system --wiki

# Step 5: 匯出至 Neo4j 進行深度分析
/graphify ./legacy-banking-system --neo4j-push bolt://localhost:7687

Graphify 介入效果

指標傳統方式使用 Graphify
系統全貌理解時間2-4 週2-3 天
核心模組識別人工閱讀God Nodes 自動識別
依賴關係追蹤IDE + 人工圖譜查詢,含置信度
設計理由追溯幾乎不可能rationale_for 節點
文件產出需人力撰寫GRAPH_REPORT + Wiki

成果

  • 自動識別 12 個 God Nodes(核心服務類)
  • 發現 3 個未記錄的跨模組循環依賴
  • # HACK:# WHY: 註解中提取 47 個設計決策
  • 產出完整系統文件,Token 消耗僅為直接閱讀的 1/71

6.2 案例二:微服務架構知識盤點

問題背景

金融平台包含 28 個微服務,分散在多個 GitHub Repository。跨服務 API 呼叫關係不明,每次變更都擔心影響未知服務。

解法

# Step 1: 逐一建圖並推送至 Neo4j
for service in service-auth service-account service-payment service-notification; do
  git clone https://github.com/org/$service /tmp/$service
  cd /tmp/$service
  /graphify . --neo4j-push bolt://localhost:7687
done

# Step 2: 在 Neo4j 中查詢跨服務依賴
# MATCH (a)-[r:calls]->(b) WHERE a.source_file CONTAINS 'service-payment' RETURN a, r, b

# Step 3: 對關鍵服務做影響分析
/graphify path "PaymentGateway" "NotificationService"

成果

項目結果
識別的跨服務 API 呼叫156 個(其中 23 個未文件化)
發現的循環依賴4 組
影響分析覆蓋範圍100% 服務連結
圖譜產出時間28 個服務共 ~45 分鐘

6.3 案例三:新人 Onboarding 加速

問題背景

大型 Java Web 專案,新進工程師平均需要 4-6 週才能獨立開發。

解法

# Step 1: 建立圖譜與 Wiki
/graphify ./project --wiki

# Step 2: 安裝 Always-On 讓新人的 AI 助手自動引導
graphify claude install

# Step 3: 新人直接對 Claude 提問
# "系統中核心的身份驗證流程是什麼?"
# Claude 自動參考 GRAPH_REPORT.md 回答

成果

  • Onboarding 時間從 4-6 週縮短至 1-2 週
  • 新人的第一個 PR 提交時間提前 60%
  • 資深工程師回答重複問題的時間減少 70%

📌 實務建議:將 graphify-out/wiki/ 加入專案的標準文件結構,每次 release 時自動更新。


第 7 章:系統升級與版本管理

7.1 升級 Graphify

# 升級至最新版本
pip install --upgrade graphifyy

# 確認版本
graphify --version

# 重新安裝 Skill(建議每次升級後執行)
graphify install

# 重新安裝 Always-On(如果有使用)
graphify claude install    # 或對應平台

版本陳舊偵測:v0.3.10+ 會自動檢查已安裝的 Skill 版本是否過期,並顯示警告。

7.2 Graph Schema 版本控制

# 建議的 .gitignore 策略
# 不追蹤快取和 HTML,但保留 graph.json 和報告
graphify-out/cache/
graphify-out/graph.html
graphify-out/*.svg

# 追蹤以下檔案(納入版本控制)
# graphify-out/GRAPH_REPORT.md
# graphify-out/graph.json
# graphify-out/wiki/

Graph 重建策略

場景建議做法
小幅程式碼變更--update(增量更新)
大規模重構全新 /graphify .
分支切換Git hook 自動重建
版本發布CI 中全新建圖並歸檔

7.3 與 Git 版本同步策略

flowchart TD
    A[開發者 commit] --> B{Git Hook
已安裝?} B -->|是| C[自動重建圖譜] B -->|否| D[手動 --update] C --> E[graphify-out/ 更新] D --> E E --> F{納入版本控制?} F -->|GRAPH_REPORT + graph.json| G[git add & commit] F -->|cache + html| H[.gitignore 排除] I[分支切換] --> J{post-checkout
hook?} J -->|是| K[自動重建] J -->|否| L[手動重建]

📌 企業建議:在 CI 管線中為每個 release tag 建立圖譜快照,方便日後版本間架構比較。


第 8 章:安全與隱私設計(SSDLC)

8.1 安全模型總覽

Graphify 是本地開發工具,設計原則為「最小權限」:

  • 圖譜分析期間不進行任何網路呼叫
  • 僅在 ingest 指令時存取使用者明確指定的 URL
  • MCP 伺服器僅透過 stdio 通訊,不開啟網路監聽
  • 不執行原始碼(Tree-sitter 只解析 AST,不 eval/exec)
  • 不使用 shell=True
  • 不儲存憑證或 API Key

8.2 本地運算優勢

面向傳統雲端方案Graphify
資料傳輸原始碼上傳至伺服器程式碼僅在本地 AST 解析
API 呼叫大量 Token 消耗僅文件/圖片走 API
遙測追蹤通常存在無 telemetry
資料留存可能存於雲端全部在 graphify-out/

網路呼叫範圍

  • 程式碼:100% 本地(Tree-sitter AST)
  • 文件/圖片:透過所屬 AI 平台的 API(Anthropic / OpenAI),使用使用者自己的 API Key
  • ingest <URL>:根據使用者明確指定的 URL 進行擷取

8.3 威脅面與緩解措施

威脅緩解措施模組
SSRF(URL 擷取)validate_url() 僅允許 http/https,封鎖私有 IP / loopback / link-local / 雲端元資料端點,重導向目標重新驗證security.py
下載過大safe_fetch() 限制 50 MB,safe_fetch_text() 限制 10 MBsecurity.py
非 2xx 回應safe_fetch() 對非 2xx 拋出 HTTPErrorsecurity.py
路徑穿越(MCP)validate_graph_path() 要求路徑在 graphify-out/security.py
XSS(HTML 輸出)sanitize_label() 清除控制字元,限 256 字,HTML 轉義security.py
Prompt Injectionsanitize_label() 同樣套用於 MCP 輸出security.py
YAML Injection_yaml_str() 轉義反斜線、雙引號、換行security.py
編碼錯誤errors="replace" 處理非 UTF-8 檔案extract.py
Symlink 穿越os.walk(followlinks=False) 明確禁止detect.py
損壞的 graph.json_load_graph() 捕獲 JSONDecodeError 並提供恢復訊息serve.py
Shebang 注入Shebang 白名單驗證,防止元字元注入hooks.py + skill files

8.4 敏感資料處理

建議的 .graphifyignore 安全性排除清單

# 敏感檔案排除
*.key
*.pem
*.env
*.credentials
*.secret
config/secrets/
passwords.properties

企業建議

  1. 在 CI 管線中加入敏感資料掃描步驟(如 git-secrets),確保 graph.json 不含敏感資料
  2. 若分析包含客戶資料的系統,建議在隔離環境中運行
  3. graph.json 包含原始碼結構資訊(類別名、函數名),應視為內部機密文件

8.5 權限控管(RBAC)

Graphify 本身不內建 RBAC,但可透過以下方式實現:

層級控管方式
檔案存取使用 OS 層級檔案權限控管 graphify-out/
Git 存取透過 Repository 權限控制誰可存取 graph.json
Neo4j使用 Neo4j 內建的角色型存取控制
CI Artifacts設定 CI 產物存取權限(如 GitHub Artifacts retention)
Obsidian Vault透過檔案系統權限控管

8.6 稽核與追蹤

稽核項目資料來源說明
圖譜建置時間CI 日誌何時建圖、誰觸發
檔案變更追蹤graphify-out/cache/SHA256 快取記錄
邊的置信度graph.jsonEXTRACTED / INFERRED / AMBIGUOUS
版本歷程Git loggraph.json 的版本變化
Token 消耗執行時自動輸出每次 pipeline 的 Token benchmark

📌 合規建議:對於金融系統,建議將圖譜建置流程加入 SSDLC 的「程式碼分析」階段,並保留 6 個月以上的圖譜快照。

8.7 漏洞回報流程

根據官方 SECURITY.md,Graphify 有明確的漏洞回報機制:

回報方式

管道說明
GitHub Private Vulnerability Reporting首選方式,透過 GitHub 內建的私密漏洞回報功能
Email直接聯繫維護者
⚠️ 不要不要為安全漏洞開啟公開的 GitHub Issue

回報內容應包含

  1. 漏洞描述
  2. 重現步驟
  3. 潛在影響範圍
  4. 建議修復方式(如有)

回應承諾

階段時限
確認收到回報48 小時內
關鍵問題修復發布7 天內

📌 企業建議:內部安全團隊應將 Graphify 的 SECURITY.md 納入第三方元件安全評估範圍,並訂閱 GitHub Release Notifications 追蹤安全更新。

8.8 支援版本政策

版本系列安全支援
0.3.x✅ 目前支援
< 0.3❌ 不再支援

升級建議

  • 使用 0.3.x 以下版本的用戶應立即升級至最新 0.3.x 版本
  • 每次升級後重新安裝 Skill(graphify install),確保平台整合一致
  • v0.3.10+ 內建版本陳舊偵測,會在 Skill 版本過期時自動警告

📌 企業政策:建議在內部套件管理中設定版本下限為 graphifyy >= 0.3.15,確保包含所有已知安全修復(XSS、Shebang 注入、YAML 注入)。


第 9 章:最佳實務(Best Practices)

9.1 大型專案使用建議

  1. 分層建圖:對 Monorepo,按模組分別建圖再合併至 Neo4j
  2. CI 自動化:在 CI 中使用 --no-viz 減少建置時間
  3. 增量優先:日常開發使用 --update,Release 時全新建圖
  4. 排除噪音:設定完善的 .graphifyignore
  5. Watch 模式:多 Agent 並行開發時啟用自動同步
  6. 定期清理:清除過期的快取(graphify-out/cache/

9.2 Token 最佳化策略

策略說明預期效果
精確排除.graphifyignore 排除測試、建置產物減少 30-50% 提取量
SHA256 快取預設啟用,增量更新再次執行零 Token
–no-vizCI 中跳過 HTML減少處理時間
query –budget限制查詢 Token 預算控制單次查詢成本
子圖查詢使用 query 取代整圖貼入71.5x Token 節省
目錄分組v0.3.17+ 按目錄分組 chunk減少跨 chunk 遺漏

9.3 Graph 建模技巧

  1. 活用 --mode deep:對關鍵模組使用深度模式,取得更多 INFERRED 邊
  2. 關注 God Nodes:度數最高的節點通常是系統核心
  3. 審查 AMBIGUOUS:定期審查不確定的邊,確認或刪除
  4. 利用 Hyperedges:關注群組關係(如所有實作同一介面的類別)
  5. 追蹤 rationale_for:從 # WHY: / # HACK: 註解中提取設計決策
  6. 語義相似度邊:關注 semantically_similar_to 邊,找出未直接連結但功能相似的模組

9.4 團隊導入策略

flowchart LR
    A[Phase 1
概念驗證] --> B[Phase 2
標準化] B --> C[Phase 3
全面導入] A1[選擇 1 個專案
試運行] --> A B1[建立 .graphifyignore
模板] --> B B2[整合 CI/CD] --> B C1[所有專案
Always-On] --> C C2[Neo4j 集中管理] --> C

Phase 1:概念驗證(1-2 週)

  • 選擇一個中型專案(20-50 檔案)試運行
  • 評估 GRAPH_REPORT.md 的實用性
  • 團隊成員試用 query 功能

Phase 2:標準化(2-4 週)

  • 建立團隊統一的 .graphifyignore 模板
  • 整合 CI/CD 自動建圖
  • 制定圖譜品質規範(AMBIGUOUS 比例上限)

Phase 3:全面導入(持續)

  • 所有專案啟用 Always-On 模式
  • 部署 Neo4j 集中管理多專案圖譜
  • 定期圖譜品質審查與優化

第 10 章:常見問題(FAQ)

效能問題

Q:大型專案(1000+ 檔案)執行很慢?

  • 使用 .graphifyignore 排除不必要的檔案
  • 使用 --no-viz 跳過 HTML 產生
  • 使用 --update 增量更新而非全新建圖
  • v0.3.17+ 每 100 個檔案會顯示進度,不會看起來像是當機

Q:Watch 模式佔用太多資源?

  • 程式碼變更的 AST 重建非常輕量(無 LLM)
  • 文件/圖片變更僅發出通知,不自動觸發 LLM

Q:Louvain fallback 導致無限迴圈?

  • v0.3.11+ 已增加 max_level=10, threshold=1e-4 防止大型稀疏圖的無限迴圈

Token 使用

Q:Token 節省 71.5 倍是怎麼算的?

  • 首次執行需消耗 Token 建圖(語義提取階段)
  • 後續每次查詢都從壓縮的圖譜讀取,這是節省累計的地方
  • 基準測試在 52 檔案混合語料(程式碼 + 論文 + 圖片)上測得

Q:程式碼更新語義提取耗費多少 Token?

  • SHA256 快取確保僅重新提取有變更的檔案
  • 程式碼檔案的 AST 提取完全本地,零 Token
  • 僅文件和圖片需要 LLM Token

語意錯誤

Q:圖譜中出現錯誤的 INFERRED 邊?

  • 檢查 confidence_score(0.0-1.0),低分邊可能不準確
  • 使用 --cluster-only 重新聚類而不重新提取
  • 人工審查 AMBIGUOUS 邊並提供回饋

Q:跨檔案關係遺漏?

  • v0.3.17 改善了 chunk 分組策略(按目錄分組)
  • 考慮使用 --mode deep 進行更積極的推論

多語言支援問題

Q:支援哪些語言?

  • 程式碼(20 種 Tree-sitter 語言):Python, JS, TS, JSX, TSX, Go, Rust, Java, C, C++, Ruby, C#, Kotlin, Scala, PHP, Swift, Lua, Zig, PowerShell, Elixir, Objective-C, Julia(v0.3.17+)
  • 文件:.md, .txt, .rst
  • Office:.docx, .xlsx(需 pip install graphifyy[office]
  • 論文:.pdf
  • 圖片:.png, .jpg, .webp, .gif(Claude Vision)

Q:Julia 支援包含哪些?

  • v0.3.17 新增,涵蓋 modules、structs、abstract types、functions、short functions、using/import、call edges、inherits edges
  • 透過 tree-sitter-julia 實作
  • 測試案例已包含在 tests/test_languages.py

Q:圖片中的非英文文字可以辨識嗎?

  • 可以。Graphify 使用 Claude Vision,支援多語言圖片內容抽取。

平台與相容性問題

Q:PyPI 套件名為什麼是 graphifyy 而非 graphify

  • 這是暫時性命名,graphify 名稱正在回收中。CLI 和 Skill 指令仍然是 graphify

Q:NetworkX 版本相容性問題?

  • v0.3.16+ 已加入 node_link_graph() 版本安全墊片,支援 NetworkX < 3.4
  • 建議使用最新版 NetworkX 以獲得最佳效能

Q:可以在沒有 AI 助手的情況下使用嗎?

  • 可以。graphify query CLI 指令可直接在終端機查詢 graph.json,不需要 AI 助手
  • MCP Server 模式也可獨立運行:python -m graphify.serve graphify-out/graph.json

Q:可以同時使用多個匯出格式嗎?

  • 可以。多個旗標可組合使用:
    /graphify ./src --obsidian --wiki --svg --neo4j

附錄 A:檢查清單(Checklist)

初次安裝

  • Python 3.10+ 已安裝
  • pip install graphifyy 執行成功
  • graphify --version 顯示 v0.3.17+
  • graphify install 安裝對應平台 Skill
  • AI Coding Assistant 可正常執行 /graphify .

專案設定

  • .graphifyignore 已設定(排除 node_modules/、target/、dist/ 等)
  • 首次 /graphify . 執行成功
  • graphify-out/GRAPH_REPORT.md 可正常閱讀
  • graphify-out/graph.html 可在瀏覽器中開啟
  • 敏感檔案已加入 .graphifyignore

Always-On 設定

  • graphify claude install(或對應平台 install)已執行
  • AI 助手在搜尋前會自動參考 GRAPH_REPORT.md
  • 測試查詢:AI 能從圖譜結構回答架構問題

Git Hooks

  • graphify hook install 已執行
  • graphify hook status 顯示正常
  • commit 後圖譜自動更新

CI/CD 整合

  • GitHub Actions / Jenkins 設定 Graphify 步驟
  • 使用 --no-viz 減少 CI 建置時間
  • AMBIGUOUS 邊比例品質門檻已設定
  • 圖譜產物已設定上傳/歸檔

安全性

  • .graphifyignore 排除 *.key, *.pem, *.env 等敏感檔案
  • graphify-out/ 存取權限已設定
  • graph.json 被視為內部機密文件處理
  • 定期審查 AMBIGUOUS 邊

團隊導入

  • 團隊統一的 .graphifyignore 模板已建立
  • Onboarding 文件包含 Graphify 使用說明
  • Wiki 輸出已同步至內部知識庫
  • 定期圖譜品質審查排程已建立

附錄 B:指令速查表

# === 基本操作 ===
/graphify .                                    # 分析當前目錄
/graphify ./src                                # 分析指定目錄
/graphify ./src --mode deep                    # 深度模式
/graphify ./src --update                       # 增量更新
/graphify ./src --cluster-only                 # 僅重新聚類
/graphify ./src --no-viz                       # 不產生 HTML
/graphify ./src --watch                        # 背景自動同步

# === 新增內容 ===
/graphify add <URL>                            # 擷取 URL 內容
/graphify add <URL> --author "Name"            # 標記作者
/graphify add <URL> --contributor "Name"       # 標記貢獻者

# === 查詢 ===
/graphify query "問題"                         # BFS 查詢
/graphify query "問題" --dfs                   # DFS 路徑追蹤
/graphify query "問題" --budget 1500           # 限制 Token
/graphify path "NodeA" "NodeB"                 # 兩點路徑
/graphify explain "NodeName"                   # 解釋節點

# === 匯出 ===
/graphify ./src --obsidian                     # Obsidian Vault
/graphify ./src --wiki                         # Agent Wiki
/graphify ./src --svg                          # SVG
/graphify ./src --graphml                      # GraphML
/graphify ./src --neo4j                        # Cypher 語句
/graphify ./src --neo4j-push bolt://host:7687  # 推送 Neo4j
/graphify ./src --mcp                          # MCP Server

# === Git Hooks ===
graphify hook install                          # 安裝 hooks
graphify hook uninstall                        # 移除 hooks
graphify hook status                           # 檢查狀態

# === Always-On ===
graphify claude install                        # Claude Code
graphify codex install                         # Codex
graphify opencode install                      # OpenCode
graphify claw install                          # OpenClaw
graphify droid install                         # Factory Droid
graphify trae install                          # Trae
graphify trae-cn install                       # Trae CN

# === CLI 直接查詢 ===
graphify query "問題"                          # 不需 AI 助手
graphify query "問題" --graph path/to/graph.json

# === MCP Server ===
python -m graphify.serve graphify-out/graph.json

附錄 C:版本歷程摘要

版本日期重點更新
v0.3.172026-04-08Julia 支援、目錄分組 chunk、tree-sitter 版本固定、進度輸出
v0.3.162026-04-08NetworkX < 3.4 相容、JSX 支援、pipx 修復
v0.3.152026-04-08Trae / Trae CN 平台、XSS 修復、Shebang 白名單、日文 README
v0.3.142026-04-08Codex PreToolUse hook、–update 幽靈節點清理
v0.3.132026-04-08PreToolUse additionalContext、Go AST 修復、PDF 誤判修復
v0.3.122026-04-07sanitize_label HTML 雙重編碼修復、–wiki 文件化
v0.3.112026-04-07Louvain fallback 無限迴圈修復
v0.3.102026-04-07Windows Unicode 修復、Skill 版本過期偵測
v0.3.92026-04-07Symlink 支援(opt-in)、Codex $ 指令文件化
v0.3.82026-04-07C# 繼承提取、CLI query 指令
v0.3.72026-04-07Objective-C 支援、自訂 Obsidian 路徑
v0.3.02026-04-06多平台支援(Codex / OpenCode / OpenClaw)、MIT 授權
v0.2.22026-04-06Always-On 模式、Git Hooks、Benchmark CLI
v0.1.72026-04-05Wiki 生成功能
v0.1.42026-04-05vis.js HTML 取代 pyvis、Token benchmark 自動化
v0.1.02026-04-03初始發布:13 語言 AST、Leiden 社區、MCP Server、Obsidian

附錄 D:官方基準測試結果(Worked Examples)

Graphify 官方 Repository 的 worked/ 目錄提供可驗證的基準測試結果。每個測試案例包含原始輸入檔案與完整輸出(GRAPH_REPORT.mdgraph.json),可自行運行驗證。

測試案例總覽

案例檔案數Token 節省倍率說明目錄
Karpathy Repos + 論文 + 圖片5271.5x混合語料(程式碼 + 5 篇論文 + 4 張圖片)worked/karpathy-repos/
Graphify Source + Transformer Paper45.4xGraphify 自身原始碼 + Transformer 論文worked/mixed-corpus/
httpx(合成 Python 庫)6~1x小型程式碼庫,驗證結構清晰度worked/httpx/

Token 節省效益分析

graph LR
    subgraph "Token 節省與語料規模的關係"
        A[6 檔案
~1x 節省
價值:結構清晰] --> B[4 檔案
5.4x 節省
價值:壓縮 + 結構] B --> C[52 檔案
71.5x 節省
價值:顯著壓縮] C --> D[100+ 檔案
預期 100x+
企業級效益] end

關鍵洞察

  • Token 節省與語料規模正相關:6 個檔案可直接放入 context window,圖譜價值在於結構化;52 檔案時壓縮效益達 71.5 倍
  • 首次執行消耗 Token:語義提取階段需 LLM Token,這是一次性成本
  • 後續查詢零成本:SHA256 快取確保相同檔案不重複提取,所有查詢從壓縮圖譜讀取
  • 效益隨時間複利累積:團隊成員每次查詢都從圖譜獲益,而非每人各自閱讀原始檔案

📌 驗證方式:可 clone 官方 repo 後進入 worked/ 目錄,對照原始檔案與 GRAPH_REPORT.md 輸出,自行驗證數據準確性。


附錄 E:貢獻指南

專案資訊

項目資訊
Repositorygithub.com/safishamsi/graphify
授權MIT License
主要語言Python 100%
貢獻者數10 人(含 Claude AI)
CIGitHub Actions(Python 3.10 + 3.12)
測試框架pytest(367+ 測試案例)

新增語言擴充器(Extractor)

根據官方 ARCHITECTURE.md,新增語言支援的標準流程:

  1. 新增提取函數:在 extract.py 中建立 extract_<lang>(path: Path) -> dict,遵循既有模式
    • 使用 Tree-sitter 解析 → 走訪節點 → 收集 nodesedges → call-graph 二次掃描
  2. 註冊檔案副檔名:在 extract() dispatch 和 collect_files() 中註冊
  3. 更新 detect.py:將副檔名加入 CODE_EXTENSIONS_WATCHED_EXTENSIONSwatch.py
  4. 新增 Tree-sitter 依賴:在 pyproject.toml 中加入對應的 tree-sitter 語言套件
  5. 撰寫測試:在 tests/fixtures/ 新增測試檔案,在 tests/test_languages.py 撰寫測試

測試規範

# 執行所有測試
pytest tests/ -q

# 測試特性
# - 每個模組一個測試檔案
# - 純單元測試:無網路呼叫、無檔案系統副作用(僅使用 tmp_path)
# - 目前共計 367+ 個測試案例

程式碼品質要點

項目要求
Security所有外部輸入經 security.py 驗證
Schema提取結果必須通過 validate.py Schema 驗證
無共享狀態Pipeline 各階段為純函數,無副作用
LLM 分離程式碼走 AST(本地),僅文件/圖片走 LLM

📌 參與建議:提交 PR 前確認 pytest tests/ -q 全部通過。對於安全相關修改,請額外閱讀 SECURITY.md 了解威脅模型。


文件最後更新日期:2026-04-09
Graphify 版本:v0.3.17
專案 Repositoryhttps://github.com/safishamsi/graphify
授權:MIT License
貢獻者:10 人(含 Claude AI)
GitHub Stars:13.8k+