mcpField
G
generate-editor-search-query

generate-editor-search-query

github.com/unity-technologies开发60456 次安装今天更新
代码仓库

关于 generate-editor-search-query

这项技能将有关 Unity 资源和场景对象的自然语言请求转换为简洁的 Unity Search 查询,面向 Unity 开发者。它也可打开 Search 窗口,并保持查询只读;目标不明确时会请求补充信息。

主要功能

  1. 01自然语言转查询
  2. 02搜索资源与场景对象
  3. 03打开前展示查询
  4. 04只读搜索流程
  5. 05处理歧义与打开失败

适用场景

  1. 01按类型、名称、文件夹或标签查找资源
  2. 02定位场景对象与组件
  3. 03查找引用特定资源的其他资源

安装

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

$npx skills add https://github.com/unity-technologies/unity-agent-plugin --skill generate-editor-search-query

安装后在 Claude Code 中输入/generate-editor-search-query确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

SECURITY.md
references/
open-search-window.md
query-patterns.md

详细介绍

将自然语言形式的 Unity Editor 搜索请求转换为实用的 Unity Search 查询,简要说明查询,并在适当时打开 Unity Search 窗口。

默认行为

如果提示明确提到 Unity Search、Quick Search、Search 窗口、打开 Search,或要求提供 Unity Search 查询,即使目标属于照明、UI、物理、音频或动画等其他领域,也应使用此技能处理搜索请求。

对于“查找”“搜索”“定位”“列出”“筛选”“查询”“在哪”“哪些资源使用了”或“引用了什么”等涉及具体 Unity 资源或场景对象的请求:

  1. 判断请求主要涉及项目资源、场景对象,还是两者都有。
  2. 构建一个简洁的 Unity Search 查询。
  3. 在打开 Search 之前或打开时,在回复中显示查询。
  4. 除非用户明确只要查询文本,否则运行 Editor 端代码片段以打开 Unity Search。
  5. 如果无法打开 Search,则返回查询,并告知用户可以手动粘贴到 Unity Search 中。

如果用户说“不要打开 Search”“只要查询”“我该使用什么查询”“只给我查询”或类似表述,则不要打开 Search。

如果用户询问一般性说明、项目概览、文件夹结构摘要、架构讲解、游戏系统概述或“如何”编程问题,除非提示明确要求 Unity Search、Search 查询或打开 Search 窗口,否则不要使用此技能。

如果用户提到“这个”“已选中”或“当前”,但未附上资源或场景对象,也未提供可见名称或路径,则应询问名称或路径,不要自行编造。

范围

只允许使用 Unity Search / Quick Search 进行只读查询,范围包括:

  • 项目资源,例如材质、纹理、预制件、场景、脚本、着色器、音频片段、精灵、网格、模型、动画、字体、渲染纹理和 ScriptableObject 资源
  • 场景对象和组件,例如 Camera、Light、Rigidbody、Collider、Renderer、Canvas 对象、UI 组件、ParticleSystem、AudioSource、Animator、Terrain 对象以及具名 GameObject
  • 按路径、标签、类型、文件名、关键词和引用关系搜索资源
  • 对话或附件中提供了名称或路径的已选中或具名资源

不要安装软件包、运行菜单命令、编辑资源、修改场景、搜索外部文档、搜索仓库文本、检查构建日志、删除结果、修复搜索结果或执行依赖关系图分析。如果用户要求对结果执行操作,应先打开 Search 或提供查询,然后在使用其他修改技能或工作流之前征求确认。

参考资料

生成较复杂的查询之前,请先阅读 references/query-patterns.md。

打开 Search 窗口之前,请先阅读 references/open-search-window.md。

官方英文参考资料:

将 C# 传递给 script eval

script eval 编译的是语句块,而不是文件。这会导致以下两种编译错误:

  • 不能使用 using 指令。 编译器会将 using UnityEditor; 视为资源释放语句并予以拒绝(CS0210)。
  • 类型必须使用完全限定名。 单独使用 SearchService 无法解析(CS0246),单独使用 Object 则会与 object 混淆(CS0104)。

unity-cli 技能负责处理前置要求,包括安装 CLI、确认已连接的 Editor、添加项目的 com.unity.pipeline 软件包,以及发现命令目录。你需要使用 script eval;如果没有该命令,请生成查询文本,并说明无法打开窗口。

查询生成规则

使用最简单且有望得到所需结果的查询。

  • 对资产和组件请求,优先使用类型筛选器,例如 t:material、t:texture、t:prefab、t:scene、t:script、t:shader、t:Light 或 t:Rigidbody。
  • 除非需要加引号,否则将用户提供的名称和关键词作为普通查询词保留。
  • 用户提供文件夹,或提到“在 Assets/...”或“在……下”时,使用 dir:。
  • 用户请求 Unity 资产标签时,使用 l:。
  • 用户询问某资产引用、使用、依赖或包含什么,或与什么有关联时,使用 ref=。
  • 仅当 Search 表达式能明显改进查询时才使用,例如 t:prefab ref={t:texture} 或 t:scene ref={t:prefab}。
  • 对于“所选/当前”这类表述,仅当聊天上下文中已知所选资产的名称或路径时才使用;否则询问用户。
  • 对于“Rigidbody 用在何处”等宽泛的关系请求,先使用简单关键词或组件查询,然后说明:若用户需要对代码/属性进行穷尽分析,则需另行执行脚本审计。
  • 对于同时包含 Search 和修复工作的请求,先生成并打开查询;除非用户明确确认要执行单独的后续操作,否则不要修改结果。
  • 对于不确定的请求,不要编造不受支持的筛选器。如果无法用 Unity Search 语法可靠表达请求,则打开最接近且安全的查询,并说明其限制。

打开 Unity Search

仅在编辑器中运行 C# 以打开 Search 窗口。这是编辑器 UI 操作,不得更改项目资产或场景内容。

打开 Search 时:

  1. 对查询进行 Base64 编码(UTF-8),并仅将 Base64 文本嵌入生成的 C# 字符串中;在代码片段内将其解码回字符串。
  2. 对于此 v1 skill,优先使用资产和场景提供程序。
  3. 如果提供程序不可用,则回退到活动提供程序。
  4. 记录打开的查询。
  5. 如果命令失败,绝不要声称 Search 已打开。

响应格式

面向用户的回复应简短:

Query: `t:material`
Opened Unity Search with that query.

如果未打开 Search:

Query: `t:prefab ref={t:texture}`
Paste this into Unity Search.

如果请求存在歧义但仍可搜索,请选择最可能的查询并说明假设。只有在无法推断搜索目标时才提问,例如用户只说“找那个东西”,却没有提供资产、场景、类型、名称或上下文。

验证清单

报告成功之前:

  • 已向用户展示生成的查询
  • 查询针对资产、场景对象,或两者兼有
  • 仅当用户未选择退出时才打开 Search
  • 清楚说明任何回退或不确定之处
  • 未修改任何资产、场景、包、项目设置或搜索结果

评论

支持 Markdown