什么是工具
最近在给 Claude Code 添加 tool 的时候,我停了下来。
不是因为技术问题——JSON Schema 写好了,函数也实现了。而是一个更基本的问题突然卡住了我:工具到底是什么?
我们每天都在用工具,用到几乎忘了它的存在。锤子、搜索引擎、编程语言、git。但当你要给一个 AI agent 设计工具的时候,你不得不面对这个问题——因为你在决定:这个 agent 能做什么,不能做什么,它的世界的边界在哪里。
我的第一直觉是:工具是缩短了探索路径的一种方式,借用已有的探索路径来加速完成任务。
这个直觉对吗?我决定认真想想。
锤子在使用中消失了
海德格尔在《存在与时间》里做了一个精彩的观察:当你熟练地使用锤子钉钉子的时候,你根本不会注意到锤子。你的注意力在钉子上,在你要建的架子上。锤子”消融”在使用过程中,变得透明——他称之为”上手状态”(Zuhandenheit)。
只有当锤子坏了、不趁手了、找不到了,它才从背景中”浮现”出来,成为你审视的对象。
这对 agent tool 设计有一个深刻的启示:好的工具应该是透明的。当 Claude Code 调用 Edit 工具修改文件时,它不应该纠结于文件 I/O 的实现细节,就像你用锤子时不会思考锤头的金属晶格结构。工具的实现应该消融于任务之中。
而且海德格尔还指出,工具从不孤立存在。一把锤子指向钉子,钉子指向木板,木板指向要建的房子。工具总是嵌在一个”为了……”的网络中。Claude Code 的工具也是如此:Glob 找到文件,Read 理解代码,Edit 修改代码,Bash 运行测试——它们构成一个互相指引的行动网络。
海獭和它的石头
把视角拉远到整个生物界,工具使用远比我们想象的普遍。
新喀里多尼亚乌鸦会制造钩状工具从树皮缝隙中钩取虫子。黑猩猩用石头砸坚果、用树枝钓白蚁。海獭仰浮在水面上,用石头敲开贝壳。章鱼甚至会携带椰子壳半球当盾牌。
有意思的是,这些能力在进化树上独立出现了很多次——鸟类、灵长类、头足类、海洋哺乳类。这说明工具使用不是某个血统的特产,而是在特定生态压力下反复被”发明”的策略。
从进化的角度看,工具做了一件根本性的事:它把进化的方向从”改变身体适应环境”翻转为”改变环境适应身体”。
海獭不需要进化出更强的颚骨来打开贝壳——一块石头就够了。这块石头缩短了什么?缩短了等待正确基因突变的那条漫长路径。
更惊人的是,考古证据表明,早期人类的石器工具与咀嚼肌的退化在时间上大致同步。工具不仅替代了身体功能,它还反向改变了身体的进化方向。我们塑造了工具,然后工具反过来塑造了我们——麦克卢汉说的。
棘轮效应:人类独有的超能力
但人类的工具使用有一个其他动物都没有的特征:累积改进。
Tomasello 称之为”棘轮效应”——一代人改进了工具,下一代从改进后的版本开始,再改进,再传递。改进被”锁住”,不会倒退。
石斧 → 铜器 → 铁器 → 钢 → 合金 → 纳米材料。
没有哪只乌鸦的工具比一万年前的乌鸦更先进。但人类已经从石片走到了半导体。
这靠的是两个关键能力:高保真度的文化传递(不只模仿结果,更模仿方法)和主动教学。每一代人不需要重新发明轮子——他们从前人已到达的位置开始探索。
这不就是我直觉中说的”借用已有的探索路径”吗?只不过在人类文明的尺度上,这种借用是累积的、指数级增长的。
从 Options Framework 到 MCP
回到 AI agent 的语境。我的直觉在强化学习中有一个精确的数学对应。
Sutton 等人 1999 年提出的 Options Framework 把”时间上抽象的行动”形式化了。一个 option 不是单步动作,而是一个封装好的行动序列——有启动条件、有执行策略、有终止条件。
工具就是 option。
read_file(path) 封装了”打开文件描述符 → 读取字节 → 解码 → 返回文本”的整个序列。git commit -m "fix" 封装了”stage changes → create commit object → update HEAD”。Agent 不需要知道底层步骤,只需选择正确的 option。
探索空间的缩减是数量级的。假设你要修改一个文件:
- 没有工具:操作字节级系统调用,探索空间是天文数字
- 有 Bash:用
sed、echo >,缩小了几个量级,但仍需处理转义和管道 - 有 Edit 工具:指定文件路径、行号、新内容。一个精确的四元组
这就是为什么 Claude Code 的系统提示里写着:“Do NOT use the Bash to run commands when a relevant dedicated tool is provided.” 专用工具比通用工具更能缩短路径。
而 MCP(Model Context Protocol)的意义在于把棘轮效应带到了 agent 工具生态。今天你写的 MCP server,明天所有支持 MCP 的 agent 都能用。工具的复用不再是复制粘贴,而是协议级别的互操作。Function calling → MCP → Tool Search → Agent Skills——这条链本身就是工具设计的棘轮在转。
工具不止缩短路径
在这次探索中,我发现自己最初的直觉是对的,但不完整。“缩短探索路径”只是工具效应的一个维度。更完整的图景是一个五层模型:
第一层:借用物理属性。 海獭用石头——借用石头的硬度。Agent 用计算器——借用硬件的精确性。不需要进化出更强的颚骨,不需要自己做浮点运算。
第二层:封装操作序列。 乌鸦制作钩状工具。Edit 工具封装了读取-定位-修改-写入-验证的全流程。多步压缩为一步。
第三层:传承他人经验。 幼猩猩从母亲学会钓白蚁。工具的 JSON Schema 描述编码了设计者的领域知识。跳过发现阶段,直接进入使用阶段。
第四层:累积改进。 石斧到纳米材料。Function calling 到 MCP。每一代站在前一代之上,路径越来越短。
第五层:重写地图。 火的使用改变了消化系统、社交模式、栖息地——不是在现有地图上找更短的路,而是换了一张地图。给 Agent 加上 WebSearch,它不只是多了一个功能——它解决问题的整个策略都变了。
所以,什么是工具?
经过这番探索,我现在会这样回答:
工具是对已验证的探索路径的封装。
它把前人(或前序系统)在解决特定问题时积累的经验——操作序列、因果知识、领域专长——编码为可直接复用的接口。使用工具就是站在这些探索成果之上,跳过中间步骤,直达目标。
但工具不止于此。好的工具在使用中是透明的——它消融于任务之中,成为你的一部分。它会改变你感知世界的方式,让原本不可能的事变为可能,并在代际间累积改进,不断放大这些作用。
给 AI agent 添加 tool,本质上就是把人类的探索成果注入 agent 的行动空间——让它不用从原子操作开始探索,而是从人类已经到达的高度开始。
这也意味着,设计 tool 的人承担着一种特殊的责任:你在为 agent 绘制它能行走的地图。地图画得好,agent 就能走得远;地图画得差,agent 就会在不必要的复杂性中迷路。
工具是路径的结晶。而好的工具设计,是对路径的深刻理解。