跳到主要内容

有界 Agent 循环模式

只有当进展与停止条件可观察时,Agent 循环才有用:

读取状态 → 选择一个动作 → 执行 → 检查证据 → 更新状态 → 停止或继续

难点不是重复,而是什么信息应跨轮次保留,以及什么证据能证明值得再跑一轮。

四种实用模式

1. 会话内工具循环

同一对话交替进行模型回复和工具调用。它响应快、保留细节,但历史会膨胀,失败路线持续占据注意力,模型也可能根据自己的叙述宣布成功。适合轮数受限的短探索。

2. 新上下文任务循环

每轮启动新的模型进程,并读取任务说明、测试输出和进度账本等持久文件。这类模式有时被实现成 shell “Ralph loop”。它用可复现性换掉对话记忆;若任务模糊或账本过期,重启模型并不会自动修好流程。

3. 实现—验证循环

工作模型完成一个有界修改,外部命令决定下一状态:

实现 → format/lint/test → 诊断失败 → 修复

验证器必须独立于模型文字,优先使用退出码、断言、schema 和 diff。限制修复次数,并保留最后一次失败证据。

4. 评估器—优化器循环

工作模型产生产物,独立评估器按 rubric 返回结构化缺陷,工作模型只修这些缺陷。它适合写作、计划和代码审查,但评估器不能悄悄扩大范围。新上下文或不同模型可以增强独立性。

必需的停止条件

每个自动循环都应定义:外部成功谓词;最大轮数、耗时、token 或成本;同一错误重复等无进展规则;diff 或副作用边界;凭据缺失、需求歧义、反复失败时的升级状态;取消机制与可恢复检查点。

“继续直到完成”不是停止策略。

最小循环账本

objective: 测试通过且不改变公共 API
attempt: 3
last_action: 修改解析器边界检查
verification: pytest tests/test_parser.py -q
result: 失败,1 个断言
next: 检查 UTF-8 截断案例
blocked: false

不要保存冗长隐藏推理,只保存决策、命令、产物、失败和下一检查。新模型应能仅凭这个包恢复工作。

小型本地模型更适合短轮次、少工具、明确文件目标和确定性验证器。一次只给一个改动,压缩噪声输出,并在漂移前重启上下文。更多循环无法弥补模型无法可靠使用必要工具的问题。