KG Extract 用于从源文件中抽取实体(类、函数、模块、类型、概念)及其关系(导入、继承、实现、依赖、调用),并将它们作为知识图谱存储到 AgentDB 中。
用途
当你需要从源代码或文档构建或更新知识图谱时使用。它有助于理解代码库结构、进行依赖分析和影响评估。
主要能力
- 扫描文件:使用 Glob 和 Read 枚举并读取指定路径下的源文件。
- 识别实体:从每个文件中抽取类、函数、模块、类型和配置引用。
- 映射关系:为每个实体确定其与其他实体的关系。
关系类型及权重:
- imports:值导入(import { x } from '...'、require(...))——权重 0.9
- type-depends-on:TypeScript 仅类型导入(import type { Foo } from '...' 以及 import { type Foo, value } from '...')——权重 0.1,绝不用于循环检测或运行时影响分析
- extends:类继承——权重 0.9
- implements:接口实现——权重 0.7
- depends-on:构造函数依赖、注入的服务——权重 0.8
- calls:函数/方法调用——权重 0.7
- references:文档提及、注释——权重 0.3
关键提示:TypeScript 的 import type 和内联类型说明符(import { type Foo, bar })在编译时会被擦除,绝不能计为值导入——它们是一种独立的、更弱的关系。错误分类会产生虚假的运行时循环(参见 ruvnet/ruflo#2049)。
用于分类 TS 导入的正则提示(避免简单的 from '...' grep 混淆两者):
- ^\s*import\s+type\s+ → type-depends-on(整个导入为仅类型)
- ^\simport\s{[^}]*\btype\s+\w+ → 拆分:类型说明符 → type-depends-on,值说明符 → imports
- ^\simport\s+[^{]\bfrom\s+ → imports(值)
使用方式
- 扫描文件:使用 Glob 和 Read 枚举并读取给定路径下的源文件。
- 识别实体:从每个文件中抽取类、函数、模块、类型和配置引用。
- 映射关系:为每个实体确定其与其他实体的关系(按上述关系类型与权重)。
- 存储到 AgentDB:对每个实体调用 mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store,附带元数据(name、type、file、line、description)。
- 创建边:对每个关系调用 mcp__plugin_ruflo-core_ruflo__agentdb_causal-edge,附带 source、target、关系类型和权重。
- 报告:汇总按类型统计的实体总数、按类型统计的关系总数、扫描的文件数。
CLI 替代方式:
npx @claude-flow/cli@latest memory store --namespace knowledge-graph --key "entity-NAME" --value "METADATA_JSON" npx @claude-flow/cli@latest memory search --query "entities in auth module" --namespace knowledge-graph
适用场景
- 从源代码或文档构建或更新知识图谱。
- 理解代码库结构。
- 依赖分析。
- 影响评估。
限制
资料中未提供关于收费、价格、平台支持范围或效果保证的明确信息,暂未提供。