本阶段课程 · Agent 的组成与运行
从一次 API 调用到一个 AgentAgent Loop:行动、反馈与停止任务规划与多 Agent 协作Agent 的权限、确认与执行回执
LESSON 30 / 36阅读约 7 分钟

Agent Loop:行动、反馈与停止

沿请求与工具结果阅读执行日志,理解条件改变后路线为何变化。

循环怎样把一次回答变成持续执行

Agent的一轮通常包含模型选择、工具执行与反馈更新等阶段。工具结果回到下一次模型输入后,系统就能根据新信息调整行动。人们常用“思考、行动、观察”描述这一过程;从使用者能够核对的角度,更重要的是请求、执行结果和状态变化。

这不是让模型在一个回答里写出一大段自述。模型可以生成看似合理的“我已经查询”,但只有真实工具记录才能证明查询发生。本站实验展示的是可观察事件,不是模型内部的隐含推理记录。

沿默认场景逐项看日志

目标仍然是12人、周日14—16点、预算600元。实验中的场地数据是教学预设,用来观察控制关系,不代表真实营业与价格。

事件本次新增了什么接下来为什么这样做
模型请求查询A一个待执行的查询尚无事实,应用先执行
工具返回A关闭A不满足时间条件需要寻找其他候选
模型请求查询B下一项查询请求原预算与人数仍需保留
工具返回B可用、520元B的容量、时段与总价可以逐项比较约束
模型交付推荐B有依据的候选结果推荐任务完成,预约另需确认

注意每一步多知道了什么。查询之前不能知道结果;取得结果后,也需要与目标比较。把这些状态区分开,才能检查模型是否跳过了关键验证。

改一个条件,为什么路线会变化

预算改为400元,B的520元不再符合条件。系统可以继续查C;如果C为680元,也不符合预算,就应报告没有匹配候选。不能因为“已经查了很久”,就悄悄把预算提高到700元。

如果B临时满员,而预算700元,C又满足人数和时间,就可能推荐C。同一条模型指令,在不同反馈与约束下出现不同路径,正是动态决策的用途。

固定工作流也可以提前写好这些分支。本实验使用预设分支保证教学结果可重复;真实Agent会由模型参与选择下一步,应用仍负责实际执行与限制。

为什么必须有轮数与失败上限

每次模型调用都会占用时间与用量。工具连续失败时,无限制循环只会重复消耗资源。应用应设置最多轮数、最长时间或特定错误的重试上限,并在达到限制后停止。

本实验把最终交付也算一轮模型调用。因此,两次查询完成后,即使已经得到B的数据,最多两轮的设置仍可能阻止最终比较与交付。轮数的定义需要明确,不能简单等同于页面按钮点击次数。

工具失败以后,状态应怎样变化

超时意味着本次没有获得可确认结果,不意味着场地关闭。应用可以对只读查询进行有限重试,连续失败后保留未知。若是预约等写入动作,还需确认上一请求有没有已经执行,避免重复操作。

一个可用的Agent应能解释“查到了什么、没查到什么、为什么停在这里”。这比一条笼统的“任务失败”,或没有依据的“全部完成”,更能帮助用户继续处理任务。

交互演示 · Agent 透明实验室跟着一次真实机制的模拟,看助手如何行动。 8 分钟 · 教学模拟

检查一下理解

Agent看到查询超时,能推出场地关闭吗?

本节参考与继续阅读

下列章节用于核对概念与机制。本站以中文重新组织讲解,例子和练习为独立编写。

可选练习根据执行记录解释Agent为什么继续、改方向或停止。
练习目标

根据执行记录解释Agent为什么继续、改方向或停止。

打开Agent透明实验室。每次修改条件都会重置演示;逐次点击“下一步”,先预测,再查看事件。所有场地与价格均为固定教学数据。

场地事实卡
A:周日不营业。
B:正常场景有空位,容量16人,总价520元;另一场景中满员。
C:有空位,容量20人,总价680元。
任务:12人、周日14—16点;默认预算600元。

跟着做一遍

下面的结果是本站编写的对照示例。实际工具的措辞可能不同,按每步的关键条件检查即可。

01

跑一次默认路线

设置600元、A休息B有空位、最多4轮。逐步点击到交付,先记录事件顺序。

做完后,展开结果对照
对照示例 · 不要求逐字相同

请求A→A关闭→请求B→B可用520元→推荐B,等待确认。并未查询C,因为已有满足目标的候选。

为什么这样做Agent不一定要穷尽所有选项;停止条件应与任务要求一致。本任务是找到一个符合条件的场地,不是证明全城最便宜。

02

把预算降到400元

预算滑到400,其他保持默认,再逐步运行。预测它拿到B报价后会怎么做。

做完后,展开结果对照
对照示例 · 不要求逐字相同

B的520元超预算,于是查询C;C的680元也超预算,最后报告没有符合条件的场地,不擅自提高预算。

为什么这样做同样的工具结果,在不同约束下会导致不同下一步。任务记录必须保留预算,不能查着查着忘了它。

03

让它有事实,却没有足够轮数交付

恢复600元,把最多模型调用轮数设为2,再运行。

做完后,展开结果对照
对照示例 · 不要求逐字相同

可以完成查A、查B两次模型请求并看到工具结果,但到最终比较交付时达到上限,停止且不出现预约确认。

为什么这样做本实验把交付也算一轮模型调用。上限按模型调用计,不等于点击次数;工具反馈显示本身不再算一轮。

04

查不到时,观察未知有没有被改写

把轮数恢复4,选择查询工具连续超时,再运行。

做完后,展开结果对照
对照示例 · 不要求逐字相同

只读查询最多重试一次;连续超时后停止,营业与空位仍是未知,不说“A关闭”。

为什么这样做失败信息也是反馈,但超时只能证明这次没拿到结果,不能证明外部世界是什么状态。

刚才用到的一个新词

执行循环

把当前任务交给模型、执行允许的动作、接收结果、更新记录,然后继续或停止的重复过程。

没做出来?从这里排查

预算变化后还在看旧日志

本实验修改参数会重置;真实应用也应明确是否重开任务,避免串用旧状态。

看到B的资料就觉得任务已完成

看是否已经按全部约束比较并交付;查询结果与最终判断是不同事件。

换一个例子验证

为三个条件组合先写预测,再运行。

  1. 600元且B正常:预计推荐B。
  2. 400元:预计无匹配。
  3. B满员且预算700元:预计继续查C并推荐C。
检查标准能根据实际证据和原始条件解释分支变化,而不是只背一个流程图。

完成状态仅保存在当前浏览器,可再次点击取消。