近期,开源项目 graphify 在开发者社区引发关注:其 GitHub 星标数已突破 12.6 万,不仅入选 Y Combinator,还登陆了 Vercel Marketplace。该工具的核心价值在于优化 AI 编程代理(如 Claude Code、Codex 或 Cursor)的工作流:通过输入 /graphify,代理可直接查询代码图谱,而非暴力逐个读取文件,从而大幅降低 Token 消耗。

为验证其“节省 Token”的实际效果,我在本地 Linux 环境下对真实仓库进行了独立测试。全程无需云端服务或 API 密钥,以下是详细评测结果。

graphify 是什么

graphify 是一款基于 Apache-2.0 协议开源的 Python CLI 工具及代理技能(Agent Skill)。它利用 tree-sitter 解析项目代码,并在 graphify-out/ 目录下生成三个核心文件:

  • graph.html:可在浏览器中查看的交互式力导向图;
  • GRAPH_REPORT.md:包含“关键节点”(god nodes)、社区划分及意外连接的摘要报告;
  • graph.json:完整图谱数据,支持代理通过 explain、path 和 query 命令进行高效查询。

代码提取过程完全本地化且具有确定性。除非配置后端,否则 LLM 仅用于解析文档、PDF、图片或视频,以及为代码社区命名。

测试环境搭建

测试机器运行 Debian 13 系统,搭载 Python 3。安装时需注意 PyPI 包名包含双写 y:

python3 -m venv venv
venv/bin/pip install graphifyy      # 安装版本 0.9.92
git clone --depth 1 https://github.com/encode/httpx testbed/httpx

测试对象选定为 httpx,这是一个知名的 Python HTTP 客户端库,包含约 17,750 行 Python 代码及文档。其规模适中,既具备测试价值,又便于人工校验预期结果。

构建图谱:2秒完成,0 Token消耗

纯代码构建无需 AI 介入,直接通过 CLI 执行 update 命令:

cd testbed/httpx
graphify update .

输出显示,AST 提取处理了 101 个未缓存文件,重建了 2233 个节点、4453 条边和 166 个社区。全新构建耗时 2.1 秒;编辑单文件后的增量重建耗时 1.6 秒。统计数据显示:Token cost: 0 input · 0 output。

生成的文件体积分别为:graph.json 1.7 MB,graph.html 1.9 MB,GRAPH_REPORT.md 24 KB。Markdown 文档也被结构化纳入,CHANGELOG.md 等均显示为独立节点。

报告准确性分析

“关键节点”列表为新贡献者提供了清晰的入门指引:

1. Response - 170 edges
2. Request - 111 edges
3. Changelog - 79 edges
4. Client - 69 edges
5. AsyncClient - 51 edges
6. BaseClient - 45 edges

这准确反映了 httpx 的核心架构。报告中 88% 的边标记为 EXTRACTED(源码直取),12% 为 INFERRED(推断得出),平均置信度 0.91。每条边的标签明确了信息来源的可信度。相比之下,“意外连接”部分实用性一般,多为文档标题与代码类的常规链接。

查询环节:Token 节省显著

这是代理实际调用的核心场景。使用 tiktoken cl100k 编码统计输出量,结果如下:

  • explain 命令:查询 Client 类仅输出 628 个 Token,列出 69 个连接及其位置。若直接读取 _client.py 文件,则需 13,659 个 Token。
  • path 命令:返回单行 3 跳链,清晰展示 Client 到 DigestAuth 的引用路径。
  • query 命令:查询请求发送流程输出 1,728 个 Token。系统执行广度优先搜索,找到 536 个节点但仅展示 82 个,并提示可通过增加 --budget 查看完整内容。

数据显示,针对“定位代码及依赖”类问题,图谱查询成本约为直接读取文件的 1/20。需注意,图谱仅提供路径指引,不包含具体代码内容,代理修改代码时仍需读取源文件。

存在的局限性

名称歧义问题。 执行 graphify explain "Client" 时,因同时匹配代码类和文档标题,程序拒绝回答并报错。建议使用 path::symbol 格式规避,但这表明文档与代码混合索引易导致常见名称冲突。

本地小模型标签生成缓慢。 无 API 密钥时,社区标签默认使用文件名或符号名。若使用 LLM(如 Ollama)重命名标签,在我机器上使用 CPU 运行 1.7B 模型超过 11 分钟仍未完成。代码图谱构建本身不依赖此步骤,但美观的标签需要更强的算力或 API 支持。

结论与建议

对于代码处理场景,graphify 值得安装。它免费、本地化且极速,能在代理打开文件前提供低成本的路径地图。建议将 graphify update . 加入 git hook,让代理优先使用图谱查询。

本次测试未涵盖付费助手内的 /graphify 技能、多模态语义分析及托管版 Graphify Cloud。记录的 Token 节省数据仅基于单次查询,非全会话基准测试。

项目地址:github.com/Graphify-Labs/graphify