有界 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
不要保存冗长隐藏推理,只保存决策、命令、产物、失败和下一检查。新模型应能仅凭这个包恢复工作。
小型本地模型更适合短轮次、少工具、明确文件目标和确定性验证器。一次只给一个改动,压缩噪声输出,并在漂移前重启上下文。更多循环无法弥补模型无法可靠使用必要工具的问题。