Graphify:把代码库变成可查询的知识图谱
Graphify 是开源的本地知识图谱工具,用 Python 写成,把代码、文档、SQL schema、配置和 PDF 解析成可查询的图,以 skill 形式挂进 Claude Code、Cursor、Codex 等编码助手,代码解析全在本机。这篇文章给出安装与最短跑通路径、输出文件位置和查询命令,并整理 Issues 里用户踩过的坑,帮你判断它是否适合你手上的仓库。
让编码助手改一个函数,它先去 grep,再一口气读十几个文件,跨文件的调用链还是可能漏掉。仓库越大,靠逐个读文件拼出来的上下文越不可靠,同一批文件被反复读进上下文也在持续消耗 token。
Graphify 是用 Python 写的本地知识图谱工具,把代码、文档、SQL schema、配置和 PDF 解析成一张可查询的图,供 Claude Code、Cursor、Codex 等编码助手检索。
它挂进助手的方式是 skill:在对话里敲 /graphify .,当前项目被解析成一张图,后面的问题不必再翻文件。代码走 tree-sitter 的确定性 AST 解析,不调用 LLM,解析过程不出本机;文档、PDF、图片和视频交给助手自带模型或你配置的 API key 做一次语义解析。

五分钟先跑通
先装 CLI。PyPI 上的包名是 graphifyy,比命令名多一个 y,名字写错会直接找不到包。
uv tool install graphifyy # install the CLI (or: pipx install graphifyy)
graphify install # register the skill with your AI assistant
graphify install 负责把 skill 注册到你的编码助手。仓库列出的支持平台有 Claude Code、Cursor、Codex、Gemini CLI、GitHub Copilot,以及另外 15 个以上;需要指定平台时用 graphify install --platform opencode 这种写法。
注册完成后,在助手里敲一条命令完成第一次建图:
/graphify .
仓库里没有写明最低 Python 版本要求。项目许可证是 Apache License 2.0,主要语言 Python,仓库地址是 https://github.com/Graphify-Labs/graphify ,当前 Star 122714、Fork 11824、开放 Issue 1518。
跑通之后你会得到什么
第一次跑完,当前目录下会多出一个 graphify-out/,里面是三个文件:
graphify-out/
├── graph.html 在浏览器里打开,点节点、过滤、搜索
├── GRAPH_REPORT.md 关键概念、意外连接、建议提的问题
└── graph.json 完整图数据,之后查询直接读它
graph.html 是可视化入口,节点代表概念,颜色区分检测出的社区,整张图可点可查。GRAPH_REPORT.md 是一份摘要,把连接最多的概念、看起来意外的关联和可以继续追问的问题列出来。graph.json 是底层数据,图建好之后,后续查询不再重新读你的源文件。
拿到图之后可以在终端里直接问:
$ graphify explain "APIRouter"
Node: APIRouter
Source: routing.py L2210
Community: 2
Degree: 47
Connections (47):
--> RequestValidationError [uses] [INFERRED]
--> Dependant [uses] [INFERRED]
--> .get() [method] [EXTRACTED]
<-- __init__.py [imports] [EXTRACTED]
$ graphify path "FastAPI" "ModelField"
Shortest path (3 hops):
FastAPI --uses--> DefaultPlaceholder <--references-- get_request_handler() --references--> ModelField
这段输出是仓库 README 里在 FastAPI 代码库上的示例。每条边带置信标记:EXTRACTED 表示源文件里写明的,INFERRED 表示由解析过程推导出来的,两者能分开看。
主要功能
- 本地确定性 AST 解析:代码部分用 tree-sitter 解析成 AST,不调用 LLM,代码不出本机。文档、PDF、图片和视频另走一次语义解析,用助手自带模型或你配置的 API key。
- 每条边可追溯:连接标注
EXTRACTED或INFERRED,能区分直接读到的内容和推断出来的关系。 - 不用向量库:没有 embedding,也没有向量存储,检索动作是在图上遍历,不做相似度计算。
- 跨文件链接:
calls、imports、inherits、mixes_in这几类关系跨约 40 种语言解析。 - God nodes:把连接数最高的概念挑出来,看清整个项目围绕什么运转。
- 社区划分:用 Leiden 把图切成子系统,标签以非 LLM 方式生成。
- 三种查询入口:
graphify query "<question>"对自然语言问题返回范围内的子图,graphify path A B追两点之间的路径,graphify explain X解释单个概念。 - 增量监听:
/graphify add ... --watch在文件变动时更新图,适合边改边查的用法。
常用参数与配置
graphify install:把 skill 注册给编码助手;加--platform opencode之类的参数指定平台。/graphify .:在助手里对当前目录建图,是主入口。graphify explain "<概念>"、graphify path A B、graphify query "<问题>":三个查询命令,分别对应解释单点、追路径、按问题取子图。graphify.yaml:有用户在 Issue 里用它调本地 LLM(Ollama)和高核心数 CPU 的扩展行为。README 节选里没有给出这个文件的完整字段说明,具体字段以仓库文档为准。- skill 自动刷新:v0.9.72 起,包升级后 graphify 会在任意非 install 的 CLI 命令执行时自动刷新已过期的
SKILL.md及其引用文件并做本地备份,版本不匹配的告警不再需要手工跑一次graphify install。
结果在哪里看
看整体结构和可视化,打开浏览器里的 graphify-out/graph.html。想快速知道这个项目有什么看点,读 graphify-out/GRAPH_REPORT.md。要给别的工具用或写脚本,读 graphify-out/graph.json,它是完整的图数据。
命令行这一侧的输出直接打在终端。以 explain 为例,它会给出节点所在文件与行号(示例里是 routing.py L2210)、所属社区编号和度数值,再把该节点的连接逐条列出来。
仓库 README 还提到 graphify 可以通过 MCP 被其他工具调用,但节选部分没有给出这条路径的完整说明。Issue 里有用户尝试过 python3 -m graphify.serve graphify-out/graph.json,遇到报错后该条已标记解决。
实际使用中的坑
- Codex 上的 hook 兼容性:
codex not support additionalContext on PreToolUse这条仍待解决,报错为「PreToolUse hook returned unsupported additionalContext」。更早一条「Codex: PreToolUse failed」已经解决。 - 社区划分不可复现:
Non-deterministic community assignments across identical-corpus runs (0.9.6)待解决,同一份语料跑两次,节点的社区归属可能不同。如果你要把社区编号写进文档或 CI 断言,先绕开这一点。 - 新平台的适配在追问中:
Is pi or omp supported?待解决,用户在问 pi 与 oh-my-pi 这类助手能否直接使用。仓库支持列表之外的平台,需要自己先验证。 - 提取器覆盖仍在补:PHP 闭包在任何位置都产生不了节点、ObjC 提取器曾丢掉约 60% 的关系,两条目前都已解决,说明各语言提取器的深度是逐步补齐的。
- 两处历史安全问题已修:v0.9.68 修掉
--watch的路径参数被未加引号拼进 shell 命令的问题,v0.9.70 修掉 Fortran cpp 预处理步骤可被不受信任的.F/.F90文件读取宿主机任意文件的问题。跑旧版本的建议升级。
选型参考
| 项目 | 适合谁 | 部署方式 | 主要限制 | 什么情况下选它更合适 | 项目地址 |
|---|---|---|---|---|---|
| Graphify | 用 Claude Code、Cursor、Codex 等助手读大型代码库、需要跨文件关系的开发者 | uv tool install graphifyy 装 CLI,再用 graphify install 注册 skill;代码解析全本地 | 文档、PDF、图片的语义解析要消耗助手模型额度或自配 API key;同语料两次运行社区划分不一致的问题在 0.9.6 上仍开放 | 你要的回答是「谁调用了谁」「两个概念怎么连上」这类路径问题 | Graphify |
| Repomix | 想把仓库压成单文件、一次性喂给模型通读的人 | 仓库没有说明 | 未逐一核实 | 你只需要模型通读一遍代码,之后不做反复的关系追问 | Repomix |
| LEANN | 在本机给个人语料建轻量向量索引、做相似度检索的人 | 仓库没有说明 | 未逐一核实 | 语料以自然语言文本为主,问的是「找到相似内容」 | LEANN |
需要一次性把仓库读进上下文、之后不做关系追问,Repomix 那种压成单文件的路径步骤更少,Graphify 要先建图再查。语料以笔记、邮件这类自然语言文本为主时,LEANN 的本地索引更贴合相似度检索,Graphify 的长处在代码里的调用与引用关系。它不如对比项的地方在前置成本:图没建好之前什么都查不到,大仓库第一次解析要等。
合规红线
Graphify 会遍历你指定的目录,读取其中的代码、配置、SQL schema、PDF 和图片。执行范围限制在你拥有或已获授权的仓库与文档上;把客户代码、第三方仓库或含个人信息的 PDF 指给它之前,先确认你有权处理这些内容。
代码解析在本机完成,文档、PDF、图片和视频的语义解析则会把内容交给你的编码助手模型,或交给你配置的 API key 背后的服务方。这一步等价于把材料发送给模型服务提供方,涉及客户数据或受监管数据时,需要按你所在环境的数据出境与保密要求判断。
什么情况下别用它
你只想要一次性的代码通读,读完就丢,Graphify 的建图步骤比打包成单文件的方案多,过程中还多出一份需要维护的图数据。
你的日常工作里没有 Claude Code、Cursor、Codex、Gemini CLI 这类支持 skill 的编码助手,这套工具的入口设计围绕 /graphify 展开,用起来会缺掉主路径。
你的语料是个人笔记、聊天记录、邮件这类自然语言文本,问题形态是找相似内容,本地向量索引类工具更直接;Graphify 要先把这些内容过一遍语义解析,再当成图里的节点处理。
你需要社区划分结果可复现,或者要把社区编号写进自动化断言,当前这个不稳定问题还没有标记为已解决,等它修完再用。
焚评:这个项目的量化评分
本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.9 分(满分 10)。下表是各维度的得分:
| 评分维度 | 得分 |
|---|---|
| 热度动量(权重 25%) | 10.0 / 10 |
| 开发活跃(权重 25%) | 10.0 / 10 |
| 社区响应(权重 15%) | 9.0 / 10 |
| 文档质量(权重 15%) | 10.0 / 10 |
| 发布节奏(权重 10%) | 10.0 / 10 |
| 风险控制(权重 10%) | 10.0 / 10 |
评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。
内容核验说明
收录它是因为把本地 AST 解析、可追溯边和查询命令讲得具体,还汇总了 Issue 里语言覆盖与平台兼容的坑。适合已用 Claude Code、Cursor 等助手读大型仓库的人参考。注意 Star、Fork、Issue 数与焚评分数来自原作者公开披露和焚.com 引用,诀.com 未独立验证;社区划分可复现性、最低 Python 版本等仍需自行确认。
文中 Star 122714、Fork 11824、开放 Issue 1518 及焚评分值来自原作者公开披露与焚.com 引用,诀.com 未独立验证;FastAPI 的 explain 与 path 输出为仓库 README 示例,非实测。全文没有独立测试或复现记录,建图效果与耗时因仓库而异。用户反馈摘要
根据仓库 Issue 来看,讨论集中在语言覆盖与工程稳定性:提交者请求补 GDScript、COBOL 支持,报告 R 文件被静默丢弃(状态为待解决)、PHP 闭包不生成节点(已解决);也有报告 Codex PreToolUse hook 不支持 additionalContext(待解决)、同一语料社区划分不可复现,以及语义层与 AST 图融合依赖节点 id 碰撞。另有 watch 安装 extra 缺文档、Ollama 与高核心数 CPU 调参、团队提交图冲突等实践问题,以及接入本地量化嵌入、与 agentmemory 组合的想法。
基于该仓库公开 Issue 整理,只反映提交者报告的现象与诉求,不代表诀.com 立场,也不代表问题已被确认。项目来源与说明
开源项目:Graphify-Labs(Graphify-Labs)
本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。
查看项目仓库