在 imPerry 中打开

丝网海报:一条黑色闭环轨道连接着青绿、灰色和黑色的三盏圆形信号灯。

Agent Loop 的核心是触发条件、停止条件和验证标准

无法受控终止的 Agent 只是昂贵的状态污染机器;构建可靠系统的核心,是把触发条件、停止条件和验证标准显式编码进契约。

Claude Code 团队的技术分享《Getting started with loops》把 Loop 重新定义为一个受控的工作单元。我读这篇分享时,最认同的是这个定义,具体的命令行工具反倒在其次。

在刚接触 Agent 时,很多人容易有一种直觉:只要模型能自己一直跑、反复调用工具,系统就具备了「自主性」。我对这种直觉有疑虑:任何无法受控终止的 Agent,都会成为既昂贵又危险的状态污染机器。

如果一个系统只是盲目地把模型放进循环,没有明确什么时候该启动、什么时候该停下来、用什么客观指标验收,也没有失败后的熔断机制,它往往带不来生产力,反而会造成失控的额度消耗、被污染的工作区文件,以及难以排查的自动化噪音。

要把单次的 Prompt 升级为一个可复用、可交付的工作系统,我认为首要任务是把过去由人类凭感觉判断的环节,显式编码为系统的硬契约:触发条件、停止条件和验证标准。


构成受控 Loop 的三个核心问题

评估一个 Agent Loop 是否成熟,我觉得要看它如何回答这三个具体问题:

  1. 触发条件(Trigger):系统靠什么启动?是用户在终端敲下的单次 prompt、固定时间间隔的定时任务(schedule/cron),还是外部系统(如 GitHub Webhook、PR 状态变更、消息队列)发出的事件通知?
  2. 停止条件(Stop Criteria):系统凭什么停下来?是所有单元测试全绿、某项客观评分达到阈值、代码审查评论全部处理完毕,还是触碰了硬性的最大重试次数(turn cap)?
  3. 验证标准(Verification):系统如何证明自己把事情做成了?是读取真实命令的返回值、通过浏览器执行交互并截图、由第二个独立的 Evaluator Agent 给出评审打分,还是必须等待人工确认?

如果这三个问题没有在代码和规则中被明确定义,所谓「Agent 自主闭环」在实际运行中就一定会退化成碰运气的概率游戏。


控制权的四个迁移层级

在《Getting started with loops》中,作者把工程中常见的 Loop 划分为了四类。结合我的理解,这四种形态代表了控制权从人类逐步向系统让渡的演进过程:

Loop 类型交给系统的控制权典型适用场景主要工程风险
Turn-based(单轮次)步骤内的局部执行与自检方案探索、临时修补、短程任务依赖人工肉眼把关,容易漏掉集成环境的真实问题
Goal-based(目标驱动)终止条件的自主判断具有明确验收断言的中长程任务如果目标函数定义有偏差,Agent 会竭尽全力优化错误指标
Time-based(时间节拍)触发节奏与轮询周期监控 PR/CI、抓取数据源、同步工作区状态轮询频率若高于外部信息更新频率,会空耗额度并产生冗余上下文
Proactive(自主长流程)端到端完整工作流依赖库升级、已知 Issue 修复、日常迁移权限过大、上下文反复压缩失真、误操作对环境带来副作用

我不认为这四个层级越往后就越高级。在很多任务里,最稳妥的做法往往是从最简单的 Turn-based 开始;只有当某项任务的验收逻辑清晰、测试覆盖充分时,我才建议将其升级为 Goal-based 或 Time-based。


验证标准(Verification)是 Loop 的基石

读这些方案时,我最担心的是过早设计复杂的调度逻辑,把底层的验证能力搁在一边。

Loop 本身没有判断力,它只会忠实地放大底座系统的既有特征。如果一个项目的代码库清晰、测试覆盖严密、规约文档健全,Loop 就能把这套确定性反复放大,省下很多时间;反之,如果一个项目的验收标准模糊、构建环境动辄报错、权限边界混乱,Loop 只会迅速把混乱扩散到整个工作区。

因此,我会在编写自动化调度之前,优先写好验证规范(Verification Skill)。

以常见的前端修改为例,我们不能仅仅要求 Agent「把按钮样式改好」就结束回合。一个可靠的验证流程应当是量化且可执行的:

  1. 启动本地开发服务,在浏览器中访问目标页面;
  2. 模拟真实用户的点击交互,确认状态流转无误,并在前后分别截图取证;
  3. 检查浏览器 Console,确保没有引入新的 Warning 或 Error;
  4. 跑通相关的测试套件,确认原有功能未被破坏。

验证逻辑越是能被机器客观执行并产出确定证据,Agent 就越不需要凭借自己的语义推测去猜「我是不是已经做完了」,进而可以在达到停止条件时果断退出。


我会优先把哪些任务做成 Loop

适合优先做成自动化 Loop 的任务通常满足三个特征:

  • 输入来源稳定:例如结构化的提交记录(commit)、持续集成报错(CI)、合并请求(PR)或定时数据源;
  • 验收标准客观:例如单元测试全绿、文件已更新、静态检查无报错;
  • 高风险动作具备隔离带:涉及生产发布、删除数据、对外付款等操作时,必须停下来等待人工最终确认。

边界与人工防线

并不是所有的任务都适合被放进全自动的 Loop 之中。

我的看法是,在涉及以下几类场景时,必须在 Loop 中保留严格的熔断断点与人工裁决(Human in the loop):

  • 主观与审美判断:界面的视觉风格、品牌调性、文案的情感倾向;
  • 核心商业与战略取舍:业务方向的妥协、架构方案的重构路线、投资逻辑的抉择;
  • 高风险不可逆动作:生产环境代码发布、云上资源销毁、敏感权限变更或对外支付。

成熟的 Loop 系统应当接管大量机械、繁琐但验证标准清晰的重复工作,遇到需要价值判断的边界节点时,则带着完整的证据链停下来,交给人类做最终决策。人参与得少,并不能单独说明系统更成熟。


参考来源