Loop Engineering:从 prompt 到循环
2026 年年中突然爆火的新概念,被认为是 prompt / context / harness 之后 agent 工程的第四次重心迁移。这篇把它涉及的全部内容讲透:它是什么、从哪来、一个循环由什么构成、靠什么验证与记忆、怎么防失控、和 harness 什么关系、有哪些工具、企业怎么管车队、又带来了哪些新风险。
什么是 Loop Engineering
你有没有算过,自己一天到底花多少时间,对着 AI 一句句敲指令、看结果、再敲下一句?
2026 年 6 月,这个动作被一个新词盯上了。事情的起点很小:6 月 7 日,独立开发者 Peter Steinberger 在 X 上发了一句话,大意是「别再手动 prompt 你的 agent 了,去设计那个 prompt 它的循环」[3]。第二天,Google 的工程师 Addy Osmani 写了一篇博客把它系统化,标题就叫《Loop Engineering》[1]。概念迅速发酵,因为它戳中了所有重度使用 coding agent 的人共同的感受。
Anthropic 的 Claude Code 负责人 Boris Cherny 把这种转变说得最传神:「我不再自己 prompt Claude,我让循环来 prompt Claude——我的工作是写那个循环。」[1] 一句话点明了重心的位置变了。
所以 Osmani 给的定义非常干脆:「Loop engineering is replacing yourself as the person who prompts the agent.(循环工程,就是把你这个『负责 prompt agent 的人』替换掉。)你转而去设计那个替你做这件事的系统。」[1] 展开说:你不再逐轮地喂提示,而是搭一个小系统(这个「循环」),让它自己发现工作、把任务分派给 agent(常常是 subagent)、验证结果、持久化进度、决定下一步该干嘛——按计划或者一直跑到目标达成[1][4]。
一个好的类比:你从亲自开车,变成了设计自动驾驶系统、并负责定义目的地和刹车的人。
注意这不是「prompt 工程升级版」。它是工作杠杆点的转移——你的影响力不再体现在「这句提示写得多漂亮」,而体现在「这个循环设计得多可靠」。也正因如此,Osmani 反复强调:循环工程比 prompt 工程更难,因为难点跟着杠杆点一起搬了家[1]。
四次重心迁移:从 Prompt 到 Loop
这个词不是凭空冒出来的——为什么偏偏是 2026 年中火?
因为它是一条清晰演进线上的最新一站。过去三年,AI 工程的重心迁移了四次,每一次都把人往「离具体操作更远、离系统设计更近」的位置抬一层:
- Prompt 工程(2023):研究「怎么把一句话说好」——角色、few-shot、格式约束。解决的是表达问题。
- Context 工程(2024):研究「每次推理该把哪些信息塞进窗口」——检索、压缩、记忆。解决的是信息问题。
- Harness 工程(2025):研究「怎么驾驭单次 agent 运行」——工具面、沙箱、护栏、观测,让模型从「会聊天」走向「能交付」[2][12]。解决的是过程问题。
- Loop 工程(2026):研究「谁来反复发起运行」——把人从「逐轮按下回车」里彻底解放出来,交给一个会自我驱动的系统。解决的是自治问题。
还有一条平行的、藏在循环内部的演进线,它从学术一路走到工程[5]:2022 年的 ReAct(推理 + 行动交替)奠定了「想一步、做一步、看结果」的基本节奏;Reflexion 加了自我反思;Plan-and-Execute 把规划与执行分离;2023 年的 AutoGPT 第一次让大众看到「无人值守的循环」——也第一次让所有人见识了它失控时的无限循环和烧钱。真正让循环变得可靠的,是 2025 年之后的工程实践:Geoffrey Huntley 的 ralph 循环用「每轮重置上下文 + 文件系统存状态」治好了上下文腐烂[4],再到 2026 年产品把目标循环原生内置(如 Claude Code 的 /goal)。
为什么偏偏是现在成立三个条件同时齐备了:模型足够强(能连续做对几十步)、harness 足够成熟(单次运行已经稳)、产品把调度内置(/loop、/goal、Codex Automations 让「定时戳一下 agent」成了一条命令)。缺任何一个,循环都跑不起来。2026 年,三者第一次凑齐。
解剖一个 Loop:它到底由什么构成
一个能在你睡觉时替你干活的循环,拆开来到底有几个零件?
先看骨架。一个生产级循环的每一轮(每一次「tick」),都要回答六个问题——社区把它叫做迭代契约:
| 契约项 | 它定义什么 | 例子 |
|---|---|---|
| TRIGGER 触发 | 循环什么时候醒来 | 每 15 分钟 / PR 有新评论 / CI 失败时 |
| SCOPE 边界 | 它能碰哪些东西 | 只动 repo-A 的开放 PR |
| ACTION 动作 | 每一轮尝试做什么 | 挑一个失败测试,修到它通过 |
| BUDGET 预算 | 资源上限 | 最多 5 个 subagent、token 封顶 |
| STOP 停止 | 什么时候退出 | 成功 / 撞到轮数上限 / 超预算 |
| REPORT 汇报 | 结果发去哪 | 开 PR + 发 Slack + 写状态文件 |
再看血肉。Addy Osmani 把一个成熟循环的组件归纳为五块,恰好和现代 coding agent 产品里的功能一一对应[1]:
/loop / /goal、cron、GitHub Actions。这是循环的脉搏。git worktree / 分支里干活,避免多个 agent 同时写文件打架。$name 调用,越攒越值钱。.claude/agents/ / .codex/agents/ 定义)。这是质量的关键,下一章细说。把它们组装起来,一个典型的「过夜循环」长这样[1]:每天早晨自动化醒来 → 读昨天的 CI 失败、开放 issue、最近的 commit → 对每个值得处理的发现,开一个隔离 worktree、派一个 subagent 草拟修复、再派第二个 subagent 按项目 skills 和测试验证 → 连接器自动开 PR、更新 ticket → 状态文件记下全过程,第二天接着干。你设计这一切一次,之后就不必再手动 prompt 这些步骤了。
验证:循环的生死线
如果没人盯着,循环凭什么知道自己没在批量制造垃圾?
这是循环工程和单次 prompt 最本质的区别。你在场时,是你在用肉眼验证每一步;你不在场时,验证必须被设计进循环本身,否则循环只是在「自我认可地」越跑越远。一句在社区流传的话说得很狠:「你的 coding agent 能跑很快,但坏 commit 也复利得很快。」[4]
验证有三个层级,对应三种成熟度:
这里有个关键设计:创建者和验证者必须分离(maker ≠ checker)。让同一个 agent 给自己打分,它会过于宽容;所以循环里通常派两个 subagent——一个负责草拟、一个独立验证[1]。还有个划算的搭配:探索性的活儿用快而便宜的模型,验证这种「错了代价大」的活儿才用强模型,按需付费[1]。
最后,停止条件必须是人类可验证的客观判据,而不是模型的主观感觉。比如「test/auth 下所有测试通过且 lint 干净」就是好条件——一个独立的轻量模型能明确判断「完成了没有」[1][4]。Claude Code 的 /goal 正是这个思路:你给一个完成条件,它自主多轮工作直到验证器确认达成[4]。
状态:把进度写在磁盘上,而不是上下文里
模型每轮「醒来」都失忆,循环凭什么记得自己昨天干到哪了?
这是长循环必须正面解决的难题。生产级 agent 会「跑成百上千步,常常跨越多个会话和多个用户」[7]——而模型的上下文窗口既装不下这么长的历史,装多了还会「腐烂」(context rot,长上下文里中段信息被忽略)。Osmani 把结论说得斩钉截铁:「模型在运行之间会忘记一切,所以记忆必须落在磁盘上,不能待在上下文里。」[1]
具体落地靠一组锚文件(anchor files)[4]:
VISION.md:产品方向、「完成」的定义、硬约束——循环每轮都重新读它,校准目标。CLAUDE.md/AGENTS.md:每轮注入的操作规则与护栏。PROMPT.md/loop.md:每次迭代喂给 agent 的那段提示。- 测试与类型检查:那个能对 agent 说「不」的机制。
- git 支撑的状态:崩了能恢复,保证持久性。
除了「这次任务做到哪」,还有跨会话的长期记忆:用户偏好、学到的约束、历史结论。专门的记忆层(如 mem0)会区分短期(最近几条 / 摘要)和长期(持久偏好 / 进度),并按用户级、agent 级、全局三种作用域来存取[7]。每一轮于是变成:读输入 → 查相关记忆 → 组装提示 → 推理执行 → 把结果写回记忆。
触发与停止:别让循环跑穿你的钱包
让它一直跑——会不会一觉醒来,账单已经四位数?
会,而且真的发生过。先说怎么让它启动,再说更重要的——怎么让它停下。
三种触发
- 定时(schedule):cron、Codex Automations、Claude Code
/loop 5m …——心跳式,每隔一段醒来一次。 - 事件(event):PR 有新评论、CI 失败、收到 Slack 消息时触发——被动响应。
- 目标(goal):
/goal给一个完成条件,循环一路跑到条件满足才停——主动追目标。
三道必须焊死的停止闸
这是循环工程里最不能省的部分。少任何一道,循环都可能变成烧钱机器[4][5]:
成本的账要重算。在循环时代,成本从「生成 token」转移到了「循环管理」:单次调用可能只花两三千 token,但循环跑 10 轮就是 10 倍,再叠加 subagent 派生、状态读写、观测开销[4]。据报道,Uber 给每位工程师设了每月约 1500 美元的 AI 预算上限;而没有护栏的循环,曾在 4 个月里烧光了整年的预算额度[4]。
最阴险的失败模式不是炸得很响,而是无声自旋:循环对着同一个失败测试改了 10 轮、每轮都「以为这次能成」,既没修好也没停下,直到你看见账单。所以「无进展检测」要做成确定性的——数到相同错误出现 2~3 次就果断停,别指望模型自己醒悟。
Loop 与 Harness:谁站在谁的肩上
Loop 和 Harness,听起来都像「agent 的外壳」,到底什么关系?
这是最容易被混淆的一对概念,但分清它们,整个图景就清楚了。Harness(运行环境)装备的是「单次 agent 运行」——它是包在一次运行外面的完整基础设施:能用的工具、保命的护栏、自纠错的反馈回路、给人看的观测层;展开有七个平面:循环策略、工具面、上下文管理、沙箱隔离、多 agent 路由、观测、模型路由[4][12]。
Loop(循环)则站在 harness 之上。harness 让一次运行跑得稳;loop 负责反复发起运行——按计划戳醒 agent、派生 helper、发现新工作、验证、持久化、决定下一步,自己喂自己[3][4]。用 Osmani 的话:harness 装备一次 agent run,loop 是那个「按计划不停戳 agent、派帮手、自我供给」的东西,loop 工程比 harness 高一层楼。
一个好记的分工:harness 是「驾驶舱」——让一次飞行安全可控;loop 是「航空公司的排班系统」——决定这架飞机一天飞几班、飞哪、什么时候该停飞检修。你可以只有驾驶舱(每次手动起飞),但有了排班系统,飞机才能在你睡觉时持续创造价值。
工具与开源全景
想今晚就搭一个循环,有哪些现成的东西可以用?
好消息是,到 2026 年中,循环工程需要的零件大多已经内置进产品里了[1][4]。两大 coding agent 的底层形状几乎一样:
| 能力 | Claude Code | OpenAI Codex |
|---|---|---|
| 调度 / 触发 | /loop、/goal、cron、GitHub Actions | Automations 标签 |
| 状态跟踪 | Markdown / 经 MCP 接 Linear | Linear 连接器 |
| 子代理定义 | .claude/agents/ | .codex/agents/ |
| 隔离 | git worktree / --worktree | 内置 worktree |
| 技能 | SKILL.md + $name | 同格式 |
而真正点燃这个概念的,其实是开源社区里那些「土法」循环——它们证明了循环不需要花哨的框架,一段 bash 就能起步[4][5]:
- ralph 循环(Geoffrey Huntley,2025 年):一个围绕
PROMPT.md的 bash 管道,每轮重置上下文、从文件读状态——「重置上下文」这一招后来成了对抗腐烂的标准做法。 - Gas Town(Steve Yegge):用一个「Mayor(市长)」agent 协调 20–30 个 Claude Code 实例并行干活,是「多 agent 编队」的早期范本。
- roborev:一个专门做「评审闸」的循环,把 reviewer 的意见持续喂回 PR。
至于 Cursor 和 GitHub Copilot:它们更偏「IDE 里的协作 agent」和「围绕 PR 的助手」,循环原生性弱于 Claude Code / Codex——能用,但要自己补调度和编排[4]。
/loop 10m 审查 PR #123,CI 红就修,绿且通过审查就停。先把这一行跑通,你就已经在做循环工程了。企业规模:管理 Agent 车队
一个循环好用,于是你复制了第二个、第十一个——然后呢?
循环一旦好用就会繁殖,单个循环的玩法到了车队规模会立刻翻车。TrueFoundry 总结了车队级的四类新麻烦[6]:共享状态(多个循环动同一个仓库/队列,经典并发 bug)、资源争抢(十一个循环抢配额和 GPU,吵闹邻居问题)、fan-out(subagent 并行委派)、触发流水线(发现→分类→修复→发布的有序流水线与背压)。
对付这些,靠的是把「散落的脚本」变成「可治理的车队」:每个循环都注册成一条agent 定义(模型、MCP 服务、skills、指令)进一个目录(registry),从而能按 agent 记身份、按循环设预算和限流[6]。运行时的核心组件是两道网关:
安全上有个干净的框架——在四个钩子上都挂护栏[6]:LLM 输入(提示注入检测)、LLM 输出(PII / 密钥检测)、MCP 调用前(对工具输入查注入)、MCP 调用后(对输出查密钥,按需脱敏 / 拦截)。不可逆动作(合并、删除、部署)一律走组织级人工审批闸;读和写用不同权限的 agent,而不是靠提示里写「请小心」。还有个常被忽略的点:重试只有在工具支持幂等键时才安全——网关能帮你重试,但循环的副作用必须自己设计成可重复执行[6]。
还要警惕三种「Day-2」失败[6]:静默漂移(被弃用的模型仍能通过自己的 checker)、不安全变更(skill 升级回归了没测到的用例)、死重(一个又贵又流行的循环吃掉整张账单)。对策是同一套工程纪律:在线评估、钉版本 + 灰度闸、按循环记账并定期下线低 ROI 的循环。
三个新风险,与一句心法
循环越顺手,有没有什么东西,反而被它悄悄拿走了?
有。Osmani 在文章里专门留了一节给这件事,因为这三个风险有个共同的诡异之处——循环变得越好,它们反而越严重[1]:
Osmani 举了个扎心的对照:两个人用同一个循环,会得到完全相反的结果——一个人用它去加速自己已经深刻理解的工作,另一个人用它去逃避理解。工具一样,分野在人[1]。他自己也承认那个向下螺旋:「我要是不亲自评审代码,质量就会下降……于是陷入恶性循环。」
所以这篇所有内容,最后收束成一句心法:Build the loop. Stay the engineer.(把循环造出来,但你仍然要当那个工程师。)
换句话说:循环工程提升的是你的杠杆,不是你的责任豁免。像一个「打算长期留在工程师位置上」的人那样去建循环,而不是像一个「只想按下启动键」的人。
从 0 到 1:今晚怎么开始
道理都懂了,那第一步具体做什么?
循环工程最友好的一点是可以渐进,不必一上来就搭车队。按这三级走[4]:
/loop 10m 审查 PR #123:CI 红就修,绿且通过审查就停。 体会「设计一次、它自己跑」的感觉。PROMPT.md,用 bash 包一个带 max_iter 护栏和测试闸的循环。加上无进展检测。/goal 跑长目标,沉淀 skills,跑在云端会话(关上电脑也不断),再引入 maker/checker 多 agent 监督。按场景选型
/loop + /goal最后,用三句话带走全文:① Loop Engineering = 不再逐轮 prompt,而是设计那个替你 prompt 的循环——agent 工程的第四次重心上移。② 一个循环的灵魂是「验证」和「停止」:没有独立验证就是在批量造垃圾,没有三道闸就是在烧钱。③ 循环放大的是杠杆,不是责任——Build the loop, stay the engineer。
参考资料
本文概念、定义与事实核实于 2026 年 6 月;Loop Engineering 是 2026 年 6 月才成形的新概念,部分数字(如个别公司预算、PR 数量)来自社区报道与二手聚合,文中已就确定性措辞标注,具体以各来源原文为准。