开源项目

graphify

graphify

把任意代码文件夹、数据库 schema、文档、图片甚至视频转化为可查询的知识图谱,AI 编程助手(Claude Code、Cursor 等)通过此图谱理解项目结构,替代传统的 grep 或向量检索。亮点在于代码解析完全本地化(tree-sitter AST,零 LLM 调用),图谱边带有 EXTRACTED/INFERRED 置信标签,支持跨文件依赖追踪和自然语言查询。benchmark 显示在代码检索和 QA 上表现优于 mem0 等方法,且不消耗 LLM token。

README

Graphify

Graphify-Labs%2Fgraphify | Trendshift

用其他语言阅读

🇺🇸 English | 🇨🇳 简体中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇩🇪 Deutsch | 🇫🇷 Français | 🇪🇸 Español | 🇮🇳 हिन्दी | 🇧🇷 Português | 🇷🇺 Русский | 🇸🇦 العربية | 🇮🇷 فارسی | 🇮🇹 Italiano | 🇵🇱 Polski | 🇳🇱 Nederlands | 🇹🇷 Türkçe | 🇺🇦 Українська | 🇻🇳 Tiếng Việt | 🇮🇩 Bahasa Indonesia | 🇸🇪 Svenska | 🇬🇷 Ελληνικά | 🇷🇴 Română | 🇨🇿 Čeština | 🇫🇮 Suomi | 🇩🇰 Dansk | 🇳🇴 Norsk | 🇭🇺 Magyar | 🇹🇭 ภาษาไทย | 🇺🇿 Oʻzbekcha | 🇹🇼 繁體中文 | 🇵🇭 Filipino | 🇮🇱 עברית

PyPI Downloads Discord LinkedIn YC S26

在你的 AI 编码助手中输入 /graphify,它会将整个项目(代码、文档、PDF、图片、视频)映射成一个知识图谱,你可以通过查询而非 grep 文件来理解项目。

  • 免费生成代码图,完全本地运行。 代码通过 tree-sitter AST 解析:确定性,不依赖 LLM,数据不会离开你的机器。(文档、PDF、图片和视频使用你助手的模型,或配置的 API key,进行语义分析。)
  • 每条边都有解释。 每个连接被标记为 EXTRACTED(源中显式)或 INFERRED(由 graphify 解析),这样你就知道哪些是直接读取的,哪些是推断的。
  • 不是向量索引。 没有 embedding,没有向量存储:是一个真正的图,你可以遍历它。问一个问题,追踪两个事物之间的路径,或解释一个概念。

graphify 的交互式 graph.html 页面,展示了 FastAPI 代码库的力导向知识图谱,并带有检测到的社区图例

graphify 映射的 FastAPI 代码库。每个节点是一个概念,颜色表示检测到的社区,整个图在 graph.html 中可点击。

快速开始(30 秒):

uv tool install graphifyy      # 安装 CLI(或:pipx install graphifyy)
graphify install               # 将技能注册到你的 AI 助手

然后,在你的 AI 助手中:

/graphify .

这就行了。你会得到三个文件

graphify-out/
├── graph.html       在任意浏览器中打开 — 点击节点、过滤、搜索
├── GRAPH_REPORT.md  亮点:关键概念、出人意料的连接、建议的问题
└── graph.json       完整图 — 随时查询,无需重新读取文件

支持 Claude Code、Cursor、Codex、Gemini CLI、GitHub Copilot 等 15 个以上平台 — 请查看你的平台


实际效果

graphify 路径查询:终端中询问 FastAPI 和 ModelField 之间的最短路径,答案在知识图谱中逐跳高亮

图构建好后,你通过查询而不是阅读文件来理解代码。以下是真实输出,graphify 运行在上方展示的 FastAPI 代码库上:

$ 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

每条边带有一个置信度标签EXTRACTED = 源中显式,INFERRED = 通过解析推导),因此你可以区分直接读取的内容和推断的内容。graphify query "<question>" 会为自然语言问题返回一个子图,graphify path A B 可追踪任意两个事物之间的连接路径。


它能做什么

开箱即用的能力:

能力 你得到什么
核心节点 连接最多的概念,展示所有事物如何流通
社区 图被拆分为子系统(Leiden 算法),并带有 LLM 无关的标签
跨文件链接 calls / imports / inherits / mixes_in 通过 tree-sitter AST 在约 40 种语言中解析
查询、路径、解释 问问题、追踪两个事物之间的路径、或解释一个概念,都基于 graph.json
设计理由 + 文档引用 # NOTE: / # WHY: 注释和 ADR/RFC 引用成为一等节点,链接到它们解释的代码
超越代码 文档、PDF、图片、视频/音频都映射到同一个图
本地优先 代码通过 tree-sitter 在本地解析(无 LLM,数据不离开机器);只有文档/媒体的语义分析需要调用后端,且仅在你配置时进行

基准测试

基准 指标 graphify 其他系统
LOCOMO (n=300) recall@10 0.497 mem0 0.048, supermemory 0.149
LOCOMO (n=300) QA 准确率 45.3% supermemory 49.7%, mem0 27.3%
LongMemEval-S (n=50) QA 准确率 76% 与密集 RAG 并列
图构建 LLM 信用点 0 大多数系统按 token 计费

每个系统在相同测试框架下使用相同的模型和预算运行,由一位验证者(与第二位验证者盲校,一致性 90.6%,Cohen's kappa 0.81)评分。完整的系统表格、代码智能结果和复现命令:BENCHMARKS.md


先决条件

要求 最低版本 检查 安装
Python 3.10+ python --version python.org
uv (推荐) 任意 uv --version curl -LsSf https://astral.sh/uv/install.sh | sh
pipx (替代) 任意 pipx --version pip install pipx

macOS 快速安装(Homebrew):

brew install python@3.12 uv

Windows 快速安装:

winget install astral-sh.uv

Ubuntu/Debian:

sudo apt install python3.12 python3-pip pipx
# 或安装 uv:
curl -LsSf https://astral.sh/uv/install.sh | sh

安装

官方包: PyPI 包名是 graphifyy(双 y)。PyPI 上其他 graphify* 包不是官方的。CLI 命令仍然是 graphify

第 1 步 — 安装包:

# 推荐(隔离环境;如果之后找不到 'graphify',运行:uv tool update-shell):
uv tool install graphifyy

# 备选:
pipx install graphifyy
pip install graphifyy  # 可能需要设置 PATH — 见下方说明

第 2 步 — 将技能注册到你的 AI 助手:

graphify install

这就行了。打开你的 AI 助手并输入 /graphify .

如果你想将助手技能安装到当前仓库而非用户配置文件中,添加 --project

graphify install --project
graphify install --project --platform codex

项目范围安装会把文件写到当前目录下,例如 .claude/skills/graphify/SKILL.md.agents/skills/graphify/SKILL.md(以及一个按需加载的 references/ 侧载文件),并打印一条 git add 提示,告诉你可以提交哪些文件。支持项目范围安装的各个平台命令也接受同样的标志,例如 graphify claude install --projectgraphify codex install --project

PowerShell 注意: 使用 graphify . 而不是 /graphify . — 前导斜杠在 PowerShell 中是路径分隔符。

graphify: command not found uv tool install / pipx installgraphify 命令放到它们的工具 bin 目录(~/.local/bin)。如果你安装后 shell 立刻找不到它——在全新的 macOS + zsh 设置中常见——说明该目录尚未加入你的 PATH:运行 uv tool update-shell(或 pipx ensurepath),然后打开一个新的终端。如果使用纯 pip,请将 ~/.local/bin(Linux)或 ~/Library/Python/3.x/bin(Mac)添加到你的 PATH,或者运行 python -m graphify

使用 uvx / uv tool run 而不是安装? 请指定包名而不是命令:uvx --from graphifyy graphify install。单纯的 uvx graphify … 会失败(No solution found … no versions of graphify),因为 uv tool run 将第一个单词视为包名,而包名是 graphifyygraphify 命令在它里面。

Mac/Windows 上尽量避免使用 pip install 技能在运行时从 graphify-out/.graphify_python 解析 Python 路径;如果该路径指向一个与 pip 安装包的环境不同的环境,你会得到 ModuleNotFoundError: No module named 'graphify'uv tool installpipx install 将包隔离在自己的环境中,完全避免了这个问题。

Git hooks 和 uv tool / pipx: graphify hook install 在安装时将当前解释器路径直接嵌入到 hook 脚本中,因此 post-commit hook 即使在 GUI git 客户端和 CI 运行器中也能正确触发,这些场景下 ~/.local/bin 不在 PATH 中。如果你重新安装或升级 graphify,请重新运行 graphify hook install 以刷新嵌入的路径。

选择你的平台(20+ 助手,点击展开)
平台 安装命令
Claude Code(Linux/Mac) graphify install
Claude Code(Windows) graphify install(自动检测)或 graphify install --platform windows
CodeBuddy graphify install --platform codebuddy
Codex graphify install --platform codex
OpenCode graphify install --platform opencode
Kilo Code graphify install --platform kilo
GitHub Copilot CLI graphify install --platform copilot
VS Code Copilot Chat graphify vscode install
Aider graphify install --platform aider
OpenClaw graphify install --platform claw
Factory Droid graphify install --platform droid
Trae graphify install --platform trae
Trae CN graphify install --platform trae-cn
Gemini CLI graphify install --platform gemini
Hermes graphify install --platform hermes
Kimi Code graphify install --platform kimi
Amp graphify amp install
Agent Skills(跨框架) graphify install --platform agents(别名 --platform skills
Kiro IDE/CLI graphify kiro install
Pi coding agent graphify install --platform pi
Cursor graphify cursor install
Devin CLI graphify devin install
Google Antigravity graphify antigravity install

Codex 用户还需要在 ~/.codex/config.toml[features] 下设置 multi_agent = true 以启用并行提取。CodeBuddy 使用与 Claude Code 相同的 Agent tool 和 PreToolUse hook 机制。Factory Droid 使用 Task 工具进行并行子代理调度。OpenClaw 和 Aider 使用顺序提取(这些平台上并行代理支持尚处于早期)。Trae 使用 Agent 工具进行并行子代理调度,并且支持 PreToolUse hooks,因此 AGENTS.md 是常驻机制。

--platform agents(别名 --platform skills)针对通用跨框架 Agent-Skills 规范的位置:用户全局安装写 ~/.agents/skills/npx skills 和符合规范的框架都会读取该目录),项目安装(--project)写 ./.agents/skills/。裸的 graphify install 保持单平台(Claude Code)设计——当你希望技能能被任何读取 .agents/skills 的框架发现时,请使用 agents 平台名称。

Codex 使用 $graphify 而不是 /graphify

可选扩展(只安装你需要的)
扩展 添加内容 安装命令
pdf PDF 提取 uv tool install "graphifyy[pdf]"
office .docx.xlsx 支持 uv tool install "graphifyy[office]"
google Google Sheets 渲染 uv tool install "graphifyy[google]"
video 视频/音频转录(faster-whisper + yt-dlp) uv tool install "graphifyy[video]"
mcp MCP stdio 服务器 uv tool install "graphifyy[mcp]"
neo4j Neo4j 推送支持 uv tool install "graphifyy[neo4j]"
falkordb FalkorDB 推送支持 uv tool install "graphifyy[falkordb]"
svg SVG 图导出 uv tool install "graphifyy[svg]"
leiden Leiden 社区检测(仅 Python < 3.13) uv tool install "graphifyy[leiden]"
ollama Ollama 本地推理 uv tool install "graphifyy[ollama]"
openai OpenAI / OpenAI 兼容 API uv tool install "graphifyy[openai]"
gemini Google Gemini API uv tool install "graphifyy[gemini]"
anthropic Anthropic Claude API(--backend claude,使用 ANTHROPIC_API_KEY uv tool install "graphifyy[anthropic]"
bedrock AWS Bedrock(使用 IAM,无需 API key) uv tool install "graphifyy[bedrock]"
azure Azure OpenAI 服务(--backend azure,使用 AZURE_OPENAI_API_KEY + AZURE_OPENAI_ENDPOINT uv tool install "graphifyy[openai]"
sql SQL 架构提取 uv tool install "graphifyy[sql]"
postgres 实时 PostgreSQL 内省(--postgres DSN uv tool install "graphifyy[postgres]"
dm BYOND DreamMaker .dm/.dme AST 提取(可能需要 C 编译器和 python3-dev 如果没有匹配你平台的 wheel) uv tool install "graphifyy[dm]"
terraform Terraform / HCL .tf/.tfvars/.hcl AST 提取 uv tool install "graphifyy[terraform]"
pascal Pascal / Delphi .pas/.dpr/.dpk/.inc AST 提取(更准确的 calls/inherits 边;缺少时退回到正则提取器) uv tool install "graphifyy[pascal]"
chinese 中文查询分词(jieba) uv tool install "graphifyy[chinese]"
all 以上所有 uv tool install "graphifyy[all]"

让你的助手始终使用图

在构建图之后,在你的项目中运行一次以下命令:

平台 命令
Claude Code graphify claude install
CodeBuddy graphify codebuddy install
Codex graphify codex install
OpenCode graphify opencode install
Kilo Code graphify kilo install
GitHub Copilot CLI graphify copilot install
VS Code Copilot Chat graphify vscode install
Aider graphify aider install
OpenClaw graphify claw install
Factory Droid graphify droid install
Trae graphify trae install
Trae CN graphify trae-cn install
Cursor graphify cursor install
Gemini CLI graphify gemini install
Hermes graphify hermes install
Kimi Code graphify install --platform kimi
Amp graphify amp install
Agent Skills(跨框架) graphify agents install(别名 graphify skills install
Kiro IDE/CLI graphify kiro install
Pi coding agent graphify pi install
Devin CLI graphify devin install
Google Antigravity graphify antigravity install

这会写入一个小配置文件,告诉你的助手在回答代码库问题时查阅知识图,优先使用范围查询如 graphify query "<question>",而不是阅读完整报告或直接 grep 原始文件。

  • Hook 平台(Claude Code、Gemini CLI):在搜索类工具调用之前自动触发一个 hook(在 Claude Code 上,还在通过 Read/Glob 工具逐个读取源文件之前触发),引导你的助手走图的路径。
  • 指令文件平台(Codex、OpenCode、Cursor 等):持久化的指令文件(AGENTS.md.cursor/rules/ 等)提供同样的先查询后阅读的指导。

GRAPH_REPORT.md 仍然可用于宏观架构审查。

CodeBuddy 做两件事,与 Claude Code 类似:写一个 CODEBUDDY.md 部分告诉 CodeBuddy 在回答架构问题之前先读取 graphify-out/GRAPH_REPORT.md,并安装 PreToolUse hooks(.codebuddy/settings.json),在 Bash 搜索命令和文件读取之前触发,引导使用 graphify query 而不是直接搜索。

CodexAGENTS.md,还在 .codex/hooks.json 中安装一个 PreToolUse hook,在每次 Bash 工具调用前触发,与 Claude Code 的常驻机制相同。

Kilo Code 将 Graphify 技能安装到 ~/.config/kilo/skills/graphify/SKILL.md 以及一个原生的 /graphify 命令到 ~/.config/kilo/command/graphify.mdgraphify kilo install 还会写入 AGENTS.md 以及一个原生的 tool.execute.before 插件(.kilo/plugins/graphify.js + .kilo/kilo.json.kilo/kilo.jsonc 注册),这样 Kilo 也能通过原生的 .kilo 配置获得常驻的图提醒行为。

Cursor 写入 .cursor/rules/graphify.mdc,设置 alwaysApply: true,因此 Cursor 会在每次对话中自动包含它,无需 hook。

要一次性从所有平台移除 graphify:graphify uninstall(添加 --purge 可同时删除 graphify-out/)。或者使用特定平台的命令(例如 graphify claude uninstall)。


报告包含什么

  • 核心节点 — 项目中连接最多的概念。所有东西都流经这些节点。
  • 出人意料的连接 — 位于不同文件或模块中的事物之间的链接。按意外程度排序。
  • "为什么" — 内联注释(# NOTE:# WHY:# HACK:)、文档字符串和设计理由被提取为单独的节点,链接到它们解释的代码。
  • 建议问题 — 4-5 个该图特别适合回答的问题。
  • 置信度标签 — 每个推断的关系被标记为 EXTRACTEDINFERREDAMBIGUOUS。你始终知道哪些是发现到的,哪些是猜测的。

支持的文件类型

类型 扩展名
代码(36 种 tree-sitter 语法) .py .ts .mts .cts .js .jsx .tsx .mjs .go .rs .java .c .cpp .cc .cxx .h .hpp .cu .cuh .metal .rb .cs .kt .kts .scala .php .swift .lua .luau .toc .zig .ps1 .psm1 .psd1 .ex .exs .m .mm .jl .vue .svelte .astro .groovy .gradle .dart .v .sv .svh .sql .f .f90 .f95 .f03 .f08 .pas .pp .dpr .dpk .lpr .inc .dfm .lfm .lpk .sh .bash .json .dm .dme .dmi .dmm .dmf .sln .slnx .csproj .fsproj .vbproj .xaml .razor .cshtml (.dm/.dme 需要 uv tool install graphifyy[dm].mts/.cts 复用 TypeScript 语法,.cc/.cxx 和 CUDA .cu/.cuh 以及 Metal .metal 复用 C++ 语法)
Salesforce Apex .cls .trigger(基于正则表达式;类、接口、枚举、方法、触发器、SOQL/DML 边)
Terraform / HCL .tf .tfvars .hcl(需要 uv tool install graphifyy[terraform]
MCP 配置 .mcp.json mcp.json mcp_servers.json claude_desktop_config.json — 提取服务节点、包引用、环境变量要求
包清单 apm.yml pyproject.toml go.mod pom.xml — 每个包一个规范节点(按名称),加上 depends_on 边,因此从多个清单中引用的包是一个单一枢纽
文档 .md .mdx .qmd .html .txt .rst .yaml .yml(markdown [text](./other.md) 链接和 [[wikilinks]] 成为文档之间的 references 边)
Office .docx .xlsx(需要 uv tool install graphifyy[office]
Google Workspace .gdoc .gsheet .gslides(需选择加入;需要 gws 认证和 --google-workspace;Sheets 需要 uv tool install graphifyy[google]
PDFs .pdf
图片 .png .jpg .webp .gif
视频/音频 .mp4 .mov .mp3 .wav 等(需要 uv tool install graphifyy[video]
YouTube / URLs 任意视频 URL(需要 uv tool install graphifyy[video]

代码本地提取,无需 API 调用(通过 tree-sitter AST)。其他所有内容通过你的 AI 助手的模型 API 处理。

Google Drive for Desktop 的 .gdoc.gsheet.gslides 文件是快捷方式指针,不是文档内容。要在无头提取中包含原生 Google Docs、Sheets 和 Slides,请安装并认证 gws CLI,然后运行:

uv tool install "graphifyy[google]"  # 需要用于 Google Sheets 表格渲染
gws auth login -s drive
graphify extract ./docs --google-workspace

你也可以设置 GRAPHIFY_GOOGLE_WORKSPACE=1。Graphify 将快捷方式导出到 graphify-out/converted/ 作为 Markdown 侧载文件,然后提取这些文件。


常用命令

/graphify .                        # 为当前文件夹构建图
/graphify ./docs --update          # 仅重新提取已更改的文件
/graphify . --cluster-only         # 仅重新聚类,不重新提取
/graphify . --cluster-only --resolution 1.5      # 更细粒度的社区
/graphify . --cluster-only
开源项目safishamsi2026-07-03原文

相关内容