§04 Agent Loop:Claude 自己"想—做—看"的循环
我第一次看 Agent Loop 的日志,是在调一个修测试的任务。盯着它一圈圈转、自己调工具、自己读结果,突然就懂了。这章拆开看。
04.1 一句话说清 Loop
Agent Loop 就是 Claude 自己跑的一个循环。
它收到你的 prompt,决定调哪个工具,SDK 帮它执行,结果喂回去,它再看、再决定。一直循环,直到它觉得干完了。
我管它叫"想—做—看"三步循环。想是推理,做是调工具,看是读结果。
04.2 一个真实的四步例子
文档里有个例子,我拆给你看。prompt 是"修 auth.ts 里失败的测试"。
- 第 1 轮:Claude 调
Bash跑npm test。结果:3 个失败。 - 第 2 轮:Claude 调
Read读auth.ts。结果:看到了代码。 - 第 3 轮:Claude 调
Edit改文件,再调Bash重跑测试。结果:3 个全过。 - 最后一轮:Claude 只回文字"修好了"。没有工具调用,循环结束。
一共 4 轮。前 3 轮有工具调用,最后一轮纯文字收尾。
标叔的经验:生产环境我一定设
max_budget_usd。文档写得很直白:不设上限,Loop 会一直跑到 Claude 自己觉得完成为止。遇到"改进这个代码库"这种开放式 prompt,可能跑很久。我习惯给个预算当保险丝。
04.3 两个开关:轮次和预算
| 开关 | 作用 | 默认值 | 标叔的结论 |
|---|---|---|---|
maxTurns |
最多跑几轮工具调用 | 无限制 | 生产环境必设上限 |
maxBudgetUsd |
花到多少美元就停 | 无限制 | 当保险丝一定要设 |
到达上限时,SDK 会给一个特定的结束状态:error_max_turns 或 error_max_budget_usd。你读 subtype 就能判断它为什么停。
04.4 思考深度也能调
effort 参数控制 Claude 每轮想多深。
| 等级 | 适合 |
|---|---|
low |
列文件、搜一下 |
medium |
常规编辑 |
high |
重构、调试 |
xhigh/max |
多步难题 |
简单任务用 low,又快又省。复杂任务用 high 起步。
看懂了 Loop,但它每一步吐出来的消息到底是什么?下一章讲消息流。