Claude Code 怎么「动手」:Tool Use 循环讲透
你跟 Claude Code 说「看一下 README」,它怎么真的去读了那个文件?答案是 Tool Use 循环——这是一切 AI Agent 的共同心脏。一篇讲清这个机制。
如果你用过 ChatGPT 网页版,会发现一个反直觉的事:模型本身根本不能读你的文件。它只是在对话框里输出一段文字。
那 Claude Code 怎么能读你的代码、改你的文件、跑命令?
答案就一个:Tool Use 循环。这是所有 AI Agent 的心脏。
想直接看动画演示,去 Claude 课,第一个场景"看 README"就是 Tool Use 循环。
1. 模型只会做一件事:输出文字
把 Claude 想象成一个只会写字的厨师。
他坐在厨房中央,对着一张纸。你点单,他就在纸上写一段话——可能是回答你,也可能是给助手的指令。
他自己绝不动锅、绝不开冰箱。他做的所有事都是写字。
那他怎么端菜?
旁边有个厨房助手(Claude Code 这个程序)。助手看厨师写的字,判断这是给食客的回答,还是给厨房的工具指令。
如果是工具指令(比如"帮我读 README.md"),助手就真的去执行——读文件、把内容拿回来——再把读到的内容写在纸上塞回给厨师。厨师看到结果,再写下一段。
这就是 Tool Use 循环。 每一轮都是:
- 你说话 → 厨师写字(一段思考 + 一个工具调用)
- 助手执行工具 → 把结果写在纸上
- 厨师看到结果 → 再写一段(继续调工具、或回答你)
2. 一次"看 README"具体发生了什么
你在 Claude Code 里输入:
看一下 README 第一行
下面这串事情按顺序发生:
| 阶段 | 谁干 | 干了什么 |
|---|---|---|
| 1 | 你 | 把这句话发给厨师(模型) |
| 2 | 模型 | 输出 <thinking>用户要看文件</thinking> + <tool_use>Read("README.md")</tool_use> |
| 3 | Claude Code | 拦截这个 tool_use,真的去读 README.md |
| 4 | Claude 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",循环要走好几轮:
- 模型 →
Read("src/index.ts") - Claude Code 把文件内容塞回去
- 模型 →
Edit(file, old, new)(基于看到的内容找到要改的位置) - Claude Code 真的改了文件
- 模型 → 回答"已修复"
任务越大,轮数越多。Claude Code 在底部会告诉你"用了几个工具调用、花了多少 token"——那是循环数 × 每轮 token 的累加。
5. 为什么模型会"自己决定"用哪个工具
因为模型的训练数据里有大量示范:见到这种问题该写 tool_use_X、参数大概长什么样、返回什么样的结果该接什么。
久而久之,它学会了问题 → 工具选择的隐式映射。这个能力被业界叫 Function Calling——是 Tool Use 的更早叫法。深入想看实现层细节,去 Function Calling 一文看懂。
6. 它会"乱来"吗
会。模型有时候会:
- 调错工具(比如该用 Edit 偏要 Write 整个文件覆盖)
- 传错参数(路径大小写错了,文件读不到)
- 死循环(一直调用一个失败的工具)
这就是为什么:
- 永远要 review 它改的内容(
git diff一下) - 设好 权限系统,敏感操作(Bash、Write)让它先问你
- 任务做不动了就停下来重启对话——比让它继续乱试便宜得多
7. 一句话总结
Tool Use 循环 = "模型只会写字,写出来的字里如果带
tool_use,外面的程序就去执行,把结果再喂回来。" 反复来回。
你看到的所有"AI 帮你做事",本质都是这件事。
想现场看一遍?打开 Claude 课 输入"看一下 README 第一行",右边会跟着每一步告诉你这一刻发生了什么。