文档大纲

Graphify 深度解析:把代码库变成可查询的知识图谱

如果你让 AI 助手读代码,它大概率会给你一个听起来很有道理的答案——然后你花半小时翻源码,发现它把某个函数的作用猜错了。这不是模型不够聪明,而是检索方式本身在丢信息。

Graphify 的官方定位一句话就能说清:"Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph"——把代码库连同文档、SQL 表结构、配置文件甚至 PDF,一起变成一张能用自然语言查询的知识图谱。

一、核心价值主张:检索,不是猜测

大多数 AI 代码工具走的是向量检索路线:把代码切成片段,转成 embedding 存进向量库,提问时捞回最相似的几段塞给模型。这套流程的问题是,相似不等于正确,模型最后生成的那句话和代码真实逻辑之间隔着一层概率。

Graphify 换了一条路:建图谱,然后遍历图谱。

作者自己的说法是「Every edge is explained」——图谱里的每一条边都能说清楚它是怎么来的。这听起来像是技术吹嘘,但看完全部设计你会发现,它确实是围绕"可解释"这一件事设计的。

二、核心技术架构

2.1 tree-sitter AST 解析:确定性、零 LLM

代码文件交给 tree-sitter 解析成抽象语法树(AST)。如果你不熟这个概念,可以简单理解成:编译器的第一步就是把代码变成一棵结构化的树,函数、类、参数、调用关系全在树上,不含任何模糊语义。

基于这棵树,Graphify 把函数、类、调用、导入、继承、Mixin 这些关系全部结构化提取出来,支持 40 多种编程语言。

关键点在这里:这一步是确定性的,不调用大语言模型。同一个代码库跑两次,结果完全一样。

零 token 消耗构建图谱——这在 2025 年之后是个相当能打的卖点,因为绝大多数竞品按 token 计费构建索引,你数据越多,前期成本越高。

2.2 EXTRACTED vs INFERRED 双重标注

这是我认为整个项目最值得学的设计。

图谱里每一条边(edge)都带来源标注,分两类:

  • EXTRACTED:代码里显式写出来的。比如 A 文件 import 了 B、A 类继承了 B 类、A 调用了 B 函数——这种关系是明摆着的,直接提取。
  • INFERRED:通过分析推断出来的。比如根据类型推导、上下文关联判断 A 很可能依赖 B,但代码里没有明写。

为什么要分这么细?因为 AI 工具最让人抓狂的就是幻觉。它说 A 依赖 B,你分不清是它真的读到了 import 语句,还是它猜的。有了这个标注,你在看结果时可以一眼分辨:标 EXTRACTED 的是事实,标 INFERRED 的是推断。

作者把这句话写成了产品原则:Every edge is explained。

2.3 图谱查询三大能力

命令能力通俗解释
graphify query "你的问题"返回作用域子图用大白话问,它把相关的那块图捞出来给你
graphify explain "某个符号"解释任意符号给它一个函数名,它告诉你这个符号是什么、和谁连着
graphify path A B追踪 A 到 B 的最短路径问"这两个东西怎么扯上关系的",它给出一条路径

三个命令分别对应三个真实痛点:我想理解某块功能(query)、我想搞懂一个看不懂的名字(explain)、我想知道两个看起来没关系的东西怎么串起来(path)。

2.4 输出三件套:图谱即产品

跑完之后会生成一个目录:

graphify-out/
├── graph.html         # 交互式图谱,浏览器打开,可点击节点、过滤、搜索
├── GRAPH_REPORT.md    # 高亮报告:关键概念、意外关联、建议问题
└── graph.json         # 完整图谱数据,随时查询,无需重读源文件

这里有个很聪明的设计选择:直接产出一个能在浏览器打开的交互式 HTML。

这意味着你不需要懂命令行,也能拿到一张可以点开看的代码关系图。对非技术的人来说,这张图本身就是能交付的产品——你可以把它发给同事看,也可以塞进文档里。多数同类工具只给一个命令行输出或者 JSON,没有可视化交付物。

2.5 非代码文件也能进同一张图谱

代码之外,文档、PDF、图片、视频走另一条路:调用模型做语义处理,再统一映射进同一张图谱。

所以代码部分是完全本地的(tree-sitter,纯本地零成本),文档部分可以配 API Key。这是一个务实的分工——确定性的部分不花钱,需要语义理解的部分才花钱。

2.6 安装:一行命令接进你现有的 AI 工具

uv tool install graphifyy
graphify install

第二条命令会自动检测你机器上的 AI 助手并注册对应 skill,装完之后直接在助手里输入:

/graphify .

官方列出的支持平台包括 Claude Code、Cursor、Codex、Gemini CLI、GitHub Copilot 等 20 多个——基本上主流的 AI 编程工具都覆盖了。官网是 graphify.com,文档在 docs.graphify.com。

三、基准测试:数字说话

作者公开了一组基准测试,并且采用了双盲评分方法(两位评审独立打分,90.6% 一致性,Cohen's kappa 0.81),这个方法论在开源项目里不常见,也是可信度加分项。

基准项目Graphify表现对比
LOCOMO recall@100.497mem0 为 0.048,supermemory 为 0.149,约 10 倍于竞品
LOCOMO QA 准确率45.3%supermemory 为 49.7%,接近最优
LongMemEval QA 准确率76%与 dense RAG 持平
ERPNext 关键事实覆盖率82.0%grep/read 为 70.8%,明显更高
图谱构建 LLM 费用0其他方案按 token 计费

怎么读这组数字:召回率(recall@10)上是压倒性优势——能找回 10 倍于竞品的信息量。问答准确率上略逊于最优的 supermemory,但差距不大。长期记忆和传统 RAG 打平。ERPNext 那项是最有说服力的,因为它衡量的是真实业务系统的事实覆盖率。

最后一行是护城河:构建成本为零。

四、和传统 RAG 的对比:什么时候值得换

如果你正在用向量检索做代码问答,这张表可以帮你判断要不要试:

维度向量检索(RAG)Graphify 图谱
结果确定性相似度打分,有概率性AST 解析,结构化确定
关系表达只有语义相似,没有调用链显式记录调用、继承、导入
结果溯源难判断是读到还是猜的每条边标 EXTRACTED / INFERRED
跨文件路径需要人自己串联path 命令直接给路径
构建成本按 token 计费代码部分为零
非代码文件一样要 embedding走模型语义处理后入同一图谱

五、谁适合用,谁可以先不用

5.1 电商和运营场景的适用点

Graphify 的核心是"让 AI 准确理解一整套系统",这个能力对电商业务有直接的迁移空间:

  • 多系统串联排查:你的 ERP、订单系统、库存系统、客服工单之间的调用关系,本质上就是一张图谱。哪天出问题了,不用再靠人肉翻日志对时间线。
  • 业务规则沉淀:优惠券规则、退款条件、库存扣减逻辑这类散落在代码里的规则,建图之后可以直接问"满减是在哪个函数里判的",答案带来源标注。
  • 新人上手成本:新人问"这个字段谁在写、谁在读",explain 一条命令就有答案,不用等老员工有空带。
  • 给客户看的交付物:graph.html 是可以外发的可视化关系图,比技术文档更容易被非技术方接受。

5.2 什么时候用不上它

说实话,这几个场景建议先别折腾:

  • 你只有几十行脚本:图谱的价值在于规模,小项目直接让模型读文件更快。
  • 你主要读文档而非代码:代码部分是零成本优势,文档部分照样要调模型花钱。
  • 你需要的是生成代码,不是理解代码:这是代码理解工具,不是代码生成工具,方向不一样。

六、五个值得借鉴的设计

看完整个项目,我认为下面五点比代码本身更有参考价值:

  1. 用标注解决信任问题:EXTRACTED / INFERRED 这个设计,本质是给 AI 输出加了一层可信度分级。这个思路可以直接搬到任何 AI 生成内容的产品里——标注依据来源,让使用者自己判断该不该信。
  2. 确定性的部分坚决不用模型:能用解析器解决的绝对不调 LLM。这不是抠成本,是把稳定性做在架构里。
  3. 图谱即产品:产出 graph.html 这种可以直接交付的可视化,而不是只给命令行输出。这决定了非技术用户能不能用起来。
  4. Skill 即发行格式:graphify install 自动检测环境并注册,用户零配置。这一招比写一堆安装文档有效得多。
  5. 基准测试公开方法论:双盲评分、公开一致性和 kappa 系数。当一个 AI 项目愿意把自己的评测方法摊开讲,说明它对自己的结果有底气。

附:项目信息速查

项目值
仓库Graphify-Labs/graphify
官网graphify.com
文档docs.graphify.com
安装uv tool install graphifyy
支持平台20+(Claude Code、Cursor、Codex、Gemini CLI、GitHub Copilot 等)

阅读量: 317