知识图谱化
把代码/SQL/文档/脚本目录转成可查询知识图谱的 Agent 技能,多 Agent 通用
🇺🇸 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
在你的 AI 编码助手中输入 /graphify,它就会将整个项目——代码、文档、PDF、图片、视频——映射成一个知识图谱,你可以直接查询,而无需在文件中 grep 搜索。
适用于 Claude Code、Codex、OpenCode、Kilo Code、Cursor、Gemini CLI、GitHub Copilot CLI、VS Code Copilot Chat、Aider、Amp、OpenClaw、Factory Droid、Trae、Hermes、Kimi Code、Kiro、Pi、Devin CLI 以及 Google Antigravity。
/graphify .
仅此而已。你会得到三个文件:
graphify-out/
├── graph.html 在任意浏览器中打开——点击节点、筛选、搜索
├── GRAPH_REPORT.md 亮点:关键概念、意外关联、建议问题
└── graph.json 完整图谱——无需重新读取文件即可随时查询
如需生成带有 Mermaid 调用流程图的易读架构页面,请运行:
graphify export callflow-html
前提条件
| 要求 | 最低版本 | 检查命令 | 安装方式 |
|---|---|---|---|
| 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)。其他graphify*包与该项目无关。CLI 命令仍为graphify。
步骤 1 — 安装包:
# 推荐(uv 会自动将 graphify 加入 PATH):
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 --project 或 graphify codex install --project。
PowerShell 注意: 使用
graphify .而非/graphify .——前导斜杠在 PowerShell 中是路径分隔符。
graphify: command not found? 请使用uv tool install graphifyy或pipx install graphifyy——两者都会自动将 CLI 加入 PATH。如果使用普通pip,请将~/.local/bin(Linux)或~/Library/Python/3.x/bin(Mac)添加到 PATH,或运行python -m graphify。
尽量避免在 Mac/Windows 上使用
pip install。 技能会在运行时从graphify-out/.graphify_python解析 Python 环境;如果该路径指向与pip安装包时不同的环境,你会遇到ModuleNotFoundError: No module named 'graphify'。uv tool install和pipx install将包隔离在各自的环境中,完全避免了此问题。
Git hooks 与 uv tool / pipx:
graphify hook install在安装时直接将当前解释器路径嵌入到 hook 脚本中,因此即使在~/.local/bin不在 PATH 中的 GUI git 客户端和 CI runner 中,post-commit hook 也能正确触发。如果重新安装或升级 graphify,请重新运行graphify hook install以刷新嵌入的路径。
选择你的平台
| 平台 | 安装命令 |
|---|---|
| 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 |
| 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 工具和 PreToolUse hook 机制。Factory Droid 使用 Task 工具进行并行子代理调度。OpenClaw 和 Aider 使用顺序提取(这些平台上的并行代理支持仍处于早期阶段)。Trae 使用 Agent 工具进行并行子代理调度,并且不支持 PreToolUse hooks——AGENTS.md 是始终生效的机制。
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 提取(如果找不到与平台匹配的 wheel,可能需要 C 编译器 + python3-dev) | uv tool install "graphifyy[dm]" |
terraform | Terraform / HCL .tf/.tfvars/.hcl AST 提取 | uv tool install "graphifyy[terraform]" |
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 |
| 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。在支持带 payload 的 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),这些 hooks 在 Bash 搜索命令和文件读取前触发,引导其使用 graphify query 代替。
Codex 会写入 AGENTS.md,并在 .codex/hooks.json 中安装一个 PreToolUse hook,该 hook 在每个 Bash 工具调用前触发——与 Claude Code 相同的始终有效机制。
要一次性从所有平台移除 graphify:graphify uninstall(添加 --purge 还会删除 graphify-out/)。或使用针对平台的命令(例如 graphify claude uninstall)。
Kilo Code 将 Graphify skill 安装到 ~/.config/kilo/skills/graphify/SKILL.md,并将原生 /graphify 命令安装到 ~/.config/kilo/command/graphify.md。graphify 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 会在每次对话中自动引入该文件,无需手动挂钩。
报告中包含什么
- 神节点 (God nodes) —— 项目中连接数最多的概念。所有信息流都经过这些节点。
- 出人意料的连接 —— 存在于不同文件或模块之间的链接,按照出其不意的程度排序。
- “原因” —— 内联注释(
# NOTE:、# WHY:、# HACK:)、文档字符串以及来自文档的设计原理会被抽取为独立节点,并与它们所解释的代码相连。 - 建议问题 —— 4–5 个该图特别适合回答的问题。
- 置信标签 —— 每个推断的关系都会标记为
EXTRACTED(已提取)、INFERRED(已推断)或AMBIGUOUS(模糊)。你始终能知道哪些是实际发现的,哪些是猜测的。
它处理的文件类型
| 类型 | 扩展名 |
|---|---|
| 代码(36 种 tree-sitter 语法) | .py .ts .js .jsx .tsx .mjs .go .rs .java .c .cpp .h .hpp .rb .cs .kt .scala .php .swift .lua .luau .zig .ps1 .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 .razor .cshtml(.dm/.dme 需要执行 uv tool install graphifyy[dm]) |
| 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 —— 抽取服务器节点、包引用、环境变量要求 |
| 文档 | .md .mdx .qmd .html .txt .rst .yaml .yml |
| Office | .docx .xlsx(需要执行 uv tool install graphifyy[office]) |
| Google Workspace | .gdoc .gsheet .gslides(可选加入;需要 gws 认证和 --google-workspace 参数;Sheets 需要执行 uv tool install graphifyy[google]) |
.pdf | |
| 图片 | .png .jpg .webp .gif |
| 视频 / 音频 | .mp4 .mov .mp3 .wav 及更多(需要执行 uv tool install graphifyy[video]) |
| YouTube / URL | 任何视频 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 --exclude-hubs 99 # 从神节点排名中排除实用超级中枢
/graphify . --no-viz # 跳过 HTML,只生成报告和 JSON
/graphify . --wiki # 根据图谱构建 Markdown 维基
graphify export callflow-html # Mermaid 架构/调用流 HTML(安装钩子后,每次 git 提交都会自动重新生成)
/graphify query "what connects auth to the database?"
/graphify path "UserService" "DatabasePool"
/graphify explain "RateLimiter"
/graphify add https://arxiv.org/abs/1706.03762 # 获取论文并添加
/graphify add <youtube-url> # 转录并添加视频
graphify hook install # 在 git 提交时自动重建
graphify merge-graphs a.json b.json # 合并两个图谱
graphify prs # PR 面板:CI 状态、审查状态、工作树映射
graphify prs 42 # 深入分析 PR #42 及其图谱影响
graphify prs --triage # AI 对你的审查队列进行排序(使用已配置的后端)
graphify prs --conflicts # 共享图谱社区的 PR —— 合并顺序风险
见下方 完整命令参考。
忽略文件
在项目根目录下创建 .graphifyignore —— 语法与 .gitignore 相同,包括 ! 否定。
.gitignore 会被自动遵循。 如果某个目录中没有 .graphifyignore,graphify 会回退使用该目录下的 .gitignore。如果两者都存在,则 .graphifyignore 优先级更高。子目录的作用域规则与 git 相同 —— 一个忽略文件只影响其自身的子树。
# .graphifyignore
node_modules/
dist/
*.generated.py
# 只索引 src/,忽略其他所有内容
*
!src/
!src/**
团队设置
graphify-out/ 应提交到 git,这样团队中的每个人一开始就拥有一份地图。
建议在 .gitignore 中添加:
graphify-out/cost.json # 仅本地使用
# graphify-out/cache/ # 可选:提交以加快速度,跳过以保持仓库体积小巧
manifest.json现在可移植 —— 键存储为相对路径,加载时重新锚定,因此提交它很安全,并且可以避免首次检出时完全重建。
工作流程:
- 有人运行
/graphify .并提交graphify-out/。 - 其他人拉取代码 —— 他们的助手会立即读取图谱。
- 运行
graphify hook install以在每次提交后自动重建(仅 AST,无 API 费用)。这还会设置一个 git 合并驱动程序,使得graph.json永远不会留下冲突标记 —— 两个开发者并行提交时,他们的图谱会被自动并联合并。 - 当文档或论文发生变化时,运行
/graphify --update来刷新这些节点。
直接使用图谱
# 在终端中查询图谱
graphify query "show the auth flow"
graphify query "what connects DigestAuth to Response?" --graph graphify-out/graph.json
# 将图谱暴露为 MCP 服务器(用于重复工具调用访问)
python -m graphify.serve graphify-out/graph.json
python -m graphify.serve --graph graphify-out/graph.json # --graph 标志也支持
# 注册到 Kimi Code:
kimi mcp add --transport stdio graphify -- python -m graphify.serve graphify-out/graph.json
# 或者通过 HTTP 提供服务,以便整个团队指向同一个 URL(无需本地 graphify):
python -m graphify.serve graphify-out/graph.json --transport http --port 8080
python -m graphify.serve graphify-out/graph.json --transport http --host 0.0.0.0 --api-key "$SECRET"
MCP 服务器为你的助手提供结构化访问:query_graph、get_node、get_neighbors、shortest_path、list_prs、get_pr_impact、triage_prs。
共享 HTTP 服务器
--transport stdio(默认)为每个开发者生成一个本地服务器。--transport http 通过 MCP Streamable HTTP 传输提供相同的工具,因此一个共享进程即可为整个团队提供图谱服务 —— 客户端将其 IDE MCP 配置指向 http://<host>:8080/mcp,而无需本地运行 graphify。
| 标志 | 默认值 | 用途 |
|---|---|---|
--transport {stdio,http} | stdio | 服务所采用的传输方式 |
--host | 127.0.0.1 | HTTP 绑定主机地址(使用 0.0.0.0 可暴露至本地主机之外) |
--port | 8080 | HTTP 绑定端口 |
--api-key | 环境变量 GRAPHIFY_API_KEY | 要求提供 Authorization: Bearer <key>(或 X-API-Key) |
--path | /mcp | HTTP 挂载路径 |
--json-response | 关闭 | 返回纯 JSON 而非 SSE 流 |
--stateless | 关闭 | 无每会话状态(用于负载均衡 / CI 部署) |
--session-timeout | 3600 | 空闲有状态会话在 N 秒后回收(设为 0 则禁用) |
默认 127.0.0.1 绑定仅限回环地址。在共享主机上暴露时,请同时设置 --host 0.0.0.0 和 --api-key。在容器中运行:
docker build -t graphify .
docker run -p 8080:8080 -v "$(pwd)/graphify-out:/data" graphify \
/data/graph.json --transport http --host 0.0.0.0 --api-key "$SECRET"
WSL / Linux 注意事项: Ubuntu 提供的是
python3而非python。请使用虚拟环境以避免冲突:python3 -m venv .venv && .venv/bin/pip install "graphifyy[mcp]"
环境变量
以下变量仅用于无头 / CI 提取(graphify extract)。当在 IDE 内通过 /graphify 技能运行时,模型 API 由 IDE 会话提供,无需额外密钥。
| 变量 | 用途 | 何时需要 |
|---|---|---|
ANTHROPIC_API_KEY | Claude(Anthropic)后端 | --backend claude |
GEMINI_API_KEY 或 GOOGLE_API_KEY | Google Gemini 后端 | --backend gemini |
OPENAI_API_KEY | OpenAI 或兼容 OpenAI 的 API | --backend openai |
DEEPSEEK_API_KEY | DeepSeek 后端 | --backend deepseek |
MOONSHOT_API_KEY | Kimi Code 后端 | --backend kimi |
OLLAMA_BASE_URL | Ollama 本地推理 URL | --backend ollama(默认:http://localhost:11434) |
OLLAMA_MODEL | Ollama 模型名称 | --backend ollama(默认:自动检测) |
GRAPHIFY_OLLAMA_NUM_CTX | 覆盖 Ollama KV 缓存窗口大小 | 可选 — 默认自动调整大小 |
GRAPHIFY_OLLAMA_KEEP_ALIVE | 保持 Ollama 模型加载的分钟数 | 可选 — 设为 0 则每个块处理后卸载 |
AZURE_OPENAI_API_KEY | Azure OpenAI 服务后端 | --backend azure |
AZURE_OPENAI_ENDPOINT | Azure 资源端点 URL | --backend azure(需与 API 密钥一起提供) |
AZURE_OPENAI_API_VERSION | Azure API 版本覆盖 | 可选 — 默认 2024-12-01-preview |
AZURE_OPENAI_DEPLOYMENT 或 GRAPHIFY_AZURE_MODEL | Azure 部署名称 | 可选 — 默认 gpt-4o |
AWS_* / ~/.aws/credentials | AWS Bedrock — 标准凭证链 | --backend bedrock(无需 API 密钥,使用 IAM) |
GRAPHIFY_MAX_WORKERS | AST 并行线程数 | 可选 — 也可使用 --max-workers 标志 |
GRAPHIFY_MAX_OUTPUT_TOKENS | 为密集语料库增加输出上限 | 可选 — 例如大文件设置 32768 |
GRAPHIFY_API_TIMEOUT | HTTP、claude-cli 和 Anthropic SDK 后端的每次调用超时秒数(默认:600) | 可选 — 也可使用 --api-timeout 标志 |
GRAPHIFY_FORCE | 即使节点数更少也强制重建图谱 | 可选 — 也可使用 --force 标志 |
GRAPHIFY_GOOGLE_WORKSPACE | 自动启用 Google Workspace 导出 | 可选 — 设为 1 |
GRAPHIFY_TRIAGE_BACKEND | graphify prs --triage 所用的后端 | 可选 — 从可用密钥自动检测 |
GRAPHIFY_TRIAGE_MODEL | 用于分类的模型覆盖 | 可选 — 例如 claude-opus-4-7 |
GRAPHIFY_QUERY_LOG | 覆盖查询日志路径(默认:~/.cache/graphify-queries.log) | 可选 — 设为空或 /dev/null 以静默 |
GRAPHIFY_QUERY_LOG_DISABLE | 设为 1 以完全禁用查询日志 | 可选 |
GRAPHIFY_QUERY_LOG_RESPONSES | 设为 1 以同时记录完整子图响应(默认关闭) | 可选 |
GRAPHIFY_MAX_GRAPH_BYTES | 覆盖 512 MiB 的 graph.json 大小上限 — 例如 700MB、2GB 或纯字节数 | 可选 — 对超大型语料库有用 |
GRAPHIFY_LLM_TEMPERATURE | 覆盖语义提取的 LLM 温度 — 例如 0.7 或 none 以忽略 | 可选 — 对于 o1/o3/o4/gpt-5 推理模型自动忽略 |
隐私
- 代码文件 — 通过 tree-sitter 在本地处理。不会离开你的机器。纯代码语料库无需 API 密钥 —
graphify extract完全离线运行。 - 视频 / 音频 — 使用 faster-whisper 在本地转写。不会离开你的机器。
- 文档、PDF、图片 — 发送给你的 AI 助手进行语义提取(通过
/graphify技能,使用 IDE 会话所运行的任何模型)。无头graphify extract需要GEMINI_API_KEY/GOOGLE_API_KEY(Gemini)、MOONSHOT_API_KEY(Kimi)、ANTHROPIC_API_KEY(Claude)、OPENAI_API_KEY(OpenAI)、DEEPSEEK_API_KEY(DeepSeek)、运行中的 Ollama 实例(OLLAMA_BASE_URL)、通过标准凭证链(Bedrock — 无需 API 密钥,使用 IAM)提供的 AWS 凭证,或claudeCLI 二进制文件(Claude Code — 无需 API 密钥,使用你的 Claude 订阅)。--dedup-llm标志使用同一密钥。 - 数据驻留 —
graphify extract根据所设置的 API 密钥自动检测使用哪个提供商(优先级:Gemini → Kimi → Claude → OpenAI → DeepSeek → Azure → Bedrock → Ollama)。对于有数据驻留要求的代码,请使用--backend ollama(完全本地)或传入显式的--backend标志。Kimi(MOONSHOT_API_KEY)将路由至 Moonshot AI 位于中国的服务器。 - 无遥测、无使用追踪、无分析。
- 查询记录 — 每次
graphify query、graphify path、graphify explain以及 MCPquery_graph调用都会被记录到~/.cache/graphify-queries.log,格式为 JSON Lines(时间戳、问题、语料库、返回节点数、持续时间)。默认情况下 不存储 完整的子图响应。设置GRAPHIFY_QUERY_LOG_DISABLE=1可退出记录,或设置GRAPHIFY_QUERY_LOG=/dev/null以在不禁用代码路径的情况下静默记录。
故障排除
pip install graphifyy 后出现 graphify: command not found
pip 将脚本安装到用户 bin 目录,该目录可能不在你的 PATH 中。修复方法:
- macOS:在
~/.zshrc的 PATH 中添加~/Library/Python/3.x/bin - Linux:在
~/.bashrc的 PATH 中添加~/.local/bin - 或者使用
uv tool install graphifyy/pipx install graphifyy— 两者都能自动管理 PATH。
python -m graphify 可用但 graphify 命令不可用
你的 shell 的 PATH 不包含 Python 脚本目录。请使用 uv 或 pipx 代替普通 pip。
PowerShell 中 /graphify . 导致“路径无法识别”
PowerShell 将开头的 / 视为路径分隔符。在 Windows 上请使用 graphify .(不带斜杠)。
--update 或重建后图谱节点变少
如果重构删除了文件,旧节点会残留。请传入 --force(或设置 GRAPHIFY_FORCE=1)以强制覆盖,即使重建后节点更少。
同一实体的图谱中出现重复节点(幽灵重复) 幽灵重复(同一符号出现两次 — 一次来自带源位置的 AST 提取,另一次来自不带源位置的语义提取)现在在构建时自动合并。如果你在 v0.8.33 之前构建的图谱中看到此问题,请执行一次完整重新提取以清理:
graphify extract . --force
Ollama 显存不足 / 上下文窗口超限
KV-cache 窗口是自动调整大小的,但对于你的 GPU 可能过大。请减小:
GRAPHIFY_OLLAMA_NUM_CTX=8192 graphify extract ./docs --backend ollama --token-budget 4000
生成的 HTML 图太大,无法在浏览器中打开(>5000 个节点) 跳过 HTML 生成,直接使用 JSON:
graphify cluster-only ./my-project --no-viz
graphify query "..."
两位开发者同时提交后,graph.json 出现冲突标记
运行 graphify hook install —— 它会设置一个 git 合并驱动,自动对 graph.json 进行联合合并(union-merge),从而杜绝冲突。
针对文档或 PDF 进行提取时返回空节点/边 文档、PDF 和图片需要调用 LLM —— 纯代码语料库不需要密钥。请检查 API 密钥是否已设置且后端是否正确:
ANTHROPIC_API_KEY=sk-... graphify extract ./docs --backend claude
IDE 中出现技能版本不匹配警告 你安装的 graphify 版本与技能文件不同。请更新:
uv tool upgrade graphifyy
graphify install # 覆盖技能文件
完整命令参考
/graphify # 在当前目录运行
/graphify ./raw # 在指定文件夹上运行
/graphify ./raw --mode deep # 更激进的关系提取
/graphify ./raw --update # 仅重新提取已更改的文件
/graphify ./raw --directed # 保留边的方向
/graphify ./raw --cluster-only # 在现有图上重新运行聚类
/graphify ./raw --no-viz # 跳过 HTML 可视化
/graphify ./raw --obsidian # 生成 Obsidian 笔记库
/graphify ./raw --wiki # 构建 agent 可爬取的 Markdown 维基
/graphify ./raw --svg # 导出 graph.svg
/graphify ./raw --graphml # 导出以用于 Gephi / yEd
/graphify ./raw --neo4j # 为 Neo4j 生成 cypher.txt
/graphify ./raw --neo4j-push bolt://localhost:7687
/graphify ./raw --falkordb # 为 FalkorDB 生成 cypher.txt
/graphify ./raw --falkordb-push falkordb://localhost:6379
/graphify ./raw --watch # 文件变化时自动同步
/graphify ./raw --mcp # 启动 MCP stdio 服务器
/graphify add https://arxiv.org/abs/1706.03762
/graphify add <video-url>
/graphify add https://... --author "Name" --contributor "Name"
/graphify query "what connects attention to the optimizer?"
/graphify query "..." --dfs --budget 1500
/graphify path "DigestAuth" "Response"
/graphify explain "SwinTransformer"
graphify uninstall # 一次性从所有平台移除
graphify uninstall --purge # 同时删除 graphify-out/
graphify uninstall --project --platform codex # 仅移除项目范围的安装文件
graphify hook install # post-commit + post-checkout 钩子
graphify hook uninstall
graphify hook status
# 始终在线的助理指令 - 平台特定
graphify claude install # CLAUDE.md + PreToolUse 钩子 (Claude Code)
graphify claude uninstall
graphify codebuddy install # CODEBUDDY.md + PreToolUse 钩子 (CodeBuddy)
graphify codebuddy uninstall
graphify codex install # AGENTS.md + .codex/hooks.json 中的 PreToolUse 钩子 (Codex)
graphify opencode install # AGENTS.md + tool.execute.before 插件 (OpenCode)
graphify kilo install # 原生 Kilo 技能 + /graphify 命令 + AGENTS.md + .kilo 插件
graphify kilo uninstall
graphify cursor install # .cursor/rules/graphify.mdc (Cursor)
graphify cursor uninstall
graphify gemini install # GEMINI.md + BeforeTool 钩子 (Gemini CLI)
graphify gemini uninstall
graphify copilot install # 技能文件 (GitHub Copilot CLI)
graphify copilot uninstall
graphify aider install # AGENTS.md (Aider)
graphify aider uninstall
graphify claw install # AGENTS.md (OpenClaw)
graphify claw uninstall
graphify droid install # AGENTS.md (Factory Droid)
graphify droid uninstall
graphify trae install # AGENTS.md (Trae)
graphify trae uninstall
graphify trae-cn install # AGENTS.md (Trae CN)
graphify trae-cn uninstall
graphify hermes install # AGENTS.md + ~/.hermes/skills/ (Hermes)
graphify hermes uninstall
graphify amp install # 技能文件 (Amp)
graphify amp uninstall
graphify kiro install # .kiro/skills/ + .kiro/steering/graphify.md (Kiro IDE/CLI)
graphify kiro uninstall
graphify pi install # 技能文件 (Pi coding agent)
graphify pi uninstall
graphify devin install # 技能文件 + .windsurf/rules/graphify.md (Devin CLI)
graphify devin uninstall
graphify antigravity install # .agents/rules + .agents/workflows (Google Antigravity)
graphify antigravity uninstall
graphify extract ./docs # 无头 LLM 提取,用于 CI(无需 IDE)
graphify extract ./docs --backend gemini # 显式指定后端:gemini, kimi, claude, openai, deepseek, ollama, bedrock, 或 claude-cli
graphify extract ./docs --backend gemini --model gemini-3.1-pro-preview
graphify extract ./docs --backend ollama # 本地 Ollama(设置 OLLAMA_BASE_URL / OLLAMA_MODEL)- 回环无需 API 密钥
GRAPHIFY_OLLAMA_NUM_CTX=32768 graphify extract ./docs --backend ollama # 覆盖 KV-cache 窗口(默认自动调整大小)
GRAPHIFY_OLLAMA_KEEP_ALIVE=0 graphify extract ./docs --backend ollama # 每个块后卸载模型(在小型 GPU 上节省显存)
graphify extract ./docs --backend bedrock # 通过 IAM 使用 AWS Bedrock - 无需 API 密钥,使用 AWS 凭证链
graphify extract ./docs --backend claude-cli # 通过 Claude Code CLI 路由 - 无需 API 密钥,使用你的 Claude 订阅
graphify extract ./docs --backend azure # Azure OpenAI(设置 AZURE_OPENAI_API_KEY + AZURE_OPENAI_ENDPOINT)
graphify extract ./docs --max-workers 16 # AST 并行度(也可用 GRAPHIFY_MAX_WORKERS)
graphify extract --postgres "postgresql://user:pass@host/db" # 直接内省实时 PostgreSQL 模式
graphify extract ./my-workspace --cargo # 直接内省 Rust Cargo 工作区依赖
graphify extract ./docs --token-budget 30000 # 为本地/小型模型使用更小的语义块
graphify extract ./docs --max-concurrency 2 # 减少并行的 LLM 调用(对本地推理有用)
graphify extract ./docs --api-timeout 900 # 为慢速本地模型设置更长的 HTTP 超时(默认 600 秒)
graphify extract ./docs --google-workspace # 在提取前通过 gws 导出 .gdoc/.gsheet/.gslides
graphify extract ./docs --mode deep # 通过扩展系统提示进行更丰富的语义提取
graphify extract ./docs --no-cluster # 仅原始提取,跳过聚类
graphify extract ./docs --force # 即使新图节点更少也覆盖 graph.json(在重构后或清除鬼影重复时使用)
graphify extract ./docs --dedup-llm # 对模糊实体对使用 LLM 裁决(使用相同 API 密钥)
graphify extract ./docs --global --as myrepo # 提取并注册到跨项目全局图中
GRAPHIFY_MAX_OUTPUT_TOKENS=32768 graphify extract ./docs --backend claude # 为密集语料库提高输出上限
graphify export callflow-html # graphify-out/<project>-callflow.html
graphify export callflow-html --max-sections 8 # 限制生成的架构章节数量
graphify export callflow-html --output docs/arch.html
graphify export callflow-html ./some-repo/graphify-out
graphify global add graphify-out/graph.json myrepo # 将项目图注册到 ~/.graphify/global.json
graphify global remove myrepo # 从全局图中移除一个项目
graphify global list # 显示所有已注册仓库及其节点/边数
graphify global path # 打印全局图文件的路径
graphify prs # PR 仪表板:CI、审查、工作树、图影响
graphify prs 42 # 深入查看 PR #42
graphify prs --triage # AI 分类排序(自动从环境检测后端)
graphify prs --worktrees # 工作树 → 分支 → PR 映射
graphify prs --conflicts # 共享图社区的 PR(合并顺序风险)
graphify prs --base main # 过滤针对特定基础分支的 PR
graphify prs --repo owner/repo # 针对不同的 GitHub 仓库运行
GRAPHIFY_TRIAGE_BACKEND=kimi graphify prs --triage # 为分类使用特定后端
graphify clone https://github.com/karpathy/nanoGPT
graphify merge-graphs a.json b.json --out merged.json
graphify --version # 打印安装的版本
graphify watch ./src
graphify check-update ./src
graphify update ./src
graphify update ./src --no-cluster # 跳过重新聚类,仅写入原始 AST 图
graphify update ./src --force # 即使新图节点更少也覆盖
graphify cluster-only ./my-project
graphify cluster-only ./my-project --graph path/to/graph.json # 自定义图位置
graphify cluster-only ./my-project --resolution 1.5 # 更多、更小的社区
graphify cluster-only ./my-project --exclude-hubs 99 # 从分区中排除 p99 度数的节点
graphify cluster-only ./my-project --no-label # 保留“Community N”占位符
graphify cluster-only ./my-project --backend=gemini # 用于社区命名的后端
graphify cluster-only ./my-project --backend=gemini --model gemini-2.5-pro # 特定模型
graphify label ./my-project # 使用配置的后端(重新)命名社区
graphify label ./my-project --backend=openai --model gpt-4o # 强制使用特定后端和模型
社区名称: 在代理(如 Claude Code、Gemini CLI)内部,代理会自动为社区命名。当您直接运行裸 CLI 时,
cluster-only会使用配置的后端(内置或自定义 OpenAI 兼容提供商)自动命名 — 传入--no-label以保留Community N,或运行graphify label按需(重新)生成名称。
了解更多
- 工作原理 — 提取管道、社区检测、置信度评分、基准测试
- ARCHITECTURE.md — 模块分解,如何添加语言
- 可选集成 — Docker MCP Toolkit + SQLite
基于 graphify 构建 — Penpax
Penpax 是构建在 graphify 之上的持续运行层 — 它将相同的图方法应用于您的整个工作生活:会议、浏览器历史、电子邮件、文件和代码,并在后台持续更新。
专为工作跨越数百个对话和文档、且永远无法完全重建的人打造。无云,完全本地化。
免费试用即将推出。 加入等候名单 →
贡献
开发环境配置
该项目使用 uv 进行开发工作流程。安装一次,然后:
git clone https://github.com/safishamsi/graphify.git
cd graphify
git checkout v8 # active development branch
# Create the project venv and install graphify + all extras + the dev group
# (pytest). uv installs the dev dependency group by default; pass --no-dev to
# skip it.
uv sync --all-extras
验证可编辑安装:
uv run graphify --version
uv run python -c "import graphify; print(graphify.__file__)"
运行测试
uv run pytest tests/ -q # run the full suite
uv run pytest tests/test_extract.py -q # one module
uv run pytest tests/ -q -k "python" # filter by name
macOS 注意事项:测试套件同时包含
sample.f90和sample.F90夹具。这些在大小写不敏感的 HFS+ / APFS 文件系统上会发生冲突。如果需要同时测试两种 Fortran 变体,请在 Linux 或 Docker 容器中运行。
Git 工作流
- 活跃开发在
v8分支上进行。 - 提交风格:
fix: <description>/feat: <description>/docs: <description> - 在发起 PR 之前,运行
uv run pytest tests/ -q并确认通过。 - 对于任何新的语言提取器,添加一个夹具文件到
tests/fixtures/,并添加测试到tests/test_languages.py。
如何贡献
工作示例是最有用的贡献。在真实语料上运行 /graphify,将输出保存到 worked/{slug}/,编写一份诚实的 review.md,涵盖图模型的正确和错误之处,然后发起 PR。
提取错误 — 提交 issue,附上输入文件、缓存条目(graphify-out/cache/)以及遗漏或错误的内容。
参见 ARCHITECTURE.md 了解模块职责以及如何添加语言。