graphify在FastAPI代码库上的实战演示:每个节点都是可点击的概念
【免费下载链接】graphifyTurn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.项目地址: https://gitcode.com/GitHub_Trending/graph/graphify
graphify 是一款本地优先的代码知识图谱工具:一条命令把整个代码库(含文档、SQL 表结构、配置文件)解析成可查询的知识图谱。本文以 FastAPI 代码库为例,完整演示如何用 graphify 给大型项目建图——代码走 tree-sitter 确定性 AST 解析,全程本地、免费、不依赖向量库,每个节点都是可以直接点击、追问、追溯路径的"概念"。
先装上 graphify:两条命令完成配置
graphify 的官方 PyPI 包名是graphifyy(双 y),命令行仍叫graphify:
uv tool install graphifyy # 或 pipx install graphifyy graphify install # 把 /graphify 技能注册到你的 AI 助手支持 Claude Code、Cursor、Codex、Gemini CLI、GitHub Copilot 等 20 多个平台,graphify install --platform <name>可指定平台。装完在 AI 助手里输入/graphify .即可开工。
在 FastAPI 代码库上建图:30 秒得到 3 个文件
把 FastAPI 源码 clone 到本地(仓库地址:https://gitcode.com/GitHub_Trending/graph/graphify 是 graphify 自身,FastAPI 仓库请自行获取),进入目录后对助手说一句:
/graphify .几秒钟后,工作目录下会多出一个graphify-out/文件夹,里面有三个文件:
| 文件 | 用途 |
|---|---|
graph.html | 浏览器打开即玩的交互式图谱:点节点、筛选、搜索 |
GRAPH_REPORT.md | 报告:核心概念、惊人连接、建议问题 |
graph.json | 完整图谱数据,随时可查,无需重读源码 |
代码部分由本地 AST 解析完成(0 LLM 开销);只有文档、PDF、图片才会走语义抽取。这也是 graphify 和向量索引的本质区别——它不是 embedding,而是一张真正可遍历的图。
看懂 graph.html:每个节点都是一个可点击的概念
上图就是 graphify 对 FastAPI 代码库建出的图谱。右侧图例按"社区"(subsystem)分组,颜色对应检测到的子系统:
- APIRouter(96 个节点)—— 路由相关概念的最大集群
- SecurityBase(71)、v2(56)—— 安全与 OpenAPI 相关模块
- FastAPI(46)、BaseModelWithConfig(40)—— 核心模型与依赖注入
每个点都是一个具体概念(类、函数、文档段落),每条边都有关系标签(calls、imports、inherits等)。点击任意节点,就能看到它的全部连接;勾选图例中的社区,还能按子系统过滤整张图。FastAPI 这种上万行的项目,以前要翻几十个文件才能理清的依赖关系,现在一张图尽收眼底。
社区检测用的是 Leiden 算法,纯图结构聚类,不需要任何向量数据库。原理细节可参考仓库里的 docs/how-it-works.md。
GRAPH_REPORT.md 告诉你:"God 节点"是什么
建图结束后,GRAPH_REPORT.md会列出全项目连接数最多的概念——所谓 God 节点。在 FastAPI 上,APIRouter的度数高达 47,是名副其实的路由中枢;而在仓库自带的 httpx 演示(worked/httpx/GRAPH_REPORT.md)里,Client、AsyncClient、Response包揽前三。
报告还有两个很实用的板块:
- Surprising Connections:跨文件、跨模块的"意外"连接,按意外程度排序。比如
Timeout --uses--> URL这种跨文件关系,平时很少主动去查; - Suggested Questions:图谱自动给出 4~5 个"只有这张图才能回答"的问题,比如"
Client为什么同时连接了 4 个社区?"
三条查询命令:追问图谱,而不是 grep 文件
图建好之后,最爽的用法是直接向graph.json提问。下面是 graphify 跑在 FastAPI 上的真实输出:
graphify explain "APIRouter" # Node: APIRouter (routing.py L2210, Degree: 47) # --> RequestValidationError [uses] [INFERRED] # --> Dependant [uses] [INFERRED] # <-- __init__.py [imports] [EXTRACTED] ...graphify path "FastAPI" "ModelField" # 最短路径 3 跳: # FastAPI --uses--> DefaultPlaceholder <--references-- # get_request_handler() --references--> ModelFieldgraphify query "依赖注入是怎么走到路由的?" # 返回一个限定范围的子图,直接回答自然语言问题explain解释单个概念、path追踪两个概念之间的最短路径、query回答自然语言问题——三者都不需要重读源文件,回答速度比 grep + 人工翻文件快得多,而且省 token(仓库基准测试在 52 文件的混合语料上,每次查询比直接读文件省了 71.5 倍 token)。
置信标签:分清"读到的"和"猜到的"
每条边都带置信标签,这是 graphify 可信度设计的关键:
| 标签 | 含义 |
|---|---|
EXTRACTED | 源码里明确存在的(一次调用、一个 import),置信度恒为 1.0 |
INFERRED | graphify 跨文件解析推断出来的,附 0.55~0.95 的置信分 |
AMBIGUOUS | 不确定,报告里标记出来供人工复核 |
所以当你看到APIRouter --> Dependant [uses] [INFERRED]时,心里清楚这是"有证据的推断"而不是瞎连。这个透明化机制在跨文件调用解析、继承关系推断时尤其重要。
团队协作:让知识图谱随提交自动保鲜
graphify 的设计初衷就是团队共享:
- 一人执行
/graphify .,把graphify-out/提交进仓库; - 其他人拉代码后,AI 助手立刻能查图谱,无需重建;
- 执行
graphify hook install安装 git hook——每次提交后自动用 AST 增量重建(纯本地、零 API 费用),并注册 git merge driver,两人并行提交时graph.json会自动做并集合并,永远不会有冲突标记。
不想纳入版本控制的生成物,可用.graphifyignore(语法同.gitignore)精确排除。
小结:把"翻代码"变成"查图谱"
graphify 在 FastAPI 上演示了它的核心价值主张:代码地图免费且完全本地,每条边都能解释,不用向量库也能做可解释的语义导航。三个文件(graph.html/GRAPH_REPORT.md/graph.json)分别对应"看"、"读"、"查"三种消费方式。对于接手新项目、梳理架构、或者让 AI 助手更快理解代码库的场景,这套"建图一次、查询无数次"的工作流值得试一次。
【免费下载链接】graphifyTurn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.项目地址: https://gitcode.com/GitHub_Trending/graph/graphify
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考