Loop Engineering:别再写 Prompt 了,去设计 Loop

0 阅读8分钟

Loop Engineering:别再写 Prompt 了,去设计 Loop

一条推文引来了 700 万人围观。开源大佬说:别再给 AI 写提示词,你应该去设计 Loop。Claude Code 的作者也说:我也不写 Prompt,我写 Loop。

2025-2026 年,Loop Engineering 正在取代 Prompt Engineering,成为 AI 时代的核心工程能力。


一、从 Prompt 到 Loop,范式变了

过去我们和 AI 协作的方式是做填空题——写好一段精美的 prompt,喂给模型,等结果。不满意?改 prompt,再来一遍。人在整个过程中不能离开,盯着 AI 干活。

Prompt Engineering 的本质是"一句话问对"的对话技巧。

Loop Engineering 把这件事反转了:你不再是那个反复改 prompt 的人,而是设计一套规则和检查机制,让 AI 自己跑循环。

Loop Engineering 的本质是"设计一套 AI 能自己跑的流程"的系统工程。

怎么理解这个反转?一句话:

Loop Engineering 出现后,你的位置变了。以前你在 Loop 里面,现在你在 Loop 外面。

维度Prompt EngineeringLoop Engineering
你的角色全程盯着,手动迭代设定规则和退出条件,抽身离开
AI 行为一次生成,品质随缘多轮执行,自我修正
适用场景简单问答、翻译、摘要复杂任务、代码生成、自动化
可靠性依赖 prompt 质量,不稳定有检查机制兜底,产出可控
本质对话技巧系统工程

二、Loop 的底层逻辑:三要素

lQLPJwjmIfcXDbPNAe7NA0Cw9IqNbeFrNH0KCAKdcQzwAA_832_494.png Loop 是计算机最底层的能力之一。任何循环都只包含三件事:

1. 从哪里开始(Entry Condition)

一个 Agent Loop 启动时,需要三样东西:

  • 任务描述 — 用户到底想要什么
  • System Prompt — Agent 的角色和边界
  • 能力声明 — Agent 手上有什么工具、能访问什么数据

2. 重复做什么(Loop Body)

这是 Loop 的核心——每一轮都在干同一件事:

LLM 推理 → 调用工具 → 拿到结果 → 把结果喂给 LLM → 继续推理 → ...

用代码表示就是 completion → tool_call → observation → completion → … 的无限循环,直到退出条件触发。

每一轮的 observation(工具返回的结果)都会追加到 messages 数组里。LLM 每一轮都能看到完整的历史上下文,所以它的推理会越来越准确——这就是 Learn(学习) 环节。

3. 什么时候结束(Exit Condition)

退出条件是 Loop Engineering 最容易被忽视、也最容易出问题的地方。五种常见的退出条件:

退出条件说明
目标达成LLM 判断任务完成,不再调 tool,直接返回最终结果
最大轮次maxRounds 兜底,防止死循环
超时超过时间限制自动终止
人工介入遇到关键决策/危险操作暂停,等人确认
错误退出tool 连续失败 N 次,判定无法继续

三、一个最简 Loop Agent 的完整解剖

理论知识讲完了,我们来看一个最简 Loop Agent 的代码,把它拆开来看:

3.1 Agent 的大脑:LLM

const client = new OpenAI({
    apiKey: process.env.DEEPSEEK_API_KEY,
    baseURL: process.env.DEEPSEEK_API_BASE_URL
})

LLM 只负责推理和生成。没有 tool,它就是一个只会聊天的脑子,无法和外部世界交互。

3.2 Agent 的手脚:Tool

Tool 是 Agent 行动能力的来源。LLM 推理出"我需要调哪个工具、传什么参数",工具执行,结果返回给 LLM。

经典例子:

用户问"青岛啤酒股价多少?"→ LLM 推理需要调用 getPrice 函数 → tool 返回 67.92 → LLM 知道怎么回答了。

Tool 的难点不是实现,而是 description 写得好不好——LLM 能不能准确理解这个工具是干什么的、什么时候该用,全靠 description。

3.3 刹车系统:Limit 限制

const limit = {
    maxRounds: 5,      // 最多 5 轮
    maxTokens: 2000,   // 最多消耗 2000 token
    sameStop: 2        // 连续 2 次输出相同就停
}

这三个限制对应了三种常见的跑偏场景:死循环、狂烧 token、原地踏步。三者共同构成兜底刹车——即使 Agent 没有达成目标,也不会让它无限跑下去。

3.4 工作循环:gen → check

这是整个 Loop 最核心的部分:

while (!needStop()) {
    round++
    const { text, tokens } = await gen()          // 干活
    totalTokens += tokens
    sameCount = text === lastText ? sameCount + 1 : 0
    lastText = text

    const { pass, failReason } = await check(text) // 检查
    if (pass) {
        console.log('成功', text)
        break                                       // 通过 → 退出
    } else {
        console.log('不合格', failReason)           // 不通过 → 下一轮
    }
}

gen() 负责生成,check() 负责审查。两个函数调用的是同一个 LLM,但给了完全不同的 system prompt——gen 是创作者,check 是审查者。角色分离是自检查机制能跑稳的关键。


四、检查机制:Loop 的核心工程问题

LLM 生成的东西不一定对。每一轮循环都必须回答一个问题:这轮产出合格了吗?

4.1 五种检查方式,由轻到重

第一层:规则校验(0 token,最轻)

不用 LLM,直接用代码校验格式。比如要求"标题带数字""字数 200 内",根本不需要 LLM,正则就够了:

function check(text) {
    const pass = /\d/.test(text) && text.length <= 200
    return { pass, failReason: pass ? '' : '标题没数字或超字数' }
}

适用场景:格式约束、字数、必填字段、JSON Schema 校验。

第二层:LLM 自检(低 token)

这也是上面例子在做的事——用一个独立的 check prompt,让 LLM 以审查者身份审查 LLM 以创作者身份生成的输出。

关键设计点:

  • gen 和 check 用不同的 system prompt,角色不同
  • check 的输出要结构化(JSON),{ pass: true/false, failReason: '...' }
  • failReason 必须具体,能指导下一轮 gen 修正方向

第三层:执行验证(最可靠)

代码生成后直接跑——能跑就是能跑,报错就是报错,不依赖 LLM 判断:

写代码 → 跑测试/lint/编译 → 报错 → 把报错喂给 LLM → 修 → 再跑

Claude Code、Cursor 的底层逻辑就是这个——测试就是检查机制

第四层:多维检查

一个 checker 不够,多个 checker 从不同角度审:

生成 → 格式检查 → 安全检查 → 业务规则检查 → 语义检查 → 任一不通过就退回

第五层:人在回路

关键操作暂停,等人来 check。涉及部署、删数据、付款等操作时的最后防线。

4.2 怎么选:一张表

检查方式Token 成本可靠性适用
规则校验0确定性问题 100%格式/字数/结构
LLM 自检依赖 prompt 质量语义/文案/摘要
执行验证0能跑就是能跑代码/SQL/脚本
多维检查中-高生产级任务
人工确认人的时间最高部署/删数据/付款

五、Agent Loop 的五环架构

回到理论层,任何 Agent Loop 都可以拆成五个环节:

┌─────────────────────────────────────────┐
│              Agent Loop                 │
│                                         │
│  ① Plan  ──→  ② Act  ──→  ③ Observe   │
│       ↑                        │        │
│       └──── ⑤ Learn ←─────────┘        │
│                    ↓                    │
│              ④ Check                    │
│            (通过则退出)                  │
└─────────────────────────────────────────┘
  1. Plan — LLM 推理:下一步干什么、调什么工具、传什么参数
  2. Act — 执行工具(读文件、搜网络、写代码、操作浏览器…)
  3. Observe — 收集工具返回的结果、错误信息
  4. Check — 结果合格了吗?不合格回到 Plan,合格退出
  5. Learn — 本轮经验追加到 messages,下一轮推理更准确

六、Loop Engineering 的设计原则

五条实战经验:

1. 明确的退出条件。 死循环是 Loop 最常见的故障。要同时设目标条件(任务完成)和兜底条件(maxRounds / timeout / sameStop)。

2. 上下文管理。 每轮的结果都追加到 messages,长任务会爆 context window。需要摘要压缩、滑动窗口、关键信息提取。

3. 错误处理 ≠ 退出。 Tool 调用失败一次不应该终止整个 Loop。把错误信息喂给 LLM,让它换一种方式重试。

4. 可观测性。 每轮记录:turn 数、LLM 推理、调了哪个 tool、tool 返回了什么。出问题时才能回溯。

5. 渐进式交付。 不要等 Loop 全跑完才给结果。流式输出中间状态,让用户看得见 Agent 在干什么。


七、训练 Loop 与推理 Loop

lQLPJwNACQ42pbPNAgzNA16w4NvLq2BG6RQKCAKVij_9AA_862_524.png 训练 LLM 的过程本身也是一个 Loop,和 Agent Loop 是同一枚硬币的两面:

维度训练 Loop推理 Loop(Agent Loop)
做什么训练模型参数执行具体任务
循环内容前向传播 → 算 loss → 反向传播 → 更新参数Plan → Act → Observe → Check
终止条件loss 收敛 / 达到 epoch任务完成 / 达到 maxRounds
产物模型权重任务结果
跑在哪PyTorch / JAX你写的 Runtime

这也解释了为什么 Loop 是 AI 最底层的能力——没有万亿次训练 Loop,就没有 LLM;没有推理 Loop,LLM 就无法自主完成复杂任务。


八、写在最后

2025-2026 年,所有主流 AI 产品底层都是 Agent Loop:

  • Claude Code — Plan → Read/Write/Bash → Observe → Check → 继续或完成
  • Cursor — 理解意图 → 搜索代码 → 生成 diff → 人确认 → 应用
  • OpenAI Codex CLI — 同样的 Loop 模式,换了大脑和工具集
  • Devin — 全自动 Loop,关键节点人介入

Loop 已经从"AI 的一种用法"变成了"AI 产品的标准架构"。

你的位置变了。以前你在 Loop 里面,一遍遍改 prompt——现在你站在 Loop 外面,设计规则、定义检查、设好刹车,然后让 Agent 自己跑。

这就是 Loop Engineering。