SuperAPI AI 工具集

kg-extract

编程与开发

查看项目

更新于 10-15 14:26

技能介绍

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(值)

使用方式

  1. 扫描文件:使用 Glob 和 Read 枚举并读取给定路径下的源文件。
  2. 识别实体:从每个文件中抽取类、函数、模块、类型和配置引用。
  3. 映射关系:为每个实体确定其与其他实体的关系(按上述关系类型与权重)。
  4. 存储到 AgentDB:对每个实体调用 mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store,附带元数据(name、type、file、line、description)。
  5. 创建边:对每个关系调用 mcp__plugin_ruflo-core_ruflo__agentdb_causal-edge,附带 source、target、关系类型和权重。
  6. 报告:汇总按类型统计的实体总数、按类型统计的关系总数、扫描的文件数。

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

适用场景

  • 从源代码或文档构建或更新知识图谱。
  • 理解代码库结构。
  • 依赖分析。
  • 影响评估。

限制

资料中未提供关于收费、价格、平台支持范围或效果保证的明确信息,暂未提供。