原文标题:Getting started with loops。本文基于 ClaudeDevs 在 X 发布的文章,完全由有道龙虾自动翻译、整理和发布。

Getting started with loops

现在有很多人在讨论“设计循环”,而不是直接给你的编码 Agent 写提示词。如果你花点时间在 X 上试图弄清楚循环到底是什么,你会看到很多不同的答案。

在 Claude Code 团队里,我们把“循环”定义为:Agent 重复执行工作周期,直到满足停止条件。我们会根据以下几个维度,把循环分成几类:

  • 它们是如何被触发的
  • 它们是如何停止的
  • 使用了哪种 Claude Code 原语
  • 每种循环最适合哪类任务

我们会介绍主要的循环类型、每种类型适合在什么时候使用,以及如何在管理 token 用量的同时保持代码质量。并不是所有任务都需要复杂循环;先从最简单的方案开始,只在合适的时候选择性地使用这些模式。


基于回合的循环

Turn-based loops

  • 触发方式: 用户提示词。
  • 停止条件: Claude 判断自己已经完成任务,或者需要更多上下文。
  • 最适合用于: 不属于固定流程或日程安排的较短任务。
  • 用量管理方式: 写更具体的提示词,并通过 skills 改进验证流程,以减少回合数。

你发送的每一个提示词,都会启动一个由你手动指挥每一轮的循环。Claude 会收集上下文、采取行动、检查自己的工作,如果需要就重复,然后再回复。我们称之为 agentic loop(智能体循环)。

例如,你让 Claude 创建一个点赞按钮。它会读取你的代码、进行修改、运行测试,然后交回一个它认为能工作的结果。接着你手动检查这项工作,再写下一个提示词。

你可以把自己的手动验证步骤编码成一个 SKILL.md,从而改进验证环节,让 Claude 能端到端地检查更多自己的工作。这个 skill 应该包含工具或连接器,让 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)

Goal-based loop

  • 触发方式: 实时的手动提示词。
  • 停止条件: 目标达成,或者达到最大回合数。
  • 最适合用于: 有可验证退出条件的任务。
  • 用量管理方式: 设置具体的完成标准和明确的回合上限,比如“尝试 5 次后停止”。

有时候,单个回合并不够,尤其是面对更复杂的任务时。Agent 在可以迭代时表现更好。你可以通过 /goal 定义“完成”是什么样子,从而延长 Claude 持续迭代的时间。

当你定义了成功标准后,Claude 就不必自己判断什么算“足够好”,也不会过早结束循环。每次 Claude 试图停止时,一个评估模型都会检查你的条件,并把它送回去继续工作,直到目标达成,或者达到你定义的回合数。

这就是为什么确定性的标准非常有效,比如测试通过数量,或者清除某个评分阈值。

例如:

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

基于时间的循环(/loop 和 /schedule)

  • 触发方式: 指定的时间间隔。
  • 停止条件: 你取消它,或者工作完成了,例如 PR 合并、队列清空。
  • 最适合用于: 重复性工作,或者与外部环境 / 系统交互。
  • 用量管理方式: 设置更长的间隔,或者基于事件而不是时间作出反应。

有些 agentic 工作是重复发生的:任务本身保持不变,只有输入会变化。例如,每天早上总结 Slack 消息。另一些工作依赖外部系统,而与外部系统交互的一种简单方式,就是按固定间隔检查它,并根据变化作出反应。例如,一个 PR 可能收到代码审查意见,或者 CI 失败。

对于这些情况,你可以用 /loop 来触发 Claude 运行,它会按间隔重新执行一个提示词。例如:

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

/loop 在你的电脑上运行,所以如果你关机,它就会停止。你可以通过 /schedule 创建 routine,把循环移到云端。


主动式循环

Proactive loops

  • 触发方式: 事件或日程安排,不需要人类实时参与。
  • 停止条件: 每个任务在目标达成后退出。routine 本身会一直运行,直到你关闭它。
  • 最适合用于: 定义清晰的重复性工作流,例如 bug 报告、issue 分诊、迁移、依赖升级等。
  • 用量管理方式: 把 routine 路由到更小、更快的模型,把最强模型用于需要判断的地方。

上面这些原语,再加上 Claude Code 的其他功能,比如 auto modedynamic workflows(研究预览),可以组合成适合长时间运行工作的循环。

例如,要处理传入的反馈,你可以使用:

  • /schedule(研究预览)运行一个 routine,用来检查新的报告
  • /goal 定义什么算完成,并用 skills 记录如何验证
  • Dynamic workflows 编排多个 Agent,让它们分诊每条报告、修复问题并审查修复结果
  • Auto mode 让 routine 不必停下来请求许可,可以持续运行

组合起来,一个提示词可能像这样:

/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.

保持代码质量

循环输出的质量,取决于它周围的系统。设计这个系统时:

  • 保持代码库本身干净: Claude 会遵循你代码库里已经存在的模式和约定。
  • 给 Claude 一种验证自己工作的方式:skills 编码你和团队对“好”的定义。
  • 让文档容易访问: 框架和库的文档包含最新的最佳实践。
  • 使用第二个 Agent 做代码审查: 带着新上下文的审查者偏见更少,也不会被主 Agent 的推理影响。你可以使用内置的 /code-review skill,或者使用 GitHub 的 Code Review

当单个结果没有达到标准时,不要只停留在修复这个单独的问题上,而是尝试把这次经验编码进系统里,让未来所有迭代都能受益。


管理 token 用量

为了管理 token 用量,循环应该有清晰的边界:

  • 为任务选择正确的原语和模型: 小任务不需要多个 Agent 或循环。有些任务可以使用更便宜、更快的模型。
  • 定义清晰的成功标准和停止条件: 明确什么算完成,这样 Claude 能更快到达解决方案,但也不会太早停下。
  • 大规模运行前先试点: Dynamic workflows 可能生成数百个 Agent。先在较小的一部分工作上评估用量。
  • 对确定性工作使用脚本: 运行脚本比通过推理一步步完成更便宜。例如,一个 PDF skill 可以附带表单填写脚本,让 Claude 每次运行它,而不是每次重新推导代码。
  • 不要比需要更频繁地运行 routine: 让间隔匹配你所监控对象的变化频率。
  • 审查用量: /usage 命令会按 skills、subagents 和 MCPs 拆解近期用量;不带参数的 /goal 会显示目前的回合数和 token 用量;/workflows 会显示每个 Agent 的 token 用量,并且你可以随时停止某个 Agent。

开始使用

总结一下:

循环你交出去的东西使用场景可以使用
基于回合检查你正在探索或决策自定义验证 skills
基于目标停止条件你知道什么算完成/goal
基于时间触发器工作在你的项目外部按计划发生/loop/schedule
主动式提示词工作是重复且定义清晰的上面所有方式,以及 dynamic workflows

要开始使用 loops,看看你已经在做的工作。挑一个你是瓶颈的任务,然后问自己:哪一部分可以交出去?你能不能写出验证检查?目标是否足够清晰?这项工作是否按计划到来?

一旦你有了想法,就运行循环,观察结果,比如它卡在哪里,或者哪里做过头了,然后别怕继续迭代。

更多信息,请阅读 Claude Code 文档中关于 并行运行 agents,以及 loopschedulegoaldynamic workflows 的页面。

本文由 @delba_oliveira 撰写。