循环工程(Loop Engineering)详解
本文系统梳理循环工程的概念、起源、核心思想、构成要素,以及它在 Claude Code 等 AI Agent 工具中的落地方式。
一、它是什么
循环工程(Loop Engineering)是 AI / 大模型领域在 2026 年涌现的一个新概念,它重新定义了人与智能体的协作方式。
它的本质,是把**「谁来给 agent 下一步指令」这件事,从人迁移到一个你自己写的小系统 / 循环**。
二、概念起源
这是一个非常新的概念,诞生于 2026 年 6 月初:
- Addy Osmani(Google Chrome 工程负责人)把这句话和 PSPDFKit 创始人 Peter Steinberger 的类似观点结合,提炼出 "Loop Engineering" 这个概念,迅速成为社区标准用语。
- 最初引发讨论的那篇文章,几天内浏览量超过 650 万,扩散速度极快。
值得强调的是:这个概念本身就诞生在 Claude Code 这套工具链里——你现在用的工具,正是它被提出的背景。
三、核心思想:从「人写 prompt」到「系统持续 prompt」
| 维度 | 传统方式 | 循环工程 |
|---|---|---|
| 指令来源 | 人手动写 prompt | 系统根据状态自动生成下一步 prompt |
| 人在哪里 | 在回路里反复打断、纠正 | 人只设目标和停止条件,过程自治 |
| 指令粒度 | 一次性指令 | 递归目标,迭代到收敛 |
| 你的角色 | 提示者(Prompter) | 循环系统的设计者 |
四、一个「循环」由什么构成
一个能自治运转的循环,通常包含五个要素:
- 目标定义——一个可判定的目的(不是一次性任务),系统能判断"达成与否"。
- 触发器——按时间、按事件、或按条件唤醒循环。
- 上下文注入——每一轮把当前状态与历史结果喂给 agent。
- 验证 / 停止条件——怎么算"做完了",以及何时该放弃或转人工。
- 反馈回路——上一轮的产出,变成下一轮的输入,逐步逼近目标。
五、在 Claude Code 里的落地体现
你现在使用的 Claude Code,本身就内置了做循环工程的工具——它们正是 Boris 所说"在运行的循环"的具体形态:
| 工具 | 在循环里的角色 |
|---|---|
| /loop | 让一个 prompt / 命令按间隔反复运行(如"每 5 分钟检查一次部署状态") |
| ScheduleWakeup | agent 自己决定"多久后再醒来继续",动态自定步调 |
| CronCreate | 定时触发,可持久化、跨会话存活 |
| Workflow | 把"分解 → 执行 → 验证 → 综合"编排成确定性循环,支持多 agent 并行 |
把它们组合起来,你就能搭出一个会自己跑的系统,而不再逐条打字发 prompt。
六、实践:搭一个会自己跑的「需求实现循环」
光讲概念不够,下面用一个最小可复现的案例,把上面五个要素和四件工具串起来。场景很常见:你拿到一个需求,希望 agent 自己把它做完、做到通过校验,而不是你盯着一轮轮发指令。
1. 把目标拆成可判定的停止条件
循环要能自治,首先得让"做完没有"可被机器判断。把模糊的"做好"翻译成三条硬指标:
- lint:
npm run lint退出码为 0 - 测试:
npm test全绿,无失败用例 - 清单:新增列在「有数据 / 无数据」两种情况下都渲染正确,且取值与接口返回一致
2. 用 Workflow 把"一轮"写成确定性流程
一轮迭代 = 改代码 → 跑校验 → 判断。用 Workflow 把它编排成 pipeline,每一站产出喂给下一站:
改代码(agent)
↓ 输出:本次 diff
跑 lint + 测试(bash)
↓ 输出:通过 / 失败日志
判定(agent)
↓ 全绿 → 结束;有失败 → 提取原因进入下一轮3. 用 /loop 让它反复跑,直到收敛
单轮流程写好后,用 /loop 套一层外壳让它反复执行:每一轮把上一轮的失败日志作为上下文重新喂进去,逐步逼近三条硬指标。
/loop 当 lint 与测试未全绿时,基于上轮失败日志继续修复;全绿则停止4. 设一条"放弃"兜底,避免死循环
递归目标最怕永远不收敛。加一条停止条件:连续两轮 无新增进展(diff 为空或失败数不降)→ 停止循环并把你拉回回路转人工。这一步对应五要素里的「验证 / 停止条件」。
七、一句话总结
延伸阅读:这个概念仍在快速演进,两份一手资料可直接看——Addy Osmani 的概念原文,以及社区维护的 GitHub 参考仓库(含模式、starter 与 CLI 工具)。