工具搜索
外部工具很多时,不必在每次请求放进全部 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 暴露。
找不到时按顺序检查
- 是否使用相同 Profile,Server 是否启用且已有可用目录。
- exposure/有序 toolExposure 是否把目标隐藏或改为 direct-only。
- 是否已活动,因而无需再次搜索。
- Session 是否显式排除,或父任务不允许该工具。
隐藏项需要明确修改配置;反复更换关键词不会授予访问。连接故障应在 MCP 状态页排查,不能靠搜索结果推断远端健康。