Claude Code 作者Boris最近说,Anthropic现在100%的PR都是Claude Code处理,80%-90%的代码评审也由它完成。他自己用的最多的功能是/loops——早就不是手动给Claude发提示词了,现在都是搭好循环让系统自己跑。
现在已经迅速在社区里火了起来,还起了一个新名字叫做循环工程,核心就是把之前你手动做的「写提示词→等结果→改提示词→再等」变成自动循环的系统。杠杆已经变了,现在比拼的不是谁提示词写得好,而是谁能设计好自动干活的系统。
循环到底是怎么跑通的?一张图讲清楚基本逻辑:

你设计完一次规则,循环自己找活干,交给AI代理,检查结果,记录过程,再决定下一步该做什么。AI每次跑都会忘,存在文件里的状态不会忘。目前主流的编程AI工具,Claude Code和Codex都支持这套玩法,对比下来差异不大:

Anthropic工程师用了这套方法之后,每天合并的代码量是2024年的8倍。官方自己都说是数据肯定有夸大,但杠杆转移这件事是真的。
大多数人上来就搭循环,最后发现token烧了一堆,效率还不如手动提示。文章里给了一个四条件测试,缺一个循环的成本都比收益高:

翻译成大白话就是四个要求:
谁能真从循环工程里拿到收益?
谁现在别碰?
对一次性工作、探索性工作,或者好坏需要人为判断的任务,手动写提示依然比循环好用。说白了就是:循环工程是真东西,但大多数开发者现在还不需要。
过了测试,接下来就是搭模块,循环工程一共五个基础块:
自动化就是定时、或者按事件触发循环运行,不用你手动启动。Claude Code里直接用/loop做定时、/goal定终止条件,Codex直接在自动化面板里配置就行。
举个现成的例子:
> /loop 30m /goal All tests in test/auth pass and lint is clean.
Scan src/auth for new failures, propose fixes in claude/auth-fixes,
open draft PR when goal condition holds.
▲ Claude
CronCreate(*/30 * * * * : auth quality loop)
Stop condition: tests pass + lint clean (verified by checker)
✓ Scheduled. Will continue past intermediate completions
until /goal condition is met by independent checker.
这里最关键的设计是,把终止条件的判断交给独立的小模型,不让写代码的模型自己判对错,避免自我陶醉。
只要同时跑多个代理,一定会出现两个代理改同一个文件的问题,和两个工程师同时改同一行代码没区别。用git工作树就能解决,每个代理有自己独立的工作目录,共享同一个仓库历史,改东西碰不到一起。
Codex已经内置了这个能力,Claude Code直接开放了git工作树接口,加参数就能给每个子代理开独立的隔离空间。
要注意的是,工作树解决的是机械冲突,你的评审带宽才是并行数量的上限,工具解决不了人的产能问题。
不用每次跑循环都重新给AI讲一遍项目规则,把项目约定、构建步骤、禁忌都写进SKILL.md放在文件夹里,每次运行都会自动读。
没有Skills的循环,每次都要从零推导一遍项目上下文,有了Skills,意图才能积累下来。一个成熟的CI分流Skill长这样:
name: ci-triage
description: Classify CI failures by root cause (env, flake, real bug,
dependency, infra), draft fixes for the easy ones, escalate the rest.
Trigger whenever a workflow run fails or on the morning triage loop.
---
# CI triage skill
## Classification rules
- env: missing secret, wrong env var, infra not provisioned. # human
- flake: passes on retry without code change. # retry once, then file
- bug: deterministic failure tied to recent commit. # draft fix
- dependency: failure tied to a version bump. # draft rollback
- infra: timeout, OOM, runner issue. # escalate
## Fix patterns
- Auth tests → check src/auth/middleware first
- Database tests → verify migration applied in CI env
- E2E tests → check selectors against the latest UI snapshot
## Never do
- Disable failing tests — always file as escalation instead
- Modify CI config without human approval
- Touch src/payments/ or src/billing/ (in claude/permissions.md)
## State
Update STATE.md after each run: file paths checked, classifications,
PRs opened, items escalated.只靠AI读文件的循环能力太有限,基于MCP协议的连接器能让AI读你的问题追踪系统、查数据库、调用测试接口、发Slack消息。
现在Claude Code和Codex都支持MCP,写一次连接器两边都能用。有了连接器,循环才能真的干完一整套活:修复问题→开PR→关联工单→通知团队,而不是只给你输出一段文本说我改完了。
目前回报率最高的连接器依次是:GitHub、Linear/Jira、Slack、Sentry/错误追踪工具。

循环里最有用的设计就是拆分:让一个代理写代码,另一个代理做验证。写代码的模型总是容易自我感动,觉得自己写的全对,换个带不同指令的模型,更容易查出问题。
这个其实就是Anthropic在2024年12月就提过的「评估者-优化者模式」,只是现在换了个名字流行起来。
不管是Codex还是Claude Code,都支持自定义子代理,常见拆分方式就是:一个探索需求,一个实现,一个对照规格验证。

过了测试,搭完模块,还要注意几个常见的失败模式,一不小心就烧了一堆钱还没产出。
这个东西听起来太简单,没人当回事,但实际上所有能用的循环都靠它撑着。只要是单个对话之外的内容,不管是markdown文件还是Linear看板还是JSON,把已经做完的事、接下来要做的事记下来就行。
AI默认记性差,这次跑完的内容下次就忘了,不写下来,每次循环都要从头开始。文章里给了一个现成的状态文件示例:
# Loop state · ci-triage
## Last run
2026-06-09 03:30 UTC · 7 failures classified, 3 fixes drafted, 4 escalated
## In progress
- claude/fix-auth-token-refresh — tests passing locally, awaiting CI
- claude/fix-flaky-payment-webhook — retry pattern applied, monitoring
## Completed today
- claude/bump-axios-1.7.4 → merged (CI green, deps loop verified)
- claude/lint-fix-pass-june-9 → merged
## Escalated to humans
- src/billing/refund.ts — tests failing in 3 ways, root cause unclear
- ci/staging-runner — infra timeouts, not a code issue
## Lessons learned (write here, not in chat)
- 2026-06-08: PowerShell hits TLS 1.2 issue on this Windows runner. Use bash.
- 2026-06-07: tests/e2e/checkout requires Stripe webhook secret in env. Skip if missing.
## Stop conditions met since last review
- /goal "all tests pass + lint clean" achieved on commit 3a7b8c1 at 02:14 UTC小团队用仓库里的markdown就行,生产环境循环用外部系统方便团队看进度。长期运行的循环,最好配一个顶层规格文件,每次运行都重读,避免跑着跑着偏离目标。状态告诉AI现在在哪,规格告诉AI要去哪。
过了测试,第一件事是搭最小能用的循环,四个部分就行,不用搞多代理集群:

顺序也不能乱:先把手动跑通了,再整理成Skill,再包进循环,最后配置定时。跳过任何一步,都是循环失败的开始。
真正该关心的指标是「每个可用变更的成本」,不是跑了多少循环、烧了多少token。如果通过率低于50,说明你还要做很多评审,循环反而帮倒忙。
这个失败模式是Geoffrey Huntley命名的:循环没跑完就提前退出,留下半拉活,因为没有硬验证门,它还会悄悄一直烧token。
为什么会出这个问题?三个原因:没有真的验证器,只让另一个AI做主观评审;终止条件模糊,全靠AI自己判断;没有硬停止,一直跑到有人发现token不对才停。
解决方法也简单,就是上客观验证门:要么测试过了,要么构建成功,要么lint通过,不能要AI的主观判断。

循环跑得越好,这个问题越严重:
解决方法也不是技术问题:一定要读diff,一定要定期抽查验证门有没有失效,不要让循环碰架构级工作,设计循环的时候拉队友一起看,能少很多盲区。
没人盯着的循环,就是没人盯着的攻击面:
两年来,和AI编码的杠杆都在提示词上,拼谁写得好,拼谁给的上下文准。这个阶段已经结束了。现在AI能力足够了,下一个杠杆点,变成了设计系统:让系统决定AI该做什么,什么时候做,结果怎么验证,哪些信息要保留到下次运行。
但这不是说所有人都要立刻去搭循环。大多数开发者现在还不需要,除非你真的满足那四个条件。缺一个,循环的成本就比收益高。
真满足条件,就从小做,一个自动化,一个Skill,一个状态文件,一个验证门。先把手跑通,再整理,再包循环,最后定时。顺序错了,最后就是养了一个没人看得懂的吞钱黑洞。
杠杆点变了,不代表就可以做甩手掌柜了。搭好循环,你还是要需要继续迭代优化,就像经营一家公司,业务跑通只是开始。