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

发布时间:2026/10/22 7:02:48

如何为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),仅供参考
延伸阅读

更多相关文章

2026/10/22 8:07:54

轴承故障诊断实战:CNN-LSTM深度学习架构详解与落地

轴承故障诊断这个方向,我做了快五年,踩过的坑比跑通的路还多。最初跟着传统信号处理的路子走,包络谱、小波分解、经验模态分解挨个试,精度始终在八成左右徘徊,一到变工况现场数据就打回原形。后来转到基于深度学习的端…

2026/10/22 8:07:54

CNN-LSTM轴承故障诊断:从振动信号到端到端特征学习

轴承故障诊断这块,过去十年基本是“特征工程传统分类器”的天下。但从实际效果看,这类方案有一个绕不开的瓶颈:特征提取质量完全取决于人对信号处理的理解深度,换一个工况、换一台设备,原先调好的特征可能就失效了。这…

2026/10/22 8:07:54

SSM健身房管理系统:从会员卡设计到MyBatis配置的完整开发笔记

简介:面向计算机毕业设计、课程设计及Java毕设场景,这是一套基于SSM(SpringSpringMVCMyBatis)框架的健身房管理系统完整源码与数据库配套资料。系统围绕健身房日常运营设计,提供登录/退出、账号管理、教练管理、健身器…

2026/10/22 8:07:54

详解C++11中的线程库

前言 C11 之前&#xff0c;C 标准里没有任何线程设施&#xff0c;写多线程程序只能直接用 POSIX 的 <pthread.h>、Windows 的 <windows.h>&#xff0c;或者依赖 Boost.Thread 之类的第三方库。代码不可移植&#xff0c;连「线程」这个概念都不在语言层面。C11 引入…

2026/10/22 8:07:54

YOLOv5+CLIP实战:自然语言搜图与自动裁剪一步到位

1. 从“找图五分钟&#xff0c;裁剪两小时”说起 做视觉相关项目的朋友大概都有过这种体验&#xff1a;手里攒了几百上千张素材图&#xff0c;想从里面挑出“带猫的”“有红色汽车的”“画面里有两个人站着的”&#xff0c;要么一张张翻&#xff0c;要么靠文件名碰运气。更麻烦…

2026/10/22 8:02:54

Ubuntu+Python+YOLOv8n:免费客流统计系统搭建实践

朋友开了家30平米左右的小店&#xff0c;一直想知道每天到底有多少人进店、什么时段人最多。问了一圈客流统计设备&#xff0c;单路摄像头配上云平台&#xff0c;报价从几千到上万不等&#xff0c;有些还要按月交服务费。对一家小店来说&#xff0c;这个预算完全不现实。后来我…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介&#xff1a;这份PDF报告聚焦2025年金融服务业中国AI现状与趋势&#xff0c;面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者&#xff0c;帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件&#xff0c;大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目&#xff0c;目标很直白&#xff1a;把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事&#xff0c;逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间&#xff0c;我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依&#xff0c;按理说这类业务代码模式非常固定&#xff0c;应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块&#xff0c;它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑