Loop 工程
让 AI Agent 自己跑起来
从 ReAct 到 Loop Engineering,系统梳理 AI Agent 自主循环的工程方法论。理解 Anthropic、LangChain、Claude Code、Codex 这些产品背后真正的设计哲学。
01什么是 Loop 工程#
用一句话开篇,再讲清楚它和我们熟悉的 Prompt / Context 工程到底有什么区别。
Loop 工程是 2026 年 6 月被正式命名的新工程范式:与其手写每一句 Prompt 去驱动 Agent,不如设计一套能自主调度子 Agent、执行、验证、记录状态并决定下一步的循环系统,让 LLM 在人的监督下持续运转。
它的核心思想可以浓缩成一句话——关键不是再给 Claude 一句 Prompt,而是写让 Claude 自己 prompt 自己的 loop。这背后体现的是 AI 工程化思路的一次跃迁:人不再是按下"下一步"按钮的发动机,而是设计整套自驱系统的架构师。
但要注意:Loop 工程不是 Prompt 工程的替代品。Loop 内的每一轮仍然需要好的 Prompt,仍然需要被精确组织的 Context,仍然需要为单个 Agent 装备好工具脚手架(Harness)。它改变的是"由谁来按下下一步按钮",而不是按下按钮时该说什么。
02工程化范式金字塔#
Prompt → Context → Harness → Loop,AI 工程化的四层递进。
Loop 不是新算法,而是把"如何让 Agent 长时间无人值守地正确工作"工程化成可复用的组件清单和可验证的硬门禁。直接 Prompt 仍然有效,关键是分清场景:一次性、探索型任务用 Prompt;重复性、可自动判定的任务用 Loop。
03起源与演进时间线#
从 ReAct 论文到 Loop Engineering 命名,4 年的关键节点。
swyx 同期使用 Loopcraft,Anthropic 内部更倾向 harness for long-running agents,Cobus Greyling 沿用 Loop Engineering。三者描述的是同一现象,主导命名尚未定型。把它写入正式技术规范时需要标注上下文。
04核心架构#
从最简单的单步 Agent Loop 看起,理解感知—思考—行动—反思的闭环。
单步 Agent Loop(ReAct 范式)
这是最经典也是最底层的循环结构,所有更复杂的循环都是它的演变与组合:
五个核心要素:
- 感知(Observation):从环境/工具拿回客观反馈,而不是只靠模型自述。
- 思考(Thought / Plan):LLM 推理下一步该做什么。
- 行动(Tool Action):通过工具调用真正改变世界状态。
- 反思(Reflect / Memory Update):把这一轮的经验沉淀到下一轮可用。
- 终止判断(Stop Condition):目标达成 / 步数耗尽 / 人工介入,三者缺一不可。
Anthropic 的 /goal 与 Addy Osmani 的 Maker/Checker 分离都明确指出:写代码的 Agent 绝对不能给自己判定 done。这是 Loop 工程最核心的设计原则,没有之一。
05Addy Osmani 的六大组件#
一个生产级 Loop 至少需要这六类组件协同工作。
Automations · 自动化
/loop、/goal、cron、hooks、GitHub Actions。负责按节拍叫醒 Agent,是整个循环的心跳源。
Worktrees · 工作树
Git worktree 物理隔离并行 Agent,避免多个 Loop 互相踩踏。每个分支一个独立工作区。
Skills · 技能沉淀
SKILL.md 把项目知识、工作流、模板沉淀成可跨会话复用的资产,让每次循环不必从零学起。
Plugins / Connectors(MCP)
基于 MCP(Model Context Protocol,模型上下文协议)—— Anthropic 2024 年推出的开放协议,让 Agent 用统一接口接入外部工具与数据源:开 PR、改工单、发 Slack、跑测试。让 Loop 真正能动手。
Sub-agents · 子 Agent
Maker / Checker 分离 — 写代码的人不给自己打分。子 Agent 负责审计、评估、专项任务。
Memory / State · 记忆与状态
STATE.md、Linear、外部数据库。Loop 跨轮持久化的"记忆中枢",避免依赖上下文窗口。
"Build the loop, stay the engineer"——搭建 Loop,但你依然是工程师。Loop Design 比 Prompt Engineering 更难而非更简单。
06LangChain 四层循环堆叠#
Sydney Runkle 的工程模型:把 Loop 按"执行 → 验证 → 事件 → 改进"四层堆起来。
| 层级 | 做什么 | 核心价值 | LangChain 原语 |
|---|---|---|---|
| L1 Agent |
模型循环调用工具直到任务完成。ReAct 范式的工程化实现。 | 自动执行 | create_agent |
| L2 Verify |
给 L1 的输出打分,不达标带反馈回传 L1 重试。LLM-as-Judge。 | 保证质量 | RubricMiddleware |
| L3 Event |
webhook / cron / 消息触发 Agent,嵌入业务事件流。 | 嵌入生态、规模化 | LangSmith Deployment |
| L4 Improve |
用历史 trace 自动改写提示、工具、模型选择,让系统自我进化。 | 自我改进 | LangSmith Engine |
这一抽象的价值在于:每一层都有清晰的输入、输出和触发条件,工程师可以独立测试、独立部署、独立优化。而不是把所有逻辑塞进一个 while True 里。
07代码片段速览#
三段最具代表性的伪代码 — 从理论落到键盘上的最短路径。
① LangGraph 的最小 Agent Loop(L1)
LangChain 在 2026 年把"工具循环 + 验证 + 反思"的原语收敛成 create_agent。一段标准 ReAct 风格的 Agent 不超过 10 行:
from langchain.agents import create_agent
from langchain_anthropic import ChatAnthropic
from my_tools import search_web, run_tests, open_pr
# L1 · Agent Loop:模型循环调用工具直到收敛
agent = create_agent(
model=ChatAnthropic(model="claude-sonnet-4.5"),
tools=[search_web, run_tests, open_pr],
max_iterations=12, # 硬上限,防止失控
)
result = agent.invoke({"input": "修复 #482 并发起 PR"})
print(result["output"])
② Claude Code 的 /goal 工作流(独立 Checker)
把"是否完成"交给一个不同的模型判定,这是 Loop 工程区别于普通 while 循环的灵魂:
# /goal: 持续重跑直到独立 Checker 通过
goal: "为 src/auth/* 补到 90% 行覆盖率"
loop:
maker: # Maker:负责实际产出
model: claude-sonnet-4.5
action: write_tests + run_coverage
checker: # Checker:独立模型,只看证据不看过程
model: claude-opus-4.5
rubric:
- coverage_pct >= 90
- all_tests_pass == true
- no_test_marked_skip
on_pass: commit + open_pr
on_fail: feed_diff_to_maker + retry (max 5)
on_stuck: escalate_to_human # 连续 3 轮无进展 → 升级
③ MCP 子 Agent 配置(让 Loop 真正能动手)
Claude Code 与 Codex 现在都用类似的 .claude/agents/*.toml 来声明子 Agent,把工具和权限作用域绑死:
name = "reviewer" description = "对每个 PR 做安全 + 性能审计,写在主 Agent 之外" model = "claude-opus-4.5" # MCP 接入的工具白名单(最小权限原则) [[tools]] mcp_server = "github" allow = ["get_pr_diff", "post_review_comment"] [[tools]] mcp_server = "semgrep" allow = ["scan_diff"] # 子 Agent 永远不能直接合并主分支 deny = ["git_merge_main", "force_push"]
第 ① 段是 L1 Agent Loop 本身;第 ② 段把"独立 Checker"工程化(L2);第 ③ 段用 MCP + 子 Agent 把工具和权限作用域显式声明 — 三层叠起来就是一个生产可用的 Loop 骨架。
08主流循环模式对比#
从学术论文到 Anthropic 5 模式,挑对模式才能少走弯路。
| 模式 | 来源 | 核心思想 | 适用场景 | 终止条件 |
|---|---|---|---|---|
| ReAct | Yao 20222210.03629 |
Thought / Action / Observation 交替 | 知识问答、工具调用、决策 | 答案输出 / 最大轮数 |
| Reflexion | Shinn 20232303.11366 |
失败后写一段"经验"进入下一次尝试 | 代码、推理、长程任务 | 成功 / 反思上限 |
| Self-Refine | Madaan 20232303.17651 |
同一个 LLM 自批判 + 自修订 | 写作、代码、摘要 | 评分稳定 / 迭代上限 |
| Plan-and-Execute | Wang 20232305.04091 |
先 Plan 一次,再分步 Execute | 长程多步任务 | 计划走完 / 中途重规划 |
| Tree of Thoughts | Yao 20232305.10601 |
多路思路并行,BFS / DFS 评估剪枝 | 难推理(24 点、博弈、写作) | 解被找到 / 树预算用完 |
| Evaluator-Optimizer | Anthropic 2024 | 一个生成,一个评审,闭环迭代 | 翻译、复杂搜索 | 评审通过 |
| Autonomous Agent | Anthropic 2024 | LLM 自决定工具与步数,环境反馈驱动 | 编码、计算机使用 | 任务完成 / 最大迭代 / 人介入 |
| Loopcraft 四层堆叠 |
swyx + LangChain 2026 | 把上述循环按"执行→验证→事件→改进"堆四层 | 生产级 Agent 平台 | 各层各自的条件 |
Anthropic 的五种工作流模式
在《Building Effective Agents》中,Anthropic 还把更常见的非全自主循环梳理为 5 类生产工作流,是 Loop 工程的"应用层目录":
- Prompt Chaining:串联多个 LLM 调用,每一步基于前一步输出。
- Routing:分类后路由到不同的专项处理流程。
- Parallelization:并行运行多个调用后聚合结果。
- Orchestrator-Workers:主 Agent 拆分任务给从属 Worker。
- Evaluator-Optimizer:评审者+优化者闭环。
09主流产品如何实现 Loop#
Claude Code、Codex、LangGraph、Cursor、Devin —— 看看这些"长在最前面"的产品到底怎么落地。
Claude Code · The Hive
/loop 按节拍重跑、/goal 独立模型判定完成、.claude/agents/ 子 Agent、Skills、MCP。Boris Cherny 分为本地 /loop、云端 Routines、/batch + Dynamic Workflows 三层。
Codex / OpenClaw
Automations Tab、Triage 收件箱、内建 worktree、.codex/agents/ TOML 子 Agent 定义、Connectors(MCP)。与 Claude Code 几乎同形。
LangGraph + LangSmith
create_agent 实现 L1,RubricMiddleware 实现 L2,LangSmith Deployment + Fleet 提供 L3,LangSmith Engine 自动分析 trace 优化 harness(L4)。
Cursor
Agent + Auto-Review 子 Agent 网关(97% 分类准确率),把"提议 → 审核"做成默认开关。典型的 Maker / Checker 分离实践。
Devin
长程 Agent + 计划面板 + Sandbox + handoff 到本地 IDE。本质是把 L1+L2+L3 打包成产品。
AutoGPT / BabyAGI
最原始的"目标→任务列表→执行→反思"循环原型。缺少 L2 验证导致死循环和 token 失控,反向印证了 Loop 工程的必要性。
Swarm / Responses API
把 工具调用循环(tool use loop)下沉到 API 层,自动处理多轮 tool_call → tool_result。开发者只看输入输出,循环逻辑由 API 托管。
Aider / Cline
偏 ReAct 单层 Loop + diff 工具协议,强调可控、可回放。源码体量小,是学习 coding agent 内部循环的最佳起点。
Claude Code 与 Codex 的核心循环原语已经高度收敛:/loop + /goal + worktree + 子 Agent 配置文件 + MCP。这种收敛本身就是 Loop 工程范式成熟的标志。
10关键工程挑战与解法#
把 Loop 推到生产环境,会撞上的真实问题与对应缓解。
| 挑战 | 典型表现 | 解法 |
|---|---|---|
| 上下文爆炸 Context Poisoning |
历史轮把窗口填满,错误信息被反复重述 | 周期性 summary、外部 STATE.md、Weaviate Engram 提倡 extract → transform → commit 流程 |
| 循环死锁 重复行为 |
Agent 反复执行同一失败动作 | Reflexion 启发式(连续相同动作即停止)、Maker/Checker 分离、最大迭代 / 无进展 N 轮升级人类 |
| Token 成本失控 | 子 Agent + 高频心跳烧钱 | 分级模型(便宜模型 Maker + 强模型 Checker)、用 /goal 而非纯 cron、按迭代设工具调用预算 |
| 可观测性 / 评估 | 无人值守时不知 Agent 在干什么 | LangSmith / Anthropic 多轮 eval、trace + grader + 审计、统一日志 |
| 终止条件 | "我做完了"只是 Agent 自述 | 用独立模型做完成判定(/goal)、硬门禁(测试 + lint + 类型)、人类对关键动作签字 |
| 安全 / 权限 | 自主 Agent 触碰生产环境 | Worktree 隔离、不给主分支合并权限、敏感 tool 需 human-in-the-loop |
自动化越好,越容易停止形成自己的判断。Addy Osmani 的处方:主动留 "Loop 假期",强制自己读每个 diff,把 Loop 当作实习生而非替身。
11五个最常见的误区#
看到这些信号,说明你(或团队)已经偏离了 Loop 工程的核心。
- 把 Loop 等同于 while 循环。忽视 Maker/Checker 分离、外部 State 持久化、独立完成判定,把所有逻辑塞进一个无脑循环里。
- 忽视退出条件。没有硬门禁(测试 / lint / type / 评审)的 Loop 就是烧钱机,越跑越偏。
- 让生成代码的同一个模型来判定"是否完成"。Boris Cherny 的
/goal与 Addy 的 "checker" 都明确指出这是核心错误。 - 盲目堆 sub-agent。每个子 Agent 都在烧 token,应当只在"第二意见值得付费的地方"才用。
- 认知投降。自动化做得越好,越容易停止形成自己的判断。要主动留 Loop 假期、读每个 diff、视 Loop 为实习生而非替身。
12推荐学习路径#
按这个顺序读完,你就能在团队里讲清楚 Loop 工程的来龙去脉。
学术论文(按时间)
- ReAct
arXiv:2210.03629 - Reflexion
2303.11366 - Self-Refine
2303.17651 - Tree of Thoughts
2305.10601 - Plan-and-Solve
2305.04091
权威博文(按顺序)
- Lilian Weng · LLM Powered Autonomous Agents (2023.06)
- Anthropic · Building Effective Agents (2024.12)
- Anthropic · Effective Context Engineering (2025)
- Addy Osmani · Loop Engineering (2026.06)
- LangChain · The Art of Loop Engineering (2026.06)
项目 / 代码
- LangGraph · create_agent + Middleware
- Claude Agent SDK + Cookbook
- OpenAI Agents SDK + Responses API
- Aider / Cline · 最小可读 coding agent
- AutoGPT / BabyAGI · 理解早期循环
中文资料
- 宝玉 xp · Prompt / Context / Loop 三者关系科普
- 量子位 / 机器之心 · Claude Code / Codex / Loop Engineering 解读
- CSDN 系列 · Osmani 长文的中文系统化复述
13术语速查表#
手册中反复出现的高频术语集中索引,加深印象用。
- Agent Loop
L1 - LLM 循环调用工具直到任务完成的最基础循环结构,即 ReAct 模板的工程化实现。
- Harness
- 给单个 Agent 装备工具、记忆、提示模板的"脚手架"。位于 Context 工程之上、Loop 工程之下。
- Maker / Checker
- 生产者与审核者分离原则。生成代码的模型不能给自己判定 done,必须由另一个模型/规则集独立验证。
- Worktree
- Git 的多工作树机制。Loop 工程里常用于在同一仓库下物理隔离并行 Agent,避免互相踩踏。
- MCP
Model Context Protocol - Anthropic 2024 年开源的开放协议,让 Agent 用统一接口接入外部工具与数据源,是 Loop 工程的"插座"。
- Trace
- Agent 一次完整执行的多步日志(提示、工具调用、观察、token 数)。可观测性的最小单位,LangSmith / Helicone 的核心数据模型。
- Hill-Climbing Loop
L4 - 四层堆叠的最上层:用历史 trace 自动改写 prompt / 工具 / 模型选择,让系统自我进化。
- Evaluator-Optimizer
- Anthropic 5 模式之一:一个 LLM 生成,另一个 LLM 评审,分数不达标就带反馈重做。等同于 L2 验证循环。
- ReAct
- Reasoning + Acting,Yao 2022 提出的 Thought / Action / Observation 单步循环模板,所有后续循环模式的祖先。
- Reflexion
- 失败后写一段"经验"进入下一次尝试的循环模式。Shinn & Labash 2023,arXiv 2303.11366。
- Context Poisoning
- 上下文窗口被错误信息或冗余历史"毒化",导致模型反复重述同样错误。Loop 越长越容易出现。
- Autoresearch
- Karpathy 等推崇的趋势:人逐步从循环中退出,让 Agent 系统自己提出问题、自己验证、自己继续。Loop 工程的终极目标。
14常见疑问 FAQ#
手册学完之后,最容易被问到也最容易答错的五个问题。
什么时候不该用 Loop 工程?
三类场景不要强行 Loop:
① 一次性、探索型任务—— 比如让 Claude 帮你写一封邮件、解释一段代码。直接 Prompt 反而更快、更准。
② 没有可自动判定的成功条件—— Loop 必须有硬门禁(测试通过、覆盖率、产出 schema 合法),否则就是烧钱。
③ 人本来就在场的工作—— 如果每一轮都需要人看一眼再继续,那本质上是 chat 而不是 loop,套个 while 循环只是给自己制造延迟和成本。
Loop 工程 = LangGraph 吗?
不是。LangGraph 是实现工具,Loop 工程是设计哲学。同一个 Loop 思想可以用 LangGraph、CrewAI、自写 Python、甚至 Claude Code 的 /loop 命令来落地。
反过来:写一段 LangGraph 代码并不必然就是好的 Loop 工程 —— 如果没有 Maker/Checker 分离、没有外部状态、没有硬门禁,它依然只是个更花哨的 while 循环。
Loop 工程是不是只对编程 Agent 有意义?
不是。它最早在 coding agent 上跑通是因为代码有可自动验证的特质(测试、lint、类型)。但任何"有客观验证手段"的领域都适用:
· 数据分析—— 验证条件是统计显著性 / 结果是否合 schema
· 翻译 / 文案—— Evaluator-Optimizer 模式,评分 LLM 打分
· 合规审查—— 规则引擎 + LLM 解释,可自动跑
核心问题不是"我做什么领域",而是"我能不能给 done 设一个独立可测的标准"。
token 成本怎么控制?
四个杠杆,按效果从大到小:
① 分级模型—— Maker 用便宜模型(Sonnet/Haiku),Checker 用强模型(Opus)。Maker 跑得多但每次便宜,Checker 跑得少但精准。
② 外部 STATE 文件—— 把上下文用文件而非历史轮持久化,每次只读相关切片,避免 200K 窗口被填满。
③ 低频心跳—— 用 /goal(事件驱动)替代密集 cron。任务完成就停,而不是定时空转。
④ 子 Agent 按需 spawn—— 只在"第二意见值得付费"的关键决策点才开子 Agent,不要默认每步都派一个审计员。
初学者应该从哪里动手?
三步走,每一步都能拿到正反馈:
① 读 Anthropic《Building Effective Agents》—— 30 分钟建立框架性认知,分清 Workflow vs Agent。
② 跑通 LangGraph 的 create_agent 例子—— 用真实工具(搜索、计算器、文件读写)跑一个 ReAct loop,看 trace。
③ 在自己项目里上 Claude Code 的 /loop—— 找一个真实但低风险的任务(比如"把所有 console.log 改成 logger.info"),让 Loop 去做,自己读每个 diff。
关键是不要从 AutoGPT 那种无限循环开始,它会让你产生"Loop 不靠谱"的错觉。
15参考资料#
所有结论均可追溯到下面的一手或权威来源,按置信度排序。
- 一手 · 高 Anthropic · Building Effective Agents (2024-12)
- 一手 · 高 Addy Osmani · Loop Engineering (2026-06-07,命名性文章)
- 一手 · 高 LangChain · The Art of Loop Engineering (2026-06-16)
- 一手 · 高 Lilian Weng · LLM Powered Autonomous Agents (2023-06)
- 一手 · 高 Anthropic · Demystifying Evals for AI Agents (2026-01)
- 二手 · 中高 Cobus Greyling · Loop Engineering (2026-06-09)
- 二手 · 中高 Latent.Space / swyx · Loopcraft (2026-06-12)
- 二手 · 中 Business Insider · "Forget Prompt Engineering" (2026-06-20)
- 二手 · 中 MindStudio · What Is Loop Engineering? (2026-06-09)
- 中文 · 中 CSDN · 从提示词工程到循环工程 (2026-06-24)