AI面包君AI面包君关注
回到博客
Claude Code

Claude Code 怎么「动手」:Tool Use 循环讲透

你跟 Claude Code 说「看一下 README」,它怎么真的去读了那个文件?答案是 Tool Use 循环——这是一切 AI Agent 的共同心脏。一篇讲清这个机制。

2026-04-307 分钟

如果你用过 ChatGPT 网页版,会发现一个反直觉的事:模型本身根本不能读你的文件。它只是在对话框里输出一段文字。

那 Claude Code 怎么能读你的代码、改你的文件、跑命令?

答案就一个:Tool Use 循环。这是所有 AI Agent 的心脏。

想直接看动画演示,去 Claude 课,第一个场景"看 README"就是 Tool Use 循环。

1. 模型只会做一件事:输出文字

把 Claude 想象成一个只会写字的厨师

他坐在厨房中央,对着一张纸。你点单,他就在纸上写一段话——可能是回答你,也可能是给助手的指令。

他自己绝不动锅、绝不开冰箱。他做的所有事都是写字

那他怎么端菜?

旁边有个厨房助手(Claude Code 这个程序)。助手看厨师写的字,判断这是给食客的回答,还是给厨房的工具指令。

如果是工具指令(比如"帮我读 README.md"),助手就真的去执行——读文件、把内容拿回来——再把读到的内容写在纸上塞回给厨师。厨师看到结果,再写下一段。

这就是 Tool Use 循环。 每一轮都是:

  1. 你说话 → 厨师写字(一段思考 + 一个工具调用)
  2. 助手执行工具 → 把结果写在纸上
  3. 厨师看到结果 → 再写一段(继续调工具、或回答你)

2. 一次"看 README"具体发生了什么

你在 Claude Code 里输入:

看一下 README 第一行

下面这串事情按顺序发生:

阶段谁干干了什么
1把这句话发给厨师(模型)
2模型输出 <thinking>用户要看文件</thinking> + <tool_use>Read("README.md")</tool_use>
3Claude Code拦截这个 tool_use,真的去读 README.md
4Claude Code把读到的文件内容包成 <tool_result>塞回模型上下文
5模型看到结果,输出 "README 第一行是:# 我的小工具"

中间那个 <tool_use> JSON 是模型自己生成的——不是 Claude Code 写死的。同一个问题,模型可能选 Read,也可能选 Glob+Grep,看它当时怎么"想"。

3. 工具不是一个,是一组

Claude Code 启动时会告诉模型:你有这些工具。下面是常用的几个:

  • Read:读文件
  • Write:写新文件
  • Edit:改已有文件(按字符串替换)
  • Bash:跑一条 shell 命令
  • Glob:按通配符列文件(比如 **/*.ts
  • Grep:在代码里搜关键词

每个工具有自己的输入参数和输出格式——这部分是给模型看的"工具说明书"。模型每次决定调哪个、传什么参数,全是它自己想的。

这就是为什么有时候它会一上来就 Glob 看目录、有时候直接 Read 你提到的文件。模型对当前任务的理解决定它怎么选。

4. 复杂任务 = 多次循环

简单的"看 README"是一次循环。

但你说"修一下 src/index.ts 里的 typo",循环要走好几轮:

  1. 模型 → Read("src/index.ts")
  2. Claude Code 把文件内容塞回去
  3. 模型 → Edit(file, old, new)(基于看到的内容找到要改的位置)
  4. Claude Code 真的改了文件
  5. 模型 → 回答"已修复"

任务越大,轮数越多。Claude Code 在底部会告诉你"用了几个工具调用、花了多少 token"——那是循环数 × 每轮 token 的累加。

5. 为什么模型会"自己决定"用哪个工具

因为模型的训练数据里有大量示范:见到这种问题该写 tool_use_X、参数大概长什么样、返回什么样的结果该接什么。

久而久之,它学会了问题 → 工具选择的隐式映射。这个能力被业界叫 Function Calling——是 Tool Use 的更早叫法。深入想看实现层细节,去 Function Calling 一文看懂

6. 它会"乱来"吗

会。模型有时候会:

  • 调错工具(比如该用 Edit 偏要 Write 整个文件覆盖)
  • 传错参数(路径大小写错了,文件读不到)
  • 死循环(一直调用一个失败的工具)

这就是为什么:

  1. 永远要 review 它改的内容(git diff 一下)
  2. 设好 权限系统,敏感操作(Bash、Write)让它先问你
  3. 任务做不动了就停下来重启对话——比让它继续乱试便宜得多

7. 一句话总结

Tool Use 循环 = "模型只会写字,写出来的字里如果带 tool_use,外面的程序就去执行,把结果再喂回来。" 反复来回。

看到的所有"AI 帮你做事",本质都是这件事


想现场看一遍?打开 Claude 课 输入"看一下 README 第一行",右边会跟着每一步告诉你这一刻发生了什么。