乐于分享
好东西不私藏

深度拆解 AI Agent Loop:从一问一答到自主执行的全链路闭环

深度拆解 AI Agent Loop:从一问一答到自主执行的全链路闭环

如果大型语言模型(LLM)的出现让我们拥有了一个无所不知的”大脑”,那么 AI Agent(智能体)的诞生,则标志着这个”大脑”终于长出了”双手”——它开始能够主动、连续地与物理或数字世界进行交互。

Agent 的核心魔力,藏在一个名为 Agent Loop 的执行闭环中。它不再局限于”一问一答”的 Prompt 模式,而是进化成了一个具备自我迭代能力的工程系统。

本文将基于一份完整的 Agent Loop 执行流程解析,以这一具体实现为例,逐层拆解 AI Agent 如何完成从接收用户指令、自主规划、调用外部工具,到最终交付可靠结果的全生命周期闭环。

Agent Loop 完整执行流程

一、宏观视角:Agent Loop 的核心——推理与工具的共生循环

1.1 一行 while 循环揭示的本质

大多数 AI Agent 的灵魂,被封装在一个极简的 while 循环中:

while stop_reason == "tool_use":    response = LLM(messages, tools)    execute tools    append results

这行代码揭示了 Agent 与传统 Prompt 系统的本质区别:

  • • 传统系统:Prompt 是指令,LLM 是一次性的输出机器,焦点在”怎么说”
  • • Agent 系统:Prompt 仅仅是循环的起点,焦点在”如何持续做对”

这就是 Harness Engineering(约束工程)的核心思想——通过工程系统让模型持续做对事情,而不是指望模型自己变聪明。

1.2 从问答到执行:系统复杂度的质变

Agent Loop 构成了一个完整的任务闭环:

[用户任务] → [LLM 推理] → [工具调用] → [外部执行] → [结果回填] → [再次推理]

六个环节逐层递进:

  • • 用户任务:设定初始目标
  • • 上下文获取:LLM 接收任务和初始状态
  • • 工具检索:LLM 判断需要何种外部能力
  • • 执行:外部系统执行工具并产生结果
  • • 回填:执行结果作为新上下文喂回 LLM
  • • 再次推理:LLM 基于更丰富的上下文进行下一轮规划

只要模型返回的停止原因是 tool_use,循环就会持续进行,直到模型判断任务已完成,返回 end_turn无状态的模型与有状态的系统之间的桥梁,正是 Agent 的核心价值所在。


二、六步拆解:Agent Loop 的完整执行流程

让我们跟随 s01_agent_loop.py 的具体执行,逐步拆解这个闭环。

步骤 1:初始化——为 Agent 打造执行边界

Agent 的可靠性不来自模型的”自信”,而来自严格限制的工程环境。初始化阶段是在为 Agent 的执行”搭骨架”:

  • • 配置运行环境:终端支持、API 密钥加载等基础设施
  • • 定义 SYSTEM 提示词:Agent 的行为守则。例如 "You are a coding agent... Use bash to solve tasks. Act, don't explain." 这句话将模型的能力限制在 bash 范围内,并要求它专注于行动而非解释
  • • 定义 TOOLS:Agent 的”双手”。每个工具都有明确的输入结构 input_schema,确保模型生成的指令是外部系统可理解、可执行的

这一步决定了 Agent 能做什么、怎么做,以及做到什么边界。

步骤 2:用户输入——激活循环的起点

循环的开启需要一条明确的初始指令:

“列出当前目录下的文件数量”

这条自然语言指令代表用户目标,被追加到 messages 中,成为模型后续推理的源头。

步骤 3:第一次 API 请求——模型的推理决策

第一次 API 请求将 SYSTEM、TOOLS 和用户消息一起发送给大模型。模型的大脑开始运转:

  1. 1. 意图识别:用户想要”文件数量”
  2. 2. 能力匹配:Bash 中的 ls 和 wc 命令可以完成此任务
  3. 3. 指令生成:生成 Bash 命令 ls -1 | wc -l

模型决定不再直接回答,而是调用外部工具——这是从”说对话”到”做对事”的关键转折。

步骤 4:第一次 API 响应——tool_use 的决策时刻

模型返回了一个特殊的响应:

{  "type": "tool_use",  "id": "bash_0",  "name": "bash",  "input": {"command": "ls -1 | wc -l"}}

同时 stop_reason 被设置为 "tool_use",向系统发出”工具调用申请”。这一刻,模型不再是一个输出文本的机器,而是一个在复杂环境中自主决策的行动者。

步骤 5:本地执行 + 结果回填——将”说”变成”做”

这是 Harness Engineering 的高光时刻。编排系统接收模型的要求后:

  1. 1. 安全审查:检查危险命令(如 rm -rfsudo
  2. 2. 执行命令:通过 subprocess.run 在本地执行
  3. 3. 结果结构化:将原始输出封装为标准格式
{"type": "tool_result", "tool_use_id": "bash_0", "content": "10"}

工具调用、安全审查、执行和结果结构化的全流程,正是 Harness 对 Agent 的驾驭——确保执行可控、安全,产出可验证。

步骤 6:第二次 API 请求 → 最终回答——循环闭环

最后一次 API 请求,MESSAGES 上下文已发生根本变化,包含三段消息:

  1. 1. User:初始问题”列出当前目录下的文件数量”
  2. 2. Assistant (tool_use):模型的第一轮规划”调用 bash 执行 ls -1 | wc -l”
  3. 3. User (tool_result):外部系统的验证结果”10″

模型看到确凿的结果后,判断任务已完成,返回最终回答,stop_reason 设为 "end_turn",循环结束。


三、Messages 演化:Agent 的记忆与规划路径

要真正理解 Agent Loop 的自主性,需要看懂 messages 的演化逻辑:

user (问题)  →  assistant (tool_use)  →  user (tool_result)  →  最终答案

这条演化线就是 Agent 的历史记忆和规划路径:

  • • user (问题):初始状态,Agent 的记忆只有这个问题
  • • assistant (tool_use):模型进行第一轮规划,记忆中新增了自己的规划路径
  • • user (tool_result):关键转折点——外部执行结果被喂回模型,Agent 获得了确凿的证据

Agent 的核心骨架正是由 推理 → 工具调用 → 外部执行 → 回填 → 再次推理 这四层逐层递进的能力结构构成的。


总结:从黑盒输出到可追溯工作流的进化

AI Agent Loop 并非神秘的魔法,而是一套严谨、可观测的工程方法。

Prompt Engineering 聚焦于”怎么说”——专注于单次输出质量。

Harness Engineering 聚焦于”如何让 Agent 在系统里可靠工作”——专注于持续做对、工具与权限、验证与反馈、状态管理和监控审计。

一个好的 Agent,不仅仅是一个会说 ls -1 | wc -l 的模型,更是一个被良好 Harness 包裹、能够自动验证、具备错误回流和人工确认能力的工作系统。这种方法将模型的”推理能力”与系统的”执行能力”解耦,在降低系统复杂性的同时,大幅提升了复用性、可扩展性,并且让系统更易于调试与迭代。

从 Token 到 Prompt,从 Context 到 Agent,从 Harness 到 MCP 再到 Skills——这构成了从理解到执行的完整 AI 系统闭环。在这个闭环中,Agent Loop 是连接理解与执行的最关键节点,它将大模型从一个”思考者”,真正锤炼成了一个”行动者”。