资讯详情

如何为Unreal编写AI可调用的工具集:create-toolset完整开发指南

📅 2026/10/22 7:02:47 | 华诺云谱 👁 阅读
如何为Unreal编写AI可调用的工具集:create-toolset完整开发指南
【免费下载链接】unreal-engine-skills-for-claude-code-plugin项目地址https://gitcode.com/gh_mirrors/un/unreal-engine-skills-for-claude-code-plugin点击查看免费下载本文围绕开源项目unreal-engine-skills-for-claude-code-plugin讲解如何为 Unreal 编写 AI 可调用的工具集Toolset。这个项目让 Claude Code 通过 MCP 协议直接操控正在运行的 Unreal Editor——从生成 Actor、编辑蓝图到修改材质覆盖 30 个工具集、数百个工具。本文将完整走读其create-toolset技能文件带你从零学会设计和注册一个属于自己项目的工具集。先搞清楚什么是 Toolset在动手之前先理解整个体系如何运转Toolset是一组静态的、可被 AI 调用的函数注册到引擎的ToolsetRegistry中再通过 MCP 服务器暴露给 Claude Code由于默认开启了工具搜索Tool searchMCP 服务器只发布 3 个元工具list_toolsets、describe_toolset、call_tool。AI 不需要记住几百个工具名而是按需发现工具集读取参数结构后同轮派发调用——上下文窗口小、提示缓存保持温热换句话说你写的每一个工具方法最终都会变成 Claude 在编辑器里能动手的一个动作。这套发现与调用的契约定义在 skills/unreal-mcp/SKILL.md 中而本文的主角 skills/create-toolset/SKILL.md 则是编写工具集的完整规范。开发前提3 个快速检查项在编写工具集之前确认你的环境已就绪详见 skills/unreal-mcp/references/setup.md项目中已启用ModelContextProtocol与AllToolsets两个插件——只开前者服务器能启动但不暴露任何工具编辑器已启动 MCP 服务器编辑器控制台执行ModelContextProtocol.StartServer默认端口8000路径/mcp若打算用 Python 写工具集需在Edit → Project Settings → Plugins → Python中开启Developer Mode并重启编辑器以便生成 Python stubs 供 API 查询。动手前的 5 个关键问题create-toolset规范强调写任何代码之前先按顺序回答这 5 个问题能避免 80% 的返工。1. 这个功能是不是已经存在编辑器在运行时先通过 MCP 调用list_toolsets查看已注册的工具集再对相关的调用describe_toolset查看其工具列表MCP 不可用时直接搜索代码库中名为Toolsets的文件夹。如果能力已被暴露就没有新工具要做——把用户指向现有工具即可。2. 需求是否比表面更通用用户常以领域内需求的形式提出一个更普遍的模式。比如读取蓝图资产元数据看似属于BlueprintTools但元数据对所有资产都适用正确归属是AssetTools。通用解法几乎总是优于狭窄解法。3. 该领域是否已有工具集若功能确实缺失、但已有工具集覆盖同一领域比如给StaticMeshTools加一个网格查询往现有工具集里加而不是新建一个。4. 新工具集需要独立插件吗与现有插件关系紧密就加进去领域足够独立才考虑单独建插件。拿不准时先问用户。5. 选 Python 还是 CPython 通常优先迭代快、易修改。判断依据是 Python stubs 文件project_root/Intermediate/PythonStub/unreal.py搜索它别整体通读中是否覆盖了所需 APIC是 Python 覆盖不足时的正确选择大多数引擎底层能力并不在 stubs 里如果两种语言的 API 都缺失不要绕路——停下来告诉用户去扩展引擎绕路只会造出静默崩溃的脆弱工具。设计原则好工具集的 4 个特征规范给出了一组精炼的启发式标准值得贴在屏幕边原则含义Clean简洁设计能完成领域工作的最简 API不要直接照搬 Unreal 原生 API往往过于复杂。自检技术美术不看实现能看懂吗Complete完整保持 CRUD 对称能 set 就该能 get有 create 就该有 deleteComposable可组合同类操作在各工具间使用一致的类型get_graph()返回Graph那get_graph_nodes()就应接收GraphDRY无重复工具集内部不重复工具集之间也不重复。ObjectTools已提供通用 UObject 属性读写别再实现一份跨语言通用约定以下约定对 C 和 Python 工具集同样生效是能上线的底线不重复造轮子已有工具提供的能力直接调用或指向它文档是强制项每个工具集、每个工具方法、每个结构体字段都必须有文档下一节细讲使用真实类型参数和返回值用真实类型int32、FVector、TArrayFString、结构体等序列化由 ToolsetRegistry 自动处理。在工具内部手动转 JSON 字符串是典型的代码坏味道——字符串类型就应真的表示字符串返回值携带数据而非状态正常返回即成功抛异常即失败。永远不要用布尔值、错误字符串或结果包装体来传达错误所有工具方法都是静态的无实例状态测试是强制项每个工具的成功路径和每个错误路径都要覆盖。文档怎么写让每句话都赚回位置这是规范中最有见地的部分之一核心检验标准是一句话一个有能力的读者能否仅凭函数签名、命名和类型推断出这句文档如果能删掉它。具体到三个层级工具集类写 1~3 句话说明这个工具集做什么、覆盖什么领域。因为 LLM 经常只看名字和这段描述、而从不加载具体工具它必须独立成立。不要罗列工具名——工具自己会说话每个工具写清它做什么文档化每个参数与返回值重点是语义和单位保留那些无法推断的信息单位、取值范围、不直观的编码方式例如单个空格分隔的字符串、空结果的含义删掉这些内容签名复述类型、默认值、可空性、工具如何串联的叙述、显而易见的使用示例、对字段内容的猜测。另外写代码做什么而不是为什么这样写——实现理由不是契约。一个典型的过度文档 vs 精简后对比见 skills/create-toolset/SKILL.md 中的run cheat示例。结构体方面ClampMin/ClampMax等 UPROPERTY 元数据会被自动提取进 schema无需在文档注释里重复约束。Python 路线最快上手路径Python 工具集的结构要求完整示例代码见 skills/create-toolset/SKILL.md类用unreal.uclass()装饰继承unreal.ToolsetDefinition一个 .py 文件一个工具集类每个 AI 可调用的工具用toolset_registry.tool_callstaticmethod双装饰器docstring 就是 AI 看到的工具描述每个参数和返回值必须有类型注解——schema 生成完全依赖它们且优先使用标准 Python 注解list[str]而非unreal.Array[str]装饰器会自动转换私有辅助方法用下划线前缀的staticmethod放在类末尾注册从不自动发生在插件的__init__.py或init_unreal.py中调用unreal.ToolsetRegistry.register_toolset_class(MyToolset)与其他工具集并列错误处理直接抛异常如ValueError不要返回错误字符串。编辑后编辑器不会自动感知变化开启 Remote Execution 后运行reload_remote.py your_plugin重新加载插件包即可。C 路线核心要点C 工具集的骨架与 Python 一一对应要点如下继承UToolsetDefinition一个.h/.cpp文件一个工具集类可调用工具是静态方法并标注UFUNCTION(meta (AICallable))函数文档注释即 AI 可见描述私有辅助方法省略该宏即不暴露注册常见模式是在模块StartupModule/ShutdownModule中调用UToolsetRegistry::RegisterToolsetClass/UnregisterToolsetClass先查看同插件内邻近工具集的既有写法异步工具截图、等待编辑器状态变化等长时操作返回UToolCallAsyncResult的子类成功调SetValue()、失败调SetError()——这是少数成功失败都走结果对象的场景先查已有的结果类型再考虑新建错误处理无法完成工作时用UKismetSystemLibrary::RaiseScriptError抛出脚本错误并立即返回空值/默认值自定义 JSON 转换器属于进阶能力仅在确有需求时再写FToolsetJsonConverter子类参考内置的FToolsetColorConverter、FToolsetTransformConverter等实现。测试两种验证方式方式一活编辑器推荐通过unreal-mcp连接运行中的编辑器是最快的迭代回路——改完可热编译/热加载结果即时返回C 与 Python 测试都适用加载AutomationTestToolset并调用DiscoverTests——这一步必须先做跳过会导致结果为空ListTests按工具集名过滤确认测试被发现RunTests传入完整测试路径轮询GetTestStatus再用GetTestResults查看每个测试的错误与警告。Python 测试重载后记得用force_rediscovertrue重新发现。方式二命令行无运行中的编辑器命令行会拉起一个无头编辑器实例启动约 30 秒适合 CI 场景大致形如UnrealEditor-Cmd.exe 项目.uproject -ExecCmdsAutomation RunTests AI.MyToolset;quit -Unattended -NullRHI具体标志请以同插件现有测试的跑法为准。C 侧跑测试前先用LiveCodingToolset.CompileLiveCoding编译它会阻塞到编译完成并暴露 MSVC 诊断。交付前自查清单代码写完、测试通过后规范要求你退后一步整体审读一遍——第一轮代码常有逐工具视角发现不了的问题重复样板跨工具可共享的辅助逻辑测试覆盖不全晚加的错误分支忘了补测试功能重复与同工具集或别处工具撞车API 不一致参数命名、类型与工具集内其他工具不统一文档缺失描述含糊、类 docstring 独立来看信息不足文档复述代码更常见的毛病重复类型、默认值、调用序列的行读一遍注释把任何能从签名推断的句子砍掉。发现就修干净的第二轮比事后的 bug 报告快得多。✅写在最后这个项目的分工非常清晰unreal-mcp技能教 AI调用工具skills/unreal-mcp/ 还附带 setup.md 与 operations.md 两份运维参考create-toolset技能教人编写工具unreal-skillskills/unreal-skill/SKILL.md则负责项目级 Agent Skill 的编写。配套的 SessionStart 钩子hooks/hooks.json 与 hooks/unreal-context.sh会在每次会话开始时自动注入 UE 项目上下文。掌握本文的 5 个前置问题、4 条设计原则与 6 条通用约定后你就可以为自己的项目写出让 AI 真正上手干活的工具集了。更多背景信息见项目说明 README.md。赞分享【免费下载链接】unreal-engine-skills-for-claude-code-plugin项目地址https://gitcode.com/gh_mirrors/un/unreal-engine-skills-for-claude-code-plugin点击查看免费下载相关推荐Claude Skills生态重构从文本生成到企业级工作流自动化的技术革命Claude Skills生态重构从文本生成到企业级工作流自动化的技术革命 在AI助手能力边界不断扩展的今天Claude Skills生态系统正经历着从简单AI 技能AI 插件人工智能终极指南PySide6 QDateTimeEdit日期时间控件的5个高效使用技巧终极指南PySide6 QDateTimeEdit日期时间控件的5个高效使用技巧 你是否曾经在开发PySide6 GUI应用时为日期时间输入而烦恼用户需要示例工程教程桌面应用open-reverselab MCP 工具清单完整指南100 个 AI 可调用的逆向工具如何选、如何用open reverselab MCP 工具清单完整指南100 个 AI 可调用的逆向工具如何选、如何用 open reverselab 是一个开源的 A上一篇如何通过3个步骤实现高效系统清理下一篇LocalSend技术深度解析构建跨平台本地文件传输的安全高效方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑