大数跨境

一文讲清楚 Agent Loop Engineering

一文讲清楚 Agent Loop Engineering 蔡超谈软件
2026-07-12
13
导读:Prompt 越写越长,Agent 却未必更可靠。本文从 Ralph Loop 出发,讲清 Agent Loop Engineering 的核心机制,以及它与 Harness Engineering

为什么现在大家都在讨论“Loop”?

AI Agent 最大的问题,从来不是“不会写代码”。

而是:

它很难稳定地把一件复杂的事情做完。

你可能经历过这样的场景:

让 Agent 修一个 Bug,它找到了问题;

让它补一个测试,它开始修改无关代码;

让它继续执行,它忘了前面做过什么;

让它运行测试,它看到一堆报错后,告诉你:

“任务已经完成。”

但实际上,测试全挂。

于是我们开始不断优化 Prompt:

写得更详细,补充更多上下文,增加更多约束。

但慢慢会发现:

Prompt 写得越多,Agent 不一定做得越对。

问题可能不在 Prompt,而在于我们一直把 Agent 当成“执行一次指令的聊天机器人”。

实际上,Agent 更像一个需要不断观察、行动、验证和修正的执行系统。

这也是 Loop Engineering 开始受到关注的原因。

一、从“提示 Agent”到“设计循环”

Peter Steinberger 曾经发过一条很有代表性的观点:

You shouldn’t be prompting coding agents anymore.
You should be designing loops that prompt your agents.

简单翻译就是:

你不应该再手动提示编码 Agent,
而应该设计能够提示 Agent 的循环。

这句话的重点,不是说 Prompt 不重要了。

而是说:

当 Agent 需要连续完成任务时,Prompt 只是系统中的一个环节。

真正影响结果的,是整个循环如何工作:

  • 如何分配任务;

  • 如何提供上下文;

  • 如何调用工具

  • 如何验证结果;

  • 如何保存状态;

  • 如何处理失败;

  • 如何决定继续还是停止。

Anthropic 的 Boris Cherny 也表达过类似判断:

Loops are the future.

这两种表达之所以引起广泛讨论,是因为它们共同指向了一个变化:

AI 编程的重点,正在从“如何写好 Prompt”,转向“如何设计一个能够持续运行的 Agent Loop”。


二、什么是 Agent Loop Engineering?

传统软件通常是:

输入 → 处理 → 输出

Agent 的工作方式则更像:

观察 → 判断 → 行动 → 获取反馈 → 修正

一个完整的 Agent Loop 通常包括:

Observe
  ↓
Orient
  ↓
Plan
  ↓
Act
  ↓
Verify
  ↓
Reflect
  ↓
Persist
  ↺

具体来说:

  • Observe:观察代码、文件、日志和任务状态;

  • Orient:理解当前处境和限制;

  • Plan:决定下一步行动;

  • Act:调用工具或修改环境;

  • Verify:检查行动是否成功;

  • Reflect:根据反馈调整策略;

  • Persist:保存进度,供下一轮恢复。

所以,Agent Loop Engineering 解决的不是:

如何让模型生成更长的答案。

而是:

如何让 Agent 在反馈中持续修正,直到目标真正完成。



三、Ralph Loop:目前最常见的实践

目前最简单、最容易理解的 Agent Loop 实践之一,就是 Ralph Loop。

它最初甚至可以简单到:

while :; do
  cat PROMPT.md | claude-code
done

表面上看,这只是让 Agent 不断重复执行。

但 Ralph Loop 的真正价值,不是“无限循环”,而是三个设计原则:

  1. 每一轮使用一个相对新鲜的上下文;

  2. 通过文件、代码、测试和 Git 保存状态;

  3. 每一轮只推进一个可验证的任务。

它的基本流程是:

启动 Agent
  ↓
读取任务说明和项目状态
  ↓
选择最重要的一件事
  ↓
完成这件事
  ↓
运行测试或其他验证
  ↓
更新计划、代码和检查点
  ↓
退出当前上下文
  ↺ 启动下一轮 Agent

Ralph Loop 解决了一个非常现实的问题:

上下文越长,Agent 不一定越聪明。

很多时候,上下文越长,Agent 越容易:

  • 忘记真正目标;

  • 混淆已经完成和未完成的事项;

  • 重复修改同一个地方;

  • 在错误方向上越走越远。

Ralph Loop 的做法是:

不让一次对话承担整个项目的记忆。

而是把记忆放到 Agent 之外:

PROMPT.md       工作规则
fix_plan.md     任务计划
specs/          技术规格
progress.md     进度记录
tests/          验收标准
.git/           检查点和恢复机制

四、一轮只做一件事

Ralph Loop 最重要的一条实践是:

One item per loop:一轮只做一个事项。

注意,是一个事项,不是一个大目标。

“完成支付系统”不是一个事项。

下面这些才是:

  • 添加支付订单状态枚举;

  • 实现订单创建接口;

  • 为重复支付增加幂等校验;

  • 增加支付失败测试;

  • 修复金额四舍五入问题。

每一轮只推进其中一个。

为什么?

因为如果一轮同时修改十个地方,测试失败时,Agent 很难判断到底是哪一处导致了问题。

而如果一轮只做一件事,反馈会清晰很多:

修改一个目标
  ↓
运行相关验证
  ↓
成功:标记完成
失败:分析这一件事为什么失败

一个好的 fix_plan.md可能是这样的:

# Fix Plan

- [x] Add order status enum
- [x] Implement order creation API
- [ ] Add idempotency check
- [ ] Add payment failure tests
- [ ] Run full regression tests

每一轮开始时,Agent 读取这份计划,选择最重要的一个未完成事项。

完成后更新计划,再进入下一轮。

这就是 Ralph Loop 的“渐进式收敛”。

五、Harness Engineering 和 Loop Engineering 是什么关系?

这是最容易混淆的地方。

一句话概括:

Harness Engineering 负责设计 Agent 的工作环境,Loop Engineering 负责设计 Agent 的工作循环。

可以把 Agent 想象成一名在工厂里工作的工程师:

  • Harness 是工厂:提供工具、权限、记录系统和安全规则;

  • Loop 是工作流程:检查任务、选择动作、执行、验收、返工;

  • LLM 是操作员:根据当前信息决定下一步。

两者的关系可以表示为:

Harness Engineering
        ↓
提供工具、状态、上下文、权限和验证器

Ralph Loop
        ↓
反复启动 Agent,分配一个最重要的事项

Agent Loop
        ↓
观察、行动、验证、修正

外部状态
        ↺
代码、测试、计划、日志、Git

更具体地说:

维度
Harness Engineering
Loop Engineering
核心问题
Agent 在什么环境里工作
Agent 如何持续推进任务
主要对象
工具、权限、上下文、状态、沙箱
任务分配、验证、重试、终止
记忆方式
状态存储、文件、数据库
每轮读取并更新状态
失败处理
隔离危险操作、保存日志
重试、换策略或暂停
类比
操作系统和工作台
调度器和执行流程

Ralph Loop 可以看作 Loop Engineering 的一种具体实践。

而 Harness Engineering 则是让 Ralph Loop 可靠运行的基础设施。

没有 Harness,Ralph Loop 可能只是:

无限重复执行 Agent

有了 Harness,它才会变成:

受控执行
  ↓
可靠验证
  ↓
状态保存
  ↓
失败恢复
  ↓
必要时人工接管

六、Harness 如何支撑 Ralph Loop?

1. 上下文治理

每一轮 Agent 都需要读取相关信息,但不能把整个项目全部塞进上下文。

Harness 可以提供:

  • 当前待办;

  • 相关规格;

  • 目标文件;

  • 最近一次变更;

  • 测试失败日志;

  • 项目编码规则。

这就是渐进式披露:

让 Agent 每轮看到“足够完成当前事项”的信息。

2. 工具编排

Agent 想运行测试时,Harness 负责:

检查命令
  ↓
确认权限
  ↓
在沙箱中执行
  ↓
提取退出码
  ↓
结构化返回失败用例

Agent 想修改生产配置时,Harness 可以直接拒绝,或者要求人工确认。

3. 状态持久化

Ralph Loop 的记忆不在对话里,而在环境里:

fix_plan.md
progress.md
specs/
tests/
.git/

即使 Agent 崩溃、上下文耗尽或会话结束,下一轮仍然可以从上一次状态继续。

4. 验证与终止

Harness 提供客观验证器:

  • 单元测试;

  • 类型检查;

  • Lint;

  • 构建;

  • 集成测试;

  • 安全扫描。

Ralph Loop 根据这些结果决定:

继续
重试
换策略
暂停
完成


七、Ralph Loop 不是无限自动化

很多人看到 Ralph Loop,第一反应是:

“是不是只要把 Agent 放进 while 循环,就可以让它自己写完整个项目?”

当然不是。

Ralph Loop 的本质是“最终一致性”,而不是“一次正确”。

它允许 Agent 在多轮中逐渐修正,但必须配合明确边界。

至少需要设置:

  • 最大迭代次数;

  • 单轮任务范围;

  • 单个任务的最大失败次数;

  • 测试和验收条件;

  • 高风险操作的人工确认;

  • 每轮的日志和检查点;

  • 明确的完成信号。

例如:

连续失败 3 次 → 暂停
修改生产配置 → 请求确认
全量测试失败 → 不得输出完成
超过 20 轮 → 停止并生成报告
所有验收项通过 → 输出 COMPLETE

否则,Ralph Loop 很可能陷入:

修改
  ↓
测试失败
  ↓
继续修改
  ↓
引入更多问题
  ↓
重复循环

所以,Ralph Loop 的关键不是“循环”。

而是:

每一轮是否产生了可验证的进展。



八、什么时候适合使用 Ralph Loop?

Ralph Loop 特别适合:

  • 规格相对清晰的绿地项目;

  • 有较好测试覆盖的代码库;

  • 可以拆成多个独立事项的任务;

  • 能够通过工具验证结果的工作;

  • 允许异步执行和人工抽查的流程;

  • 代码迁移、测试补全、文档生成、批量重构等任务。

它不适合直接用于:

  • 没有验收标准的开放式任务;

  • 没有测试、无法验证结果的核心逻辑;

  • 生产数据库迁移;

  • 高风险基础设施变更;

  • 涉及权限、资金或隐私的自动操作;

  • 必须一次性正确完成的任务。

一句话:

越容易验证,越适合循环自动化。



九、从“写更好的 Prompt”转向“设计更好的 Loop”

Agent 的能力当然重要。

但在真实系统里,可靠性通常来自:

可靠性
= 决策能力
× 反馈质量
× 循环设计
× 环境约束

如果没有反馈,再强的模型也只能猜。

如果没有循环设计,Agent 会反复犯错。

如果没有 Harness 约束,错误可能直接影响外部系统。

所以,构建 Agent 时,更应该问:

  • 目标是否可以被验证?

  • 每轮是否只做一件事?

  • Agent 是否拥有新鲜上下文?

  • 状态是否保存在外部?

  • 失败原因是否可识别?

  • 是否有最大重试次数?

  • 是否可以随时恢复?

  • 什么时候必须停止?

  • 人工应该在哪里接管?

这些问题,比“Prompt 要不要再长一点”重要得多。


十、最后用一句话讲清楚

Ralph Loop 是一种实践方法:

用新鲜上下文反复启动 Agent,让它每轮只完成一个事项,并通过代码、文件、测试和 Git 持续传递状态。

Agent Loop Engineering 解决的是:

Agent 如何观察、行动、验证、修正和停止。

Harness Engineering 解决的是:

Agent 在什么环境里工作,以及哪些事情可以被安全地执行。

三者的关系是:

Harness Engineering
提供可靠的工作环境

Agent Loop Engineering
设计稳定的执行闭环

Ralph Loop
用外层循环反复驱动 Agent,
让任务在多轮中逐渐收敛

真正成熟的 Agent 系统,不是一个永远不犯错的模型。

而是一个:

犯错能发现,发现能修正,失败能暂停,暂停能恢复,完成有证据。

这才是 Agent Loop Engineering 的核心。


【声明】内容源于网络
0
0
蔡超谈软件
蔡超,Mobvista技术副总裁兼首席架构师,曾任Amazon(中国)首席架构师,HP(中国),移动系统首席软件架构师,北京天融信公司,安全管理系统首席架构师,微软及SUN的特邀讲师。特借此公众号分享软件开发中的心得和经验。
内容 62
粉丝 0
蔡超谈软件 蔡超,Mobvista技术副总裁兼首席架构师,曾任Amazon(中国)首席架构师,HP(中国),移动系统首席软件架构师,北京天融信公司,安全管理系统首席架构师,微软及SUN的特邀讲师。特借此公众号分享软件开发中的心得和经验。
总阅读226
粉丝0
内容62