跳转至

卷三 09|ToolSearchTool 怎么在能力面里找该用什么工具

导读

这篇要回答的问题

第 08 篇已经把 GrepTool 的位置钉住了:它是在现实材料里找证据。

接下来要立的,是另一种完全不同的推进动作:

当系统卡住的不是“证据在哪”,而是“下一步该走哪条执行路线”时,runtime 怎样把这件事也变成正式的一步?

这就是 ToolSearchTool 的位置。

这篇的核心判断是:

ToolSearchTool 搜索的不是现实材料,而是执行能力面;它解决的是“该走什么路线”,不是“材料里有什么”。

先给结论

结论一:ToolSearchTool 面对的是能力集合,不是文件集合

它要处理的问题不是:

  • 哪个文件里有这个词
  • 哪段代码里定义了这个函数

而是:

  • 现在该用 Bash、FileRead、Grep,还是别的能力
  • 哪个工具更贴近当前任务语义
  • 这一步属于读取、修改、搜索,还是能力发现本身

结论二:它把“找能力”从模型脑内判断,提升成正式执行步骤

如果没有 ToolSearchTool,模型只能靠已有记忆硬猜下一步该调什么。

有了它之后,系统就多了一条更稳的路线:

  • 当工具边界不清
  • 当多个工具看起来都能做
  • 当下一步路线需要重新确认

就可以先调用能力发现,再决定真正执行什么。

结论三:它在执行层里承担的是“从问题到路线”的桥接角色

GrepTool 把问题推进到证据。 ToolSearchTool 把问题推进到路线。

这两者都叫搜索,但推进的对象完全不同。

ToolSearchTool 在执行层里到底做了什么

第一,它把“找能力”从隐含判断变成正式调用

很多人会把“找工具”当成模型脑中默默完成的一步。

ToolSearchTool 的存在说明 Claude Code 不满足于这种隐含判断。系统把这件事也收成了 Tool,于是:

能力发现本身,也成了可以被 runtime 接住的一步执行。

第二,它让执行层不仅能向现实材料发问,也能向能力面发问

前面的很多对象都在碰现实对象。 ToolSearchTool 的特别之处在于,它开始让执行层对“系统自己有哪些能力、该怎么选”发问。

这一步很关键,因为它让执行层从单纯动作层,长出了一点路线选择能力

第三,它把下一步执行对象的选择显式化了

ToolSearchTool 返回的通常不是现实证据,而是:

  • 候选工具
  • 使用线索
  • 更合适的后续执行方向

也就是说,它改变的不是当前世界内容,而是后续执行路线。

图 1:ToolSearchTool 在能力发现中的位置图

flowchart TD
    A[当前判断卡在“该用什么能力”] --> B[tool_use 选择 ToolSearchTool]
    B --> C[在可用能力面中检索 / 比较]
    C --> D[返回候选工具与使用线索]
    D --> E[再决定真正的执行对象]

为什么 ToolSearchTool 不是普通搜索

因为它处理的是能力描述空间,而不是现实材料空间

它不回答“哪里有证据”,而回答“下一步走哪条路线更对”。

因为它返回的是路线线索,而不是证据内容

GrepTool 更像把系统推到证据前面。 ToolSearchTool 更像把系统推到一条更合适的执行路径上。

所以它更准确的角色,不是“搜索结果器”,而是“路线发现器”。

图 2:ToolSearchTool 和 GrepTool 的边界对照图

flowchart TD
    A[当前问题] --> B{缺的到底是什么?}
    B -->|缺执行路线| C[ToolSearchTool]
    B -->|缺现实证据| D[GrepTool]
    C --> E[候选能力 / 使用线索]
    D --> F[命中位置 / 证据候选]

这篇不展开什么

1. 不回头重讲 GrepTool

两者都叫搜索,但 Grep 搜材料,ToolSearch 搜路线。

2. 不提前讲 SkillTool / AgentTool

ToolSearch 负责帮助选路,不等于高阶执行对象本身。第 10 篇再补对象谱系。

3. 不把这篇写成工具清单篇

我们关心的是“能力发现为什么属于执行层”,不是枚举全部工具。

和前后文的边界

它承接第 08 篇

第 08 篇立住了“从问题到证据”;这一篇立住“从问题到路线”。搜索家族到这里才真正分开。

它导向第 10 篇

一旦看到 ToolSearchTool,执行层就已经不只是在碰现实对象,也开始显露“执行对象如何被选择”的层面。第 10 篇顺势补齐更高阶执行对象的位置。

一句话收口

ToolSearchTool 的意义,不在于多一个搜索功能,而在于把“下一步该走什么执行路线”也变成 runtime 可以正式处理的一步:它搜索的是能力面,返回的是路线线索,因此在执行层里承担的是“从问题到路线”的桥接角色。