大模型AI-LoopEngineering

一句话理解 Loop Engineering
Loop Engineering(循环工程)的核心定义来自 Google AI 总监 Addy Osmani 在 2026 年 6 月发表的博客,原文只有一句话:

Loop engineering is replacing yourself as the person who prompts the agent. You design the system that does it instead. (循环工程,就是把你从"给 Agent 写提示词的人"这个位置上替换掉。你不再亲自写提示词,而是去设计一套能自动完成这件事的系统。)

换句话说,AI 开发的重心正在从"手写 Prompt"转向"设计一套能自动完成提示、执行、验证、迭代的闭环系统"。工程师的角色也随之从"操作者"升级为"系统设计者"。

这个转变有一条清晰的演进脉络:

从 Coding 到 Vibe Coding:我们从"自己写代码"变成了"提需求"。

从 Vibe Coding 到 Loop Engineering:我们从"提一个需求"变成了"提一套闭环流程"——不再只告诉模型做什么,而是把开发、测试、验收、调优、反馈迭代的完整链路都定义好,让模型在流程里自己转起来。

兴起背景:为什么大佬们突然都在谈 Loop
近期 AI 行业几位标志性人物密集讨论这一话题,构成了 Loop Engineering 走红的直接背景:

Boris Cherny(Anthropic,Claude Code 负责人):公开表示自己使用 Claude Code 时已经不再手写 Prompt,而是转向编写 Loop,用 Loop 驱动工作流。原话流传甚广:"I don't prompt Claude anymore. I have loops running that prompt Claude. My job is to write loops."

Peter Steinberger(OpenClaw / 小龙虾创始人):在 X 上指出"你不应该再手动提示编码 Agent,而应该设计让循环去提示它们的系统",该观点约 650 万浏览,引爆讨论。

Andrej Karpathy(Vibe Coding、LLM-Wiki 提出者):强调"你必须把你自己从 Loop 的执行过程中移除出去"。

Addy Osmani(Google AI 总监):2026 年 6 月发表长文,系统性定义 Loop Engineering,提出六大构建块,为一个病毒式观点提供了可讨论的工程词汇。

根本动因,是人们在原有基础上对效率的再一次追求。回顾 AI Coding 的演进:先是不满足于自己写代码(让 AI 写),再不满足于短任务(用 Agent 跑长链条),再不满足于只在本机跑(上云、上移动端,如 OpenClaw),再不满足于 Skill 静态固定(希望自进化);而现在,人们不再满足于工具本身仍需大量人工交互,于是希望把"开发→验证→反馈调优"的整个循环都设计好,让 Agent 自主 Loop 出一个更完善的系统。一个系统能否把这个外部 Loop 跑得又好又稳,才真正体现了它处理长程任务的核心能力。

四代演进:从一句话到一个系统
把 Loop Engineering 放进 AI 工程的演进史中看,它是"视角不断向模型外部膨胀"的第四代。每一代都不是否定前一代,而是发现前一代解决的问题只是冰山一角,真正的瓶颈在更外层。

代际

时间

关心什么

核心问题

放大倍率

Prompt Engineering

2022

一次推理的措辞

怎么措辞让模型输出更好

几百 token

Context Engineering

2025

一次推理的整个输入窗口

窗口里装什么、丢什么

十几万 token

Harness Engineering

2026 初

模型外的整套运行环境

工具/沙箱/记忆怎么搭

模型外全部脚手架

Loop Engineering

2026-06

跨多次推理的时间控制

何时继续/停止/回退

完整循环系统

演进的驱动逻辑是"上一代解决自身问题后暴露出更外层瓶颈":

Prompt 措辞再精妙,若 context 缺关键信息,模型仍做不对 → 催生 Context Engineering。

Context 管好了,但工具接口差、无沙箱、无持久记忆 → 催生 Harness Engineering。

静态组件搭好了,但循环怎么跑(何时停、错误怎么恢复、成本怎么控、长 Loop 怎么防 context rot)成了核心难题 → 催生 Loop Engineering。

一个便于记忆的类比:Prompt 是"写一封邮件的措辞",Context 是"邮件里附什么附件",Harness 是"整个办公桌的布置(纸笔、电话、文件柜、门锁)",Loop 则是"每天的工作节奏(何时处理邮件、开会、复盘、下班)"。

Agent = Model + Harness。 Harness 又分静态部分(搭一次跑很久的"舞台":工具定义 Tool Surface、Agent-Computer Interface、安全沙箱 Sandbox、磁盘记忆 Memory Files)与动态部分(每次推理都在变的"节奏":Context Engineering 管单次输入,Loop Engineering 管多次推理的串联)。这条"静态/动态"分界线揭示了三点:四代演进是包含而非替代;静态部分的设计质量决定动态部分的上限;当模型能力增长放缓时,Harness 的工程质量会从"加分项"变成"决定生死的全部"。

三派观点与争议
乐观派(Steinberger、Osmani、Cherny):工程师角色从操作者升级为系统设计者;Boris Cherny 透露大量代码由 routines 编写,Claude Code 用户报告同时运行 10-15 个并行 Agent。

实用派(nrs、Jason Zhou):关键不是"是否用循环",而是"你设计的是哪种循环"——量化研究循环、设计迭代循环、编码循环、产品反馈循环各有不同。

审慎派(AlphaSignal 等):① 验证不可靠——Agent 自称"完成"≠真正完成,必须信任确定性验证器;② 理解力债务——"Loop 交付了,不代表你理解它";③ 认知投降——循环越顺,人越容易放弃判断力;④ 成本爆炸——token 消耗极快,应分诊阶段保持低成本。

Osmani 特别强调,Loop 改变了工作方式,但没有把人从工作中删除,反而放大三个老问题:验证仍在你(无人值守也会无人值守地犯错,verifier 的 "done" 是声明不是证明);理解力会腐烂(comprehension debt,Loop 越快产出你没写的代码,你对代码库的理解差距越大);舒适姿态最危险(cognitive surrender,很容易停止思考、接受一切输出)。他的忠告是:"Build the loop. But build it like someone who intends to stay the engineer, not just the person who presses go."

Loop Engineering 的六大核心构件
Addy Osmani 把一个完整的 Loop 拆解为若干系统级原语。综合几篇文章,可归纳为"五个构件 + 一个记忆层",且这些能力已内建于 Codex 与 Claude Code——这意味着 Loop 设计不再绑死于某个工具。

1. Automations(自动化触发)——Loop 的心跳
没有它,Loop 只是"手动跑了一次"。职责是 discovery + triage(发现 + 分类),而非直接写代码:自动巡检昨天的 CI 失败、新增 issue、最近 commit 引入的问题、依赖安全漏洞、长期未处理的 TODO——把团队的被动响应变成主动巡检。

Codex:Automations 面板选项目、写 Prompt、定频率、选本地或后台分支跑;有问题进 Triage 收件箱,无问题自动归档。/goal 命令会在多轮对话中持续工作,直到设定条件满足,支持暂停/恢复/清除。

Claude Code:靠 Cron 调度 + Hook 实现。/loop 让 Prompt 按间隔重复跑,/goal 持续执行到可验证条件成立,还能在 Agent 生命周期节点用 Hook 触发 Shell 命令。

/loop 与 /goal 的区别很关键:/loop 按固定节奏重复同一个 Prompt(如每天凌晨跑一次 lint);/goal 持续执行直到独立小模型判定"可验证条件成立"(如"所有测试通过且 lint 无误")——判定者不是写代码的那个 Agent,这是 maker-checker 分离在退出条件上的应用。

2. Worktrees(工作树隔离)——多 Agent 并行的物理隔离
多个 Agent 同时改同一文件会冲突,就像两个工程师不打招呼往同一行代码提交。Git Worktree 是磁盘上一个独立的工作目录,有自己的分支但共享同一仓库历史,因此一个 Agent 的改动碰不到另一个的代码。注意它不是 branch(逻辑概念),而是物理隔离;最后通过 git merge 合回。

Codex:内置 Worktree,每个 thread 自动隔离。

Claude Code:--worktree 参数在独立 checkout 开会话,或给子 Agent 设 isolation: worktree,每个 Agent 拿到一份用完自动清理的代码副本。

3. Skills(可进化的技能包)——把项目知识外化到磁盘
Skill 是可渐进式披露、可复用的能力包,由 Markdown 文档(SKILL.md)+ 脚本 + 资源组成。它与"规则/约定"不同:规则是一句话约束(如"不要 mock 数据库"),始终遵守;Skill 是操作流程(如"对这个 repo 做 PR review"),被触发时执行。

Osmani 提出 intent debt(意图债务):Agent 每次启动都会失忆,用自信的猜测填补意图空白。Skill 把意图外化到磁盘、消除猜测。没有 Skill 的 Loop 每轮从零推导项目约定,有 Skill 的 Loop 能力可以复利积累——越跑越聪明。经验法则:同一套操作让 Agent 做三次以上,就该提取成 Skill。

4. Connectors / Plugins(连接器/插件)——让 Loop 触达真实工具链
基于 MCP 协议,把外部 API 接入 Agent:读 Linear/Jira 的 issue、查数据库、调 staging API、发 Slack、开 PR。没有 Connector,Agent 只是封闭的推理引擎;有了它,Loop 才从"告诉你它能修什么"变成"自动开 PR、关联 ticket、CI 绿了通知 channel"。Codex 与 Claude Code 都说 MCP,Connector 通常可跨产品复用。这也是目前落地最广泛的基础设施。

5. Sub-agents(子智能体)——Loop 中最有价值的结构
Osmani 原话称其为 Loop 中最有价值的结构,核心原则是:**写代码的模型不能给自己打分。**典型分工是一个 explore(探索)→ 一个 implement(实现)→ 一个 verify against spec(对照规范验证)。

之所以不让主 Agent 自我检查,是因为它"当局者迷"——就像人写完代码总觉得完美,换个人一看就发现问题。引入独立的验收 Sub-agent,本质是用角色隔离打破认知盲区,刻意制造一种"博弈"关系。在无人值守的 Loop 里,一个你真正信任的 verifier,是你能放心离开的唯一理由。

注意事项:Sub-agent 并非越多越好,缺乏主 Agent 的有效调度会导致各干各的、失去一致性;探索/分析类子任务可大胆拆分,但最终结果须汇总回主 Agent,验证类 Sub-agent 务必保持独立(避免"既当运动员又当裁判员")。每个 Sub-agent 都有独立的模型调用与工具交互,token 消耗更高,应花在值得 second opinion 的地方。

6. Memory / State(记忆/状态)——Loop 的脊柱
追踪"哪些事已经做完了"。可以用 Markdown 文件(AGENTS.md、progress 文件、STATE.md、LOOP-STATE.json),也可以通过 MCP 连接 Linear 这类工具同步。核心是任何"活在单次对话之外"的持久存储,记录 discovered → triaged → in-progress → verified → done 以及失败原因。

为什么重要:Agent 在 session 之间会完全失忆,没有 Memory,明天的 Loop 不知道今天做过什么,会重复劳动或遗漏。Osmani 说它"Sounds too dumb to matter",但这正是每个长时运行 Agent 依赖的核心 trick。

工具原语对照表
构件

核心角色

Claude Code 实现

OpenAI Codex 实现

Automations

心跳调度,"偶尔检查"变自动循环

/loop、/goal、cron、Hooks、GitHub Actions

Automations 面板、/goal

Worktrees

隔离并行 Agent 工作目录

git worktree、--worktree、subagent isolation: worktree

内置 per-thread worktree

Skills

跨会话项目知识,避免冷启动

CLAUDE.md + Skills 插件

SKILL.md + Agent Skills

Connectors/Plugins

连接 GitHub/Slack/Jira 等

MCP servers + Plugins

MCP Connectors + Plugins

Sub-agents

Maker/Checker 分离,上下文隔离

.claude/agents/、agent teams

.codex/agents/ TOML 定义

Memory/State

跨会话持久状态

STATE.md、LOOP-STATE.json

Markdown / Linear via MCP

Maker / Checker 分离:为什么必须"生成者不当裁判"
这是 Loop 可靠性的基石,值得单独展开。根本问题是:同一个模型给自己生成的东西打分,天然有 bias——生成时注意力天然倾向自己输出的 token,模型没有真正的"自我怀疑"机制,在开放式任务(无客观 ground truth)中更容易自我确认。

分离 maker 和 checker,本质是把"生成"和"判断"解耦,用不同上下文、不同指令、甚至不同模型逼近更客观的验证。

Maker(生成者):产生候选方案,指令鼓励发散创造,可用温度较高、更大的模型;输入 = 目标 + 历史尝试记录(含被拒原因)+ 可用技能/工具。

Checker(验证者):判断是否满足预设条件,指令严格保守、逐条核对("宁可误杀,不可放过"),可用温度低、逻辑严谨的模型甚至规则引擎 + 小模型混合;输出必须结构化:通过/不通过 + 违反了哪条规则 + 建议修改方向,这样 maker 下一轮才有修正依据。

改造模式(针对单个目标的闭环):

用户请求 + 目标 + 约束

outer loop 初始化 state(空尝试记录)

┌─────────────────────────────────┐
│ maker 生成方案(参考历史失败原因) │
│ ↓ │
│ 执行方案(调用工具/修改配置) │
│ ↓ │
│ checker 验证方案 │
│ ├─ 通过 → 输出方案,结束 │
│ └─ 不通过 → 记录失败原因到 state │
│ ↓ │
│ 回到 maker(重试) │
└─────────────────────────────────┘
一键获取完整项目代码

关键改动点:不再让同一 Agent 既生成又验证;增加持久化的失败记忆(把"方案 + 拒绝原因"写入 state,下轮提醒 maker 避坑);设置重试上限(如 3 次,超限挂起转人工);支持并行 maker(高自由度任务同时生成多个方向,各自由 checker 验证只留通过的)。

需要澄清的三组混淆:

Maker/Checker ≠ 单元测试:单元测试是固定确定性的;checker 可以是动态的、甚至由模型驱动。

Maker/Checker ≠ RLHF:RLHF 是离线训练偏好模型做 alignment;checker 是在线运行的实时验证器,直接参与 loop 决策。

Maker/Checker ≠ Self-critique:Self-critique 是同一模型自己批评自己,仍有 bias;分离(尤其用不同模型)后 bias 明显降低。

递归 Goal:从"写步骤"到"写目标"
与 maker/checker 并列的另一大启发,是从 workflow(DAG,显式编码求解路径)升级为递归 goal(声明可验证的目标条件 + 允许的行动空间,由闭环系统自行寻找步骤序列)。

/goal 就是这个原语的实现:给一个可验证目标(如"test/auth 全部通过且 lint 无误"),系统持续迭代直到独立 checker 判定为真;每次尝试结果写入外部 state 供下轮参考。核心特征是目标驱动(从 how 到 what)、递归迭代、分离校验、持久化记忆。

维度

workflow(旧做法)

递归 goal

工程师输入

步骤序列 + 分支条件

目标条件 + 验收脚本 + 约束

路径确定

预先编码

运行时动态搜索

循环/迭代

手动展开或硬编码 while

递归调用自身,自动迭代

停止判断

DAG 条件节点

独立 checker 实时评估

失败后行为

走备选分支或终止

记录失败原因 → 重新规划 → 再试

对业务变化适应

低(需改 DAG)

高(只改目标条件)

注意点:目标必须可验证(模糊目标如"做得更好"无法工作);警惕搜索空间爆炸与成本不可预测(需硬上限 + 预算仪表盘);checker 误判会让 loop 失效(关键决策多 checker 投票或人工 fallback);它不必完全替换 workflow——稳定、路径已知的任务用 workflow 更高效,递归 goal 适用于探索性、变化频繁、路径不确定的任务。

伪代码 vs 真实差距
社区反复出现的 Loop 伪代码骨架:

state = init_state(goal) # 递归目标 + 暂存区
for step in range(MAX_STEPS): # 硬性上限:防止无限循环
thought = model.reason(state) # ReAct:先推理
action = model.choose_action(state)
result = tools.execute(action) # 触达真实环境
state = update(state, thought, action, result)
state = compact(state) # 控制上下文窗口
if verifier.passes(state): # 确定性验证 = 奖励信号
return success(state)
if no_progress(state) or budget.exhausted():
return escalate_to_human(state) # 死胡同 → 升级给人类
return escalate_to_human(state) # 超出步数 → 交还人类
一键获取完整项目代码

真正有工程价值的决策都在这十几行之外——模型是中间的黑盒,工程在于围绕它的循环。

维度

伪代码假设

真实挑战

验证

verifier.passes 一行搞定

确定性检查覆盖有限,LLM-as-judge 可被自圆其说

上下文

compact 一行搞定

长循环上下文窗口必然溢出,需精细外部化策略

终止

no_progress 一行搞定

重复同一错误与尝试新方案难以区分

目标

假设 goal 清晰可验证

"让 CI 变绿"是好 goal,"改善代码"是坏 goal

成本

不在伪代码中

无值守 Loop 的 token 成本可以轻易失控

长 Loop 的三大失败模式与对策
Loop 越长,以下三个问题越致命(短 Loop 里不严重,因为人每步都在):

失败模式

含义

对应方案

Context rot(上下文腐烂)

早期决策被遗忘,重新引入多轮前已修过的 bug

Compaction 历史压缩、Memory Files 磁盘持久化

Self-grading bias(自评偏高)

模型给自己的工作打分总是偏高

Sub-agent maker/checker 分离,验证者与执行者不同

No persistent state(无持久状态)

session 间失忆,下次不知上次做到哪

磁盘文件(feature_list.json、progress.txt、git commit)

这三大失败模式恰好对应 Harness 动态部分的三个层次:Context rot 由 Context Engineering 防,Self-grading bias 由 Loop 的 Sub-agent 架构防,No persistent state 由 Loop 的 Memory 层防。

使用建议与适用边界
Loop 不是银弹,用之前要想清楚:

适用场景:需求明确、验证标准清晰、可自动判定的任务。

风险提示:用 Loop 后中间过程你不参与,如果开头没把需求和验证逻辑写清楚,Loop 很可能从一开始就跑偏,烧了大量 token 结果还偏离预期。因此 Loop 对使用者"描述需求和验证的能力"要求其实更高了。

固定流程优先沉淀为脚本/Skill:如果流程固定、不需模型每次重新推理,直接写成脚本更稳、更省;每天重跑 Loop 既费 token,实现路径又可能漂移、不好复现。确实需要模型动态判断的任务,才做成可复用的 Skill 或 Loop。

能力不足时回归 HITL:如果你很难把需求和验证写清楚、把控不住 Loop 效果,老实回到 Human-in-the-Loop、先人工迭代几轮更稳妥经济。

一句话立场:**技术方法论没有对错,只有适不适合。**当你有明确需求和清晰验证标准时,Loop 是提效神器;当需求和验证都模糊时,人在中间反复反馈校正,反而可能更稳妥。别为了用而用。

一点延伸思考:范式迭代的速度与人的能力
从 prompt 到 loop,中间隔着 agent、workflow、state、checker、worktree、skill……而且它们不是简单替代,是叠加:你既要懂旧的,还得会新的。对比服务端从微服务到 serverless 走了六七年、每阶段都有缓冲期,LLM 应用这边的概念迭代只用了约两年,更像"进化、飞升"。

由此浮现的真正风险,不只是个人学不学得会,而是整个软件工程的稳定性:当工具在指数级进化、而人的能力在平均化甚至退化时,那些原本负责代码审查、架构设计、边界判断的"守门员"若被替换,LLM 生成的代码直接上线、Loop 自动跑,可能没有人有能力判断它跑得对不对。Osmani 的三个警告(验证在你、理解债、认知投降)会因此更尖锐。

因而,Loop 越强大,人的审查与判断力就越珍贵。未来的核心竞争力,或许不再是"写代码",而是"敢不敢让机器写代码 + 有没有能力兜底"——而后者远比前者难。让 Loop 做重复、可验证的工作,把省下的精力投入到理解、验证与判断上,才是"写 Loop 的人"真正该做的事。
————————————————
版权声明:本文为CSDN博主「匿名侠士」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012605629/article/details/162946437

posted on 2026-08-04 20:49  ExplorerMan  阅读(16)  评论(0)    收藏  举报

导航