3547 words
18 minutes
Loop Engineering(循环工程):从概念到实战

Loop Engineering(循环工程):从概念到实战#

整合中英文网络资源后,本文系统讲解 Loop Engineering 的概念、架构、设计杠杆,并以腾讯新闻 2026/07 报道的真实生产案例(日志 Bug 自主修复闭环,一周 ERROR 从 1210 条降到 47 条)做完整拆解,最后给出最小可运行的 Python 实现示例。

一、起源:一个共识在一周内成型#

2026 年 6 月初的短短一周内,三位分别身处不同 AI 巨头的人,几乎同时说出同一句话:

  • Peter Steinberger(OpenAI/OpenClaw 作者):“你不该再 prompt 编程 agent,你该去设计那些 prompt agent 的循环。”
  • Boris Cherny(Anthropic Claude Code 负责人):“我不再亲手 prompt Claude 了。我运行着一些循环,由它们负责 prompt Claude 并决定下一步做什么。我的工作变成了写这些循环。”
  • Addy Osmani(前 Google Chrome DX 负责人)随后写了七千字长文,正式给这个概念定名:Loop Engineering

Andrej Karpathy 补了一句:“把自己从瓶颈中移除。投进去极少的 token,让海量的事情在你的视角之外自动发生。”

用一句话概括定义(综合 Addy Osmani 与 Saulius 的表述):

Loop Engineering 不再由你亲自向 agent 发送指令,而是设计一套系统——它自己发现工作、分发执行、验证结果、持久化进度、决定下一步,并按节奏定时运行。你从”循环里的操作员”变成”循环外的设计者”。

二、它在演进谱系中的位置#

层级关注点一句话
Prompt Engineering一次指令把话说清楚
Context Engineering上下文窗口把对的信息喂进去
Harness Engineering单次运行的脚手架给 agent 一套趁手的工具与环境
Loop Engineering让脚手架自己定时跑、自我喂料把”做好一次”变成”自动地做很多次”

关键区分(来自 shuji-bonji 的辨析):

  • 内层循环(inner loop):单 agent 内部的 model → tools → context → repeat,ReAct 时代已解决,不是竞争焦点。
  • 外层循环(outer loop):原本由人类承担的”写 prompt → 读 turns → 写下一条 prompt”——这才是 Loop Engineering 在自动化的一层。

放在更长的演进脉络里看:2022 年 ReAct 论文奠定了”边想边做”的理论起点;2023 年 AutoGPT 把它初步工程化为可放手运行的早期产品;2025 年业界觉醒了”主动设计 Loop”的工程意识;2026 年 6 月 Addy Osmani 的长文《Loop Engineering》让它正式落地为一套系统化的工程体系。

三、核心架构:五步动作 + 六块积木#

来自 asixiv 整理的 Anthropic playbook 与 Addy Osmani 原文。

一个 loop 的单轮五动作(moves)#

Discovery → Handoff → Verification → Persistence → Scheduling
发现工作 分发执行 验证结果 持久化进度 调度下一轮

实现这五动作需要的六块积木(parts)#

积木作用对应动作
Automation(自动化触发)定时/事件驱动,让 loop 真正”转起来”Scheduling
Worktree(git 工作树)并行 agent 不互相踩文件Handoff
Skill(SKILL.md)把项目约定固化,不用每次重新解释Discovery
Connector(MCP 连接器)让 loop 触达外部系统(Jira、Slack、DB、API)Handoff
Sub-agent(子 agent)写代码与查代码分家——maker/checker 分离Verification
Memory(持久记忆)落在磁盘上的 STATE.md / 看板,跨 session 记住进度Persistence

记忆这第六块最容易被忽视,但所有长跑 agent 都依赖它——“模型会忘,仓库不会”

四、五个设计杠杆#

eesel.ai 把整篇拆解成五个可调的杠杆:

  1. Tools(agent-computer interface):agent 能干什么。Anthropic 在 SWE-bench 上花在优化工具的时间比优化 prompt 还多,并把这条经验命名为 ACI(agent-computer interface),相当于 agent 的 UI。Simon Willison 更偏好纯 shell 命令,因为”编码 agent 真的很擅长跑 shell 命令”。
  2. Stopping conditions:成功条件 / 最大迭代 / 预算上限 / 无进展检测。没有终止逻辑的 loop 不是自主,是失控。 Anthropic 原话:“It’s also common to include stopping conditions (such as a maximum number of iterations) to maintain control.”
  3. Context management:压缩(compaction)、笔记(NOTES.md)、子 agent 把几万 token 折叠成 1-2k 摘要。原因——recall 随 token 数增长而衰减,必须主动策展。
  4. Verification最被反复强调的一条——必须由独立上下文(理想情况下换模型)做评分,agent 不能批自己的作业。Anthropic 的做法是维护一份 200+ 条 e2e 特性列表,每条标 passes: false,agent 不能擅自标完成。
  5. Guardrails:沙箱、最小权限凭据、预算上限。Simon Willison 给 Claude Code 一个独立 Fly.io 组织 + 5 美元预算,防止失控 loop 烧真钱。

eesel.ai 把这一切用一句话钉死:“在 loop engineering 里,验证就是设计本身。一个有优秀 prompt 但验证薄弱的 loop 依然会失败;一个 prompt 平平但验证强大的 loop 会收敛。“

五、详细案例:日志 Bug 自主修复闭环#

下面这个案例来自腾讯新闻 2026/07 报道的真实生产环境(AI 云诊断系统维护),是迄今为止讲得最完整的一个 Loop Engineering 落地实例。

业务背景#

团队维护一个 AI 驱动的云服务器诊断系统。讽刺的是,这个系统本身也有一堆线上问题要修。痛点是:AI 帮你写代码很快,但代码上线之后的维护循环——发现问题 → 查日志 → 定位根因 → 写修复 → 跑测试 → 上线——推动这个循环转起来的,还是你

Before 状态#

一周 1210 条 ERROR,散落在 3 个日志库,类型从上游超时到 LLM 幻觉都有。值班同事手动复制日志 → 喂 AI → 对代码 → 写修复 → 跑测试 → 提 CR → 等发布,每条平均 48 分钟。

Loop 设计#

一句话触发,Agent 跑完整条链路:

发现日志 Bug → 跨 3 个 Logstore 关联查询
→ 7 个子命令 + git log 交叉验证定位根因
→ 生成补丁
→ 跑完 334 条回归测试
→ 提交 CR
→ 预发部署
→ 集成验证
→ 钉钉通知审批

人只需要点”批准发布”。也可以由 Automation 每日定时跑:开发 → 部署 → 测试 → 预发 → 线上对比。

After 状态#

指标BeforeAfter变化
一周 ERROR 总量1210 条47 条↓ 96%
同类问题修复时间48 分钟15 分钟↓ 69%
人工介入次数(到预发)每次都要0 次全自动

把六块积木映射上去#

  • Automation:一条指令手动触发,或每日 cron 自动跑。
  • Worktree:每次跑修复在独立 git worktree,不污染主干。
  • Skill:项目约定(日志库 schema、根因定位套路、CR 模板)写成 SKILL.md,不每次重解释。
  • Connector:通过 MCP 连接日志服务、Jira、钉钉、CR 系统、预发部署平台——这是 loop 半径的关键。
  • Sub-agent:builder 只写代码,checker 只查代码(独立上下文,避免”自己批自己作业”)。checker 跑 334 条测试作为硬性验证。
  • Memory:每轮把”尝试过的根因、跑过的命令、被拒的修复”落到 STATE.md,明天接着今天跑。

为什么这个 loop 能 96% 降错而别的 loop 烧钱#

关键就一句:循环的本质是生成器接上验证器。没有验证器,自动化只是在更快地烧 token。

  • 弱循环:Agent 猜测根因 → 直接改 → 报”已完成”。这就是把 retry 包装成 loop。
  • 强循环:Agent 先复现 → 用测试反馈自我纠正 → 独立 checker 拿 rubric 评分 → 通过才推进 → 失败带诊断进入下一轮。

这个区分正是 Saulius 原文强调的:“A loop is not ‘run the agent again on a schedule.’ That is just a more expensive way to fail repeatedly.”

六、最小可运行示例#

基于 saulius.io 给出的 Python 骨架(用 Anthropic SDK),保留了 loop 的三个结构性特征:反馈信号、独立 verifier、跨轮记忆。

import anthropic
import subprocess
from pathlib import Path
client = anthropic.Anthropic()
MEMORY = Path("STATE.md")
RUBRIC = "all tests in tests/ pass; no new mypy errors; diff <= 200 lines"
MAX_ITERS = 20
def run_tests():
"""反馈信号——loop 的命脉"""
r = subprocess.run(
["pytest", "tests/", "--tb=short"],
capture_output=True, text=True,
)
return r.returncode == 0, r.stdout + r.stderr
def worker(goal, feedback):
"""生成器:写代码 / 修 bug"""
memory = MEMORY.read_text() if MEMORY.exists() else "(no prior attempts)"
prompt = f"""Goal: {goal}
Prior attempts and rejected approaches:
{memory}
Latest test feedback:
{feedback}
Diagnose the ROOT cause (not symptom), make the smallest fix,
do not refactor unrelated code."""
resp = client.messages.create(
model="claude-opus-4-7", # 截至发稿已被 claude-opus-4-8 接替,4.7 仍为合法 ID;任选一个当前可用的 opus 级模型即可
max_tokens=4096,
messages=[{"role": "user", "content": prompt}],
tools=[{"name": "edit_file", "description": "edit a file"}],
)
return resp
def verifier(goal):
"""独立 checker——换上下文,最好换模型"""
passed, output = run_tests()
if passed:
return True, "tests green"
resp = client.messages.create(
model="claude-haiku-4-5", # 故意换一个模型
max_tokens=1024,
messages=[{"role": "user", "content": f"""
Goal: {goal}
Rubric: {RUBRIC}
Test output: {output[:4000]}
Does this meet the rubric? Answer ONLY 'PASS' or 'FAIL: <reason>'."""}],
)
verdict = resp.content[0].text
return verdict.startswith("PASS"), verdict
def loop(goal):
for i in range(MAX_ITERS):
feedback = run_tests()[1] if i > 0 else "(first run)"
worker_resp = worker(goal, feedback)
# 执行 worker 的 tool_calls(编辑文件、跑命令)...
ok, verdict = verifier(goal)
# 落盘——agent 会忘,仓库不会
MEMORY.write_text(f"\n## iter {i}\nverdict: {verdict}\n")
if ok:
return f"done in {i+1} iterations"
return "hit max iters"
loop("fix: company name with single quote crashes bill save")

三个结构性选择的含义:

  • run_tests() 是反馈信号——没有它就只是链式调用。
  • verifier() 跑在独立上下文、用不同模型——这是能说”不”的关键。
  • MEMORY 落盘——明天接着今天,而不是从零重复。

Claude Code 里同样形态的对应物:/loop 让 agent 按时间表重复执行;/goal 设定一个目标,agent 持续工作直到达标或卡住(每个 turn 后由一个独立的小模型判断”完成条件是否达到”——这正是 maker/checker 分家应用在停止条件本身);hooks 让特定事件确定性触发脚本(agent 编辑文件就自动跑 lint,一轮结束前自动验证构建)。

七、四个会悄悄累积的债#

asixiv 把它们称为”loop 的四个静默成本”,会相互强化:

  1. Verification debt(验证债):验证器松一寸,生成器就放飞一丈。未被验证的产出会运行更久、花更多钱,进而产生更多未被验证的产出。
  2. Comprehension rot(理解腐化):你不再坐在循环里,对系统的理解会过期——你保留所有权,但失去理解。
  3. Cognitive surrender(认知让渡):把判断外包给 loop,自己逐渐看不懂产出。
  4. Token blowout(token 爆炸):失控 loop 会自动烧钱,与验证债互相强化。

最关键的防线:定期从”生产模式”切回”发现模式”——亲自跑一轮 loop,问问”这个压缩还配得上信任吗”。理解是不可转移的,权限可以下放,权威必须留在人手里

shuji-bonji 把这条线画得很清楚:人坐在外层循环里是”发现模式”(对话、思考出声、探索性委派),把外层循环固化进系统是”生产模式”(指令文档、阶段切分、明确的验收标准)。Loop Engineering 不是全部的生产模式,而是把”循环这个动作本身”也外化到系统里的极端。每一次自动化都要重问:什么能交给系统同时保住它的理解?什么必须不交出去?

八、Claude Code 里的对应物#

Claude Code 已经把上面六块积木都内建了,对应关系:

积木Claude Code 实现
Automation/loop(按间隔重跑)、cron 任务、hooks(PreToolUse / PostToolUse / Stop / SubagentStop)、GitHub Actions 推到云端
Worktreegit worktree--worktree / -w 标志、subagent 上的 isolation: "worktree"
SkillSKILL.md(项目约定、构建步骤、“当年那个事故后定下的规矩”)
ConnectorMCP(Model Context Protocol),一个工具写的 connector 通常能直接换到另一个工具上用
Sub-agent.claude/agents/ 下的子 agent 定义,可以指定不同模型与 reasoning effort
MemoryCLAUDE.md(项目根、用户全局、子路径三层级联)、磁盘上的 STATE.md、外部看板

值得单独提一句 /goal:它和 /loop 不是一回事。/loop 是按 cadence 重跑,/goal 是持续工作直到条件为真——每轮结束后由一个独立的小模型判断停止条件是否达到,写代码的那个 agent 不参与打分。这是 maker/checker 原则(银行业务里的大额转账录入与审核必须分人)应用在停止条件本身。Addy Osmani 原文的原话点明了这层设计意图:“a fresh model decides if the loop is done instead of the one that did the work, the maker and checker split applied to the stop condition itself。“

九、总结#

Loop Engineering 不是把 prompt 改成 while true。它是一个具体的设计动作:把外层循环——那个原本由你承担的”读 turns → 写下一条 prompt”的角色——拆进系统里,让系统自己发现工作、分发、验证、记忆、调度。

落地最小集合:自动化触发 + 工作树隔离 + Skill 固化约定 + MCP 连接器 + maker/checker 子 agent 分家 + 磁盘上的 STATE.md。最不可省略的是独立 verifier——agent 不能批自己的作业。

真实案例(腾讯的 1210 → 47)证明它有效;但 asixiv 的总结也清醒:“同一个 loop,两个人搭出来,结果可以是相反的”——差距就在那几个能说”不”的检查点上。

用一句话收尾,也是这个领域一周内收敛出来的共识:别再 prompt agent,去设计让 agent 自己跑的循环——但要像”打算继续当工程师”的人那样去搭,而不只是”按下启动键”的那个人。

参考来源#

  • Addy Osmani《Loop Engineering》Substack 长文
  • Saulius《Loop Engineering: Designing the System That Drives the Agent Instead of Prompting It》
  • eesel.ai《Loop engineering explained: designing AI agent loops in 2026》五杠杆拆解
  • shuji-bonji《Loop Engineering — Moving the Outer Loop into the System》内/外循环辨析
  • asixiv.org《Loop Engineering: The Anthropic Playbook for Designing Systems That Prompt Your Agents》
  • LangChain《The Art of Loop Engineering》
  • Claude Code 官方文档《How Claude Code works》agentic loop 章节
  • Oracle Blogs《What Is the AI Agent Loop?》
  • 腾讯新闻《Loop Engineering 实战:实现从日志扫描到预发部署的全自主闭环》(2026/07)
  • 腾讯云开发者《Loop Engineering 循环工程:别再 Prompt Agent 了》
  • 百家号《Loop Engineering:被高估的循环》《AI 编程进入 Loop 新阶段》
  • 知乎专栏《AI Agent 当下的热门范式 Loop Engineering 之深度剖析》
Loop Engineering(循环工程):从概念到实战
https://sgjki547.top/posts/loop-engineering-循环工程-从概念到实战/
Author
SGJki
Published at
2026-07-12
License
CC BY-NC-SA 4.0