Agent Loop 如何组织任务执行?
未标记
考查重点:动作执行、反馈与终止条件。按当前任务状态构造输入,让模型选动作,执行合法工具并回填结果;达到目标、预算或需澄清时退出循环
本题目录
参考答案
核心回答
Agent Loop 是围绕当前任务状态反复进行决策、执行和反馈的控制过程。每一轮都把任务要求与已有结果交给模型,由模型决定下一步;运行系统执行合法的工具调用,把真实结果写回状态,再判断继续、等待输入还是结束。
一轮通常包括五步:
- 构建输入:组织任务目标、当前进度、历史消息、相关资料和可用工具。
- 模型决策:生成工具调用请求、直接回答,或提出需要用户补充的问题。
- 执行动作:检查工具是否存在、参数和权限是否符合要求,再调用工具。
- 更新状态:把调用与结果关联起来,记录新事实、进度、错误和资源消耗。
- 判断下一步:目标未完成则进入下一轮;需要信息或审批则暂停;满足完成条件或触发停止条件时结束。
例如查询某类商品及库存,第一轮先搜索商品,拿到商品 ID 后,下一轮才能查询对应库存,最后结合两次结果回答。循环的作用就在于让下一步依赖前一步的实际反馈,而不是一次性猜出整条路径。
展开说明
循环开始时,要把任务和状态准备好
用户输入进入任务状态后,系统需要保留目标、用户确认的约束、已经取得的结果和当前进度。模型每次调用所看到的上下文,再从这些状态中选择必要部分组织起来。
状态与上下文并不完全相同。状态可以包含完整的工具执行记录、文件位置、重试次数和累计成本;每次模型输入只放当前决策需要的信息。较大的工具结果可以保留摘要与定位,按需回读,避免整份日志持续挤占上下文。
运行前还要明确可用工具及其参数约定,并配置任务的时间、调用次数或成本预算。这些是循环能否继续的外部条件,不依赖模型自己记住。
模型负责选择动作,运行系统负责把请求变成操作
以“查最受欢迎的无线耳机,并检查是否有库存”为例:
- 模型看到用户目标和商品搜索、库存查询工具,先请求搜索无线耳机。
- 系统检查工具与参数后执行搜索,得到带商品 ID 的候选列表。
- 搜索结果回到上下文,模型选择符合条件的商品,再请求查询该 ID 的库存。
- 库存结果回传后,模型结合商品信息和库存状态生成回答。
这里搜索与库存查询存在数据依赖:库存工具需要的商品 ID,要从前一步结果取得。系统不能在还没获得 ID 时凭空填写参数。
现代工具调用通常使用结构化请求,包含工具名、参数和调用 ID。运行系统应根据协议识别调用,而不是看到普通文本中出现“调用工具”就执行。流式输出时,也要在请求已完整到足以校验后执行,避免把尚未接收完的参数当作有效动作。
用户自定义工具通常由应用执行;托管工具也可能由服务端执行。无论执行位置在哪,模型生成调用请求,都不能直接当作操作已经成功。
工具结果为什么必须回到状态里
模型不会自动知道程序刚才做了什么。系统需要保留它发出的调用,并将对应结果按调用 ID 关联回去,下一轮才能知道哪个动作成功、返回了什么,以及哪个动作需要调整。
例如库存查询返回“商品不存在”,下一轮应检查 ID 是否选错或数据是否发生变化;返回超时,则要按错误策略判断能否重试。不能把失败包装成普通成功文本,也不能只在后台日志中记错却不给下一轮必要反馈。
一个模型响应可能包含多个调用。彼此独立的只读查询可以并行;存在依赖、状态冲突或写入顺序要求的操作,则按依赖和业务规则执行。结果仍要分别关联到原调用,不能把完成得最快的结果误配给另一个请求。
状态更新让下一轮能够延续任务
至少要能区分:当前已知事实、正在执行的动作、已经取得的结果,以及仍未满足的目标。错误次数和预算消耗也应由系统记录,避免模型忘记此前失败或不断重置计数。
任务短且无恢复需求时,状态可以只保存在本次运行中;需要跨进程继续或人工介入时,再按需要持久化检查点。保存检查点也不等于外部动作自动具有“只执行一次”的语义:恢复前仍要确认写入状态,必要时使用幂等机制。
原始执行记录与模型上下文可以分别管理。关键结果需要能追溯,是否长期保留完整返回值则取决于调试、审计、隐私和存储要求;不能一概认为“摘要后原始结果都能丢弃”。
结束判断既看模型响应,也看任务条件
模型给出最终回答、没有再请求工具,通常表示这一轮决策准备结束,但还要检查结果是否满足任务。对于查询任务,要确认关键数据齐全;对于代码修改,要看相关测试;对于业务写入,要核对实际状态。
需要用户补充信息或审批时,应记录为等待状态,等输入到位后继续。权限不足、不可恢复错误、超预算或用户取消,则明确终止原因。
模型空输出、格式解析失败或响应被截断,不应直接记为成功,也不能无条件重新调用。可以按预设策略有限恢复,仍失败就返回清楚的错误和已完成部分。
ReAct 的“思考、行动、观察”概括了这种反馈机制;工程实现可以用普通循环,也可以用带条件边的状态图。它不要求公开模型的内部思维过程,也不要求所有 Agent 都采用同一种固定步骤数。
递进追问
Agent Loop 和预定义 Workflow 有什么区别?
区别主要在下一步由谁决定。Workflow 通常由代码或图规定步骤与分支;Agent Loop 会让模型根据当前结果选择动作。两者可以结合,例如审批与权限检查走固定流程,资料搜索由 Agent 动态决定。
为什么不能一次让模型生成所有工具调用?
独立查询可以批量生成;有数据依赖的调用,必须等前一步取得结果。例如先搜索出商品 ID 才能查对应库存。一次猜出所有参数会掩盖中间信息缺口,也失去根据失败结果调整路径的能力。
一次模型调用就是一次完整任务吗?
一次模型调用只产生当前决策。完整任务可能经历多次模型与工具交互,也可能因需要用户输入而暂停后继续。记录模型轮次、工具调用和任务状态时,应区分这几个层级,才能解释耗时和失败位置。
Loop Engineering 又强调什么?
它强调对循环的输入、执行、反馈、状态和退出条件做工程设计,也可能包含一次 Agent 运行之外的事件触发与再次调度。具体语境可能有差异,讨论时先说明是在讲单次任务内的 Agent Loop,还是任务之间的外层调度,避免把定时重启当成循环本身。
对应教程
- 《从零构建 AI 智能体》第 21 章:Agent 智能体:ReAct 部分把决策、工具和观察串成闭环,classic Executor 与新运行时的对比帮助理解“谁驱动循环”;本文进一步补充调用关联、状态管理与完成校验。
- 配套源码 AgentReact.py:通过商品搜索和库存查询演示先取得商品 ID、再获取库存,以及工具结果如何出现在消息轨迹中。源码使用模拟商品与库存数据,适合观察执行机制。
参考资料
- 国内:JavaGuide:AI Agent 核心概念:借鉴 Agent Loop 的上下文与工具反馈机制,说明正文中工具结果为何要写回下一轮输入,以及循环与固定流程的区别。
- 国内:ranxi2001:生产级 Agent 的执行循环包含哪些阶段?:参考上下文组装、参数校验、结果检查和状态更新的分工,把正文中的思考、行动、观察落实为可检查的执行步骤。
- 国内:Datawhale:第四章——智能体经典范式构建:依据 ReAct 的输入格式化、动作解析、工具执行和观察追加过程,解释正文中运行循环如何形成真实反馈链路。
- 国外:Anthropic:Building effective agents:采用环境反馈驱动下一步的 Agent 定义,区分正文中的模型决策循环与预定义工作流,并说明停止条件的必要性。
- 国外:Anthropic:Tool use with Claude:依据工具请求与结果回传示例,说明正文中调用 ID 的关联作用及应用侧工具、服务端工具的执行职责。
相关面经
21 篇康冠科技
Android 应用开发交流工具调用循环及 Agent 框架的相关思路。
DeepSeek
AI Agent开发岗Agent Loop 的核心设计是什么?——每一步的输入输出格式是什么?如果 LLM 返回的 Tool Call 不合法,怎么处理?如果执行完工具后观察结果太长,怎么截断?
快手
AI全栈开发Agent怎么做的, Loop 在这里是什么
海康威视
Agent开发Agent Loop 的完整流程
水滴
AI全栈Agent Loop 的基本执行流程是什么?
展开剩余 16 篇面经
字节跳动
Agent全栈开发中兴通讯
AI 算法工程师Agent loop 一般是什么样?
广电数科
Java 开发工程师你们的agent从用户输入到模型回答的整个链路
商汤
全栈开发工程师agent在业务链路上怎么实现?
字节跳动
后端开发工程师(AI 平台)那一个 Agent 它运行的原理是怎么做的?
字节跳动
AI 应用开发工程师描述一下最简单的 Agent Loop 是什么样子。
阿里巴巴
Agent 算法工程师Agent Loop
平安健康保险
AI 应用开发工程师介绍一下agent循环
京东
后端开发工程师可以说说agent loop吗
字节跳动
剪映 Agent 开发workflow 和 agent 的 loop 各自如何设计,我们业务中的 workflow 如何往 loop 上设计
百度
Java 开发工程师(智能客服)你怎么理解 Loop Agent 或者 Loop Engineering?
腾讯元宝
单agent runtime 的loop 是什么?
字节跳动
Agent 应用开发工程师整个链路运转的流程?
滴滴
算法工程师工具调用型 Agent 的基本流程怎么设计
阿里巴巴
前端开发工程师Agent模式的底层实现逻辑
字节跳动
后端开发工程师详细描述 Agent Loop 的完整执行流程(上下文压缩→流式模型→工具调用检测→注册校验→参数校验→权限校验→工具执行→大结果处理→日志审计→返回结果)







