现在有很多关于"设计循环(loop)"而非提示编程智能体的讨论。Claude Code 团队将循环定义为智能体重复执行工作周期直到满足停止条件,根据触发方式、停止条件、使用的原语和适用任务分为不同类型。
基于回合的循环(Turn-based loops)
- 触发方式:用户提示词
- 停止条件:Claude 判断已完成任务或需要额外上下文
- 最适用于:不属于常规流程的较短任务
- 管理用量方式:编写具体的提示词,并使用技能(skills)改进验证以减少回合数
你发送的每个提示词都会启动一个手动循环,由你引导每个回合。Claude 收集上下文、执行操作、检查工作成果、必要时重复,然后回复。我们称之为智能体循环(agentic loop)。
例如,让 Claude 创建一个点赞按钮。它读取代码、进行编辑、运行测试,然后返回成果。你手动检查工作,编写下一个提示词。
可以通过将手动步骤编码为 SKILL.md 来改进验证步骤,让 Claude 端到端地检查更多自己的工作。例如在 SKILL.md 中指定前端变更验证流程:
---
name: verify-frontend-change
description: 在宣布完成之前端到端验证任何 UI 变更。
---
# 验证前端变更
永远不要仅凭成功的编辑就报告 UI 变更完成。
1. 启动开发服务器并在浏览器中打开编辑过的页面。
2. 直接与变更交互。对于新控件(按钮、输入框、开关):点击它,确认预期的状态变化。
3. 检查浏览器控制台:零新错误或警告。
4. 使用 Chrome Devtools MCP,运行性能追踪并审计 Core Web Vitals。
如果任何步骤失败,修复问题并从步骤 1 重新运行。
基于目标的循环(Goal-based loop,/goal)
- 触发方式:实时手动提示词
- 停止条件:目标达成或达到最大回合数
- 最适用于:具有可验证退出条件的任务
- 管理用量方式:设置具体的完成条件和明确的回合上限
当你定义了成功标准后,Claude 不需要自行判断什么是"足够好"并提前结束循环。每次 Claude 试图停止时,一个评估器模型会检查你的条件,并将其送回继续工作,直到目标达成或达到你定义的回合数。
例如:
/goal 将首页 Lighthouse 分数提升到 90 或以上,尝试 5 次后停止。
基于时间的循环(Time-based loop,/loop 和 /schedule)
- 触发方式:指定的时间间隔
- 停止条件:你取消它,或工作完成(PR 被合并、队列为空)
- 最适用于:定期性工作,或与外部环境/系统的交互
- 管理用量方式:设置更长的间隔,或基于事件而非时间进行响应
例如,使用 /loop 来触发 Claude 按间隔重复运行提示词:
/loop 5m 检查我的 PR,处理审查意见,修复失败的 CI
/loop 在你的电脑上运行,如果关机就停止了。可以通过 /schedule 创建例程将循环移到云端。
主动式循环(Proactive loops)
- 触发方式:事件或计划,无需实时人工参与
- 停止条件:每个任务在目标达成时退出。例程本身持续运行直到你关闭它
- 最适用于:有明确定义的重复性工作流:Bug 报告、问题分诊、迁移、依赖升级等
- 管理用量方式:将例程路由到更小更快的模型,将最强模型用于需要判断力的环节
以上原语连同 Claude Code 的自动模式和动态工作流(研究预览)可以组合成一个长期运行的循环。例如处理传入反馈:
/schedule every hour: 检查 #project-feedback 中的 Bug 报告。
/goal: 在本次运行中发现的每个报告都完成分诊、处理和回复之前不要停止。
修复 Bug 时,使用工作流在并行工作树中探索三种解决方案,并让一个裁判进行对抗性审查。
保持代码质量
循环输出的质量取决于它周围的系统。设计时需要注意:
- 保持代码库本身整洁:Claude 会遵循代码库中已有的模式和约定
- 给 Claude 一种验证自身工作的方式:用 skills 编码对你和团队来说什么是好的
- 让文档易于获取:框架和库的文档包含最新的最佳实践
- 使用第二个智能体进行代码审查:拥有新鲜上下文的审查者偏见更少,不受主智能体推理的影响。可以使用内置的 /code-review 技能或 Code Review(GitHub 版)
当循环设计得好时,Claude Code 可以自动处理更多工作,而你只需要关注真正需要判断力的环节。
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。