mcpField
K
kg-extract

kg-extract

github.com/ruvnet开发80.0k730 次安装今天更新
代码仓库

关于 kg-extract

kg-extract 用于从源代码和文档提取实体及其关系,并存入 AgentDB,支持分析代码结构、依赖和变更影响;还会区分 TypeScript 仅类型导入与值导入。

主要功能

  1. 01提取代码和文档实体
  2. 02映射导入、继承、调用和依赖
  3. 03区分仅类型导入与值导入
  4. 04将实体和关系存入 AgentDB
  5. 05汇总实体与关系数量

适用场景

  1. 01从源文件构建知识图谱
  2. 02分析代码结构与依赖
  3. 03评估代码变更的影响

MCP 相关

使用 Ruflo MCP 工具将实体和因果边存入 AgentDB。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ruvnet/ruflo --skill kg-extract

安装后在 Claude Code 中输入/kg-extract确认已加载。

详细介绍

KG Extract

从源文件中提取实体(类、函数、模块、类型、概念)及其关系(导入、继承、实现、依赖、调用),然后将其作为知识图谱存储在 AgentDB 中。

使用场景

当你需要根据源代码或文档构建或更新知识图谱时。适用于了解代码库结构、分析依赖关系和评估影响。

步骤

  1. 扫描文件——使用 Glob 和 Read 枚举并读取给定路径中的源文件

  2. 识别实体——从每个文件中提取类、函数、模块、类型和配置引用

  3. 映射关系——为每个实体确定其与其他实体的关系。关键:TypeScript 的 import type 和内联 type 指示符(import { type Foo, bar })会在编译时被擦除,不得将其计为值导入——它们属于单独且较弱的关系。错误分类会产生虚假的运行时循环(参见 ruvnet/ruflo#2049)。

    • 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

    用于分类 TS 导入的正则表达式提示(避免简单的 from '...' grep 将两者混淆):

    ^\s*import\s+type\s+               → type-depends-on (entire import is type-only)
    ^\s*import\s*\{[^}]*\btype\s+\w+   → split: type specifiers → type-depends-on, value specifiers → imports
    ^\s*import\s+[^{]*\bfrom\s+        → imports (value)
    
  4. 存储到 AgentDB——为每个实体调用 mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store,并提供元数据(名称、类型、文件、行号、描述)

  5. 创建边——为每个关系调用 mcp__plugin_ruflo-core_ruflo__agentdb_causal-edge,并提供来源、目标、关系类型和权重

  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

评论

支持 Markdown