什么是 Agent Loop(智能体循环)?一个典型的 Agent Loop 包含哪些步骤?
- 标签:AI、大模型、Agent
🏛 业务架构师
Agent Loop(智能体循环)是 Agent 的核心运行模式——"感知→思考→行动→观察"周而复始直到任务完成。一个典型循环的步骤:
- 接收输入:用户指令/环境事件进入,装配上下文(System Prompt+历史+工具清单+记忆);
- 推理决策:LLM 分析当前状态,决定下一步——直接回答、调用工具、还是请求澄清;
- 执行动作:框架执行工具调用(带鉴权、参数校验),或输出文本;
- 观察结果:工具返回进入上下文,模型核对是否符合预期;
- 循环判断:任务完成则输出最终结果终止;否则回到 2 继续;
- 终止保护:步数/预算/超时熔断在每圈校验。
业务理解的关键:循环每转一圈都是成本(一次 LLM 调用+可能的工具执行),循环次数是 Agent 的"工时"——设计得好的 Agent 3~5 圈完成任务,差的 15 圈还空转。所以循环质量直接决定单任务成本和时延。
运营视角的两个核心指标:平均循环步数(效率)和熔断率(失控面)。优化手段:工具描述写得准(少走弯路)、任务分解清晰(一次规划到位)、反馈信息可行动(减少无效重试)。Agent Loop 是 ReAct 范式的工程化,理解它的价值在于把"AI 自主性"转化为可度量、可管理的运营对象。
🏗 系统架构师
Agent Loop = "感知 → 推理决策 → 行动 → 观察"的迭代循环,直到满足终止条件——Agent 系统的心脏。典型步骤:
- 上下文装配:System Prompt + 任务目标 + 对话历史 + 记忆 + 工具定义,按窗口预算组装;
- LLM 推理:模型分析当前状态,决策——直接回答 / 调用工具 / 请求更多信息;
- 动作执行:解析输出(纯文本或工具调用意图)→ 校验(Schema、权限)→ 执行(工具/检索/代码)→ 异常捕获;
- 观察回填:执行结果处理(截断/摘要/落盘)写入上下文,成为下一轮的状态输入;
- 终止判断:无工具调用 = 完成;触发熔断(步数/token/时长/循环检测)= 优雅终止;
- 状态持久化:每轮 checkpoint,支持中断恢复。
架构师视角的三个本质认知:
- 它是一个以 LLM 为转移函数的状态机:状态 = 上下文,转移 = 推理+执行——所以 Agent 工程的核心是状态管理(上下文工程),不是提示词技巧;
- 成本模型是乘法:每轮全量上下文计费,N 轮任务成本 ≈ N × 上下文 token × 单价——步数预算就是成本预算,Prompt Cache 是唯一的减负阀;
- 可靠性靠外壳:循环内的模型决策不可靠(死循环、重复、漂移),可靠性来自循环外的工程件——熔断、幂等、checkpoint、可回放。裸 Agent loop 上生产 = 事故预定。
💻 全栈开发专家
Agent Loop(智能体循环)是 Agent 的心跳:组装上下文→调模型→执行动作→观察结果→重复,直到终止。一次典型循环的步骤:
- 输入感知:用户消息/事件进入,关联会话状态;
- 上下文组装:system prompt + 任务目标 + 对话历史(经裁剪/摘要)+ 可用工具 schema + 检索到的记忆/知识;
- LLM 推理:模型输出——纯文本回复(可能是终答)、tool_call(动作)、或求助信号;
- 动作执行:权限校验 → 工具/沙箱执行(超时、资源限制)→ 结果处理(裁剪、摘要、错误格式化);
- 观察回填:执行结果作为 observation 追加进上下文;
- 终止判定:终答 / 达成验收 / 预算耗尽 / 无进展 / 人工中断——否则回到 2;
- 收尾:记忆写入、审计落账、输出交付。
┌──────────── 循环 ────────────┐
↓ │
组装上下文 → LLM → ┬─ 文本 → 终止?─┐ │
└─ tool_call → 执行 → 观察 ┘工程上循环本体要做的三件事:预算内建(每圈扣减)、trace 全记(每圈的输入输出可回放)、异常转译(工具错误变成模型可读的观察,给它自纠机会而不是崩掉循环)。
一个认知:现代框架(LangGraph、各 Agent SDK)的抽象再花哨,剥开都是这个循环——理解它,框架就只是语法糖;不理解它,框架就是黑盒。