知识图谱化
把代码/SQL/文档/脚本目录转成可查询知识图谱的 Agent 技能,多 Agent 通用
用其他语言阅读
🇺🇸 英语 | 🇨🇳 简体中文 | 🇯🇵 日语 | 🇰🇷 韩语 | 🇩🇪 德语 | 🇫🇷 法语 | 🇪🇸 西班牙语 | 🇮🇳 印地语 | 🇧🇷 葡萄牙语 | 🇷🇺 俄语 | 🇸🇦 阿拉伯语 | 🇮🇷 波斯语 | 🇮🇹 意大利语 | 🇵🇱 波兰语 | 🇳🇱 荷兰语 | 🇹🇷 土耳其语 | 🇺🇦 乌克兰语 | 🇻🇳 越南语 | 🇮🇩 印尼语 | 🇸🇪 瑞典语 | 🇬🇷 希腊语 | 🇷🇴 罗马尼亚语 | 🇨🇿 捷克语 | 🇫🇮 芬兰语 | 🇩🇰 丹麦语 | 🇳🇴 挪威语 | 🇭🇺 匈牙利语 | 🇹🇭 泰语 | 🇺🇿 乌兹别克语 | 🇹🇼 繁体中文 | 🇵🇭 菲律宾语 | 🇮🇱 希伯来语
graphify 平台的早期访问已在公开 v1 发布前开放:app.graphify.com
在你的 AI 编码助手中输入 /graphify,它会将你的整个项目(代码、文档、PDF、图片、视频)映射成一个知识图谱,你可以查询它,而无需在文件中 grep。
- 代码映射免费且完全本地化。 代码使用 tree-sitter AST 解析:确定性、无需 LLM、数据不会离开你的机器。(文档、PDF、图片和视频使用你助手的模型或配置的 API 密钥进行语义处理。)
- 每条边都有解释。 每个连接都标记为
EXTRACTED(源中显式存在)或INFERRED(由 graphify 解析得出),这样你就可以区分哪些是直接读取的,哪些是推断出来的。 - 不是向量索引。 没有嵌入,没有向量存储:一个你可以遍历的真实图。提问、追踪两个事物之间的路径,或解释一个概念。
想要这个功能始终开启,在后台跨你的代码、文档和会议持续更新,而不仅仅是按需运行?这正是我们在 graphify.com 构建的内容,早期访问现已开放,请访问 app.graphify.com。
由 graphify 映射的 FastAPI 代码库。每个节点是一个概念,颜色是检测到的社区,整个图在 graph.html 中可点击。
开始使用(30 秒):
uv tool install graphifyy # install the CLI (or: pipx install graphifyy)
graphify install # register the skill with your AI assistant
然后,在你的 AI 助手中:
/graphify .
就这样。你会得到三个文件:
graphify-out/
├── graph.html 在任何浏览器中打开 — 点击节点、筛选、搜索
├── GRAPH_REPORT.md 亮点:关键概念、令人惊讶的连接、建议的问题
└── graph.json 完整图 — 随时查询,无需重新读取文件
适用于 Claude Code、Cursor、Codex、Gemini CLI、GitHub Copilot 以及 15 个以上平台 — 选择你的平台。
实际效果
一旦图构建完成,你就可以查询它,而无需阅读文件。真实输出,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 的标签 |
| 跨文件链接 | 通过 tree-sitter AST 在约 40 种语言中解析 calls / imports / inherits / mixes_in |
| 查询、路径、解释 | 提出问题、追踪两个事物之间的路径,或解释某个概念,全部基于 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 --project 或 graphify codex install --project。
PowerShell 注意: 使用
graphify .而不是/graphify .— 前导斜杠在 PowerShell 中是路径分隔符。
graphify: command not found?uv tool install/pipx install会将graphify命令放入其工具 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将第一个单词视为包,而包名是graphifyy—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 运行器中,post-commit hook 也能正确触发。如果你重新安装或升级 graphify,请重新运行graphify hook install以刷新嵌入的路径。
严格模式(Claude Code):
graphify install --project --strict使助手实际使用图。默认安装提示它在读取文件之前运行graphify query;严格模式阻止会话中首次原始源读取,并将其重定向到图,然后恢复为提示(因此每个会话最多触发一次,且不会卡住)。运行时可通过GRAPHIFY_HOOK_STRICT=1/0切换;默认安装保持不变(软提示)。
选择你的平台(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 工具和 PreToolUse 钩子机制。Factory Droid 使用 Task 工具进行并行子代理调度。OpenClaw 和 Aider 使用顺序提取(这些平台上的并行代理支持尚处于早期阶段)。Trae 使用 Agent 工具进行并行子代理调度,并且不支持 PreToolUse 钩子,因此 AGENTS.md 是始终开启的机制。
--platform agents(别名 --platform skills)针对通用的跨框架 Agent-Skills 位置:规范的用户全局 ~/.agents/skills/(由 npx skills 和符合规范的框架读取)用于全局安装,以及 ./.agents/skills/ 用于项目(--project)安装。裸的 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 密钥) | uv tool install "graphifyy[bedrock]" |
azure | Azure OpenAI Service(--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]" |
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>",而不是阅读完整报告或直接搜索原始文件。
- Hook 平台(Claude Code、Gemini CLI):在搜索式工具调用之前自动触发一个钩子(在 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 钩子(.codebuddy/settings.json),这些钩子在 Bash 搜索命令和文件读取之前触发,引导其使用 graphify query。
Codex 写入 AGENTS.md,这实际上是在该平台上承载始终在线的图谱指导。graphify codex install 还会在 .codex/hooks.json 中注册一个 PreToolUse 钩子(graphify hook-check),但该条目故意是一个 空操作:Codex Desktop 拒绝 PreToolUse 上的 hookSpecificOutput.additionalContext,因此在那里发出提示会破坏 Bash 工具调用。与 Claude Code 不同(其钩子 graphify hook-guard 执行提示),在 Codex 上,钩子触发但有意不做任何事,而 AGENTS.md 是始终在线的机制。
Kilo Code 将 Graphify 技能安装到 ~/.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 自动将其包含在每次对话中,无需钩子。
要一次性从所有平台移除 graphify:graphify uninstall(添加 --purge 也会删除 graphify-out/)。或者使用每个平台的命令(例如 graphify claude uninstall)。
报告内容
- 上帝节点 — 你项目中连接最多的概念。一切流经它们。
- 意外连接 — 位于不同文件或模块中的事物之间的链接。按意外程度排序。
- “为什么” — 内联注释(
# NOTE:、# WHY:、# HACK:)、文档字符串和来自文档的设计原理被提取为单独的节点,链接到它们解释的代码。 - 建议问题 — 图谱特别适合回答的 4–5 个问题。
- 置信度标签 — 每个推断的关系都被标记为
EXTRACTED、INFERRED或AMBIGUOUS。你始终知道哪些是找到的,哪些是猜测的。
它能处理哪些文件
| 类型 | 扩展名 |
|---|---|
| 代码(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]) |
.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 文档、表格和幻灯片,请安装并认证 gws CLI,然后运行:
uv tool install "graphifyy[google]" # 处理 Google Sheets 表格渲染时需要
gws auth login -s drive
graphify extract ./docs --google-workspace
你也可以设置 GRAPHIFY_GOOGLE_WORKSPACE=1。Graphify 会将快捷方式导出为 Markdown 侧边文件并放入 graphify-out/converted/ 目录,然后提取这些文件。
常用命令
/graphify . # 为当前文件夹构建图
/graphify ./docs --update # 仅重新提取有变动的文件
/graphify . --cluster-only # 仅重新聚类,不重新提取
/graphify . --cluster-only --resolution 1.5 # 更细粒度的社区划分
/graphify . --cluster-only --exclude-hubs 99 # 从 god-node 排名中排除辅助性超级中心节点
/graphify . --no-viz # 跳过 HTML,只生成报告和 JSON
/graphify . --wiki # 根据图生成 Markdown 维基
graphify export callflow-html # Mermaid 架构/调用流程 HTML(若已安装 hook,每次 git commit 时会自动重新生成)
/graphify query "什么连接了 auth 和 database?"
/graphify path "UserService" "DatabasePool"
/graphify explain "RateLimiter"
/graphify add https://arxiv.org/abs/1706.03762 # 获取一篇论文并加入图
/graphify add <youtube-url> # 转录一段视频并加入图
graphify hook install # 在 git commit 时自动重建图
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 会被自动识别。 graphify 会读取每个目录中的 .gitignore。如果同时存在 .graphifyignore,两者会合并 —— .graphifyignore 中的模式最后评估,因此在冲突时优先级更高(包括 ! 取反)。添加 .graphifyignore 只会排除更多文件;它永远不会重新包含 .gitignore 已排除的文件。子目录作用域与 git 一样 —— 忽略文件只影响其自身子树。
当 git 忽略的生成代码或转译代码应加入图时,请在 graphify extract 时传递 --no-gitignore。这会禁用 .gitignore 和 .git/info/exclude;.graphifyignore 仍然生效。
# .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 "显示 auth 流程"
graphify query "什么连接了 DigestAuth 和 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 可暴露到 localhost 之外) |
--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 |
ANTHROPIC_BASE_URL | Anthropic 兼容的端点 URL(LiteLLM 代理、网关等) | --backend claude(默认:https://api.anthropic.com) |
ANTHROPIC_MODEL | Claude 后端的模型名称——对于自定义端点,使用您的服务器暴露的模型名称/别名 | --backend claude(默认:claude-sonnet-4-6) |
GEMINI_API_KEY 或 GOOGLE_API_KEY | Google Gemini 后端 | --backend gemini |
OPENAI_API_KEY | OpenAI 或 OpenAI 兼容的 API | --backend openai(本地服务器接受任何非空值) |
OPENAI_BASE_URL | OpenAI 兼容的服务器 URL(llama.cpp、vLLM、LM Studio 等) | --backend openai(默认:https://api.openai.com/v1) |
OPENAI_MODEL | OpenAI 后端的模型名称——对于自托管服务器,使用您的服务器暴露的模型名称/别名(检查其 /v1/models 端点),例如 llama.cpp 的 LFM2.5-8B-A1B-UD-Q4_K_XL | --backend openai(默认:gpt-4.1-mini) |
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 和 Bedrock 后端的每次调用超时时间(秒)(默认:600) | 可选——也可使用 --api-timeout 标志 |
GRAPHIFY_MAX_RETRIES | 在放弃之前重试速率限制(429)请求的次数(默认:6;遵循 Retry-After) | 可选——对于严格的组织限制(例如 kimi)可提高;0 禁用 |
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_ENABLE | 设置为 1 以启用本地查询日志,位于 ~/.cache/graphify-queries.log(记录每个查询/路径/解释问题 + 语料库路径)。默认关闭——除非您选择加入,否则不会写入任何内容(#1797) | 可选 |
GRAPHIFY_QUERY_LOG | 启用查询日志并将其写入此路径而非默认路径 | 可选——除非设置了此变量或 _ENABLE,否则关闭 |
GRAPHIFY_QUERY_LOG_DISABLE | 设置为 1 以强制关闭查询日志(覆盖启用变量) | 可选 |
GRAPHIFY_QUERY_LOG_RESPONSES | 当日志启用时,也记录完整的子图响应(默认关闭) | 可选 |
GRAPHIFY_MAX_GRAPH_BYTES | 覆盖 512 MiB 的 graph.json 大小上限——例如 700MB、2GB 或纯字节数 | 可选——对于非常大的语料库很有用 |
GRAPHIFY_MAX_CONTEXTS | 一个多项目 MCP 服务器保留的非默认项目图的最大数量 | 可选——默认:8;无效值使用 8,低于 1 的值使用 1 |
GRAPHIFY_LLM_TEMPERATURE | 覆盖语义提取的 LLM 温度——例如 0.7,或 none 以省略 | 可选——对于 o1/o3/o4/gpt-5 推理模型自动省略 |
隐私
- 代码文件 — 通过 tree-sitter 在本地处理。不会离开您的机器。纯代码语料库无需 API 密钥——
graphify extract完全离线运行。在混合仓库中,添加--code-only可仅索引代码,跳过原本需要 LLM 的文档/PDF/图片。 - 视频/音频 — 使用 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)、通过标准提供商链的 AWS 凭证(Bedrock - 无需 API 密钥,使用 IAM),或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调用都会以 JSON Lines 格式记录到~/.cache/graphify-queries.log(时间戳、问题、语料库、返回的节点、持续时间)。默认不存储完整的子图响应。设置GRAPHIFY_QUERY_LOG_DISABLE=1可选择退出,或设置GRAPHIFY_QUERY_LOG=/dev/null以在不禁用代码路径的情况下静默。
故障排除
安装后出现 graphify: command not found
CLI 已安装,但其 bin 目录不在 shell 的 PATH 中。根据你的安装方式选择修复方法:
- uv(
uv tool install graphifyy):命令会安装到 uv 的 tool bin 目录(~/.local/bin),新的 macOS/zsh 环境通常不会将此目录添加到PATH。运行uv tool update-shell,然后打开新终端。(可通过uv tool dir --bin找到该目录。) - pipx(
pipx install graphifyy):运行pipx ensurepath,然后打开新终端。 - pip(
pip install graphifyy):pip 会将脚本安装到用户 bin 目录,该目录可能不在PATH中——在~/.zshrc/~/.bashrc中添加~/Library/Python/3.x/bin(macOS)或~/.local/bin(Linux)到PATH,或直接运行python -m graphify。
uvx graphify … 或 uv tool run graphify … 无法解析 graphify
PyPI 包名为 graphifyy;graphify 只是它提供的命令。uv tool run 将第一个单词视为包名,因此它会查找名为 graphify 的包并报告 No solution found … no versions of graphify。显式指定包名:uvx --from graphifyy graphify install(等同于 uv tool run --from graphifyy graphify install)。或先运行 uv tool install graphifyy,然后直接调用 graphify。
uv run --with graphifyy python -m graphify 静默运行旧版本
uv run 使用你的系统 Python,因此如果系统中也安装了旧版 graphifyy(例如之前通过 pip install graphifyy 安装),Python 会在 sys.path 中优先找到该副本,而 --with graphifyy 不会覆盖它。运行时不报错,但你会得到旧版本的行为——例如环境变量覆盖(如 OPENAI_BASE_URL)会被静默忽略,导致请求发送到默认端点并返回 401 错误,看起来像是密钥有问题。特征是在输出中看到 warning: skill is from graphify <newer>, package is <older> 一行——这意味着加载了不同的安装版本,不仅仅是过时的 skill。检查实际加载的副本:
python -c "import graphify; print(graphify.__file__)"
然后直接运行已安装的命令(它会使用 uv 管理的副本),或删除过时的系统副本:
uvx --from graphifyy graphify extract . --backend openai # 显式指定包名
pip uninstall graphifyy # 或删除旧系统安装
python -m graphify 有效但 graphify 命令无效
你的 shell 的 PATH 不包含命令安装到的 bin 目录。建议使用 uv tool install / pipx install 而不是普通 pip,然后运行 uv tool update-shell / pipx ensurepath 并打开新终端(参见上面的安装说明)。
/graphify . 在 PowerShell 中导致“路径未被识别”
PowerShell 将开头的 / 视为路径分隔符。在 Windows 上使用 graphify .(不带斜杠)。
--update 或重建后图中节点变少
如果重构删除了文件,旧节点会残留。传递 --force(或设置 GRAPHIFY_FORCE=1)以在重建节点数变少时仍覆盖。
extract 退出并显示“提取不完整……拒绝覆盖”
当提取过程崩溃或遍历无法完整读取语料库时,运行结果会比完整结果小,因此 graphify extract 拒绝用部分结果覆盖更大的现有图(保护你的 graph.json)。修复底层故障后重新运行,或传递 --allow-partial 以强制覆盖。
同一实体的图中有重复节点(幽灵重复) 幽灵重复(同一符号出现两次——一次来自 AST 提取并带有源位置,一次来自语义提取且不带)现在在构建时自动合并。如果你在 v0.8.33 之前构建的图中看到此情况,请运行完全重新提取以清理:
graphify extract . --force
Ollama 耗尽 VRAM / 超出上下文窗口 KV-cache 窗口是自动调整大小的,但可能对 GPU 来说过大。缩小它:
GRAPHIFY_OLLAMA_NUM_CTX=8192 graphify extract ./docs --backend ollama --token-budget 4000
LLM 返回无效 JSON / 未终止字符串 警告
模型的 JSON 响应达到了输出 token 上限,并在字符串中间被截断。graphify 会自动恢复(它会分割片段并重新提取两半,并且过大的单个文档会先在标题/段落边界处切片,以便仍覆盖整个文件),因此这些警告是噪音,但不会导致数据丢失。为减少这种情况,提高输出上限或缩小每个片段的输出:
GRAPHIFY_MAX_OUTPUT_TOKENS=16384 graphify extract . --mode deep # 提高上限
graphify extract . --mode deep --token-budget 4000 # 更小的输入片段 -> 更小的输出
使用 OpenRouter 等云网关时,优先使用 --backend openai(设置 OPENAI_BASE_URL)而不是 Ollama 垫片——它是更干净的 OpenAI 兼容路径。如果模型有自己的最大输出上限,降低 --token-budget 是可靠的手段。
图 HTML 太大,无法在浏览器中打开(>5000 个节点) 跳过 HTML 生成,直接使用 JSON:
graphify cluster-only ./my-project --no-viz
graphify query "..."
两个开发者同时提交后 graph.json 包含冲突标记
运行 graphify hook install——它会设置一个 git 合并驱动程序,自动对 graph.json 进行联合合并,因此永远不会发生冲突。
对文档或 PDF 提取返回空节点/边 文档、PDF 和图像需要 LLM 调用——仅代码的语料库不需要密钥。检查 API 密钥是否已设置以及后端是否正确:
ANTHROPIC_API_KEY=sk-... graphify extract ./docs --backend claude
IDE 中显示 skill 版本不匹配警告 你安装的 graphify 版本与 skill 文件不同。更新:
uv tool upgrade graphifyy
graphify install # 覆盖 skill 文件
每次 graphify extract 后 Claude Code 提示缓存失效
Graphify 将输出文件(graph.json、graphify-out/)写入工作区。如果这些路径未被忽略,每次写入都会使 Claude Code 的提示缓存失效,导致下一次对话时以缓存写入速率强制完全重新上传。将它们添加到 .claudeignore:
# .claudeignore
graph.json
graphify-out/
完整命令参考
/graphify # 对当前目录运行
/graphify ./raw # 对特定文件夹运行
/graphify ./raw --mode deep # 更激进的关系提取
graphify extract ./raw --code-only # 仅索引代码——本地 AST,无需 API 密钥(跳过文档/PDF/图像);这是一个 `extract` 标志,而非 skill 标志
/graphify ./raw --update # 仅重新提取已更改的文件
/graphify ./raw --directed # 保留边的方向
/graphify ./raw --cluster-only # 对现有图重新运行聚类
/graphify ./raw --no-viz # 跳过 HTML 可视化
/graphify ./raw --obsidian # 生成 Obsidian 仓库
/graphify ./raw --obsidian --obsidian-dir ~/vault # 写入现有仓库(绝不会覆盖你自己的笔记或 .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 save-result --question "Q" --answer "A" --nodes Foo Bar --outcome useful # 记录 Q&A 的结果(工作记忆;outcome ∈ useful|dead_end|corrected)
graphify reflect # 汇总 graphify-out/memory/ 中的结果到 reflections/LESSONS.md
graphify reflect --if-stale # 当 LESSONS.md 已经比所有输入更新时无操作(每次会话运行成本低)
graphify reflect --out docs/LESSONS.md # 将 lessons 文档写入其他位置
graphify reflect --graph graphify-out/graph.json # 按社区分组 lessons + 写入工作记忆覆盖层(.graphify_learning.json)
# 覆盖层标记节点为 preferred/tentative/contested(按时间加权,带有来源);
# graphify explain / query 随后显示“Lesson:”提示,当源文件发生变化时标记“代码已更改——重新验证”
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 + PreToolUse 钩子位于 .codex/hooks.json(Codex)
graphify opencode install # AGENTS.md + tool.execute.before 插件(OpenCode)
graphify kilo install # 原生 Kilo skill + /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 # skill 文件(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 # skill 文件(Amp)
graphify amp uninstall
graphify agents install # ~/.agents/skills/ + AGENTS.md(跨框架;别名:graphify skills)
graphify agents uninstall
graphify kiro install # .kiro/skills/ + .kiro/steering/graphify.md(Kiro IDE/CLI)
graphify kiro uninstall
graphify pi install # skill 文件(Pi coding agent)
graphify pi uninstall
graphify devin install # skill 文件 + .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 密钥
OPENAI_BASE_URL=http://localhost:8080/v1 OPENAI_MODEL=my-model graphify extract ./docs --backend openai # 任何 OpenAI 兼容服务器(llama.cpp, vLLM, LM Studio)
ANTHROPIC_BASE_URL=http://localhost:4000 ANTHROPIC_MODEL=my-model graphify extract ./docs --backend claude # 任何 Anthropic 兼容端点(LiteLLM 代理、网关)
GRAPHIFY_OLLAMA_NUM_CTX=32768 graphify extract ./docs --backend ollama # 覆盖 KV-cache 窗口(默认自动调整大小)
GRAPHIFY_OLLAMA_KEEP_ALIVE=0 graphify extract ./docs --backend ollama # 每个片段后卸载模型(节省小 GPU 上的 VRAM)
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 超时(默认 600s)
graphify extract ./docs --google-workspace # 在提取前通过 gws 导出 .gdoc/.gsheet/.gslides
graphify extract ./src --no-gitignore # 包括 git 忽略的源文件;仍遵循 .graphifyignore
graphify extract ./docs --mode deep # 通过扩展系统提示进行更丰富的语义提取
graphify extract ./docs --no-cluster # 仅原始提取,跳过聚类
graphify extract ./docs --timing # 将每个阶段的挂钟时间打印到 stderr(也适用于 cluster-only)
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 --as myrepo # 将项目图注册到 ~/.graphify/global-graph.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 --max-concurrency 16 --batch-size 200 # 并行社区标记(大型图)
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 # 强制指定后端和模型
社区名称: 在 agent(Claude Code、Gemini CLI)内部,agent 会自行命名社区。当你运行裸 CLI 时,
cluster-only会使用配置的后端(内置或自定义 OpenAI 兼容提供者)自动命名它们——传入--no-label以保留Community N,或运行graphify label按需(重新)生成名称。
了解更多
- 工作原理 —— 提取流程、社区检测、置信度评分、基准测试
- ARCHITECTURE.md —— 模块分解,如何添加语言
- 可选集成 —— Docker MCP Toolkit + SQLite
- The Memory Layer —— 关于 graphify 背后理念与端到端架构的书籍
graphify Enterprise
graphify Enterprise 是基于 graphify 构建的常驻层——它将相同的图方法应用于你的整个工作上下文:会议、文件、文档和代码,并在后台持续更新。
专为工作内容跨越数百个对话和文档且永远无法完全重建的人与团队而设计。
在 graphify.com 加入候补名单。 免费试用即将推出。
贡献指南
开发环境设置
该项目使用 uv 进行开发工作流。安装一次后,执行:
git clone https://github.com/safishamsi/graphify.git
cd graphify
git checkout v8 # 活跃开发分支
# 创建项目虚拟环境并安装 graphify + 所有额外扩展 + 开发依赖组
# (pytest)。uv 默认安装开发依赖组;传入 --no-dev 可跳过。
uv sync --all-extras
验证可编辑安装:
uv run graphify --version
uv run python -c "import graphify; print(graphify.__file__)"
运行测试
uv run pytest tests/ -q # 运行完整测试套件
uv run pytest tests/test_extract.py -q # 单个模块
uv run pytest tests/ -q -k "python" # 按名称过滤
macOS 注意:测试套件包含
sample.f90和sample.F90两个 fixture。它们在大小写不敏感的 HFS+ / APFS 文件系统上会发生冲突。如需同时测试两种 Fortran 变体,请在 Linux 或 Docker 容器中运行。
Git 工作流
- 活跃开发在
v8分支上进行。 - 提交风格:
fix: <描述>/feat: <描述>/docs: <描述> - 提交 PR 前,运行
uv run pytest tests/ -q并确认通过。 - 对于任何新的语言提取器,向
tests/fixtures/添加 fixture 文件,并向tests/test_languages.py添加测试。
可贡献的内容
工作示例 是最有用的贡献。在一个真实语料库上运行 /graphify,将输出保存到 worked/{slug}/,编写诚实的 review.md 说明图正确和错误的地方,然后提交 PR。
提取错误 —— 提交 issue 并附上输入文件、缓存条目(graphify-out/cache/)以及遗漏或错误的内容。
参见 ARCHITECTURE.md 了解模块职责及如何添加语言。

