字节笔记本
2026年7月7日
循环入门:Claude Code 的四种循环模式详解
现在有很多关于"设计循环"而非直接提示编程代理的讨论。如果你在 X 上花些时间试图弄清楚循环到底是什么,你会发现多种不同的答案。
在 Claude Code 团队中,我们将循环定义为:智能体重复执行工作周期,直到满足停止条件。我们根据以下标准将循环划分为几种不同类型:
- 它们是如何被触发的(How they are triggered)
- 它们是如何被停止的(How they are stopped)
- 使用了哪个 Claude Code 原语(What Claude Code primitive is used)
- 哪种任务最适合各自使用(What type of task is most appropriate for each)
我们将介绍主要的循环类型、各自的适用场景,以及如何在管理 token 用量的同时保持代码质量。并非所有任务都需要复杂的循环;从最简单的方案开始,有选择地使用这些模式。
一、回合制循环(Turn-based loops)
- 触发方式:用户提示(A user prompt)
- 停止条件:Claude 判断任务已完成,或需要更多上下文(Claude judges it has completed the task or needs additional context)
- 最适用于:不属于常规流程或计划的较短任务
- 用量管理方式:编写明确的提示,并使用 skill 改进验证,以减少回合数
你发送的每一个提示都会启动一个手动循环,由你来引导每个回合。Claude 收集上下文、采取行动、检查自己的工作、必要时重复,然后给出回复。我们称之为 agentic loop(智能体循环)。
例如,让 Claude 创建一个点赞按钮。它会读取你的代码、做出修改、运行测试,然后交回它认为可用的结果。接着你手动检查这个工作,并写下下一个提示。
你可以通过把人工步骤编码为 SKILL.md,让 Claude 能更多地自检端到端的工作,从而改进验证步骤。这应该包括让 Claude 能查看、衡量或与结果交互的工具或连接器。检查越量化,Claude 自检就越容易。
例如,在你的 SKILL.md 文件中可以这样写:
---
name: verify-frontend-change
description: Verify any UI change end-to-end before declaring it done.
---
# Verifying frontend changes
Never report a UI change as complete based on a successful edit alone.
Verify it the way a human reviewer would:
1. Start the dev server and open the edited page in the browser.
2. Interact with the change directly. For a new control (button, input, toggle):
click it, confirm the expected state change, and screenshot before/after.
3. Check the browser console: zero new errors or warnings.
4. Use the Chrome Devtools MCP, run a performance trace and audit Core Web Vitals.
If any step fails, fix the issue and rerun from step 1 — do not hand back partially verified work.二、基于目标的循环(Goal-based loop,/goal)
- 触发方式:实时的手动提示(A manual prompt in real-time)
- 停止条件:目标达成,或达到最大回合数(Goal achieved OR maximum number of turns reached)
- 最适用于:具有可验证退出条件的任务
- 用量管理方式:设定具体的完成标准和明确的回合上限,例如"5 次尝试后停止"
有时候,单个回合是不够的,尤其是对于更复杂的任务。当智能体能够迭代时,它们表现得更好。你可以通过用 /goal 定义"什么算完成"来延长 Claude 持续迭代的时间。
当你定义了成功标准,Claude 就不必自己去判断什么算"足够好"而过早结束循环。每次 Claude 试图停止时,一个评估器模型会检查你的条件,并把它送回继续工作,直到目标达成或达到你定义的回合数。
这就是为什么确定性标准如此有效——例如通过的测试数量,或达到某个分数阈值。
例如:
/goal get the homepage Lighthouse score to 90 or above, stop after 5 tries.三、基于时间的循环(Time-based loop,/loop 和 /schedule)
- 触发方式:指定的时间间隔(A specified time interval)
- 停止条件:你取消它,或工作完成(例如 PR 合并、队列清空)
- 最适用于:周期性工作,或与外部环境/系统交互
- 用量管理方式:设置更长的间隔,或基于事件而非时间做出反应
有些智能体工作是周期性的:任务不变,只有输入在变。例如每天早上总结 Slack 消息。还有一些工作依赖于外部系统,而与它们交互的一个简单方式就是定期检查并对变化做出反应。例如,一个 PR 可能会收到代码评审或 CI 失败。
对于这些场景,你可以用 /loop 触发 Claude 何时运行,它会在一个间隔内重新运行一个提示。例如:
/loop 5m check my PR, address review comments, and fix failing CI/loop 在你的电脑上运行,所以如果你关机,它就会停止。你可以通过用 /schedule 创建一个例行任务(routine),把循环迁移到云端。
四、主动式循环(Proactive loops)
- 触发方式:事件或计划,无需实时人工介入(An event or schedule, with no human in real time)
- 停止条件:每个任务在其目标达成时退出。例行任务本身一直运行,直到你关闭它
- 最适用于:定义明确的周期性工作流:bug 报告、问题分诊、迁移、依赖升级等
- 用量管理方式:把例行任务路由到更小、更快的模型,把最有能力的模型留给判断性决策
上述原语,加上 Claude Code 的其他功能(如 auto mode 和 dynamic workflows 动态工作流,研究预览版),可以组合成一个用于长时间运行工作的循环。
例如,要处理收到的反馈,你可以使用:
/schedule(研究预览版)运行一个检查新报告的例行任务/goal定义"什么算完成",并用 skill 记录如何验证它- 动态工作流(Dynamic workflows)编排智能体,对每份报告进行分诊、修复,并评审修复
- Auto mode 让例行任务无需停下来请求许可就能运行
把它们组合起来,一个提示可能是这样的:
/schedule every hour: check the project-feedback channel for bug reports.
/goal: don't stop until every report found this run is triaged, actioned, and responded to.
When fixing a bug, use a workflow to explore three solutions in parallel worktrees
and have a judge adversarially review them.五、保持代码质量(Maintaining code quality)
循环输出的质量取决于围绕它的系统。在设计这个系统时:
- 保持代码库本身的整洁:Claude 会遵循你代码库中已有的模式和约定。
- 给 Claude 一种自检的方式:用 skill 把你和你团队眼中"好的标准"编码下来。
- 让文档触手可及:框架和库的文档拥有最新的最佳实践。
- 用第二个智能体做代码评审:拥有全新上下文的评审者偏见更少,也不会受主智能体推理的影响。你可以使用内置的
/code-reviewskill 或 Code Review for Github。
当某个单独的结果未达到标准时,不要止步于修复这个个别问题,而是尝试把它编码下来,以改进系统在所有未来迭代中的表现。
六、管理 token 用量(Managing token usage)
为了管理 token 用量,循环应该有清晰的边界:
- 为任务选择合适的原语和模型:较小的任务不需要多个智能体或循环。有些任务可以使用更便宜、更快的模型。
- 定义清晰的成功和停止标准:具体说明"完成"长什么样,这样 Claude 能更快到达解决方案(但不要过快)。
- 在大规模运行前先试点:动态工作流可能产生数百个智能体。先在工作的一个小切片上衡量用量。
- 用脚本处理确定性工作:运行脚本比逐步推理更便宜。例如,一个 PDF skill 可以附带一个每次让 Claude 运行的表单填充脚本,而不是每次重新推导代码。
- 不要比需要的更频繁地运行例行任务:让间隔与你所观察事物的变化频率相匹配。
- 审查用量:
/usage命令按 skill、子智能体和 MCP 拆分最近用量;不带参数的/goal显示目前的回合数和 token 用量;/workflows显示每个智能体的 token 用量,你可以随时停止某个智能体。
七、快速开始(Getting started)
总结如下:
| 循环类型 | 你交出的是 | 适用场景 | 推荐使用 |
|---|---|---|---|
| 回合制 Turn-based | 检查(The check) | 你在探索或决策 | 自定义验证 skill |
| 基于目标 Goal-based | 停止条件(The stop condition) | 你清楚"完成"长什么样 | /goal |
| 基于时间 Time-based | 触发器(The trigger) | 工作在计划中、在你的项目之外发生 | /loop、/schedule |
| 主动式 Proactive | 提示(The prompt) | 工作是周期性且定义明确的 | 以上全部,外加动态工作流 |
要开始使用循环,看看你已经在做的工作。挑选一个你是瓶颈的任务,问问自己能交出哪一部分:你能写出验证检查吗?目标足够清晰吗?工作是按计划到达的吗?
一旦有了想法,就运行循环,观察结果——看它在哪卡住或过度延伸——并且不要害怕对它进行迭代。
更多信息,请阅读 Claude Code 文档中关于并行运行智能体的内容,以及 loop、schedule、goal 和 dynamic workflows 页面。