你有没有过这种体验------
推了代码,CI 要跑 10 分钟。你不想干等,于是切去干别的;10 分钟后回来一看,红了。改,推,再等 10 分钟,又红。一个下午就这么被切碎了。
或者更糟:测试套件里有十几个偶发失败的用例,你想一次性修完,结果 agent 一上来想同时改十几个文件,改得乱七八糟,你只好一个个回滚。
这两件事的共同点是:它们都是"循环"问题,而你一直在用"单次"的方式解决。
2026 年,编码 Agent 领域最值得注意的范式转变,就是从"prompt 一次"转向"让循环去 prompt"。Claude Code 负责人 Boris Cherny 的说法点破了这件事的本质:"我不直接 prompt Claude 了。我让循环去 prompt,我的工作是写循环。"
这个范式有个名字------loop engineering(循环工程) 。而 Claude Code 在 2026 年初推出的 /loop,是它最显眼的第一个工具。但用了几个月,我发现很多人要么不知道它,要么把它当 cron 闹钟用,要么被它烧掉一晚上的 API 额度。
这篇文章想讲透的不只是"/loop 怎么敲"------而是借它看清整个编码 Agent 的循环革命:为什么需要循环、循环分几层、Claude Code 的实现妙在哪、其他 Agent 谁有这能力、以及怎么真正用好它。
一、为什么"单次"永远不够:循环的三个层次
要理解 /loop,得先跳出 /loop 本身,看清"循环"这件事的全貌。社区里讨论的 "loop" 其实混了三种东西,我把它分成三层:
| 层次 | 含义 | 难度 |
|---|---|---|
| L1 执行循环 | 单次会话内的 ReAct 循环(推理 → 工具 → 推理) | 低 |
| L2 自治循环 | 单会话内长跑,跑到某个条件满足才停 | 中 |
| L3 调度循环 | 按时间间隔重复触发,带跨迭代的持久上下文 | 高 |
L1 是所有 Agent 的标配------只要是个 Agent,就有"推理→调工具→看结果→再推理"的基本盘,这不算特色。
L2 才是分水岭。能在一个会话里连续跑几小时、自己纠错、不到目标不罢休,这需要停止条件的精心设计。
L3 是最难、也最稀缺的一层 。它要同时做到"按时间重复"和"跨迭代记忆"------而这两者结合,恰恰是 Claude Code /loop 的位置。
记住这个三层模型,它是一会儿理解"各 Agent 差在哪"的钥匙。
二、/loop 到底妙在哪:不是"定时",是"带记忆的定时"
很多人把 /loop 理解成"定时闹钟":到点了,跑一下。这只对了一半。
它和系统 cron、和 watch 命令有一个本质区别,这句话值得加粗:
/loop的循环绑定在会话上,每次迭代共享同一个上下文窗口。
对比两种方式就一目了然:
text
外部 cron 包裹 claude -p:
每次 = 冷启动 + 上下文清零
agent 不知道上一轮做了什么,从头开始猜
/loop(会话内循环):
每次 = 同一会话 + 同一上下文 + 同一工具连接
agent 记得"上次试过方案 A 没用",直接试方案 B
外部调度器最致命的问题是**"上下文在两次运行间蒸发"**;/loop 让会话保持存活,agent 能逐步累积工作。
这才是 /loop 的核心价值------不是"定时",是"带记忆的定时"。
它是怎么实现的
/loop 不是凭空造的新东西,是把已有原语组合成循环的最薄一层。整个流程是:
text
你输入 /loop "每5分钟检查构建"
↓
Claude 解析自然语言 → 生成 cron 表达式(*/5 * * * *)
↓
会话内调度器(CronCreate 工具)注册任务,返回 job ID
↓
定时器到点 → 在【当前会话】触发该 prompt
↓
同一上下文窗口执行(记得上轮)→ 工具调用 → 状态写磁盘
↓
循环,直到 Esc / 3 天到期 / 会话结束
也就是说,你用自然语言告诉它"每 5 分钟",它内部转换成 cron 表达式,然后用会话内的调度器按时触发。底层是 CronCreate 这类 cron 工具,/loop 是面向你的封装。
这里面有四个设计细节,每一个都值得玩味,因为它们揭示了"为什么 /loop 是这么设计的":
- 会话级作用域 。循环活在当前会话里,不是后台守护进程。这是有意为之------用"不持久"换"安全可预测":没有孤儿进程凌晨 3 点烧你的 API 额度,关终端即停。代价是不耐用,要跨重启得换别的方案。
- 持久上下文。核心卖点。同一会话 = 同一上下文 + 同一 MCP 连接,这正是它碾压外部 cron 的根本。
- 10% 时间抖动(jitter) 。给你设的间隔最多加 10% 随机偏移。设 10 分钟循环,可能 9:12、10:48、9:36 触发。为什么?如果一千个开发者都设"每 10 分钟",就会在同一秒打 API 形成尖峰。抖动把负载摊平------和指数退避是同一个原理,只是预防性地提前用了。
- 守护机制。72 小时硬上限、1 分钟最小间隔、可被组织整体禁用。这些护栏说明 Anthropic 很清楚:自治循环一旦失控,代价是实打实的钱。
别和 /goal 搞混
讲到 /loop 就必须提 /goal,它俩是不同的循环原语,极易混:
/loop |
/goal |
|
|---|---|---|
| 驱动方式 | 节奏驱动(按间隔重跑) | 条件驱动(跑到条件为真) |
| 停止 | 到期或按 Esc | 一个独立小模型每轮判断"是否完成" |
| 适用 | 周期巡检、摘要、轮询 | "测试全过 + lint 干净"这类可验证终态 |
/goal 有个精妙设计:判断"是否完成"的是另一个小模型,不是干活的那个。这是把"制作者/检查者分离"应用到了停止条件本身------防止 agent 自己评自己"做完了"而草草收尾。一个管"怎么干",一个管"够了没",分工明确。
三、实战:什么情况用、怎么用、怎么不踩坑
理论清楚了,回到地面。这一节是可操作的部分。
一条判断标准:三个问题
要不要用 /loop?问自己三个问题:
- 这事需要重复吗? ------ 不需要,用普通 prompt 就行。
- 每次需要记得上次的状态吗? ------ 不需要,用外部 cron 包
claude -p就行。 - 我会一直开着这个会话吗? ------ 不会,别用
/loop,用 GitHub Actions。
三个都"是",才用 /loop。最后一条尤其重要------记住它是会话级的,关盖子就停。
五个能直接照抄的例子
例子 1:盯着 CI 直到变绿(最经典)
text
/loop 5 minutes 检查当前分支的 CI 状态,如果失败,读错误日志、修复、提交,直到变绿
推了代码就挂上,然后去写别的。可能修一次还红------没关系,它记得上次试过什么,会换思路再来。等你回来,大概率已经是绿的。
例子 2:挂一夜修测试(高阶用法)
text
/loop 10 minutes 跑 npm test,把失败的测试逐个修复并提交,每轮只处理一个,避免改动太大
注意最后半句------"每轮只处理一个" 。这是用 /loop 最重要的防坑技巧。不加这句,agent 一轮可能想修全部,改得乱七八糟;明确"每轮一个",它就稳扎稳打。睡一觉醒来,提交历史里往往已经安静地修掉了好几个,每个独立提交,干净利落。
例子 3:定时汇总到文件(配合 MCP 连 GitHub)
text
/loop every 2 hours 拉取最近 commit 和 PR 更新,追加汇总到 DAILY.md 的新日期段落下
每次拉最新状态,累积写进文件。它记得"已经写过哪些",不会重复。
例子 4:等 PR 评论
text
/loop 15 minutes 检查我的 PR #123 的新评论,如果有,按评论意见修改代码并回复说明改了什么
提了 PR 去忙别的,reviewer 一留意见,它就开始处理。同样靠"记得回复过哪些"避免重复。
例子 5:可验证终态用 /goal
text
/goal 跑到所有测试通过、lint 干净,然后停下告诉我
这个要用 /goal 不是 /loop------因为你要的是"跑到条件满足",不是"按时间重复"。
防坑清单
踩过的坑,都在这儿:
| 坑 | 怎么避 |
|---|---|
| agent 一轮干太多 | prompt 里写"每轮只处理一个 / 只改一个文件" |
| 它过早说"完成了" | 用可验证条件("测试通过才算完"),别用模糊目标 |
| 烧 API | 1 分钟间隔跑 8 小时 = 480 次调用。先用 5-10 分钟间隔试水 |
| 状态丢失 | 让它把进度写进磁盘文件 (DAILY.md、进度 markdown) |
| 想关机还在跑 | /loop 做不到,换 GitHub Actions |
最后一条尤其要强调------状态写磁盘 。长跑的 agent,每次迭代都会"忘"一些东西(上下文有上限)。所以重要的进度、待办、决策,必须落在一个 markdown 文件里 ,而不是只存在对话上下文中。这是 loop engineering 的核心原则之一:agent 会忘,但仓库不会。
四、其他 Agent 有 loop 吗:一张图看清能力光谱
如果你不用 Claude Code,自然要问:别的工具有这能力吗?用第一节的三层模型来丈量,答案很清晰:
text
能力强 ●━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━● 能力弱/无
Claude Code Codex CLI OpenCode Reasonix Aider Gemini/Cursor
(原生 L3 (L2 自治 (L3 靠插件) (L2 为常驻 (L2 局部) (L1, 需自配 cron)
定时+持久) 数小时) 而生)
关键结论是那句加粗的话:L3 这一层,目前只有 Claude Code /loop 做成了原生的、一等公民。 其他工具的处境各不相同:
- Codex CLI ------ 自治冠军。OpenAI 官方专门有 long-horizon task 指南,它的 Goal mode 能连续跑数小时无需监督。但偏向 L2(单会话长跑到完成),不是 L3 那种"定时重复 + 跨迭代记忆"。
- OpenCode ------ 靠插件生态实现 L3 。
opencode-scheduler用 OS 原生调度器(macOS 的 launchd、Linux 的 systemd),opencode-cron用 SQLite 持久化任务、跨会话重启仍存活。最大差异:Claude 把 loop 做成原生命令 (会话级),OpenCode 走插件路线(可跨会话持久,但要额外装)。 - Reasonix ------ Loop 是它的存在意义 。还记得它的北极星吗?"便宜到能一直开着"。它没有"定时"概念,但整个架构(cache-first 三段式、99% 缓存命中)就是为 L2 常驻而生的------别人 loop 会烧钱,它 loop 是设计目标。一句话概括:Claude 的 loop 是"调度",Reasonix 的 loop 是"经济学允许的常驻"。
- Aider ------ 局部的执行 loop。它有个"命令失败自动喂回对话"的机制(跑到成功为止的雏形),但没有时间调度、没有跨迭代持久记忆。
- Gemini CLI / Cursor ------ 没有内置 loop。要定时,只能外部 cron 包,每次冷启动、上下文清零。
所以如果你要的是"定时重复 + 跨迭代记忆",目前 Claude Code 是唯一原生选择。其他场景各有各的解:Codex 适合长时自治,OpenCode 靠插件补,Reasonix 靠哲学(可负担的常驻),预算有限要跨重启就用 GitHub Actions 包任何 agent。
五、真正的力量:Loop Engineering 的五块积木
到这里你可能以为 /loop 就是全部了。不。/loop 单独用,价值其实有限------它真正的力量,在于它和 Claude Code 其他原语的无缝组合。
Boris Cherny 那句"我的工作是写循环"之所以成立,是因为一个完整的循环系统由多块积木拼成。我借用 Addy Osmani 的框架,把它归纳成五块(Claude Code 全有):
| 积木 | 作用 | Claude Code 对应 |
|---|---|---|
| Automations | 按节奏发现/分流 | /loop、/goal、hooks、cron |
| Worktrees | 并行不互踩 | git worktree、--worktree |
| Skills | 固化项目知识 | SKILL.md |
| Connectors | 接入外部工具 | MCP servers、plugins |
| Sub-agents | 制作者/检查者分离 | .claude/agents/ 里的 Task subagents |
还有第六块,是隐形的粘合剂------State:一个 markdown 文件(或看板)记"做了什么、下一步是什么"。因为长跑 agent 每次都会忘,所以记忆必须落在磁盘上而非上下文里。前面防坑清单强调的"状态写磁盘",就是这一块。
把这六块拼起来,一个完整的循环长这样:
text
/loop 每早触发 → 调用 triage skill(读 CI 失败/issue/commit)
→ 写发现到 markdown 状态文件
→ 对每个待办开隔离 worktree(互不干扰)
→ sub-agent A 起草修复,sub-agent B 对照 skills + 测试审查
→ 经 MCP 开 PR、更新 ticket
→ 状态文件记下进度,明早接着干
看到差别了吗?/loop 只是这套系统的心跳。 真正让它强大的,是 skills 提供的项目知识、worktree 提供的并行隔离、sub-agents 提供的制作者/检查者分离、MCP 提供的外部连接、以及状态文件提供的跨迭代记忆。这五块积木缺一不可,/loop 只是把它们串起来的节拍器。
六、回到那两个下午
文章开头那两个场景,现在有解了。
CI 红了不用干等,挂个 /loop,它会自己试到绿;测试要批量修,挂个 /loop 让它每轮一个,睡一觉就清掉了。
但比这两个具体用法更重要的,是你刚走过的这段认知旅程:
- 你知道了循环分三层------L1 执行、L2 自治、L3 调度,而 L3 才是"真 loop"。
- 你知道了
/loop妙在"带记忆的定时",而不是闹钟;它背后是 cron 转换 + 会话内调度 + 抖动 + 守护栏杆这一整套设计。 - 你知道了各 Agent 的 loop 能力天差地别------Claude 原生、Codex 长时自治、OpenCode 靠插件、Reasonix 靠经济学、其余靠外部脚本。
- 你知道了真正的力量来自五块积木的组合,
/loop只是心跳。
而这一切指向同一个范式转变:你真正的角色,正在从"prompt agent 的人",变成"设计循环去 prompt agent 的人"。 /loop 是这个转变的第一个工具,但它不会是最后一个。
回到开头那句话:那些被 CI 碎掉的下午,本质都是"循环问题用单次方式解决"的代价。当你开始用循环思维重新组织工作流,你会发现,很多曾占用你注意力的琐事,都可以交给一个会自我延续、会记忆、会协作的循环系统去处理。
学会写循环,而不是写 prompt------这才是 2026 年值得掌握的新基本功。