跳至主要內容

工具搜尋

外部工具很多時,不必在每次請求放進全部 Schema。tool_search 在已註冊且允許的間接工具清單中查詢,把匹配項加入目前 Session 的活動名稱;搜尋本身不執行遠端操作。

怎樣讓模型使用搜尋​

例如提出任務:

先找到这个 Profile 已配置的工单查询工具,查看它的参数,再查询我尚未关闭的工单。

tool_search 預設註冊但不活動。可以在新工作階段選擇,或等已有工作階段空閒、無排隊輸入時附加:

anyy --tools '+tool_search'
anyy --resume SESSION_ID --tools '+codemode,+tool_search'

加減規則以 Profile 預設選擇為起點,不是修改舊工作階段目前啟用清單;不寫設定檔。MCP 的 deferred 暴露也可按規則自動啟用工具搜尋。顯式排除、Session 和父範圍限制仍優先。它與 Codemode 獨立,停用後者不會自動停用前者;Dashboard 沒有單獨工具搜尋設定表單。

參數和結果​

模型呼叫格式:

{"query":"issue tracking open tickets","limit":4}

query 必須是非空白字串;limit 可省略,預設 8,提供時必須正整數。匹配依據包含名稱、描述、輸入 Schema 和 namespace 中繼資料。沒有匹配是正常結果,可以換更明確的任務關鍵字或服務名,而不是把它當成工具呼叫失敗。

匹配名稱會追加到活動集合,原有名稱保留,回傳文字和 details.loaded 給出載入項。新宣告只在下一次模型請求準備時出現;已經準備的請求不就地換 Schema。模型收到搜尋結果後,下一請求才能按該宣告組成呼叫,並繼續接受正常認證、輸入校驗與 Scope 檢查。

只搜尋尚未活動的 deferred/Codemode 工具。已活動工具直接使用現有宣告;direct-only、hidden、model-only 不在搜尋範圍。搜尋不能啟用已停用的 Server,不能創造未註冊工具,也不能擴大父工作階段權限。只有設定、尚無可用目錄的服務,可能暫時沒有結果。

與腳本內搜尋的區別​

Codemode 的 searchTools 搜尋目前可呼叫快照,describeTool 讀某個宣告;兩者都不啟用下一請求宣告。模型 tool_search 才會改變 Session 活動名稱。這也意味著腳本可以直接呼叫符合條件的 MCP 工具,不必先將每個工具變成模型的直接宣告。

遠端名字會規範化並可能增加衝突字尾,應使用探索結果回傳的識別名稱和 Schema。詳見 Codemode與 MCP 暴露。

找不到時按順序檢查​

  1. 是否使用相同 Profile,Server 是否啟用且已有可用目錄。
  2. exposure/有序 toolExposure 是否把目標隱藏或改為 direct-only。
  3. 是否已活動,因此無需再次搜尋。
  4. Session 是否顯式排除,或父任務不允許該工具。

隱藏項需要明確修改設定;反覆更換關鍵詞不會授予存取。連線故障應在 MCP 狀態頁排查,不能靠搜尋結果推斷遠端健康。