本页目录8
- 官方把「循环」定义为智能体反复执行工作直到满足停止条件,按触发方式分为四类
- 单轮循环由用户提示触发,靠 Claude 自行判断任务是否完成,适合较短的一次性任务,可用 Skill 文件固化人工验证步骤
- `/goal` 循环需设定可验证的完成标准和最大轮数上限,避免过早或无限循环
- `/loop` 在本地按时间间隔运行,`/schedule` 则把同类循环搬到云端长期运行
- 主动式循环无需人工触发,组合 `/schedule`、`/goal`、Skill 与动态工作流,适合稳定的重复性工作流
- 控制 token 消耗的关键是选对 primitive 和模型规模、明确停止条件,并用 `/usage`、`/goal`、`/workflows` 观察实际用量
本文是对 Anthropic 官方博文「Getting Started with Loops」的中文要点摘要,完整内容以原文为准:https://claude.com/blog/getting-started-with-loops
这篇官方文章把 Claude Code 中的「循环」(loop)定义为:智能体不断重复一轮又一轮的工作,直到满足某个停止条件为止。文章按「谁来触发」「何时停止」「用什么原语」「适合什么任务」这几个维度,把循环分成了四类,并给出了对应的 token 管理建议。
循环的四种类型
1. 单轮循环(Turn-Based Loops)
- 触发方式:用户手动发一条 prompt
- 停止条件:由 Claude 自己判断任务是否完成,或者判断是否需要更多上下文
- 适合场景:较短、非重复性的一次性任务
这类循环最容易出现「Claude 以为做完了,实际没做完」的问题。官方建议用具体、可验证的 prompt,并借助 Skill 把人工验证步骤固化下来——比如写一个 SKILL.md,规定「涉及 UI 改动时必须启动开发服务器、在浏览器里实际操作、检查控制台报错、做性能审计」之后才能宣布任务完成,而不是让 Claude 凭感觉判断。
2. 目标式循环(Goal-Based Loops,/goal)
- 触发方式:仍是实时手动 prompt
- 停止条件:目标达成,或达到设定的最大轮数
- 适合场景:有明确、可验证退出条件的任务
关键在于把「完成」定义成可判定的量化标准,而不是模糊描述。文中给的例子是:「把首页 Lighthouse 分数做到 90 分以上,最多试 5 次」——这种确定性的成功标准加上轮数上限,既避免 Claude 提前收工,也避免无限循环消耗 token。
3. 定时循环(Time-Based Loops,/loop 与 /schedule)
- 触发方式:按设定的时间间隔自动触发
- 停止条件:人工取消,或工作确实完成
- 适合场景:重复性工作,或需要对接外部系统的场景
/loop 在本地运行,典型用法如:
/loop 5m check my PR, address review comments, and fix failing CI
即每 5 分钟检查一次 PR、处理评审意见、修复失败的 CI。
/schedule 则是把同样的循环搬到云端,可以脱离本机长期跑,适合更持久、更「基础设施化」的定时任务。
4. 主动式循环(Proactive Loops)
- 触发方式:由事件或计划驱动,不需要人工介入
- 停止条件:每个子任务在目标达成时各自退出
- 适合场景:稳定、边界清晰的重复性工作流
这是四类里最「自动化」的一种,通常是把 /schedule、/goal、Skill、动态工作流(dynamic workflows)以及 auto mode 组合起来,让 Claude 在无人值守的情况下持续处理一类工作。
保持代码质量的建议
- 保持代码库整洁:Claude 会遵循已有的代码风格和模式,代码库越干净,循环的产出质量越稳定
- 通过 Skill 让 Claude 具备自我验证能力,减少「看似完成实则有问题」的情况
- 维护清晰、易读的文档,帮助 Claude 更好地理解上下文
- 代码评审建议交给独立的 agent 来做,而不是和实现任务混在同一个循环里
Token 用量管理
官方给出了几条控制成本的原则:
- 根据任务规模挑选合适的原语(单轮 /
/goal//loop//schedule)和合适规模的模型 - 明确定义「成功」和「停止」的标准,避免循环空转
- 在大规模跑动态工作流之前,先小范围试跑(pilot)一次
- 对于结果确定、逻辑固定的工作,优先用脚本而不是让 Claude 每次重新推理
- 定时任务的执行间隔要匹配实际变化频率,不要设得过于频繁
- 通过
/usage、/goal、/workflows这几个命令查看实际的循环执行和用量情况
如何上手
文章建议的起点很简单:先找出你工作流程里的一个瓶颈任务,再判断它该交给哪个组件——是需要补一个验证检查(Skill)、需要更清晰的目标定义(/goal),还是需要按计划触发(/schedule)。从一个具体场景切入,比一开始就设计复杂的自动化体系更容易见效。