资讯动态

graphify 知识图谱导出与基准测试完整指南:Wiki、Neo4j、FalkorDB、SVG、GraphML 与 MCP 服务

发布时间:2026/9/8 23:52:33 来源:尧图企业网站定制
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/graphifygraphify 在把代码、文档、SQL、配置与 PDF 解析为可查询知识图谱后还提供了一整套按需导出能力生成 Wiki 文档站、向 Neo4j/FalkorDB 推送图谱、输出 SVG/GraphML 可视化文件、以 MCPModel Context Protocol服务把图谱实时开放给其他 Agent并对大语料执行 token 压缩基准测试。本文以 graphify 为 Trae 等 Agent 平台内置的 skill 参考文档graphify/skills/trae/references/exports.md 及 skillgen 生成物 tools/skillgen/expected/graphify__skills__trae__references__exports.md为主干逐一说明每个导出 flag 的触发条件、命令格式、默认参数与底层实现原理帮助你真正掌握这套多格式导出管线。适用前提这些步骤只在显式传入对应 flag 时执行该参考文档属于 graphify skill 的多步工作流的一部分其核心约束是每个步骤只针对自己的 flag 运行没有传入该 flag 就不执行对应导出。当用户在原始命令中传入了以下任一导出 flag或语料规模满足 token 缩减基准的触发条件时Agent 才会加载本参考并依次执行--wiki、--neo4j、--neo4j-push、--falkordb、--falkordb-push、--svg、--graphml、--mcp以 trae 为例同一份参考以近似形式被同步到 agents/amp/claude/claw/codex/copilot 等多个平台的 skill 目录如 graphify/skills/agents/references/exports.md。skillgen 工具tools/skillgen会根据 fragments 与 platforms.toml 生成每个平台的实际 skill 文件本主题对应的期望产物即 tools/skillgen/expected/graphify__skills__trae__references__exports.md。需要理解两个贯穿全文的前提约定输出目录默认输出到graphify-out/可通过环境变量GRAPHIFY_OUT覆盖见 graphify/paths.pygraph.json、.graphify_labels.json、.graphify_detect.json、.graphify_python等中间产物都在该目录下前置条件所有导出都假定已完成/graphify path的建图流程graph.json存在CLI 在导出前会做存在性与尺寸上限检查graphify/cli.py社区、标签、cohesion 等分析数据来自.graphify_analysis.json与.graphify_labels.json。Flag触发步骤产物 / 动作--wikiStep 6bgraphify-out/wiki/文档站--neo4jStep 7可移植的cypher.txt手动导入--neo4j-push uriStep 7直接推送运行中的 Neo4j--falkordbStep 7a可移植的cypher.txtOpenCypher--falkordb-push uriStep 7a直接推送运行中的 FalkorDB--svgStep 7bgraph.svgmatplotlib 绘制--graphmlStep 7cgraph.graphmlGephi/yEd 可打开--mcpStep 7d启动 stdio MCP servertotal_words 5000Step 8运行graphify benchmarkStep 6bWiki 导出--wiki——先于清理步骤的关键时序只在原始命令中显式给出--wiki时才运行此步。参考文档特别强调一个时序约束Wiki 导出必须放在Step 9cleanup 清理之前因为导出需要读取当时仍存在的.graphify_labels.json人工或 LLM 生成的社区命名。一旦清理步骤将其删除Wiki 中的社区命名信息就会丢失。graphify export wiki命令内部实际执行to_wiki实现见 graphify/wiki.py默认把产物写到graphify-out/wiki/其中wiki/index.md是面向 Agent 的入口页CLI 会打印该提示graphify/cli.py社区文章每个社区生成一篇条目列出成员节点并统计与其它社区的连接边数与桥接节点God-node 文章为高连通度的关键节点生成单独条目数据来自.graphify_analysis.json的gods缺失时用god_nodes(G)现算索引页汇总社区、god nodes 与全图节点/边规模。一个值得注意的保护逻辑若.graphify_analysis.json缺失或为空CLI 会拒绝导出并提示先运行graphify extract .或graphify cluster-only .重新生成社区数据以避免导出退化的空 Wikigraphify/cli.py。对应的测试可在 tests/test_cli_export.py 中看到test_export_wiki_creates_articles。Step 7Neo4j 导出--neo4j / --neo4j-push生成 Cypher 文件供手动导入--neo4j仅传--neo4j时不要求有运行中的 Neo4j 实例只生成一个可供cypher-shell批量执行的 Cypher 文件graphify export neo4j产物为graphify-out/cypher.txt文件头标注// Neo4j Cypher import - generated by /graphify。每个节点写成一条MERGE每条边先MATCH两端节点再MERGE关系见 graphify/export.py节点按file_type首字母大写打标签例如Python、Markdown携带id与label两个属性边以relation大写形式作为关系类型并保留confidence属性字符安全_cypher_escape对反斜杠、单引号、换行与 C0 控制字符做转义防止字段内容破坏语句边界处于标识符位置的标签/关系类型经_cypher_label白名单清洗仅保留[A-Za-z0-9_]且必须以字母开头不合法时回退到Entity/RELATES_TO。导入到 Neo4jcypher-shell graphify-out/cypher.txt直接推送到运行中的实例--neo4j-push graphify export neo4j --push bolt://localhost:7687 --user neo4j --password PASSWORD参数默认值与安全要点默认 URI 为bolt://localhost:7687默认用户为neo4j若凭据未提供Agent 应主动询问用户为避免密码出现在 shell 历史与进程列表ps可见CLI 还支持用环境变量NEO4J_PASSWORD替代--password显式 flag 优先于环境变量graphify/cli.py使用 MERGE 语义可安全重复执行节点与边均为 upsert不会产生重复数据。push 路径需要安装驱动pip install neo4j其实现push_to_neo4jgraphify/exporters/graphdb.py通过 Python 驱动逐条执行每个节点MERGE (n:Label {id: $id}) SET n $propsprops只保留字符串/数值/布尔标量属性并剔除_前缀的内部标记社区 ID 会作为community属性写入每条边MATCH (a {id: $src}), (b {id: $tgt}) MERGE (a)-[r:REL]-(b) SET r $props关系类型与标签同样经过注入清洗_safe_rel/_safe_label完成后返回{nodes: ..., edges: ...}计数CLI 打印Pushed to Neo4j: N nodes, M edges。Step 7aFalkorDB 导出--falkordb / --falkordb-pushFalkorDB 兼容 OpenCypher因此导出的语句与 Neo4j 完全相同但两者存在一个关键差异FalkorDB 的GRAPH.QUERY一次只能执行一条语句没有类似 Neo4jcypher-shell的批量脚本导入机制。因此参考文档的建议是--falkordb只在你需要那个可移植的cypher.txt产物时使用要真正把图载入数据库优先使用--falkordb-push。graphify export falkordb # 生成 OpenCypher 语句的 cypher.txt graphify export falkordb --push falkordb://localhost:6379参数约定graphify/cli.py默认 URI 为falkordb://localhost:6379且scheme 仅是提示性的——redis://localhost:6379或裸的host:port都可用实现会先补上redis://再urlparsegraphify/exporters/graphdb.py认证是可选的FalkorDB 默认无凭据运行只在实例要求认证时才询问用户同理可用环境变量FALKORDB_PASSWORD目标图默认名为graphifyFalkorDB 在同一实例内按名区分图通过select_graph(graphify)选择同样基于MERGE upsert重复执行安全。push 实现push_to_falkordbgraphify/exporters/graphdb.py与 Neo4j 路径的结构差异用FalkorDB(host, port, username, password)建立连接、用db.select_graph()选图、用graph.query(cypher, params)执行语句、无 session 对象。凭据优先级为「URI 内嵌凭据 命令行参数」。集成测试可参考 tests/test_falkordb_integration.py。Step 7bSVG 导出--svggraphify export svg产物为graphify-out/graph.svg。该格式轻量且可直接嵌入 Markdown——Obsidian 笔记、Notion、GitHub README 都能渲染无需 JavaScript。实现to_svggraphify/export.py基于 matplotlib spring layout固定seed42保证重复导出布局稳定节点大小随度数缩放300 1200 * degree/max_degreeHub 节点视觉突出节点颜色与社区对应色板COMMUNITY_COLORS与 HTML 导出一致边按置信度区分EXTRACTED为实线且透明度更高INFERRED/AMBIGUOUS等为虚线、低透明度左下角绘制社区图例含成员数字体、底色针对深色背景设计依赖matplotlib未安装时抛错并提示pip install matplotlib。Step 7cGraphML 导出--graphmlgraphify export graphml产物为graphify-out/graph.graphml可直接在Gephi、yEd 或任意 GraphML 兼容工具中打开。实现to_graphmlgraphify/export.py在写入前做了一系列工程化处理社区信息把communityID 写为节点属性Gephi 可直接按社区着色置信度保留边上的EXTRACTED/INFERRED/AMBIGUOUS作为边属性保留剔除内部标记所有_前缀属性如 AST 溯源_origin、方向标记_src/_tgt不泄漏到导出文件标量净化_graphml_safeNone转空串、非标量dict/list序列化为 JSON 字符串、字符串先过_strip_xml_illegal剔除 XML 1.0 无法表示的 C0 控制字符避免一个异常标签导致整次导出失败原子写入先写.tmp再os.replace防止序列化中途出错留下 0 字节文件被下游误判为成功导出。Step 7dMCP server--mcp——把图谱开放给其它 Agent--mcp会启动一个基于stdio的 MCP server供 Claude Desktop 等任意 MCP 兼容编排器挂载。关键点在于启动用的解释器必须是从graphify-out/.graphify_python中读取的虚拟环境 Python而不是系统python3$(cat graphify-out/.graphify_python) -m graphify.serve graphify-out/graph.json该 server 对 Agent 暴露以下工具支持对已建图进行实时查询query_graph、get_node、get_neighbors、get_community、god_nodes、graph_stats、shortest_path工具层实现在 graphify/serve.pylist_tools与各_tool_*处理器底层复用同一套基于关键词打分、BFS/DFS 子图抽取、社区过滤与诱导边补全的图谱问答逻辑。在 Claude Desktop 中注册参考文档特别提示了两个 Claude Desktop 的限制并给出了对应配置Claude Desktop 无法执行$(...)命令替换所以command必须写成字面量在uv tool install安装方式下系统python3无法 import graphify所以必须指向 graphify 虚拟环境中的解释器。因此配置claude_desktop_config.json时先执行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] } } }其中command必须替换为上一步打印的绝对解释器路径args中的graph.json同样建议使用绝对路径避免 MCP 子进程的当前工作目录与预期不一致导致加载失败。挂载完成后其它 Agent 就能以工具调用的方式直接对这张已经过 AST 解析与语义标注的知识图谱发起结构化查询。Step 8Token 缩减基准total_words 5000 时graphify benchmark触发条件由建图阶段的检测结果决定读取graphify-out/.graphify_detect.json中的total_words语料总词数累计逻辑见 graphify/detect.py它同时对视频之外的各类文件计数并决定是否需要建图的告警阈值total_words 5000运行graphify benchmark并把输出直接打印在对话中交给用户查看total_words 5000静默跳过。参考文档给出的理由非常明确——对于小语料图的价值在于结构清晰structural clarity而不是 token 压缩token compression没必要为一个本可整段塞进上下文窗口的小项目做基准。graphify benchmark实现见 graphify/benchmark.py衡量的是用图谱回答问题时节省的上下文量按chars/4 1 token的通用近似估算 token_CHARS_PER_TOKEN见 graphify/benchmark.py从问题中提取查询词并对节点打分选取最佳匹配节点作为种子以种子为中心做深度受限的 BFS得到返回的子图并估算其 token 数与朴素全语料进上下文方案对比量化图谱检索的压缩收益。结果经print_benchmark以等宽表格输出并对非 UTF-8 控制台做了字符回退CLI 会尝试从graphify-out/.graphify_detect.json自动读取total_words作为语料规模参数graphify/cli.py。CLI 分发见 graphify/cli.py 的graphify export format帮助文本。导出矩阵速查与使用建议综合参考文档与源码将各导出方式的使用要点汇总如下命令触发 flag目标默认参数重复执行安全性graphify export wiki--wiki生成 Agent 可读的文档站graphify-out/wiki/入口index.md读取.graphify_labels.json、.graphify_analysis.json需在清理前运行graphify export neo4j--neo4j生成cypher.txtcypher-shell手动导入输出到graph.json同级目录语句为 MERGE/MATCHgraphify export neo4j --push uri--neo4j-push推送到运行中 Neo4jURIbolt://localhost:7687userneo4j密码必填或NEO4J_PASSWORDMERGE upsert安全重跑graphify export falkordb--falkordb生成 OpenCyphercypher.txt仅作为可移植产物建议优先 push同 Neo4jgraphify export falkordb --push uri--falkordb-push推送到运行中 FalkorDBURIfalkordb://localhost:6379认证可选图名默认graphifyMERGE upsert安全重跑graphify export svg--svggraph.svg可嵌入任意 Markdownmatplotlib spring layout固定 seed42幂等覆盖graphify export graphml--graphmlgraph.graphmlGephi/yEd 分析原子写入幂等覆盖$(cat graphify-out/.graphify_python) -m graphify.serve graph.json--mcpstdio MCP server7 个查询工具解释器来自.graphify_python每次启动新会话graphify benchmarktotal_words 5000输出 token 压缩基准从.graphify_detect.json读语料词数只读评测实践建议由于每个导出步骤只针对自己的 flag 运行、且都以graphify-out/下的graph.json为唯一事实来源你完全可以在一次/graphify命令中组合多个 flag例如同时要 Wiki、SVG 与 MCP 服务各步骤互不干扰只要牢记——Wiki 必须在清理步骤之前导出以保证社区标签可用FalkorDB 尽量用--push而非文件导入MCP 场景务必使用.graphify_python提供的虚拟环境解释器。测试覆盖可在 tests/test_cli_export.pywiki/graphml/neo4j/falkordb 产物与 tests/test_export_path_length.py长路径 vault/wiki 导出的健壮性中继续深入验证。【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价