將自然語言中的 Unity Editor 搜尋請求轉換為有用的 Unity Search 查詢,簡短說明查詢內容,並在適當時開啟 Unity Search 視窗。
預設行為
如果提示中明確提到 Unity Search、Quick Search、Search 視窗、開啟 Search,或要求提供 Unity Search 查詢,則即使目標屬於其他領域(如照明、UI、物理、音訊或動畫),也應使用此技能處理搜尋請求。
對於「找到」、「搜尋」、「定位」、「列出」、「篩選」、「查詢」、「在哪裡」、「哪些資產使用」或「什麼參考了」具體 Unity 資產或場景物件的請求:
- 判斷請求主要是關於專案資產、場景物件,還是兩者兼具。
- 建立一個簡潔的 Unity Search 查詢。
- 在回應中顯示該查詢(無論是否準備開啟 Search)。
- 執行 Editor 端的程式碼片段以開啟 Unity Search,除非使用者明確要求僅提供查詢文字。
- 如果開啟 Search 失敗,回傳查詢並告知使用者手動貼入 Unity Search。
當使用者說「不要開啟 Search」、「僅查詢」、「我該用什麼查詢」、「只要給我查詢」或類似內容時,不要開啟 Search。
如果使用者要求一般性說明、專案概覽、資料夾結構摘要、架構解說、遊戲機制系統摘要,或「我該如何」的程式設計解答,則除非提示中明確要求 Unity Search、Search 查詢或開啟 Search 視窗,否則不要使用此技能。
如果使用者提到「這個」、「已選取的」或「目前的」,但未附上資產、場景物件、可見名稱或路徑,則應要求提供名稱/路徑,而不是自行虛構。
範圍
將唯讀 Unity Search / Quick Search 查詢範圍限定於:
- 專案資產,例如材質、紋理、預製件、場景、腳本、著色器、音訊片段、精靈、網格、模型、動畫、字型、渲染紋理和 ScriptableObject 資產
- 場景物件與元件,例如攝影機、光源、剛體、碰撞器、渲染器、Canvas 物件、UI 元件、粒子系統、音訊來源、動畫控制器、地形物件和已命名的 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 被用在哪裡」,先使用簡單的關鍵字或元件查詢,然後在使用者需要詳盡的程式碼/屬性分析時,說明這需要分開的腳本審計。
- 對於混合了搜尋與修復工作的請求,先生成並開啟查詢;除非使用者明確確認後續的獨立動作,否則不要修改結果。
- 對於不確定的請求,不要虛構不支援的篩選器。如果無法用 Unity Search 語法可靠地表達請求,請開啟最接近的安全查詢並說明限制。
開啟 Unity Search
僅為了開啟 Search 視窗而在 Editor 中執行 C#。這屬於 Editor UI 動作,不得變更專案資產或場景內容。
開啟 Search 時:
- 在生成的 C# 字串中安全地跳脫查詢。
- 對於此 v1 技能,優先使用資產和場景提供者。
- 如果某個提供者不可用,則回退到作用中的提供者。
- 記錄已開啟的查詢。
- 如果命令失敗,絕不聲稱已開啟 Search。
回應格式
保持對使用者顯示的回應簡短:
查詢:`t:material`
已使用此查詢開啟 Unity Search。
如果不開啟 Search:
查詢:`t:prefab ref={t:texture}`
請將此貼入 Unity Search。
如果請求有歧義但仍可搜尋,選擇最可能的查詢並說明所做的假設。僅在無法推斷搜尋目標時才提問,例如「找到那個東西」但沒有資產、場景、類型、名稱或上下文。
驗證檢查清單
在報告成功之前:
- 已向使用者顯示生成的查詢
- 查詢的目標是資產、場景物件,或兩者兼具
- 僅在使用者未選擇退出時才開啟了 Search
- 已明確說明任何回退或不確定性
- 未修改任何資產、場景、套件、專案設定或搜尋結果