深度拆解 AI Agent Loop:从一问一答到自主执行的全链路闭环
如果大型语言模型(LLM)的出现让我们拥有了一个无所不知的”大脑”,那么 AI Agent(智能体)的诞生,则标志着这个”大脑”终于长出了”双手”——它开始能够主动、连续地与物理或数字世界进行交互。
Agent 的核心魔力,藏在一个名为 Agent Loop 的执行闭环中。它不再局限于”一问一答”的 Prompt 模式,而是进化成了一个具备自我迭代能力的工程系统。
本文将基于一份完整的 Agent Loop 执行流程解析,以这一具体实现为例,逐层拆解 AI Agent 如何完成从接收用户指令、自主规划、调用外部工具,到最终交付可靠结果的全生命周期闭环。

一、宏观视角: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. 意图识别:用户想要”文件数量” -
2. 能力匹配:Bash 中的 ls和wc命令可以完成此任务 -
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. 安全审查:检查危险命令(如 rm -rf、sudo) -
2. 执行命令:通过 subprocess.run在本地执行 -
3. 结果结构化:将原始输出封装为标准格式
{"type": "tool_result", "tool_use_id": "bash_0", "content": "10"}
工具调用、安全审查、执行和结果结构化的全流程,正是 Harness 对 Agent 的驾驭——确保执行可控、安全,产出可验证。
步骤 6:第二次 API 请求 → 最终回答——循环闭环
最后一次 API 请求,MESSAGES 上下文已发生根本变化,包含三段消息:
-
1. User:初始问题”列出当前目录下的文件数量” -
2. Assistant (tool_use):模型的第一轮规划”调用 bash 执行 ls -1 | wc -l” -
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 是连接理解与执行的最关键节点,它将大模型从一个”思考者”,真正锤炼成了一个”行动者”。
夜雨聆风