graphify 图库导出与基准压测完全指南Wiki、Neo4j、FalkorDB、SVG/GraphML 与 MCP 实时查询服务【免费下载链接】graphifyTurn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.项目地址: https://gitcode.com/GitHub_Trending/graph/graphify在 graphify 的标准工作流/graphify path及各平台 skill中建图完成之后还有一组锦上添花的可选步骤把 graph.json 沉淀为 Agent 可爬取的 Wiki、推送到 Neo4j / FalkorDB 图数据库、导出可嵌入文档的 SVG 与可做可视化分析的 GraphML或启动一个 MCP stdio 服务让其他 Agent 实时查询知识图谱并配合 token 缩减基准来量化图带来的上下文收益。本文以仓库内用于生成各平台参考手册的共享片段 tools/skillgen/fragments/references/shared/exports.md 为主线结合 cli.py、exporters/graphdb.py、serve.py、benchmark.py 的源码实现逐条讲清每条导出命令的触发条件、命令形态、参数默认值与落地产物读完即可在自己的项目上直接复现整条导出链路。触发前提只有显式传参才执行这些步骤不是默认行为。参考文档开篇就给出了加载条件只有当用户在某次命令中显式传入了--wiki、--neo4j、--neo4j-push、--falkordb、--falkordb-push、--svg、--graphml、--mcp之一或语料体量足够大total_words超过 5,000需要跑 token 缩减基准时才进入对应的导出子步骤每种子步骤只响应自己的 flag一次无任何导出 flag 的默认运行会跳过全部导出。在 skill-agents.md 的使用示例中可以看到这些 flag 的典型组合/graphify path --neo4j-push bolt://localhost:7687 # push directly to Neo4j /graphify path --falkordb-push falkordb://localhost:6379 # push directly to FalkorDB /graphify path --wiki # build agent-crawlable wiki从 CLI 入口看导出动作统一收敛为graphify export format子命令。在 cli.py 中export子命令的合法格式包括html、callflow-html、obsidian、wiki、svg、graphml、neo4j、falkordb其余格式会打印完整用法后退出。默认读取graphify-out/graph.json可选标签文件默认是graphify-out/.graphify_labels.json--graph、--labels均可覆盖默认路径。Step 6bWiki 导出--wiki当原始命令显式带--wiki时才执行。这一步必须在 Step 9清理之前运行因为清理会移除仍被导出过程依赖的.graphify_labels.jsongraphify export wiki落地为graphify-out/wiki/目录。从 cli.py 的wiki分支可以看到两点关键行为若缺少社区数据.graphify_analysis.json缺失或为空CLI 会拒绝导出以防数据丢失提示先运行graphify extract .或graphify cluster-only .产物由 wiki.py 的to_wiki()生成index.mdAgent 入口目录列出全部文章 每个社区一篇CommunityName.md 每篇 god node 专文to_wiki()会对社区成员列表做图内节点过滤剔除已被去重/裁剪的悬空 ID避免导出中途崩溃。graphify export wiki结束后会输出两行提示Wiki: N articles written to out/wiki/以及index.md - agent entry point指引 Agent 从wiki/index.md开始爬取。Step 7Neo4j 导出--neo4j/--neo4j-pushNeo4j 有生成文件与直推实例两种模式按传入的 flag 区分。--neo4j生成可手工导入的 Cypher 文件graphify export neo4j生成cypher.txt随后用cypher-shell graphify-out/cypher.txt导入。生成逻辑在 export.py 的to_cypher()中每个节点一行MERGE (n:Type {id:..., label:...});每条边先MATCH两端再MERGE关系携带confidence属性。采用MERGE意味着重复执行不会产生重复节点/边。值得注意的安全实现节点标签与关系类型位于 Cypher 的标识符位置不可转义因此只允许[A-Za-z0-9_]字符并通过_cypher_label()做白名单清洗、非法值回退到Entity/RELATES_TO字符串字面量则经_cypher_escape()处理引号、反斜杠与换行防止恶意标签跳出语句边界注入新的 Cypher源码注释标记为 F-008 防护。--neo4j-push uri直推运行中的 Neo4jgraphify export neo4j --push bolt://localhost:7687 --user neo4j --password PASSWORD默认 URI 为bolt://localhost:7687默认用户为neo4j。底层实现在 exporters/graphdb.py 的push_to_neo4j()它通过 Python driver需先pip install neo4j把节点props附加community字段以MERGE ... SET n $props方式 upsert边以MATCH MERGE关联并携带属性全程使用参数化查询与标签白名单防止 Cypher 注入返回{nodes: N, edges: N}计数CLI 会打印Pushed to Neo4j: ...。密码安全提示CLI 参数解析cli.py优先读取NEO4J_PASSWORD环境变量F-031 防护避免密码出现在ps输出与 shell 历史中显式的--password仅作覆盖。Step 7aFalkorDB 导出--falkordb/--falkordb-pushFalkorDB 走 OpenCypher 兼容路径但语义上与 Neo4j 有一个关键差异--falkordb生成 Cypher 文件谨慎使用graphify export falkordb与 Neo4j 相同该模式也是调用to_cypher()生成可移植的cypher.txt。但文档明确提醒FalkorDB 的GRAPH.QUERY一次只执行一条语句没有 Neo4jcypher-shell那样的批量脚本导入机制因此文件产物主要用于保留可移植副本加载图优先使用直推模式。CLI 在生成后也会打印同样的提示cli.py。--falkordb-push uri直推运行中的 FalkorDBgraphify export falkordb --push falkordb://localhost:6379默认 URI 为falkordb://localhost:6379。底层实现在 exporters/graphdb.py 的push_to_falkordb()需要pip install falkordb。它只从 URI 提取 host/port因此scheme 仅是提示性的——falkordb://localhost:6379、redis://localhost:6379乃至裸写localhost:6379都等价默认端口 6379认证是可选的FalkorDB 默认无凭据运行仅当实例要求认证时才向用户询问且会忽略 Neo4j 风格的默认用户名目标图名默认为graphify通过db.select_graph(graphify)选择。写入同样采用MERGE/SET可安全重复执行。Step 7b / 7cSVG 与 GraphML 导出--svg/--graphmlgraphify export svg graphify export graphmlgraphify export svg调用 export.py 的to_svg()产物为graph.svg可按社区着色。CLI 提示它可嵌入 Obsidian、Notion、GitHub README等 Markdown 环境。graphify export graphml调用 export.py 的to_graphml()产物为graph.graphml面向 Gephi、yEd 等桌面可视化/分析工具。导出路径上同样有健壮性处理GraphML 序列化要求字符串必须是合法 XML 1.0导出前会剥离控制字符_strip_xml_illegal否则单个含 ANSI 转义或换页符的标签会让整个导出在nx.write_graphml处抛ValueError中止源码注释标记 #2897。Step 7dMCP 实时查询服务--mcp这是让知识图谱活起来的一步——把建好的图暴露为 MCP 工具供 Claude Desktop 或任何 MCP 兼容的 Agent 编排器实时查询$(cat graphify-out/.graphify_python) -m graphify.serve graphify-out/graph.jsongraphify-out/.graphify_python是 skill 流程早期写入的绝对解释器路径见 skill-agents.md后续所有 Python 调用都应使用$(cat graphify-out/.graphify_python)而非裸python3确保启用的是能 importgraphify的那套虚拟环境。该命令以 stdio 方式启动 MCP server。从 serve.py 的list_tools()看服务暴露的核心查询工具如下表工具作用关键入参query_graph按自然语言/BFS/DFS 检索子图question必填、modebfs/dfs默认 bfs、depth默认 3、token_budget默认 2000、context_filterget_node按 label/ID 取单节点全量细节label必填get_neighbors取某节点全部直接邻居与边详情label必填、relation_filter、token_budgetget_community按社区 ID 取社区全部节点community_id必填、token_budgetgod_nodes返回连通度最高的核心抽象节点top_n默认 10graph_stats节点/边/社区数与置信度分布摘要无shortest_path两概念间最短路径source、target必填、max_hops默认 8、undirected除工具外服务还暴露若干graphify://前缀的只读资源report、stats、god-nodes、surprises、audit、questions见 serve.py并把.graphify_labels.json中的社区标签与GRAPH_REPORT.md一并纳入服务上下文。接入 Claude Desktop把以下片段合并进claude_desktop_config.json。注意两点约束——Claude Desktop 无法执行$(...)命令替换且若 graphify 经由uv tool install安装系统python3无法 import graphify。因此command必须指向cat graphify-out/.graphify_python打印出的绝对解释器路径{ mcpServers: { graphify: { command: absolute path from: cat graphify-out/.graphify_python, args: [-m, graphify.serve, /absolute/path/to/graphify-out/graph.json] } } }配置完成后Claude Desktop 或其他编排器里的 Agent 就能用query_graph/shortest_path等手段即时提问而不必反复对原始文件做 grep 或搬运大段GRAPH_REPORT.md。Step 8Token 缩减基准total_words 5000时当 detect 阶段 输出的graphify-out/.graphify_detect.json中total_words大于 5,000时运行graphify benchmark把基准输出直接原样粘贴到对话中。若total_words 5000则静默跳过——对小语料而言图的价值在于结构清晰而非 token 压缩刻意去压测反而制造噪音。CLI 的benchmark分支cli.py会自动从.graphify_detect.json读total_words并先做图文件大小上限校验。基准的原理见 benchmark.py 的run_benchmark()语料 token 基线corpus_words来自 detect 结果缺失时按节点数 × 50词粗估按约 100 词 ≈ 133 token 折算成朴素全量喂入的corpus_tokens单次查询开销对 5 个内置示例问题认证如何工作、主入口在哪、错误如何处理、数据层与 API 的连接、核心抽象是什么复用_query_graph_text的种子打分 3 层 BFS 子图估算返回上下文 token 数结论指标reduction_ratio corpus_tokens / avg_query_tokens打印形如Corpus: 8,123 words → ~10,830 tokens (naive)、Avg query cost: ~412 tokens、Reduction: 26.3x fewer tokens per query的报告并逐条列出每个示例问题的缩减倍数。各导出形态速查表触发 flag / 条件命令主要产物 / 落点关键默认值与约束--wikigraphify export wikigraphify-out/wiki/index.md 社区/god node 文章依赖.graphify_analysis.json须先于清理步骤执行--neo4jgraphify export neo4jcypher.txtcypher-shell 导入MERGE 幂等标识符白名单清洗防注入--neo4j-push urigraphify export neo4j --push bolt://localhost:7687 --user neo4j --password PASSWORD直推实例默认bolt://localhost:7687/ 用户neo4j需pip install neo4j支持NEO4J_PASSWORD环境变量--falkordbgraphify export falkordbcypher.txtOpenCypherGRAPH.QUERY单条执行批量加载请用--push--falkordb-push urigraphify export falkordb --push falkordb://localhost:6379直推实例scheme 仅提示falkordb:///redis:/// 裸 host:port 均可默认图名graphify认证可选需pip install falkordb--svggraphify export svggraph.svg可按社区着色内嵌 Obsidian/Notion/README--graphmlgraphify export graphmlgraph.graphml面向 Gephi/yEd导出前剥离非法 XML 控制字符--mcp$(cat graphify-out/.graphify_python) -m graphify.serve graphify-out/graph.jsonstdio MCP server默认载入graphify-out/graph.jsonClaude Desktop 需填绝对解释器路径total_words 5000graphify benchmark压测报告直接粘贴进对话数据源.graphify_detect.json小语料静默跳过源码级要点回顾命令分发所有导出共用 cli.py 的export分支解析--graph/--labels/--push/--user/--password图统一从graph.json经 networkx 的node_link_graph重建社区数据优先读.graphify_analysis.json缺失时从节点上的community属性反推保证 html/obsidian/wiki/svg/graphml/neo4j 不会静默产出残缺产物。社区标签依赖wiki / obsidian / svg 等会消费.graphify_labels.json里的社区命名这正是wiki 须在清理前运行的原因——标签文件是 LLM/人工整理的非可再生资产。幂等与安全Neo4j / FalkorDB 写入一律MERGE/SETupsert字符串经逐类转义、标签/关系类型经白名单化与 Cypher 注入防护F-008和安全密码传递F-031共同构成导出链路的护栏。至此一份graphify-out/目录下的知识图谱便可以从本地 JSON 产物扩展为可被爬取的 Wiki、可被cypher-shell/图数据库承载的 OpenCypher 图、可嵌入文档的矢量图、可离线分析的 GraphML以及能被任意 MCP Agent 实时问答的在线服务——配合graphify benchmark的量化结论完整覆盖知识图谱的导出—消费—度量闭环。【免费下载链接】graphifyTurn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.项目地址: https://gitcode.com/GitHub_Trending/graph/graphify创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考