/观察—计划—行动—验证的 Agent 循环登录后记录进度

观察—计划—行动—验证的 Agent 循环

建议用时:25 分钟(含练习)

学习目标

能够把一次 Agent 任务拆成目标、状态、工具调用、结果观察和停止条件。

本节产出

一张带失败分支的 Agent 循环图

核心知识:行动之后还要重新看结果

一个系统先生成计划、再调用工具,并不自动意味着任务已经完成。真正决定可靠性的,是它怎样读取工具结果、更新任务状态,并据此选择下一步。

Agent 循环可以理解为下面这几步:

  • 接收目标
  • 观察当前情况
  • 选择动作
  • 执行动作
  • 读取结果
  • 检查是否满足目标

未满足时继续,无法安全推进时停止并交接。

这里的“观察”不是要求模型展示隐藏的思考过程,而是收集能检查的事实,例如文件是否存在、测试返回什么、服务是否接受请求。计划是准备做什么,工具调用是尝试做什么,验证则回答实际发生了什么。这三件事不能用一句“已完成”替代。

任务目标进入观察和动作循环,执行结果返回观察节点,验证通过后才到达交付节点

图中回到观察节点的箭头表示反馈。一个失败结果可能要求修改方案,也可能证明应该停止。循环并不要求每一步都由模型自由选择;固定步骤适合确定流程,只有确实需要根据现场情况判断的地方才增加自主选择。Anthropic 的工程文章也区分了预先规定路径的工作流与由模型动态指导过程的 Agent。

状态要能支持下一次决策

最小状态可以包含目标、已知事实、已完成动作、待解决问题和剩余限制。例如“已找到三份文件,其中一份无法读取”比“进展顺利”有用得多。状态应由实际结果更新;如果调用超时且结果未知,不能直接记录失败并无限重试,因为前一次动作可能已经生效。

停止条件至少包括完成、预算耗尽、连续失败和需要人工判断。预算可以是步数、时间或调用费用,但达到预算不代表成功。系统应交付当前可用结果和明确缺口。对有外部影响的动作,还要区分是否已经执行,避免接手者重复操作。

案例:整理一组公开练习文档

假设目标是把十份虚构课程文档生成索引,不修改原文。输入目录已被明确授权读取,输出只允许写入一个新的索引文件。验收要求是十份文档全部有标题、相对链接和一行摘要,打不开的文件单独说明。

阶段实际观察合理下一步
搜索文件找到十份,类型一致逐份提取标题与正文
读取内容九份成功,一份编码异常检查异常原因,保留原文件
生成索引九条摘要已经形成标记缺失条目,不编造摘要
验证链接一条链接路径错误修正输出,再验证全部链接
最终检查九条完整,一条待处理如实交付部分结果与原因

这张表让我们看到,工具返回“写入成功”仅说明文件被写入,并不能证明内容完整。最后的验证必须独立检查条目数量、链接可用性和异常声明。若允许人工提供正确编码,任务可以继续;否则应保持缺口可见。

错误恢复不是机械重复

读取暂时失败可能适合有限重试,但权限拒绝应回到授权范围检查,内容不完整应回到来源读取,文件不存在则需要核对路径。把所有错误都当作网络故障,会浪费资源并掩盖真正原因。每次重试前,应说明哪项条件发生了改变,或为什么该错误可能是暂时的。

还可以给循环设置“无进展”检测:连续三次得到同样的错误,且没有新增信息,就停止自动重复。三次只是本练习的设计值,实际系统应根据任务风险与成本选择。重要的是限制可以执行,而不是只写在提示里。

动手练习

  1. 为上述索引任务写出状态字段、允许动作和停止条件。
  2. 分别处理读取失败、输出写入成功但链接错误、工具超时三个结果。
  3. 写一段最终交付说明,准确区分完整结果、部分结果和未验证事项。

参考答案与推演

完成检查

  • 能区分计划、工具尝试与实际验证结果。
  • 循环状态保留异常和未知结果,不把它们抹成成功。
  • 有可执行的停止条件,外部动作不会被盲目重复。
  • 最终结论能由文件、工具结果或检查记录支持。

参考与来源

附件

观察—计划—行动—验证的 Agent 循环

3 道题 · 及格分 60 分

开始测验