Graphify:把代码库变成能查关系的知识图谱

接手一个陌生仓库,最费劲的往往不是找某个函数,而是弄清楚它和别的模块怎么连在一起。让 AI 帮忙读代码,也常会绕回反复搜索、打开文件这套流程。

Graphify 做的是给项目建一张可查询的知识图谱:代码里的调用、导入、继承关系能串起来,文档和 PDF 也可以放进同一张图。它提供命令行工具和编程助手 Skill,支持 Claude Code、Cursor 等工具,适合拿来梳理陌生代码库。

关系能查,也能追来源

代码部分用 tree-sitter 解析语法树,在本机完成,不需要调用大模型,也不需要先搭向量数据库。

图中的关系会标注 EXTRACTED 或 INFERRED:前者是源文件中明确提取出的关系,后者是经过解析、关联推导出来的关系。看到一条连接时,可以分清它是直接读到的,还是工具推出来的。这比只得到一段解释更方便核查,但推导标记本身不代表结果一定正确。

建好图以后,可以解释一个符号、查两个对象之间的路径,或者用自然语言取回相关的子图。对需要追模块依赖、梳理调用关系的人来说,这比单纯把代码画成一张漂亮大图更实用。

项目提供了 FastAPI 代码库的图谱示例。生成的 graph.html 可以在浏览器中打开,点击节点、搜索和筛选;同时还会得到 GRAPH_REPORT.md 和完整的 graph.json,后续查询可以继续使用这份图。

怎么开始

需要 Python 3.10 或更新版本,以及 uv;也可以用 pipx 安装。以 uv 为例:

uv tool install graphifyy
graphify install

注意包名是 graphifyy,末尾有两个 y;装好之后的命令仍然是 graphify。

进入要分析的项目,在支持的编程助手中执行:

/graphify .

图生成后,可以在命令行查询。下面两个是项目给出的 FastAPI 示例,换成自己的仓库时要替换符号名称:

graphify explain "APIRouter"
graphify path "FastAPI" "ModelField"

前一条看某个符号的来源和连接,后一条查两个对象之间的路径。输出目录默认为 graphify-out/。

适合用在哪里

接手老项目、准备重构一个不熟的模块,或者让编程助手先理解仓库结构,都可以考虑这种方式。它的价值在于把关系保存下来,后面能接着查,而不是每次从搜索文件重新开始。

有一个边界要分清:代码的 AST 解析在本地完成,不等于所有输入都完全离线。文档、PDF、图片和音视频的语义处理会使用编程助手的模型或配置的模型后端。涉及私有资料时,要先确认使用哪条处理路径。

开源 CLI 和 Graphify Cloud 也不是一回事。想先研究本地代码图谱,可以从 CLI 入手,不必把云服务的功能和效果算到本地工具头上。

项目信息