Claude Code · 2026-06 · 官方定义四层 loop · hand-off 递进

官方给 loop 下了定义

「别再写 prompt 了,要设计 loop」传得很广,但十个人能给出十个答案。Claude Code 团队这篇博客把这个词收敛成一句定义,agent 反复做一轮又一轮的活,直到撞上一个停止条件,再按四个维度拆成从轻到重的四层。往上走一层,你交给循环的控制权就多一分。

来源Getting started with loops [官方] 分类触发 / 停止 / 原语 / 任务 四层Turn / Goal / Time / Proactive 日期2026-06-30
Turn-based 交出 · 那道检查 Goal-based 交出 · 停止条件 Time-based 交出 · 那个触发 Proactive 交出 · 那句 prompt 人握住每一轮 循环自己跑

GenAI Playbook · 忠实还原官方分类 · 姊妹篇《Dynamic Workflows 怎么用》讲循环内一轮的编排

起点 · 定义

先把 loop 这个词收敛成一句话

「别再写 prompt 了,要设计 loop」这句话最近传得很广,但它到底指什么,十个人能给出十个答案。Claude Code 团队这篇博客做的事很朴素:把这个被用滥的词收敛成一个能落地的定义,再拆成几类。

官方给 loop 的定义就一句话:agent 反复地做一轮又一轮的活,直到撞上一个停止条件。围绕这个定义,他们按四个维度给 loop 分类。

维度一
怎么被触发
How triggered
维度二
怎么停下来
How stopped
维度三
用哪个原语
Which primitive
维度四
最适合什么任务
What task

按这四维分出来的,是从轻到重的四层 loop:Turn-based、Goal-based、Time-based、Proactive。官方在开篇留了一句话定基调:并非所有任务都需要复杂的 loop,先从最简单的方案起,按需选用(start with the simplest solution and use these patterns selectively)。往上走一层,你交给循环的控制权就多一分:从交出「那道检查」,到交出「停止条件」「那个触发」,最后交出「那句 prompt」。下面逐层看。

第一层 · Turn-based

每发一句 prompt,其实就在跑一个 loop

这一层其实每个人天天在用。每发一句 prompt,就启动了一个手动 loop,每一轮都由人来指挥:Claude 收集上下文、动手、检查自己的产出、需要就再来一轮,然后把结果交回来。官方管这个最基础的循环叫 the agentic loop

触发
一句用户 prompt
停止
Claude 自判做完,或需更多上下文
适合
零散短任务,不属于常规流程
控成本
prompt 写具体 + skill 自验,减少轮数

举例来说,让 Claude 加一个点赞按钮,它读代码、改文件、跑测试,然后把一个它认为能用的东西交回来;之后由人来手动检查,再写下一句 prompt。

这一层真正的干货,是怎么把「人来检查」这一步交给 Claude 自己做。官方的做法不是靠写更长的 prompt,而是把人工验收的步骤编码成一个 SKILL.md,让 Claude 端到端地检查自己更多的活。skill 里应当包含能让 Claude 看见、量度或与结果交互的工具或连接器,而且检查越量化,Claude 越容易自验。官方给的完整例子是一个叫 verify-frontend-change 的 skill,规则是绝不能只凭一次成功的编辑就把 UI 改动报成完成,得像人类 reviewer 那样验:

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.

四步分别是:起 dev server 并在浏览器打开改动的页面;直接与改动交互,新加的控件要点一下、确认状态如预期变化、截前后对比图;查浏览器 console,零新增报错;用 Chrome Devtools MCP 跑一次 performance trace 并审 Core Web Vitals。任何一步失败,就修好再从第一步重跑,不允许交回只验了一半的活。

第二层 · Goal-based

/goal 把「做完」定义清楚

有时候一轮不够,任务越复杂越是如此,agent 能够迭代时表现更好。想让 Claude 迭代得更久,官方的原语是用 /goal 把「什么叫做完」定义清楚。

触发
实时手动发一句 prompt
停止
目标达成,或到达最大轮数
适合
有可验证退出标准的任务
控成本
定具体完成标准 + 明确轮数上限

/goal 解决的是 agent 提前收工的问题。当由人来定义成功标准时,Claude 就不必自己去判断怎样算「够好了」而过早结束循环。机制上,每次 Claude 想停下来,一个 evaluator model 会核对你给的条件,不达标就把它打回去继续干,直到目标达成或到达你设定的轮数。正因如此,确定性的标准最有效,比如通过的测试数、或清过某个分数阈值。

prompt /goal get the homepage Lighthouse score to 90 or above, stop after 5 tries.

把首页 Lighthouse 分数刷到 90 以上,试 5 次就停。既有可量化的完成标准(90 分),又有硬性的轮数上限(5 次)。

第三层 · Time-based

按间隔重跑,或者盯着外部系统的变化

有些 agent 工作是周期性的:任务本身不变,只有输入在变,比如每天早上总结一遍 Slack 消息。还有些工作依赖外部系统,而跟外部系统打交道的一个简单办法,就是按间隔去查一下、对变化做出反应,比如一个 PR 可能会收到 code review、也可能 CI 挂掉。

触发
一个指定的时间间隔
停止
你取消,或工作自然完成
适合
周期性工作,或对接外部系统
控成本
间隔设长,或改按事件触发

这一层的原语是 /loop,它按间隔重跑一句 prompt。

prompt /loop 5m check my PR, address review comments, and fix failing CI

每 5 分钟检查一次我的 PR、处理 review 意见、修挂掉的 CI。

本机 vs 云端

/loop 跑在你自己的电脑上,关机它就停;要把 loop 搬到云端,用 /schedule 建一个 routine(官方标注 /schedule 为 research preview)。前者是本机的临时循环,后者是常驻云端、不依赖你的机器开着的排期任务。

第四层 · Proactive

无人值守,把前三层组合成长跑

最重的一层是无人实时值守的循环。前面三层的原语,加上 auto mode、dynamic workflows(research preview)这些 Claude Code 能力,可以组合成一个用于长跑工作的 loop。

触发
一个事件或排期,无人实时在场
停止
每个任务达成即退出;routine 到你关它为止
适合
定义良好的重复流:bug 分诊 / 迁移 / 依赖升级
控成本
routine 路由小模型,判断类才用最强模型

官方举的是处理用户反馈的例子,它把四样东西组合起来:

/schedule 定时跑(research preview)

跑一个 routine,检查有没有新的反馈报告。

/goal 定义什么叫做完

并用 skill 记录怎么验证。

dynamic workflows 编排

调度多个 agent,去分诊每条报告、修它、再 review 这个修复。

auto mode 不停下来问权限

让 routine 自己跑下去,不中途停问。

拼在一起,一句 prompt 可以长这样:

prompt · 四层叠起来 /schedule every hour: check #project-feedback 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.

每小时查 #project-feedback 里的 bug 报告;/goal 是这一轮找到的每条都 triage、处理、回复完才停;修 bug 时用一个 workflow 在三个并行 worktree 里探三个方案,再让一个 judge 对抗式地 review 它们。这一句里能看到四层是怎么叠起来的:/schedule 提供事件或排期触发,/goal 提供硬性完成标准,里头那个「三方案并行 + judge 对抗式 review」正是 dynamic workflows 干的编排活。

姊妹篇

那句 prompt 里「workflow」那一格内部能摆出哪些形状(fan-out、tournament、对抗式验证等六种 pattern),是另一篇的主题。换句话说,dynamic workflows 是 Proactive loop 的一个部件,不是 loop 本身;本篇给的是包在它外面的那层壳。想看循环内一轮怎么把活分给多个 agent,读 《Dynamic Workflows 怎么用:六个 pattern 与三个失败模式》

贯穿 · 落地

不管哪一层,质量和成本靠同一套纪律

loop 的产出质量,取决于它周围的这套系统;token 要控住,loop 就得有清晰的边界。这两件事贯穿四层,官方各给了一份清单。

怎么保住代码质量

做法为什么
保持代码库本身干净Claude 会跟随代码库里已经存在的模式和约定
给 Claude 一个自验的办法用 skill 把「什么叫好」为你和团队编码下来
让文档容易够到框架和库的文档里有最新的最佳实践
用第二个 agent 做 code review带干净上下文的 reviewer 偏见更少,不会被主 agent 的推理带偏;可用内置 /code-review 或 Code Review for GitHub

还有一条贯穿的原则:当某一条结果不达标时,别停在「把这一条修掉」,要试着把它编码进系统,让往后每一轮迭代都受益。这跟第一层把验收编成 skill 是同一个思路,单点问题要沉淀成系统改进。

怎么管 token

做法要点
选对原语和模型小任务不需要多个 agent 或多层 loop;有些任务可以用更便宜更快的模型
定清晰的成功和停止标准把「做完」说具体,让 Claude 更早到达解,但也别太早收工
大规模跑前先试点dynamic workflows 能起几百个 agent,先在一小片工作上量用量
确定性的活用脚本跑脚本比让模型推理便宜;如 PDF skill 自带填表脚本,每次直接跑而非重新推导代码
routine 别跑得太勤把间隔跟「你盯的那个东西实际多久变一次」对齐
看用量/usage 按 skill / subagent / MCP 拆解;/goal 不带参数显示轮数和 token;/workflows 显示每个 agent 的用量且可随时停
收口 · 选对 loop

一张表:看你把哪一环交出去

官方最后用一张表把四层收口,核心是「你把哪一环交出去」。这也正是 hero 那张阶梯图的那一列:从交出检查,到交出停止条件、触发,最后交出整句 prompt。

Loop你交出去的是什么时候用用哪个原语
Turn-based那道检查你在探索或做决定自定义的验证 skill
Goal-based那个停止条件你知道「做完」长什么样/goal
Time-based那个触发工作发生在你项目之外、按某个排期/loop/schedule
Proactive那句 prompt工作是重复且定义良好的以上全部,外加 dynamic workflows

官方给的起步方法也很具体:看看已经在做的活,挑一个自己正是瓶颈的任务,想清楚能把哪一环交出去:能不能写出那道验证检查、目标是否够清晰、这活是不是按排期来的。想清楚了就跑起来,观察它在哪里卡住、又在哪里越界,然后不断迭代。