现在有很多人在讨论“设计循环”,而不是只给你的编程代理写提示词。如果你花点时间在 X 上追问循环到底是什么,会看到好几种不同的答案。

在 Claude Code 团队,我们把。我们会根据以下几点把循环分成几种类型:
-
它们如何被触发
-
它们如何停止
-
使用了哪种 Claude Code 原语
-
每种循环最适合哪类任务。
本文会介绍几种主要的循环类型、各自适合的场景,以及如何在管理 token 用量的同时维持代码质量。并不是所有任务都需要复杂循环;先从最简单的方案开始,再有选择地使用这些模式。
回合制循环

-
触发方式:用户提示词。
-
停止条件:Claude 判断自己已经完成任务,或需要更多上下文。
-
最适合: 不属于固定流程或计划的较短任务。
-
用量管理方式: 编写具体的提示词,并用 skills 改进验证流程,减少回合数。
你发送的每一条提示词,都会启动一个由你指挥每个回合的手动循环。Claude 收集上下文、采取行动、检查自己的工作、必要时重复,然后回复。我们把这称为 agentic loop(代理式循环)。
例如,让 Claude 创建一个点赞按钮。它会阅读你的代码、进行修改、运行测试,然后交回它认为可用的结果。接着你手动检查这项工作,并写下一条提示词。
你可以把手动检查步骤编码到 SKILL.md 里,从而改进验证环节,让 Claude 能端到端地检查更多自己的工作。这里应该包含工具或连接器,使 Claude 能看到、测量或操作结果。检查越量化,Claude 就越容易自我验证。
例如,你可以在 SKILL.md 文件中指定:
---
name: verify-frontend-change
description: 在声明完成之前,端到端验证任何 UI 变更。
---
# 验证前端变更
不要只因为编辑成功就报告 UI 变更已完成。要像人类评审一样验证它:
1. 启动开发服务器,并在浏览器中打开被编辑的页面。
2. 直接与变更交互。对于新的控件(按钮、输入框、开关):点击它,确认预期的状态变化,并截取前后截图。
3. 检查浏览器控制台:没有新增错误或警告。
4. 使用 Chrome Devtools MCP,运行性能追踪并审计 Core Web Vitals。
如果任何步骤失败,修复问题并从第 1 步重新运行;不要交回只完成了部分验证的工作。
基于目标的循环(/goal)

-
触发方式:实时的手动提示词。
-
停止条件:目标达成,或达到最大回合数。
-
最适合: 有可验证退出条件的任务。
-
用量管理方式: 设置具体的完成标准和明确的回合上限,例如“尝试 5 次后停止”。
有时,单个回合并不够,尤其是面对更复杂的任务时。代理在可以迭代时表现更好。你可以用 /goal 定义“完成”是什么样子,从而延长 Claude 持续迭代的时间。
当你定义了成功标准,Claude 就不必自行判断什么算“足够好”,也不会过早结束循环。每次 Claude 试图停止时,一个评估模型都会检查你的条件,并把它送回去继续工作,直到目标达成或达到你定义的回合数。
这就是为什么确定性的标准如此有效,例如通过的测试数量,或达到某个分数阈值。
例如:
/goal 将首页 Lighthouse 分数提升到 90 或以上,尝试 5 次后停止。
基于时间的循环(/loop 和 /schedule)
-
触发方式:指定的时间间隔。
-
停止条件:你取消它,或工作完成(PR 合并、队列清空)。
-
最适合: 周期性工作,或与外部环境/系统交互。
-
用量管理方式: 设置更长的间隔,或基于事件而不是时间做出反应。
有些代理式工作是周期性的:任务本身保持不变,只有输入会变化。例如,每天早上总结 Slack 消息。另一些工作依赖外部系统,而与外部系统交互的一种简单方式,就是按间隔检查它,并对变化作出反应。例如,一个可能收到代码评审或 CI 失败的 PR。
对于这些任务,你可以用 `/loop` 触发 Claude 运行,它会按间隔重新运行提示词。例如:
/loop 5m 检查我的 PR,处理评审意见,并修复失败的 CI
`/loop` 在你的电脑上运行,所以如果你关掉电脑,它就会停止。你可以通过用 `/schedule` 创建 routine,把循环移到云端。
主动式循环

-
触发方式:事件或计划任务,实时没有人类参与。
-
停止条件:每个任务在达成目标时退出。routine 本身会一直运行,直到你把它关闭。
-
最适合: 定义良好的周期性工作流:错误报告、issue 分流、迁移、依赖升级等。
-
用量管理方式: 把 routine 路由到更小、更快的模型,并把最有能力的模型用于需要判断的环节。
上面的原语,加上 Claude Code 的其他功能,例如 auto mode 和 dynamic workflows(研究预览),可以组合成长时间运行工作的循环。
例如,为了处理传入反馈,你可以使用:
`/schedule`(研究预览)运行一个检查新报告的 routine
`/goal` 定义完成状态,并用 skills 记录如何验证
Dynamic workflows 编排代理,让它们分流每份报告、修复问题并审查修复
Auto mode 让 routine 运行时无需停下来请求许可
组合起来,提示词可以像这样:
/schedule every hour: 检查 project-feedback 频道中的错误报告。/goal: 不要停止,直到本次运行发现的每份报告都已被分流、处理并回复。修复错误时,使用 workflow 在三个并行 worktree 中探索三种方案,并让一个 judge 对它们进行对抗式审查。
维持代码质量
循环输出的质量取决于围绕它的系统。在设计这个系统时:
-
保持代码库本身整洁:Claude 会遵循代码库中已有的模式和约定。
-
给 Claude 一种验证自己工作的方式:用 编码你和团队对“好”的定义。
-
让文档容易获取: 框架和库文档包含最新的最佳实践。
-
使用第二个代理进行代码评审:拥有新上下文的评审者偏见更少,也不会受主代理推理过程影响。你可以使用内置的 `/code-review` skill,或用于 Github 的 。
当单个结果未达到标准时,不要止步于修复这个单独问题;尝试把它编码进系统,以改进未来所有迭代。
管理 token 用量
要管理 token 用量,循环应该有清晰边界:
-
为工作选择正确的原语和模型: 较小任务不需要多个代理或循环。有些任务可以使用更便宜、更快的模型。
-
定义清晰的成功和停止标准: 明确什么算完成,让 Claude 更快到达解法(但不要太早)。
-
大规模运行前先试点: Dynamic workflows 可以生成数百个代理。先在较小范围内估算用量。
-
用脚本处理确定性工作:运行脚本比推理每个步骤更便宜。例如,一个 PDF skill 可以附带一个表单填写脚本,让 Claude 每次运行它,而不是重新推导代码。
-
不要让 routine 运行得比需要更频繁: 让间隔匹配你所观察对象的变化频率
-
查看用量: `/usage` 命令会按 skills、subagents 和 MCPs 拆分近期用量;不带参数的 `/goal` 会显示目前为止的回合数和 token 用量;`/workflows` 会显示每个代理的 token 用量,并且你可以随时停止某个代理。
入门
总结如下:
| 循环 | 你交出的部分 | 适用场景 | 可使用 |
|---|---|---|---|
| 回合制 | 检查 | 你正在探索或做决定 | 自定义验证 skills |
| 基于目标 | 停止条件 | 你知道完成是什么样子 | /goal |
| 基于时间 | 触发器 | 工作按计划发生在项目之外 | /loop, /schedule |
| 主动式 | 提示词 | 工作是周期性的,并且定义清楚 | 以上全部,以及 dynamic workflows |
要开始使用循环,看看你已经在做的工作。挑一个你是瓶颈的任务,并问自己可以交出哪一部分:你能写验证检查吗?目标足够清晰吗?工作是否按计划到来?
一旦有了想法,就运行循环,观察结果,例如它在哪里卡住或过度行动,然后不要害怕继续迭代。
更多信息请阅读 Claude Code 文档中的 ,以及 、、 和 页面。
本文作者:
附图
