通用工具:为 UE5 引擎和插件生成知识库和 Claude Skill
- 引擎模式 - 为整个 UE5 引擎生成知识库(1757+ 模块)
- 插件模式 - 为单个插件生成独立知识库(轻量、高效)
- 🔧 通用工具 - 支持任何 UE5 引擎版本(5.0, 5.1, 5.2, 5.3, 5.4+)
- 📊 知识库生成 - 自动扫描源码,构建模块索引和代码图谱
- 🔌 完整覆盖 - 扫描 Engine/Source、Engine/Plugins、Engine/Platforms(含 Private 目录)
- 🤖 Skill 生成 - 自动生成 Claude Code Skill(模块级+代码级查询)
- ⚙️ 灵活配置 - 命令行引导式配置,无需环境变量
- 🚀 高性能 - SQLite 存储,36x 性能提升
- 🎯 自动检测 - 自动检测引擎/插件版本
- 📍 CPP 索引 - 函数实现位置追踪(v2.12.0 新增)
- 🔄 增量更新 - 文件级变更检测,仅更新修改模块(v2.13.0 新增)⚡
- 📋 版本追踪 - 知识库版本信息存储和查询(v2.13.0 新增)
- 📝 Doxygen 注释 - 自动提取文档注释并关联到类/函数(v2.14.0 新增)
- 🔢 枚举解析 - UENUM / enum class 完整解析(v2.14.0 新增)
- 📎 委托解析 - DECLARE_DELEGATE_* 宏解析(v2.14.0 新增)
- 🏷️ 说明符提取 - UCLASS/UPROPERTY 说明符解析(v2.14.0 新增)
- Doxygen 注释提取 - 自动提取
/** ... */和///文档注释,关联到类和函数 - UENUM 枚举解析 - 支持
UENUM(),enum class, 普通enum,含枚举值提取 - 说明符提取 - UCLASS (Blueprintable, Abstract), UPROPERTY (EditAnywhere, BlueprintReadWrite, Replicated)
- Delegate 宏解析 - 支持 DECLARE_DELEGATE, DECLARE_MULTICAST_DELEGATE, DECLARE_DYNAMIC_MULTICAST_DELEGATE 等
- typedef/using 别名 - 解析类型别名如
using FActorPtr = TSharedPtr<AActor> - 纯虚函数保留 - 不再跳过
= 0方法,标记is_pure_virtual - Private 目录扫描 - 不再排除 Private 目录,覆盖 UE5 标准 Public/Private 布局
- #include 依赖图 - 记录头文件包含关系
- 新增查询命令:
query_subclasses— 反向继承查询(哪些类继承自 AActor?)query_module_dependents— 反向依赖查询(哪些模块依赖 Core?)query_enum_info/search_enums— 枚举查询query_examples— 代码使用示例查询
使用示例:
# 查询枚举
python impl.py query_enum_info EMovementMode
# 返回: { name, values: ["Walking", "Falling", "Swimming", ...], is_uenum: true }
# 查询子类
python impl.py query_subclasses AActor
# 返回: { parent_class: "AActor", subclasses: [{name: "APawn", ...}, ...] }
# 查询反向依赖
python impl.py query_module_dependents Core
# 返回: { module: "Core", dependents: [{name: "CoreUObject"}, {name: "Engine"}, ...] }- ClassIndex - 类的快速索引,查询时间从 ~5s 降至 <10ms(500x 提升)
- FunctionIndex 增强 - 函数模糊搜索,查询时间从 ~8s 降至 <10ms(800x 提升)
- 查询降级机制 - 精确查询失败时自动提示模糊搜索,防止 LLM 幻觉
- fallback_command - 错误返回包含降级命令,LLM 自动执行下一步操作
- 函数实现位置追踪 - 知识库包含函数的 CPP 实现文件路径和行号
query_function_info返回impl_file和impl_line字段search_functions返回impl_file字段
- 新增
get_function_implementation命令 - 直接获取函数的完整实现代码- 基于 #include 的智能反向映射
- 自动定位函数定义行号
- 返回声明位置和实现位置
- 支持读取完整的 CPP 文件内容
- 智能路径解析 - 支持多种目录结构
- 同名文件优先策略
- Public/Private 目录分离
- 跨目录 include 解析
使用示例:
# 查询函数信息(包含实现位置)
query_function_info("BeginPlay")
# 返回: { file: "...Actor.h", line: 123, impl_file: "...Actor.cpp", impl_line: 256 }
# 获取函数实现代码
get_function_implementation("BeginPlay", class_name="AActor")
# 返回: { declaration_file, implementation_file, file_content }- 多重继承解析 - 完整解析类继承链,支持
class A : public B, public IInterface - 接口识别 - 自动识别接口类(I 开头),填充
interfaces字段 - 命名空间检测 - 支持嵌套命名空间,记录完整路径如
UE::Core - 类属性解析 - 解析 UPROPERTY 声明,包含属性名称、类型和标记
- 类方法解析 - 块级解析类体,提取成员函数方法签名
- 完整继承列表 -
parent_classes字段存储所有父类和接口
- 文件级变更检测 - SHA256 哈希追踪每个源文件
- 检测新增、修改、删除的模块
- 只对变更的模块运行 pipeline
- 大幅减少更新时间(30 分钟 → 2 分钟,仅修改 1 个模块时)
- 知识库版本追踪 - 完整的版本信息存储
- 引擎/插件版本号(自动检测)
- KB 格式版本和工具版本
- 创建时间和最后更新时间
- Skill 版本查询 - 新增
get_kb_info命令- 查询知识库的版本信息
- 返回创建时间、版本号等元数据
使用示例:
# 检查知识库是否有更新
ue5kb update --check
# 增量更新(仅修改的模块)
ue5kb update
# 强制完全重建
ue5kb update --full
# 查询知识库版本
python ~/.claude/skills/ue5kb-5.5.4/impl.py get_kb_info输出示例:
[Update] 变更检测结果:
新增模块: 0
修改模块: 1 (Core)
删除模块: 0
未变更模块: 1756
cd J:/UE5_KnowledgeBaseMaker
pip install -e .直接在引擎或插件目录运行,工具自动识别模式:
# 引擎模式 - 直接在引擎目录运行
cd "D:\Unreal Engine\UnrealEngine51_500"
ue5kb init
# 插件模式 - 直接在插件目录运行
cd "F:\MyProject\Plugins\MyPlugin"
ue5kb init
# 引擎子目录也能自动检测
cd "D:\Unreal Engine\UnrealEngine51_500\Engine\Source"
ue5kb init检测结果示例:
自动检测结果:
检测模式: 引擎模式
检测路径: D:\Unreal Engine\UnrealEngine51_500
检测原因: 在当前目录找到 Engine/Build/Build.version
引擎版本: 5.1.500
为整个 UE5 引擎生成知识库,包含所有引擎模块、插件和平台模块。
# 交互式引导
ue5kb init
# 直接指定引擎路径
ue5kb init --engine-path "D:\Unreal Engine\UnrealEngine51_500"
# 自定义输出路径
ue5kb init --engine-path "D:\UE5.1" --kb-path "J:/MyUE5KB"生成结果:
D:\Unreal Engine\UnrealEngine51_500\
└── KnowledgeBase\ # 知识库(统一目录)
├── .pipeline_state # Pipeline 状态文件
├── data/ # 工作数据目录
│ ├── discover/
│ ├── extract/
│ ├── analyze/
│ ├── build/
│ └── generate/
├── global_index/ # 全局索引
└── module_graphs/ # 模块图谱
C:\Users\{user}\.claude\skills\
└── ue5kb-5.1.500\ # Claude Skill
├── skill.md
└── impl.py
- 多进程并行: Extract 和 Analyze 阶段使用多进程并行处理
- Extract: 3-4x 性能提升
- Analyze: 4-8x 性能提升(最耗时阶段)
- Build: 混合模式(ThreadPoolExecutor + 串行 SQLite)
- 多进度条显示: 实时显示总进度和每个 worker 的状态
- 性能监控: 各阶段耗时统计、速度指标、ETA 计算
- Checkpoint 机制: Analyze 阶段支持中断恢复
# 自动检测并行度(推荐)
ue5kb init --engine-path "D:\UE5" -j 0
# 指定 8 个 worker
ue5kb init --engine-path "D:\UE5" --workers 8
ue5kb init --engine-path "D:\UE5" -j 4
# 串行模式(调试用)
ue5kb init --engine-path "D:\UE5" --workers 1性能对比(8 核 CPU):
| 阶段 | 修改前 | 修改后 | 提升 |
|---|---|---|---|
| Extract | ~30s | ~8s | 3.8x |
| Analyze | ~600s | ~80-120s | 5-7x |
| 总耗时 | ~665s | ~113-153s | 4.3-5.9x |
为单个插件生成独立的知识库,适合插件开发者。
# 为插件生成知识库
ue5kb init --plugin-path "F:\MyProject\Plugins\MyPlugin"
# 自定义输出路径
ue5kb init --plugin-path "F:\MyPlugin" --kb-path "J:/PluginKB"生成结果:
F:\MyProject\Plugins\MyPlugin\
└── KnowledgeBase\ # 插件知识库(统一目录)
├── .pipeline_state # Pipeline 状态文件
├── data/ # 工作数据目录
├── global_index/ # 全局索引
└── module_graphs/ # 模块图谱
C:\Users\{user}\.claude\skills\
└── myplugin-kb-1.0\ # 插件专属 Skill
├── skill.md
└── impl.py
| 特性 | 引擎模式 | 插件模式 |
|---|---|---|
| 扫描范围 | Engine/Source, Engine/Plugins, Engine/Platforms | Plugin/Source/** |
| 模块数量 | 1757 个(UE5.1) | 取决于插件规模(如 AesWorld: 40 个) |
| 知识库路径 | {引擎}/KnowledgeBase/ |
{插件}/KnowledgeBase/ |
| Skill 命名 | ue5kb-{version} |
{name}-kb-{version} |
| 模块分类 | Runtime, Editor, Plugins., Platforms. | Plugin.{PluginName} |
| 生成时间 | ~30-60 分钟(串行) | ~1-5 分钟 |
| 适用场景 | 引擎源码查询、全局依赖分析 | 插件开发、插件源码查询 |
| 并行加速 | 支持(v2.10.0+) | 支持(v2.10.0+) |
# 自动检测并行度(推荐)
ue5kb init --engine-path "D:\UE5" -j 0
# 指定 8 个 worker
ue5kb init --engine-path "D:\UE5" --workers 8
ue5kb init --engine-path "D:\UE5" -j 4
# 串行模式(调试用)
ue5kb init --engine-path "D:\UE5" --workers 1性能对比(8 核 CPU):
| 阶段 | 修改前 | 修改后 | 提升 |
|---|---|---|---|
| Extract | ~30s | ~8s | 3.8x |
| Analyze | ~600s | ~80-120s | 5-7x |
| 总耗时 | ~665s | ~113-153s | 4.3-5.9x |
- 多进程并行: Extract 和 Analyze 阶段使用多进程并行处理
- Extract: 3-4x 性能提升
- Analyze: 4-8x 性能提升(最耗时阶段)
- Build: 混合模式(ThreadPoolExecutor + 串行 SQLite)
- 多进度条显示: 实时显示总进度和每个 worker 的状态
- 性能监控: 各阶段耗时统计、速度指标、ETA 计算
- Checkpoint 机制: Analyze 阶段支持中断恢复
| Skill 命名 |
ue5kb-{version}|{name}-kb-{version}| | 模块分类 | Runtime, Editor, Plugins., Platforms. | Plugin.{PluginName} | | 生成时间 | ~30-60 分钟 | ~1-5 分钟 | ~5-10 分钟(并行) | | 适用场景 | 引擎源码查询、全局依赖分析 | 插件开发、插件源码查询 | 插件开发、插件源码查询 |
# 强制重新运行所有阶段(忽略已完成的阶段)
ue5kb init --engine-path "D:\UE5" --force
# 仅运行指定阶段
ue5kb init --engine-path "D:\UE5" --stage discover
ue5kb init --engine-path "D:\UE5" --stage build
# 并行处理(用于 analyze 阶段)
ue5kb init --engine-path "D:\UE5" --parallel 4
# 显示详细输出(用于调试)
ue5kb init --engine-path "D:\UE5" --verbosePipeline 阶段说明:
discover- 发现所有模块extract- 提取模块依赖analyze- 分析代码结构build- 构建索引generate- 生成 Skill
# 查看版本
ue5kb --version
# 查看帮助
ue5kb --help
ue5kb init --help
# 查看状态
ue5kb status
# Pipeline 状态查看
ue5kb pipeline status --engine-path "D:\UE5"{引擎根目录}/KnowledgeBase/ # 统一输出目录
├── .pipeline_state # Pipeline 状态文件
├── data/ # 工作数据目录
│ ├── discover/ # 阶段 1: 发现的模块列表
│ ├── extract/ # 阶段 2: 模块依赖信息
│ ├── analyze/ # 阶段 3: 代码分析结果
│ ├── build/ # 阶段 4: 构建摘要
│ └── generate/ # 阶段 5: Skill 生成标记
├── global_index/ # 全局模块索引
│ ├── index.db # SQLite 数据库
│ ├── class_index.db # 类快速索引
│ ├── function_index.db # 函数快速索引
│ ├── enum_index.db # 枚举快速索引 (v2.14.0)
│ └── global_index.pkl # Pickle 索引
└── module_graphs/ # 模块知识图谱
├── Core.pkl
├── Engine.pkl
└── ... (1,757+ 个模块)
工具会自动扫描以下目录中的所有模块:
-
Engine/Source - 引擎核心模块
- Runtime/ (运行时模块)
- Editor/ (编辑器模块)
- Developer/ (开发者工具)
- Programs/ (独立程序)
-
Engine/Plugins - 引擎插件模块
- 2D/ - 2D 相关插件
- AI/ - AI 相关插件
- Animation/ - 动画插件
- Audio/ - 音频插件
- Editor/ - 编辑器插件
- Enterprise/ - 企业级插件
- FX/ - 特效插件
- Martketplace/ - Marketplace 插件 (如 BlueprintAssist_5.1)
- 以及更多... (所有插件类型)
-
Engine/Platforms - 平台模块
- Windows/, Linux®, Android®, iOS®, Mac® 等
扫描方式:直接递归搜索所有 .Build.cs 文件,然后根据路径自动推导分类标签。
每个模块的分类标签格式:
- 引擎模块:
{Category}(如Runtime,Editor) - 插件模块:
Plugins.{PluginType}.{PluginName}(如Plugins.Editor.ContentBrowser) - 平台模块:
Platforms.{PlatformName}(如Platforms.Windows)
C:\Users\pb763\.claude\skills\ue5kb-{version}/
├── skill.md # Skill 定义
└── impl.py # Skill 实现(含知识库路径)
可以为同一台机器的多个引擎版本生成独立的知识库和 Skill:
D:\Unreal Engine\UnrealEngine51_500\
└── KnowledgeBase\ ← 知识库
C:\Users\pb763\.claude\skills\ue5kb-5.1.500\ ← Skill
D:\Unreal Engine\UnrealEngine5.3\
└── KnowledgeBase\ ← 知识库
C:\Users\pb763\.claude\skills\ue5kb-5.3\ ← Skill
每个 Skill 独立工作,自动指向对应的知识库!
安装后,在 Claude Code 中直接询问问题:
"Core 模块有哪些依赖?"
"AActor 类继承自什么?"
"列出所有 Runtime 模块"
- Python 3.9+
- UE5 任何版本
- 图存储: NetworkX (模块依赖关系图谱)
- 数据库: SQLite (全局索引,36x 性能提升)
- 缓存: LRU Cache (热数据 <1ms 响应)
- CLI: Click + Rich (引导式交互)
- 解析: 正则表达式 (Build.cs 依赖解析)
J:/UE5_KnowledgeBaseMaker/
├── ue5_kb/ # 核心包
│ ├── __init__.py
│ ├── cli.py # CLI 入口
│ ├── core/ # 核心模块
│ │ ├── config.py # 配置管理
│ │ ├── global_index.py # 全局索引
│ │ ├── module_graph.py # 模块图谱
│ │ └── optimized_index.py # 优化索引 (SQLite)
│ ├── parsers/ # 解析器
│ │ ├── buildcs_parser.py
│ │ └── cpp_parser.py
│ └── builders/ # 构建器
│ ├── global_index_builder.py
│ └── module_graph_builder.py
├── pyproject.toml # Python 包配置
├── README.md # 本文档
└── test_*.py # 测试脚本
工具会自动检测引擎版本,优先级:
-
Build.version 文件 (最准确)
Engine/Build/Build.version: { "MajorVersion": 5, "MinorVersion": 1, "PatchVersion": 1 } → 5.1.1 -
文件夹名称 (备用)
UnrealEngine51_500 → 5.1.500
# 测试版本检测
python test_init.py
# 测试完整流程
python test_full_init.py
# 测试 CLI
python -m ue5_kb.cli --help# 重新安装
pip install -e . --force-reinstall --no-deps# 直接运行 CLI
python -m ue5_kb.cli init --engine-path "D:\Unreal Engine\UnrealEngine51_500"# 安装依赖
pip install click rich pyyaml networkx工具会自动创建配置文件,无需手动创建。
检查引擎目录下是否存在 Engine/Build/Build.version 文件。
全面知识库增强 - 大幅提升 LLM 对 UE5 源码的理解能力
- Doxygen 注释提取(
/** ... */和///) - UENUM 枚举解析(含枚举值、说明符)+ EnumIndex 快速索引
- UCLASS/UPROPERTY/USTRUCT 说明符提取(Blueprintable, EditAnywhere 等)
- Delegate 宏解析(DECLARE_DELEGATE_, DECLARE_DYNAMIC_MULTICAST_DELEGATE_ 等)
- typedef/using 类型别名解析
- 纯虚函数保留(
is_pure_virtual字段) - Private 目录不再排除,.h + .cpp 同时扫描
- #include 依赖图构建
- 搜索限制移除(函数查询不再限制 50 模块,类查询不再限制 200 模块)
- 5 个新增 Skill 查询命令(query_subclasses, query_module_dependents, query_enum_info, search_enums, query_examples)
- 修复依赖数据为空的严重 Bug(BuildCsParser key 不匹配)
- 修复多行注释跨行处理 Bug
CPP 文件索引功能 - 快速定位函数实现
- 函数实现位置追踪(
impl_file_path和impl_line_number) - 新增
get_function_implementation命令 - 基于 #include 的智能反向映射
- 数据库自动迁移,向后兼容
自动检测功能 - 开箱即用体验
- 当前目录自动检测: 直接在引擎/插件目录运行
ue5kb init,无需指定路径- 检测
.uplugin文件 → 自动识别插件模式 - 检测
Engine/Build/Build.version→ 自动识别引擎模式 - 支持从引擎子目录向上查找引擎根目录(最多 5 层)
- 检测
- 友好错误提示: 自动检测失败时显示清晰的使用说明
- 检测结果展示: 显示检测模式、路径、原因和版本信息
- 完全向后兼容:
--engine-path和--plugin-path参数继续工作
并行加速系统 - Pipeline 性能飞跃
- 多进程并行处理: Extract 和 Analyze 阶段使用多进程并行
- Extract 阶段: 3-4x 性能提升
- Analyze 阶段: 4-8x 性能提升(解析 C++ 源码)
- Build 阶段: 混合模式(ThreadPoolExecutor + 串行 SQLite)
- 多进度条显示: 使用 Rich 库实现实时多 worker 状态显示
- 总进度条:显示整体完成百分比和 ETA
- Worker 进度条:每个 worker 独立显示当前处理的模块
- 性能监控系统: StageTimer 记录各阶段耗时和速度
- Checkpoint 机制: Analyze 阶段支持中断恢复
- 智能并行检测: --workers/-j 参数(0=自动检测 CPU 核心数)
- 错误隔离: 单个模块失败不影响其他模块处理
- 总性能提升: 4.3-5.9x(在 8 核 CPU 上)
统一知识库文件管理 + 插件模式 Skill 对齐
- 统一工作文件管理: 所有 Pipeline 工作文件(
.pipeline_state和data/)统一放在KnowledgeBase/目录下- 状态文件:
{base_path}/.pipeline_state→{base_path}/KnowledgeBase/.pipeline_state - 工作数据:
{base_path}/data/→{base_path}/KnowledgeBase/data/
- 状态文件:
- 插件模式 Skill 对齐: 插件模式的 Skill markdown 模板现在与引擎模式完全一致
- 添加
search_functions命令文档 - 添加查询降级机制说明
- 添加函数相关查询示例
- 添加
- 更好的文件管理: 删除知识库时可以直接删除整个
KnowledgeBase/文件夹
查询降级机制 - 防止 LLM 幻觉
- 快速索引系统: ClassIndex 和 FunctionIndex,查询性能提升 500-800x
- 查询降级机制: 精确查询失败时自动提示模糊搜索
- 防止 LLM 幻觉: 彻底解决 LLM 在知识库查询失败时基于训练数据乱回答的问题
- 新增 search_functions: 函数模糊搜索命令
- Skill Prompt 增强: 添加"查询失败处理"章节,明确引导 LLM 行为
C++ Parser 增强模块图谱内容
- 多重继承解析: 解析完整的继承列表,支持
class A : public B, public IInterface - 接口识别: 自动识别接口类(I 开头)
- 命名空间检测: 支持嵌套命名空间
- 类属性解析: 解析 UPROPERTY 声明
- 类方法解析: 块级解析类体
插件模式支持
- 插件模式: 为单个插件生成独立知识库
- 双模式 CLI: 引擎模式和插件模式自动路由
- 插件专属 Skill: 自动生成插件专属 Claude Code Skill
- 重构: 从 J:/ue5-kb 重构为通用工具
- 移除: 所有硬编码路径
- 新增: CLI 引导式配置
- 新增: 自动引擎版本检测
- 新增: 自动生成 Claude Skill
- 优化: SQLite 36x 性能提升
- 支持: 多引擎版本独立知识库
MIT License