文章

Graphify 深度分析报告:让 AI 编程助手真正「看懂」你的代码库

深度解析 graphify 项目 - 一个将任意文件夹转换为可查询知识图谱的 AI 编码助手技能,实现 71.5 倍 Token 节省

Graphify 深度分析报告:让 AI 编程助手真正「看懂」你的代码库

发布时间: 2026年4月21日
项目地址: safishamsi/graphify
PyPI 包名: graphifyy
核心亮点: 🚀 71.5 倍 Token 节省


📹 视频讲解


一、项目概述

1.1 什么是 Graphify?

Graphify 是一个革命性的 AI 编码助手技能,由 Safi Shamsi 开发。它能将任意文件夹(代码、文档、论文、图片、视频)转换为可查询的知识图谱,帮助 AI 助手以前所未有的效率理解代码库结构。

Graphify Logo

🔥 核心亮点:与直接读取原始文件相比,每次查询 Token 消耗可降低 71.5 倍

1.2 项目背景

Graphify 的诞生灵感来源于 Andrej Karpathy/raw 文件夹工作流:

Andrej Karpathy 维护一个 /raw 文件夹,把论文、推文、截图和笔记都丢进去,然后用 LLM 编译成 wiki 导航。

他最后留下了一个挑战:“I think there is room here for an incredible new product instead of a hacky collection of scripts.”

Graphify 就是这个问题的答案。

1.3 解决的问题

传统 RAG 痛点Graphify 解决方案
上下文窗口有限构建持久化知识图谱
暴力文本匹配效率低图拓扑结构发现语义关联
缺乏全局系统级认知跨文件隐性关系捕捉
每次查询都要重新读取图查询 vs 全量文件读取

二、技术架构深度解析

2.1 核心技术栈

组件技术选型作用
图数据结构NetworkX构建、操作知识图谱
代码解析tree-sitter25+ 编程语言的 AST 解析
语义提取Claude从非结构化内容提取概念和关系
社区发现Leiden 算法图拓扑聚类
视频转录faster-whisper本地音频转文字

2.2 两阶段提取策略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
┌─────────────────────────────────────────────────────────────────┐
│                    第一阶段:确定性 AST 提取                       │
├─────────────────────────────────────────────────────────────────┤
│  ✅ tree-sitter 解析代码文件                                      │
│  ✅ 提取:类、函数、导入、调用图、docstring、注释                    │
│  ✅ 无需 LLM,100% 确定性和可复现性                               │
│  ✅ 覆盖:25+ 编程语言                                            │
│                                                                 │
│  支持语言:Python, JavaScript, TypeScript, Go, Rust, Java,       │
│  C, C++, Ruby, C#, Kotlin, Scala, PHP, Swift, Lua, Zig,         │
│  PowerShell, Elixir, Objective-C, Julia, Verilog, SystemVerilog, │
│  Vue, Svelte, Dart 等                                            │
└─────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────┐
│                    第二阶段:LLM 语义提取                         │
├─────────────────────────────────────────────────────────────────┤
│  ✅ Claude 子代理并行处理文档、论文、图片                          │
│  ✅ 提取:概念、关系、设计动机                                      │
│  ✅ 视频/音频:faster-whisper 本地转录                            │
│  ✅ 缓存机制:SHA256 哈希,重复运行只处理变更文件                    │
└─────────────────────────────────────────────────────────────────┘

2.3 核心处理流程

1
2
3
4
5
6
7
8
9
10
┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   detect()  │───▶│  extract()  │───▶│ build_graph │───▶│  cluster()  │
│  文件检测    │    │   提取节点边 │    │   构建图     │    │   社区发现  │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
                                                                   │
                                                                   ▼
┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   export()  │◀───│   report()  │◀───│  analyze()  │◀───│  (合并)     │
│   导出输出   │    │  生成报告   │    │   图分析    │    │            │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘

2.4 核心模块职责

模块行数功能描述
extract.py3277核心提取逻辑(最大模块)
export.py1014导出功能(HTML/JSON/维基)
__main__.py1371CLI 入口
analyze.py540图分析(God nodes 发现)
detect.py510文件检测
serve.py373MCP 服务器
build.py107图构建
cluster.py137Leiden 社区检测

三、创新特性

3.1 图拓扑聚类(无 Embeddings)

关键创新:采用纯图拓扑结构的 Leiden 社区发现算法,完全不需要 Embeddings 和向量数据库

1
2
3
# 聚类基于边密度,而非语义相似度
# Claude 提取的 `semantically_similar_to` 边(标记 INFERRED)
# 直接影响社区检测,无需额外向量计算

这种设计带来了显著优势:

对比维度Graphify传统向量 RAG
索引方式图拓扑向量 Embeddings
跨文件关系✅ 显式图边❌ 隐式相似度
社区发现✅ Leiden❌ 需要额外组件
部署复杂度低(纯 Python)中(向量数据库)

3.2 关系置信度标签

Graphify 引入了一套透明的关系标签系统:

标签含义示例
EXTRACTED源文件明确声明import requestsimports 关系
INFERRED合理推断(含置信度)共现上下文 → semantically_similar_to
AMBIGUOUS不确定(需人工复核)GRAPH_REPORT.md 中标记

💡 设计理念:你永远知道哪些是”发现”的,哪些是”推断”的。

3.3 多模态统一处理

模态处理方式工具
代码tree-sitter AST确定性解析
文档/PDFLLM 提取Claude
图片/截图Vision APIClaude vision
视频/音频Whisper 转录faster-whisper
白板图/流程图Vision APIClaude vision

3.4 输出成果

1
2
3
4
5
6
graphify-out/
├── graph.html       # 可交互图谱 - 浏览器打开,节点可点击、搜索、过滤
├── GRAPH_REPORT.md  # God nodes、意外连接、建议提问
├── graph.json       # 持久化图谱 - 数周后可查询,无需重新读取原始文件
├── wiki/            # 维基站(可选)
└── cache/           # SHA256 缓存 - 重复运行只处理变更文件

四、真实案例分析

4.1 httpx 代码库分析

httpx 库(Python HTTP 客户端)进行图谱构建:

1
2
3
Corpus: 6 files · ~2,047 words
图谱: 144 nodes · 330 edges · 6 communities detected
提取质量: 53% EXTRACTED · 47% INFERRED · 0% AMBIGUOUS

God Nodes(核心抽象)

排名节点边数
1Client26 edges
2AsyncClient25 edges
3Response24 edges
4Request21 edges
5BaseClient18 edges

意外发现的关系

1
2
3
4
5
Timeout --uses--> URL        [INFERRED]
Timeout --uses--> Headers    [INFERRED]
Timeout --uses--> Cookies    [INFERRED]
Timeout --uses--> BaseTransport    [INFERRED]
Timeout --uses--> HTTPTransport    [INFERRED]

这些「意外连接」揭示了代码库中隐藏的设计模式!

社区划分

社区名称节点数内聚度
0Transport 层80.11
1配置层90.13
2Client 层30.12
3数据模型层30.11
4异常处理200.16

4.2 Karpathy 代码仓库分析

对 Andrej Karpathy 的 nanoGPT、minGPT、micrograd 等仓库进行分析:

1
2
3
4
Corpus: 49 files · ~92,616 words
图谱: 285 nodes · 340 edges · 53 communities detected
提取质量: 81% EXTRACTED · 19% INFERRED · 0% AMBIGUOUS
Token 消耗: 6,000 input · 3,500 output

发现的关键概念

排名节点边数
1Value15 edges
2Training Script11 edges
3GPT9 edges
4Layer8 edges
5CharDataset7 edges

揭示的跨仓库关系

1
2
3
4
5
6
7
8
from_pretrained() --calls--> get_default_config()
nanoGPT/model.py → minGPT/mingpt/model.py

GPT Language Model (minGPT) --conceptually_related_to--> GPT Model Class
minGPT/mingpt/model.py → nanoGPT/model.py

CausalSelfAttention (minGPT) --conceptually_related_to--> CausalSelfAttention Module
minGPT/mingpt/model.py → nanoGPT/model.py

五、多平台支持

5.1 支持的平台一览

平台安装命令Always-on 机制
Claude Codegraphify installPreToolUse hook + CLAUDE.md
Codexgraphify install --platform codexPreToolUse hook + AGENTS.md
OpenCodegraphify opencode installplugin + AGENTS.md
Cursorgraphify cursor installAlways-on rules
Gemini CLIgraphify gemini installBeforeTool hook
VS Code Copilotgraphify vscode installcopilot-instructions.md
Aidergraphify install --platform aiderAGENTS.md
OpenClawgraphify install --platform clawAGENTS.md
Factory Droidgraphify install --platform droidTask tool
Traegraphify install --platform traeAgent tool
GitHub Copilot CLIgraphify copilot installglobal skill

5.2 Always-on vs 显式触发

模式机制用途
Always-on hook每次工具调用前注入 GRAPH_REPORT.md日常导航
/graphify query遍历 graph.json hop-by-hop精确问答
/graphify explain追踪节点间路径关系追溯
/graphify path边级别详情(含置信度)深度分析

六、使用指南

6.1 快速开始

1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 安装
pip install graphifyy && graphify install

# 2. 在 AI 编码助手中执行
/graphify .

# 3. 查看输出
open graphify-out/graph.html      # 交互图谱
cat graphify-out/GRAPH_REPORT.md  # 分析报告

# 4. 持续更新
graphify update .                  # 增量更新
graphify watch .                   # 文件监控自动重建

6.2 排除不需要的文件夹

创建 .graphifyignore 文件:

# .graphifyignore
vendor/
node_modules/
dist/
*.generated.py

6.3 团队协作建议

1
2
3
4
5
6
7
8
9
# .gitignore 建议
graphify-out/cache/   # 忽略缓存,提交图谱

# 推荐工作流
1. 一人运行 /graphify . 构建初始图谱,提交
2. 其他成员 pull 后 AI 助手立即获得上下文
3. 安装 post-commit hook:graphify hook install
4. 代码变更自动重建(AST 部分,无需 LLM)
5. 文档/论文变更后手动 /graphify --update

七、安全设计

7.1 安全机制

机制实现
URL 验证只允许 http/https,_NoFileRedirectHandler 阻止 file:// 重定向
内容获取大小限制 + 超时控制
图路径验证必须解析到 graphify-out/
节点标签控制字符剥离、256 字符上限、HTML 转义

详见 SECURITY.md


八、发展现状

8.1 版本轨迹

  • 最新版本:v0.4.23 (2026-04-18)
  • 累计提交:145+ commits
  • 活跃开发:几乎每天都有更新
  • 国际支持:中、英、日、韩四国语言 README

8.2 近期亮点更新

版本日期亮点
v0.4.2304-18Go stdlib 导入修复、HTML 文件支持
v0.4.2104-17MDX 支持、跨文件调用扩展
v0.4.2004-17JS/MJS 导入修复
v0.4.1904-17Kiro 支持、Leiden 性能优化
v0.4.1504-15VS Code Copilot Chat 支持
v0.4.1304-14Verilog/SystemVerilog 支持
v0.4.1004-13Dart/Flutter、Blade 模板支持

九、总结与建议

9.1 项目优势

优势说明
🚀 革命性效率71.5x Token 节省
🔧 工程化完善完善的测试覆盖、安全机制、缓存策略
🌐 多模态统一代码、文档、图片、视频一站式处理
🤖 AI 原生专为 AI 编码助手设计
📊 图拓扑优先拒绝黑盒 Embeddings
🔄 增量更新SHA256 缓存 + watch 模式
🎯 透明可追溯EXTRACTED/INFERRED/AMBIGUOUS 标签

9.2 适用场景

  • ✅ 理解陌生代码库
  • ✅ 大型遗留代码重构
  • ✅ 团队知识共享
  • ✅ 个人知识管理(Karpathy 风格)
  • ✅ AI 编程助手增强
  • ⚠️ 实时性要求极高的场景(需额外优化)

9.3 可改进之处

方向建议
可视化3D 图谱、多层钻取
协作冲突解决、多人编辑
性能更大规模代码库优化
AI更智能的关系推断

参考资料

  1. GitHub 仓库:https://github.com/safishamsi/graphify
  2. Medium 文章How to Use Graphify: Turn Any Folder Into a Knowledge Graph
  3. PyPI 包pip install graphifyy
  4. codeKK 介绍:https://p.codekk.com/detail/python/safishamsi/graphify

本文由俺老猪 🐷 深度分析撰写,基于 GitHub 源码、Medium 原版文章及网络资料综合整理。

本文由作者按照 CC BY 4.0 进行授权