2.1 KiB
2.1 KiB
UAgentSkill 分析
1. 它是什么
UAgentSkill 是 UE5.8 MCP 的 AI prompt 增强机制,功能等价于 Claude Code 的 Skill:
| UE5.8 UAgentSkill | Claude Code Skill | |
|---|---|---|
| 载体 | Blueprint 资产(UAgentSkill 子类) | Markdown 文件 |
| 作用 | 注入领域知识 + 指令到 AI 上下文 | 注入工作流指引到对话 |
| 依赖 | Toolsets 字段声明需加载哪些 toolset | 无 |
| 动态生成 | GeneratePrompt() 虚函数可编程 | 静态内容 |
| 创建 | AI 通过 MCP CreateSkill 创建 | 文件写入 |
它不是功能性工具,不执行编辑器操作——只提供上下文:"这个领域怎么用、工具有哪些、最佳实践是什么"。
2. 相关类
- UAgentSkill:基类,核心属性 Description + Instructions + Toolsets,虚函数 GeneratePrompt()
- UAgentSkillBestPractices:改写 GeneratePrompt,追加技能编写规范
- UAgentSkill_NiagaraBase:改写 GeneratePrompt,前置 Niagara 概述 + 资产发现路径
- UAgentSkillToolset:继承 UToolsetDefinition,暴露 MCP CRUD(ListSkills / GetSkills / CreateSkill / UpdateSkill)
- FAgentSkillDetails:DTO,最终生成的 Instructions + 依赖 toolset 名列表
核心流程:GetDetails() → GeneratePrompt(Instructions) → FAgentSkillDetails → AI 拿到最终 prompt。
3. 编写一个基础 UAgentSkill
C++ 子类方式:
- 继承 UAgentSkill
- 设置 Description(简短摘要,ListSkills 返回它)
- 设置 Instructions(详细指令,会被 GeneratePrompt 处理)
- 在 Toolsets 中声明依赖的功能性 toolset(软引用,系统据此自动加载)
- 重写 GeneratePrompt_Implementation() 在指令前后注入额外上下文
Niagara 实现模式:前置概念概述 → 遍历 toolset 获取专属 prompt → 插入原始 Instructions → 追加资产发现路径。
MCP 运行时创建(AI 调用,需用户许可): CreateSkill(/Game/Skills/, MySkill, "描述", {Instructions:"...", Toolsets:["/Script/..."]}),本质是创建以 UAgentSkill 为父类的 Blueprint 资产,写入 CDO 属性。