Loop 工程:AI代理的核心设计思维

akshay_pachaar 发布于 2026-06-23 阅读 47

文章介绍了Loop Engineering(循环工程)的概念,强调在AI代理中,循环设计比提示工程更重要。核心循环是模型、工具、上下文之间的重复交互,但真正的工程挑战在于:何时停止(避免虚假完成)、保持上下文清洁(防止上下文腐烂)、设计工具(让模型正确使用)以及加入批评者(避免自我认可)。作者指出,循环工程不是框架或工具,而是一种思维转变,即从“告诉模型做什么”转向“设计一个能自动完成目标的系统”。

图像

你的信息流突然有一半在说着同一件事。停止给你的 Agent 写提示词,开始对循环进行工程化。

Boris Cherny,Claude Code 的缔造者,说得直白:“我不再给 Claude 写提示词了。我有正在运行的循环。我的工作就是写循环。”

连地球上最流行的编码 Agent 之一的开发者都不再写提示词了。那他到底在做什么?

这就是循环工程背后的全部理念。现在我们来拆解一下,为什么它比看上去要难得多。

首先,循环本身

Agent 不是一个魔法盒子。其核心就是一个简单的循环:

while True:
    response = model(context)
    if response.has_tool_calls():
        results = run_tools(response.tool_calls)
        context += results
    else:
        break

模型读取上下文。它请求调用工具。你执行工具并将结果反馈回去。模型再次读取,如此重复,直到它停止请求工具。

模型 → 工具 → 上下文 → 重复。

这里有一个让人意外的地方:这个循环本身已经是一个被解决了的问题。所有严肃的 Agent 框架最终都落在差不多这六行代码上。没有人会在 while 语句上竞争。

所以,如果循环本身是微不足道的,那大家实际上在工程化什么?

工作转移到了模型之外

AI 的重心一直在从模型本身向外漂移。

  • 提示词工程。 你发送的文字。
  • 上下文工程。 模型看到的一切,而不仅仅是你的指令。
  • 框架工程。 模型周围的代码,用于运行工具、跟踪状态和处理错误。
  • 循环工程。 驱动整个过程朝着目标前进的自主循环。

每一层都包裹着前一层。你没有停止关心提示词,你只是意识到提示词是一个更大系统里很小的一部分。

LangChain 说得非常清楚:Agent = 模型 + 框架。如果你不是模型,你就是框架。

有一个发现应该重新排列你的优先级:框架现在比模型更重要。团队固定模型不变,只改变模型周围的代码,就从基准测试的中游跃升到前五名。同样的“大脑”,不同的循环。

循环工程就是构建这个“大脑”运行于其中的一切。让我展示一下那些真正会出问题的部分。

难点一:知道何时停止

这是没人警告过你的问题。

当 Agent 停止请求工具时,它结束了它的回合。这和完成任务可不是一回事。

想象一个编码 Agent。它写了一些代码,环顾四周,看到有进展了,于是宣布它完成了。测试仍然失败。它还是宣告了胜利。

一条终端消息结束了回合,而不是任务。混淆这两点是循环出问题的最常见方式。

好的循环会出于正确的理由停止,因此你要叠加几个刹车:

  • 最大迭代次数。 一个硬性上限,防止卡住的 Agent 永远运行。
  • 预算和时间限制。 对 Token、金钱和秒数的上限。
  • 无进展检测。 如果它用同样的参数重复调用同一个工具,说明它在空转。
  • 真正的完成检查。 一个自动化的条件,证明工作已完成。

最后一项承担了重任。“完成”应该意味着测试通过,而不是 Agent 对自己的工作感觉良好。

难点二:保持上下文清洁

长循环会从内部腐烂。

Agent 走的步骤越多,上下文里堆积的垃圾就越多,比如旧的工具输出、死胡同、过时的推理。随着垃圾堆的增长,模型性能会下降。这个领域称之为上下文腐烂。

循环会让它螺旋下降。腐烂的上下文产生更差的决策,这会增加更多噪声,进一步腐烂上下文。人们称之为“末日循环”,你一定感受过:Agent 运行时间越长越笨。

你必须通过将上下文视为一种预算(而不是一个桶)来对抗它:

  • 压缩。 当对话变长时总结它,然后从总结继续。
  • 卸载。 将庞大的输出推送到一个文件,只保留你需要的片段。
  • 子 Agent。 把一团糟的子任务交给另一个 Agent,只让它的干净结果返回。

直觉是保留一切以防万一。技巧是知道该扔掉什么。

难点三:Agent 实际上能用的工具

循环的好坏取决于它内部的工具。

堆上一百个工具,Agent 就记不清该用哪一个了。一组精炼、不重叠的工具才有效。Anthropic 的经验法则很尖锐:如果一个人工程师都无法确定哪个工具合适,Agent 就更没机会了。

有两件事比人们想象的更重要:

  • 让写操作可安全重复执行。 循环会重试,如果重试一次“创建客户”调用又创建了第二个客户,你会醒来发现重复记录和重复收费。任何改变状态的操作都必须能安全调用两次。
  • 为 Agent 编写错误信息,而不是为人。 一个好的错误会告诉 Agent 下一步该做什么。在工具发布前,问问自己:如果一个 LLM 读到它的错误信息,它知道下一步该怎么做吗?

在循环中,错误不是死胡同。它是下一条指令。

难点四:一个能说“不”的东西

自主循环有一个安静的失败模式:一个独处的 Agent 倾向于同意自己。

整个讨论中最尖锐的评论一击中的:设计循环只是一半工作,另一半是在循环里放一个能说“不”的东西,比如测试、类型检查或真正的错误。

没有批评者的循环只是一个对自己工作点头称是的 Agent。

解决办法是把制造者和检查者分开。一个模型做工作。另一个不同的检查——通常是一个独立的模型或一个硬性的测试——来打分。工作者不给自己批改作业。

真正的转变

现在 Cherny 的话就说得通了。

提示词是你一步步引导 Agent。循环工程是你构建一个能引导 Agent 的系统,然后后退一步。

你的工作从发出指令转变为设计三样东西:

  • 目标,写成 Agent 可以对照检查的成功标准。
  • 循环,带有合理的刹车,使其能完美停止。
  • 验证器,这样“完成”是经过证明的,而不是声称的。

Andrej Karpathy 抓住了这种思维:不要告诉模型该做什么,给它成功标准,然后看着它行动。他整晚运行研究循环,这些循环会调整脚本、测试它、保留有效部分、丢弃无效部分,而他自己不在循环内。他一次性安排好了,然后按开始。

这就是整个转变。你不再是执行者,而是变成了设计机器的人。

从哪里开始

你不需要第一天就有一个通宵的自主 Agent。逐步构建:

  1. 从基本循环开始,立刻加上最大迭代次数上限、超时时间和成本上限。
  2. 在开始之前就将“完成”定义为一个自动化检查,而不是事后的感觉。
  3. 保护上下文。压缩长运行,卸载大输出,隔离杂乱子任务。
  4. 审计你的工具。保持少而精,让写操作可安全重复执行,重写错误信息以便 Agent 能据此行动。
  5. 在循环中放一个批评者。只有当你信任那个说“不”的东西之后,才完全放手。

要点总结

循环工程不是一个你可以安装的框架或工具。它是你努力方向的转变。

模型正在变成一种商品。围绕模型的循环才是真正工程学所在。

最优秀的构建者们不再问“我应该告诉 Agent 做什么?”而是开始问“什么系统能在没有我的情况下完成这件事?”

把这个问题回答好,你也不再需要写提示词了。

  • 原文链接: x.com/akshay_pachaar/sta...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论