核心问题: 在一个 0.1.x 的 skill 和临时 PyPI 包名之上投入,换取的 token 节省和图谱持久化是否值得?
RepoDaily 采用评分
RepoDaily 将该项目的采用分评为 92/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。
包含 6 个来源、覆盖 4 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。
检测到 7 个工作流步骤、6 个下一步动作,以及 3 个命令/安装信号。
趋势热度为 +885 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。
采纳风险标记为 medium,并包含 8 条安全说明与 4 条跳过条件。
3 个机会视角、4 个替代方案,以及 3 个类型化模块支撑差异化判断。
文章中包含许可证来源或许可证表述。
文章正文和元数据中检测到 9 个 AI/Agent 相关信号。
项目概览
Graphify 是一个 Claude Code skill,它会读取你指定的任意文件夹,结合 Claude 视觉和 tree-sitter AST 解析抽取概念和关系,并把结果组装成一张持久化的知识图谱。它的卖点非常具体:你不需要为每次查询重新读取原始文件,而是先建一次图谱,之后在多个会话里反复查询,README 给出的对比基准是相比直接读原始文件每条查询减少 71.5 倍 token。
在一个拥挤的 RAG 与 GraphRAG 赛道里,graphify 之所以显眼,是因为它同时具备多模态野心和一份少见地严谨的安全姿态。它通过 tree-sitter 支持 13 种编程语言,能处理 PDF、Markdown、截图、图表、白板照片乃至其他语言的图片,并输出你真正会用到的产物:交互式 HTML 图谱、Obsidian 仓库、面向 Agent 的 Wikipedia 风格 wiki、给 Gephi 用的 GraphML,以及给 Neo4j 用的 Cypher。
项目仍在早期,当前发布线为 0.1.x,PyPI 包名临时为 graphifyy,等 graphify 正式名称被收回。但维护节奏在 changelog 里一目了然:2026 年 4 月就发布了 8 个版本,每一个都在关掉真实缺陷,例如把“后续问题靠重新遍历目录而不是查询 graph.json 来回答”这种严重问题修掉。
为什么现在变热
- 一个 0.1.x 工具在一个周期内拿到 885 星,说明开发者确实需要让 AI 编程助手理解整个代码库,而不是靠碎片猜测。
- `/graphify .` 可作用于任意文件夹,并产出交互式 HTML 图谱、持久化 graph.json、Obsidian 仓库以及可选的 Wikipedia 风格 wiki,覆盖了真实开发者会用的格式。
- 0.1.6 修复了一个严重的延迟问题:后续问题原本会触发约 25 次工具调用、耗时约 90 秒,因为系统会重新遍历目录而不是查询 graph.json;这种修复才是演示与可用工具的分水岭。
- README 声称相比读取原始文件每条查询减少 71.5 倍 token,并有基准支撑;0.1.4 起会在超过 5,000 词的语料上自动运行该基准。
- 借助 Claude 视觉做多模态抽取,覆盖截图、图表、白板照片和非英文图片,这在只解析源码的知识图谱工具中并不多见。
解决什么问题
- 在一个 AI 编程助手里反复读取大量代码、论文和笔记既费 token 又慢,而且按调用计费。
- 单次会话里建立的知识在会话结束后就消失,下一次又得重读同样的文件。
- 只处理代码的工具会漏掉跨 PDF、推文、截图和文字笔记的概念关系,而这正是 README 里归因于 Karpathy 的 `/raw` 文件夹模式。
- GraphRAG 与 RAG 流水线往往要先搭重型基础设施、向量库和自定义 embedding,才能问出一个有用的问题。
- 图谱可视化里的节点标签和文件内容会把不可信文本带进 HTML 或面向 Agent 的输出,如果不做消毒就会造成注入风险。
工作原理
- 通过 `pip install graphifyy && graphify install` 安装 Claude Code skill,注意 PyPI 包名临时为 graphifyy,待 graphify 名称收回。
- 在任意目录打开 Claude Code 并运行 `/graphify .`,触发 skill 去读取文件、检测类型并抽取概念与关系。
- 对源码,tree-sitter 会在 13 种语言上解析 AST,包括 Python、JavaScript、TypeScript、Go、Rust、Java、C、C++、Ruby、C#、Kotlin、Scala、PHP。
- 对 PDF、Markdown、截图、图表和图片,Claude 视觉会抽取概念和关系并连入同一张图。
- 基于 graspologic 的 Leiden 社区检测算法对图聚类,并对超大社区做拆分,保证导航可控。
- 产物落在 graphify-out/:交互式 HTML 图谱、Obsidian 仓库、可选的 Wikipedia 风格 wiki、包含 god 节点与建议问题的 GRAPH_REPORT.md、持久化 graph.json,以及只处理变更文件的 SHA256 缓存。
- 用 `graphify query "..."`、`graphify path "DigestAuth" "Response"`、`graphify explain "SwinTransformer"` 等命令查询图谱,它们都读取 graph.json,而不会重读原始目录。
架构解读:流水线、模块与抽取面
README 与 changelog 描述了一条 detect、extract、build、cluster、analyze、report、export 的流水线,0.1.5 增加了一个端到端集成测试来覆盖每个阶段。检测逻辑位于 detect.py,并显式使用 `os.walk(..., followlinks=False)` 以避免符号链接穿越。
抽取分为面向代码的 AST 解析和面向文档、图片的语义抽取。0.1.5 把语义抽取的吞吐从每块 12-15 个文件提升到 20-25 个文件,减少了子 Agent 的往返;而纯代码语料现在会整段跳过语义分发,因为 AST 已能胜任。
社区检测使用 graspologic 的 Leiden 实现并对超大社区拆分,其结果同时驱动 HTML 渲染器的社区过滤器和可选 wiki 的社区文章。0.1.7 新增了专门的 `graphify/wiki.py` 模块,其 `to_wiki()` 会输出跨社区 wiki 链接、内聚分数、审计轨迹和导航页脚。
HTML 渲染器在 0.1.4 被替换:移除 pyvis,改用自定义的 vis.js 渲染器,按度数决定节点大小,并提供点击检查面板、可点击邻居、搜索框、社区过滤和物理聚类。这是一个重要的架构细节,既移除了一个重型依赖,又让项目直接掌控面向用户的产物。
试用路径:30 分钟内安装、运行并查询
- 前置条件:Claude Code 与 Python 3.10+,pyproject.toml 通过 `requires-python = ">=3.10"` 确认。
- 安装命令:`pip install graphifyy && graphify install`;在 macOS 上若 pip 报 externally-managed-environment,改用 `pipx install graphifyy`。
- 在 Windows 上,如果安装后无法识别 `graphify`,需把 `%APPDATA%\Python\Python3xx\Scripts` 加入 PATH,或直接用会自动处理 PATH 的 pipx。
- 在任意目录运行 `/graphify .`,然后查看 `graphify-out/graph.html` 的交互视图和 `graphify-out/GRAPH_REPORT.md` 的 god 节点与建议问题。
- 运行 `/graphify ./raw --update`,只重新抽取变更文件并并入现有图谱,其背后是 `graphify-out/cache/` 里的 SHA256 缓存。
- 执行 `graphify query "what connects attention to the optimizer?"`,确认后续问题会瞬间从 graph.json 返回,而不再重新遍历目录。
维护风险:版本、打包与依赖态势
项目处于 0.1.x,pyproject.toml 列出的版本为 0.1.14;SECURITY.md 明确只支持 0.1.x,低于 0.1 不受支持。PyPI 包名临时为 graphifyy,README 警告 graphify 正名正在被收回,这对固定包名的 CI 流水线是一个真实风险。
依赖以主库级别固定,而不是精确版本:networkx、graspologic、tree-sitter 以及每种支持语言对应的 tree-sitter 语法。optional-dependencies 暴露了 `mcp`、`neo4j`、`pdf`、`watch` 和 `all` 分组,让默认安装保持精简,但使用 `graphify ./raw --neo4j` 或 `graphify ./raw --mcp` 时需显式开启。
changelog 显示迭代速度很快且修复具体,例如 0.1.4 通过静默跳过标准库和外部边把每次运行 292 条边告警消掉,0.1.6 把原本 25 次工具调用的后续问题改成对 graph.json 的瞬时查询。这令人安心,但 0.1.x 主版本号加上包名变动意味着任何采用 graphify 的团队都应该在工具链里固定已安装的确切版本。
谁适合关注
适合关注
- 每天都在用 Claude Code,并希望获得跨会话、持久的代码库或研究语料知识的开发者
- 要处理代码、PDF、Markdown 和截图混合语料,并需要一张横跨所有内容的图谱的团队
- 维护一个 Karpathy 式 `/raw` 文件夹(论文、推文、笔记),希望不用向量库就能获得可查询结构的研究者
- 需要把 GraphRAG 产物导出为多种格式(HTML、Obsidian、给 Gephi 用的 GraphML、给 Neo4j 用的 Cypher)的任何场景
可以先跳过
- 无法使用 Claude Code 或无法把文件内容发送给 LLM 供应商做抽取的项目
- 在采用工具前需要稳定 semver-major 打包保证的团队,因为项目仍是 0.1.x 且 PyPI 名为临时
- 无法安装 13 种语言 tree-sitter 语法或无法提供 Python 3.10+ 的环境
- 需要对外暴露网络端口的知识图谱服务而不是仅 stdio 的本地 MCP 服务的场景
风险与注意事项
工具工程质量高、安全意识强,但它仍是 0.1.x,使用临时 PyPI 包名,且多模态抽取依赖 Claude Code 和 LLM 供应商。
- PyPI 包名是 graphifyy 而非 graphify,正名尚在收回,安装脚本与 CI 固定必须考虑到这点。
- SECURITY.md 明确仅支持 0.1.x,次版本之间可能出现破坏性变更。
- 多模态抽取依赖 Claude 视觉,意味着除非限制为本地格式,否则在抽取阶段文件内容会离开本地机器。
- 默认安装会拉取 13 种语言的 tree-sitter 语法,对通用场景合理,但对单语言团队偏重。
- SECURITY.md 声明 graphify 在图谱分析期间不做任何网络调用,唯一的网络调用发生在用户显式 `ingest` 抓取 URL 时。
- SSRF 防护由 `security.validate_url()` 强制执行,只允许 http 与 https 协议,`_NoFileRedirectHandler` 会阻止重定向到 file://。
- 下载有大小上限:`safe_fetch()` 以流式读取并在 50 MB 处中止,`safe_fetch_text()` 在 10 MB 处中止;非 2xx 响应会抛出 HTTPError,而不会被当作内容。
- MCP 服务中的路径穿越由 `security.validate_graph_path()` 阻断,它会解析路径并要求其位于 `graphify-out/` 内。
- 图谱 HTML 输出中的 XSS 由 `security.sanitize_label()` 缓解,它会剥离控制字符、把标签截到 256 字符,并对所有节点标签和边标题做 HTML 转义。
- 节点标签的提示注入也由 sanitize_label 在 MCP 文本输出上同样处理,因此源文件控制的标签无法破坏返回给 Agent 的文本格式。
- 工具不会执行源码:tree-sitter 只解析 AST,不调用 eval 或 exec;任何子进程调用都不使用 shell=True。
- 符号链接穿越被防范,因为 detect.py 显式使用 `os.walk(..., followlinks=False)`。
替代方案比较
| 方案 | 适用场景 | 代价 |
|---|---|---|
LlamaIndex | 需要一个可编程的 GraphRAG 与 RAG 框架,对索引和检索有细粒度控制 | Apache 2.0 |
LangChain | 需要跨众多供应商的文档加载器、embedding 与图存储的通用编排层 | MIT |
Neo4j | 已经运行 Neo4j,并希望以图数据库为后端而不是一个本地 skill | GPLv3 / 商业 |
Obsidian | 只想要一个手动的笔记图谱仓库而不需要抽取流水线 | 个人使用免费 |
这个趋势说明了什么
面向编程助手的持久化 GraphRAG
Graphify 的 graph.json 被设计成跨会话持久、可在数周后查询而无需重读原始文件,这正面回应了 AI 编程助手的失忆问题。README 给出的 71.5 倍 token 节省数字如果在你自己的语料上站得住,就是值得采用的理由。
在一个真实的 10,000 文件代码库上运行 `/graphify .`,先测量初次构建的 token 消耗,再测量基于 graph.json 的五次后续查询与重读原始文件之间的 token 差距。
作为 Agent 导航层的 wiki 输出
0.1.7 新增的专用 wiki 模块会生成带跨社区 wiki 链接、内聚分数和导航页脚的 Agent 可爬取 wiki。这是一个独特的角度,因为它面向的是 Agent 导航而非人类导航,有可能成为助手爬取自身上下文的默认接口。
用 `graphify ./raw --wiki` 生成 wiki,再把第二个 Agent 指向 `graphify-out/wiki/index.md`,衡量它是否比原始 HTML 图谱更准确地回答语料问题。
安全优先的本地 GraphRAG
对于一个 0.1.x 项目,SECURITY.md 的威胁模型异常明确,逐一列举 SSRF、超大下载、路径穿越、XSS、提示注入、YAML 注入、编码崩溃、符号链接穿越和 graph.json 损坏恢复。这种具体程度与不发布威胁模型的通用 RAG 工具相比是可信的差异化。
在 `graphify add` 时尝试重定向到 file://、提交一个超大 URL、注入包含 HTML script 标签的节点标签,然后确认每种情况都被文档所述的缓解机制阻断。
RepoDaily 判断
Graphify 是当前浪潮里定位最用心的 Claude Code skill 之一:多模态抽取、持久化 graph.json、多格式导出,外加一份覆盖 SSRF、路径穿越、XSS 与提示注入的威胁模型。风险真实但有限,安装命令没有错、也没缺失,只是项目暂时住在 graphifyy 这个名字下。