09-Git 仓库蒸馏术:从代码仓库到 OpenClaw 虚拟人-知识图谱构建

📅 发布时间:2026/8/22 22:15:58
09-Git 仓库蒸馏术:从代码仓库到 OpenClaw 虚拟人-知识图谱构建 09 知识图谱构建连接知识节点这是《Git 仓库蒸馏术从代码仓库到 OpenClaw 虚拟人》系列的第 9 篇。前几篇我们蒸馏出了各种碎片仓库画像、演进报告、架构文档、知识摘要、模式库、决策记录。这一篇把这些碎片织成一张网——知识图谱。碎片是点图谱是网而虚拟人需要的正是这张网。一、为什么需要知识图谱前几篇的产出物是文档文档的问题是割裂架构文档里提到状态管理用 Pinia但没说为什么决策记录里说用 Pinia 因为 TS 支持好但没说影响哪些模块模式库里说统一请求封装但没说在哪些模块被使用这些信息单独看都对连起来才完整。知识图谱就是把它们连起来[ADR-001: 用 Pinia] --决策影响-- [src/stores/ 模块] | --理由-- [TypeScript 支持好] | --关联-- [issue #123] [统一请求封装模式] --被使用于-- [src/api/ 模块] | --关联-- [ADR-003: 错误处理规范]图谱的价值从查文档变成查关系。问为什么用 Pinia图谱能给出完整链路决策 → 理由 → 影响范围 → 相关 issue。二、知识节点定义实体、概念、决策、模式2.1 节点类型知识图谱的节点Node是知识单元分为四类节点类型定义示例实体具体的代码/模块/文件src/core/、ModelService、package.json概念抽象的业务/技术概念“状态管理”、“模型汇聚”、“分层架构”决策架构决策ADRADR-001用 Pinia模式可复用的实现模式统一请求封装、Store 工厂2.2 节点定义规范每个节点有统一的属性{id:entity:src/stores,type:entity,name:src/stores/,description:全局状态管理模块,source:架构文档,created:2022-06}节点 ID 规范类型:名称如entity:src/stores、concept:状态管理、decision:ADR-001、pattern:统一请求封装。2.3 从产出物提取节点前几篇的产出物是节点的来源产出物提取的节点仓库画像实体模块、目录演进报告实体里程碑、决策架构变更架构文档实体模块、概念架构模式知识摘要概念核心概念、决策关键决策模式库模式可复用实现决策记录决策ADR三、关系建模依赖、引用、演进、决策3.1 关系类型节点之间的边Edge是关系分为四类关系类型含义示例依赖A 依赖 Bsrc/views/依赖src/api/引用A 引用 B 的知识架构文档引用 ADR-001演进A 由 B 演进而来Pinia 由 Vuex 演进而来决策A 决策影响 BADR-001 影响 src/stores/3.2 关系定义规范{source:entity:src/views,relation:depends_on,target:entity:src/api,description:页面层调用接口层,source_doc:架构文档}关系类型枚举depends_on依赖references引用evolved_from演进decides/affected_by决策implements实现related_to关联3.3 关系建模示例把前几篇的知识连起来{nodes:[{id:entity:src/stores,type:entity,name:src/stores/},{id:concept:状态管理,type:concept,name:状态管理},{id:decision:ADR-001,type:decision,name:用 Pinia 替代 Vuex},{id:pattern:store-factory,type:pattern,name:Store 工厂}],edges:[{source:entity:src/stores,relation:implements,target:concept:状态管理},{source:decision:ADR-001,relation:decides,target:entity:src/stores},{source:pattern:store-factory,relation:implements,target:entity:src/stores},{source:decision:ADR-001,relation:related_to,target:pattern:store-factory}]}四、图谱构建工具4.1 轻量方案JSON 可视化对于中小型仓库用 JSON 存图谱 可视化工具展示# 安装可视化工具如 vis-network / cytoscapenpminstallvis-network# 或用 Python 的 networkx 生成图pipinstallnetworkx matplotlibPython 生成图谱可视化#!/usr/bin/env python3# scripts/build_graph.pyimportjsonimportnetworkxasnximportmatplotlib.pyplotaspltdefbuild_graph(data):Gnx.DiGraph()fornodeindata[nodes]:G.add_node(node[id],labelnode[name],typenode[type])foredgeindata[edges]:G.add_edge(edge[source],edge[target],relationedge[relation])returnGdefvisualize(G,outputgraph.png):posnx.spring_layout(G,seed42)plt.figure(figsize(16,12))nx.draw(G,pos,with_labelsTrue,node_size2000,node_colorlightblue,font_size8,arrowsTrue)labelsnx.get_edge_attributes(G,relation)nx.draw_networkx_edge_labels(G,pos,edge_labelslabels,font_size6)plt.savefig(output,dpi150,bbox_inchestight)print(f图谱已保存:{output})if__name____main__:withopen(knowledge-graph.json)asf:datajson.load(f)Gbuild_graph(data)print(f节点数:{G.number_of_nodes()}, 边数:{G.number_of_edges()})visualize(G)4.2 专业方案Neo4j 图数据库对于大型仓库用图数据库存储和查询// 创建节点 CREATE (stores:Entity {name: src/stores/, type: entity}) CREATE (pinia:Decision {name: ADR-001, title: 用 Pinia 替代 Vuex}) CREATE (state:Concept {name: 状态管理, type: concept}) // 创建关系 CREATE (pinia)-[:DECIDES]-(stores) CREATE (stores)-[:IMPLEMENTS]-(state) // 查询状态管理相关的所有知识 MATCH (n)-[r]-(m) WHERE n.name 状态管理 OR m.name 状态管理 RETURN n, r, m4.3 查询示例回答为什么用 Pinia// 从决策出发查理由和影响范围 MATCH (d:Decision {name: ADR-001})-[r]-(n) RETURN d.name, type(r), n.name, n.type输出ADR-001 DECIDES src/stores/ entity ADR-001 RELATED_TO store-factory pattern ADR-001 REFERENCES issue#123 entity五、输出知识图谱5.1 图谱交付物知识图谱的交付物包括knowledge-graph/ ├── knowledge-graph.json # 图谱数据节点边 ├── graph.png # 可视化图 ├── node-index.md # 节点索引 └── query-examples.md # 常用查询示例5.2 节点索引# 知识图谱节点索引 ## 实体Entity | ID | 名称 | 说明 | |----|------|------| | entity:src/stores | src/stores/ | 全局状态管理模块 | | entity:src/api | src/api/ | 接口层 | | entity:src/core | src/core/ | 核心业务逻辑 | ## 概念Concept | ID | 名称 | 说明 | |----|------|------| | concept:状态管理 | 状态管理 | 全局状态管理方案 | | concept:分层架构 | 分层架构 | UI→业务→数据 | ## 决策Decision | ID | 名称 | 状态 | |----|------|------| | decision:ADR-001 | 用 Pinia 替代 Vuex | 已接受 | ## 模式Pattern | ID | 名称 | 分类 | |----|------|------| | pattern:store-factory | Store 工厂 | 状态层 | | pattern:unified-request | 统一请求封装 | 请求层 |5.3 图谱的用途知识图谱是蒸馏流程的知识网络给 10 工具链图谱是工具链的知识底座查询接口基于图谱给 12 虚拟人化图谱是虚拟人 memory 的关系层让虚拟人能联想知识给 13 落地虚拟人回答问题时通过图谱做知识关联检索六、小结这一篇的核心收获节点定义实体、概念、决策、模式四类节点统一 ID 规范。关系建模依赖、引用、演进、决策四类关系把碎片连成网。构建工具轻量方案JSON networkx 可视化和专业方案Neo4j 图数据库。输出知识图谱图谱数据 可视化 节点索引 查询示例是虚拟人的关系层。下一篇我们搭建蒸馏的流水线[10 蒸馏工具链自动化蒸馏流水线](10-Git 仓库蒸馏术从代码仓库到 OpenClaw 虚拟人-蒸馏工具链.md)——把前几篇的手工操作固化成可重复执行的自动化流水线。上一篇[08 决策记录生成用 ADR 固化架构决策](08-Git 仓库蒸馏术从代码仓库到 OpenClaw 虚拟人-决策记录生成.md)下一篇[10 蒸馏工具链自动化蒸馏流水线](10-Git 仓库蒸馏术从代码仓库到 OpenClaw 虚拟人-蒸馏工具链.md)