乐于分享
好东西不私藏

依托 Graphify 将 AI 编码助手令牌消耗降低 70

依托 Graphify 将 AI 编码助手令牌消耗降低 70

依托 Graphify 将 AI 编码助手令牌消耗降低 70%

告别向 AI 编码助手重复投喂完整文件

在当今 AI 时代,最强大的或许是那些拥有无限令牌或高端硬件以本地运行大语言模型(LLM)的人,但多数开发者两者皆无。然而,对于同时处理多个复杂项目与文件,或依赖 AI 生成和理解代码的我们而言,解决方案已然存在。此类操作通常以消耗令牌为代价,其消耗量取决于项目文件夹的复杂性和文件数量,而在不同 AI 助手间切换更会加剧这一问题。

Image from github(https://github.com/safishamsi/graphify)

解决方案便是 Graphify。没错,这是一款开源命令行工具,亦可作为 AI 助手的“技能”,其核心功能是将整个项目的代码库、文档及资源资产转化为一个可查询的知识图谱。本文将深入剖析 Graphify 如何帮助您在大型代码仓库上将令牌使用量降低高达 70 倍。我们将首先探讨其本质、工作原理、优势与局限,并详细说明如何安装它,以及如何在您使用的任何编码助手(无论是 Claude、GitHub Copilot、Cursor 还是 Gemini CLI)上运行您的首个仓库分析。

Graphify 概览

如前所述,Graphify 是一款开源命令行工具及 AI 助手“技能”,旨在将整个项目代码库、文档和资产转化为一个可查询的知识图谱。

如下图所示:

Credits :https://dsfor.com/graphify-tutorial/

它生成一个拓扑地图,使得 AI 代理能够通过图谱进行查询,而无需反复读取原始文件及海量代码行,从而有效节省令牌消耗。

Graphify 的三阶段工作流程:

  1. 1. 确定性抽象语法树解析(针对代码)
  2. 2. 语义提取(针对非结构化数据)
  3. 3. 莱顿聚类与拓扑映射

确定性抽象语法树解析

Source :https://en.wikipedia.org/wiki/Abstract_syntax_tree

Source :https://en.wikipedia.org/wiki/Abstract_syntax_tree

这是一个将原始、深度嵌套的源代码文本转换为机器可读、可系统分析、优化和操作的树状数据结构的过程。

它依托 Tree-sitter(一个开源解析器生成工具和增量解析库,用于将源代码转换为结构化的具体语法树)来执行对数十种编程语言的严格语法分析,提取出每一个注释、函数、类、依赖项、导入语句等元素。

语义提取

工作原理: 它利用您配置的 AI 助手模型密钥,将人类可读的文本和视觉资产转化为结构化的映射。对于 PDF、Markdown 文档、架构图或白板草图等文件,Graphify 会将其分解,并指示 LLM 识别其中的核心思想、关键信息及其相互关联。通过解构这些文档,Graphify 能够轻松地绘制出所有项目资产中的关键点与关系网络。

莱顿聚类与拓扑映射

Graphify 并未依赖传统的向量嵌入方法,而是采用 莱顿算法 来发现图谱内部紧密关联的社区。如果两个节点(例如一个函数和一个 Markdown 文件)频繁地相互引用,它们将被归入同一“邻域”。这有助于 AI 代理清晰地识别哪些代码组件或部分是相互关联和连接的。

Graphify 的核心优势

  1. 1. 显著节省令牌: 传统的 AI 工作流迫使助手反复读取整个文件。Graphify 通过向 AI 提供一个密集、结构化的摘要图谱来解决此问题。这极大地削减了令牌消耗并降低了 API 成本——在处理大型复杂代码库时,开销可降低多达 70 倍。
  2. 2. 增量式重构: 当您更新仓库时,Graphify 运用了一项智能优化技巧:它为每个文件生成一个唯一的加密哈希值(数字指纹)。在运行更新时,Graphify 仅解析实际发生变化的文件。通过完全跳过未修改的资产,这使得后续的图谱更新速度极快。
  3. 3. 带标签的关系: 节点之间生成的每个链接都被标记为 EXTRACTED(通过解析直接证明)或 INFERRED(由 LLM 推断得出,并附有置信度分数)。这确保了您始终能明确区分工具发现的结构化数据与 AI 推测的内容。

Graphify 的当前局限

  1. 1. 规模限制与手动批处理: 当仓库超过 200 个文件或 200 万令牌时,Graphify 会发出警告。它要求用户手动选择子目录或使用如 --update 之类的批处理标志,因为一次性处理庞大的多模块结构受到严重制约。
  2. 2. 此外,将大型目录拆分为孤立的子图有时可能导致 Graphify 丢失关键的跨模块连接。
  3. 3. UI 渲染限制: 原生的离线交互式可视化工具(graph.html)面临严重的渲染限制。如果您的项目映射到超过 5000 个节点,浏览器 UI 将会卡顿或冻结,迫使您只能依赖 CLI 命令(如 graphify query)进行操作。

现在,是时候开始节省令牌、优化资源并最大化您的 AI API 效率了。

安装与使用指南

  1. 1. 确保您的系统已安装 Python 3.10 或更高版本。
  2. 2. 打开终端并运行以下命令之一:
    # 推荐使用 uv
    uv tool install graphifyy
    # 替代方案:使用 pipx 或 pip
    pipx install graphifyy
    pip install graphifyy
  3. 3. 接下来,根据您使用的 AI 助手,在您的专用 CLI 项目文件夹中运行相应的命令:
    • • Claude Code (Linux/Mac): graphify install
    • • Claude Code (Windows): graphify install --platform windows
    • • Cursor: graphify cursor install
    • • VS Code Copilot Chat: graphify vscode install
    • • Gemini CLI: graphify install --platform gemini
    • • Aider: graphify install --platform aider
    • • OpenCode: graphify install --platform opencode
  4. 4. 在您的项目根目录下,打开 AI 助手或终端并执行:
    /graphify .
  5. 5. 处理完成后(耗时从数秒到数分钟不等,取决于代码库大小),Graphify 会将输出数据保存到项目根目录下的 graphify-out/ 文件夹中:
    • • GRAPH_REPORT.md:包含核心节点及为您的 AI 助手建议的查询问题。
    • • graph.html:一个交互式可视化地图。

如果您一直因顾虑硬件不足而犹豫是否切换 AI 助手,并因此消耗着大量令牌,那么现在时机已到。技术门槛已然降低,Graphify 正待您启用。

  • • Graphify 项目仓库: https://github.com/safishamsi/graphify