mcpField
G
generate-editor-search-query

generate-editor-search-query

github.com/unity-technologies开发1.2k3.7k 次安装1 天前更新
代码仓库

关于 generate-editor-search-query

这项 Unity skill 将项目资源和场景对象的自然语言搜索需求转为 Unity Search 查询,并在适当时打开搜索窗口。它也规定了仅返回查询文本及处理目标不明确请求的方式。

主要功能

  1. 01自然语言转 Search 查询
  2. 02搜索资源和场景对象
  3. 03按需打开 Unity Search
  4. 04支持仅返回查询文本
  5. 05限定搜索范围与安全规则

适用场景

  1. 01查找材质、预制件或场景
  2. 02定位场景对象或组件
  3. 03按文件夹、标签或引用搜索

安装

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

$npx skills add https://github.com/unity-technologies/skills --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# 传递给 eval

eval 编译的是语句块,而不是文件。因此有两点需要注意,违反任意一点都会导致编译错误:

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

unity-cli 技能负责处理前置要求,包括安装 CLI、确认 Editor 已连接、添加项目的 com.unity.pipeline 包,以及发现命令目录。尤其需要使用 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