tools.toolSearch。
为 OpenClaw 运行启用后,模型默认会收到一个 tool_search_code 工具。该工具会在隔离的 Node 子进程中运行一段简短的 JavaScript 主体,并带有 openclaw.tools 桥接:
轮次如何运行
在规划时,OpenClaw 嵌入式 runner 会为本次运行构建有效目录:- 解析智能体、profile、沙箱和会话的活动工具策略。
- 列出符合条件的 OpenClaw 和插件工具。
- 通过会话 MCP 运行时列出符合条件的 MCP 工具。
- 添加为当前运行提供的符合条件的客户端工具。
- 为紧凑描述符建立搜索索引。
- 向模型暴露 OpenClaw 代码桥接、结构化后备工具,或紧凑目录表面。
openclaw.tools.call(...) 会跨过桥接回到 Gateway 网关,在那里仍会应用正常的策略、审批、钩子、日志和结果处理。
模式
tools.toolSearch 有三种面向模型的模式:
code:暴露tool_search_code,即默认的紧凑 JavaScript 桥接。tools:将tool_search、tool_describe和tool_call暴露为普通结构化工具,适用于不应接收代码的提供商。directory:暴露tool_search、tool_describe和tool_call,并额外提供一个有界 prompt 目录,其中包含可用工具名称和描述,适用于应看到工具名称但不应看到每个完整 schema 的提供商。OpenClaw 还可以直接为当前轮次暴露一小组有界的可能需要或必需的工具 schema。
code 模式会在目录压缩前回退到 tools。在 directory 模式下,客户端提供的工具会在当前运行中保持直接可见,而 OpenClaw 工具、插件工具和 MCP 工具可以被压缩到目录目录之后。对确切隐藏目录名称的直接调用会在执行前从同一授权目录中水合。
所有模式都是实验性的。对于小型 OpenClaw 工具目录,优先使用直接工具暴露;对于 Codex harness 运行,优先使用 Codex 原生稳定表面。
没有单独的来源选择配置。启用工具搜索后,目录会在正常策略过滤后包含符合条件的 OpenClaw、MCP 和客户端工具。
为什么存在
大型目录很有用,但成本很高。把每个工具 schema 都发送给模型会让请求更大、拖慢规划,并增加意外选择工具的概率。 工具搜索改变了形态:- 直接工具:模型在第一个 token 前看到每个选中 schema
- 工具搜索代码模式:模型看到一个紧凑代码工具和一段简短 API 契约
- 工具搜索工具模式:模型看到三个紧凑结构化后备工具
- 工具搜索目录模式:模型看到一个有界目录,加上搜索/描述/调用控制项,以及一小组有界的可能需要或必需的 schema
- 轮次期间:模型可以按需加载其余 schema
API
openclaw.tools.search(query, options?)
搜索当前运行的有效目录。结果紧凑,并且可以安全放回 prompt 上下文。
openclaw.tools.describe(id)
加载一个搜索结果的完整元数据,包括确切输入 schema。
openclaw.tools.call(id, args)
通过 OpenClaw 调用选中的工具。
tool_searchtool_describetool_call
tool_searchtool_describetool_call
tool_search 查找它们。如果模型直接请求确切的隐藏目录工具名称,OpenClaw 会在正常执行前从授权目录中水合它。
目录模式客户端工具名称不得与 OpenClaw、插件或 MCP 工具名称冲突,因为确切延迟分发会使用这些名称。
运行时边界
代码桥接运行在一个短生命周期的 Node 子进程中。子进程启动时会启用 Node 权限模式,环境为空,没有文件系统或网络授权,也没有子进程或 worker 授权。OpenClaw 会强制执行父进程挂钟超时,并在超时后杀死子进程,包括异步 continuation 之后。 运行时只暴露:console.log、console.warn和console.erroropenclaw.tools.searchopenclaw.tools.describeopenclaw.tools.call
- 工具允许和拒绝策略
- 按智能体和按沙箱的工具限制
- 渠道/运行时工具策略
- 审批钩子
- 插件
before_tool_call钩子 - 会话身份、日志和遥测
配置
使用默认代码桥接为 OpenClaw 运行启用工具搜索:codeTimeoutMs 限制在 1000-60000,将 maxSearchLimit 限制在 1-50,并将 searchDefaultLimit 限制在 1..maxSearchLimit。
禁用它:
Prompt 和遥测
工具搜索会记录足够的遥测,用于与直接工具暴露对比:- 发送到 harness 的序列化工具和 prompt 总字节数
- 目录大小和来源拆分
- 搜索、描述和调用计数
- 通过 OpenClaw 执行的最终工具调用
- 选中的工具 ID 和来源
- 模型预先看到了多少个工具 schema
- 它执行了多少次搜索和描述操作
- 最终调用了哪个工具
- 结果是否来自 OpenClaw、MCP 或客户端工具
E2E 验证
QA Lab Gateway 网关场景使用 OpenClaw 运行时证明两条路径:- 直接模式可以调用假插件工具。
- 工具搜索可以调用同一个假插件工具。
- 直接模式会把假插件工具 schema 直接暴露给提供商。
- 工具搜索只暴露紧凑桥接。
- 对于大型假目录,工具搜索请求 payload 更小。
- 会话日志显示预期的工具调用计数和桥接调用遥测。
失败行为
工具搜索应该失败关闭:- 如果某个工具不在有效策略中,搜索不应返回它
- 如果选中的工具变得不可用,
tool_call应失败 - 如果策略或审批阻止执行,调用结果应报告该阻止,而不是绕过它
- 如果代码桥接无法创建隔离运行时,请使用
mode: "tools",或为该部署禁用工具搜索