# Agent Loop:AI Agent 的唯一直心骨

Agent Loop:AI Agent 的唯一直心骨

一句话while True 调 LLM,有 tool 就执行、没 tool 就退出。所有 Agent 框架的底层都是这个循环。


一、核心代码(10 行骨架)

python 复制代码
def agent_loop(messages: list):
    while True:
        # ① 调 LLM,带上工具定义
        response = client.messages.create(
            model=MODEL, messages=messages, tools=TOOLS, max_tokens=8000
        )
        messages.append({"role": "assistant", "content": response.content})

        # ② 检查是否调用了工具
        tool_calls = [b for b in response.content if b.type == "tool_use"]
        if not tool_calls:
            return          # 没调工具 → 任务完成,break

        # ③ 执行工具,收集结果
        results = []
        for block in tool_calls:
            output = run_bash(block.input["command"])
            results.append({"type": "tool_result", "tool_use_id": block.id, "content": output})

        # ④ 结果喂回 messages,进入下一轮
        messages.append({"role": "user", "content": results})

二、四步一判断

步骤 做什么 关键知识
① LLM create(messages, tools) tools 参数告诉模型"你可以调用这些函数",模型在生成时会在内部做 function calling 决策
② 检查 过滤 tool_use 模型输出是混合内容:text + tool_use。没 tool_use 说明模型认为信息已够,直接给答案
③ 执行 subprocess.run() / API / 搜索 这一步是同步阻塞的。工具执行期间 LLM 在等待,所以超时控制必须做
④ 喂回 messages.append(results) 把 Observation 以 user 角色塞回对话历史。下一轮 LLM 基于新数据重新推理
判断 if not tool_calls: return 唯一的退出条件。模型自己决定什么时候停,不是外部硬编码

三、为什么这个模式是"唯一"的

LangChain 的 AgentExecutor、OpenAI 的 Agents SDK、Anthropic 的 Claude Code、AutoGPT、CrewAI......所有 Agent 框架的底层骨架都是这个 while 循环。区别只在于外围包装:

框架 在这个循环上加了什么
LangChain 预置的 Agent 类型(ReAct、Plan-and-Execute)、回调钩子、记忆管理
OpenAI Agents SDK 内置的 handoffs(多 Agent 路由)、guardrails(输入输出校验)
Claude Code 文件系统感知、git 集成、并行工具调用、权限确认层
AutoGPT 长期记忆(向量数据库)、目标分解、自主决策

剥掉所有包装,剩下的就是这个 10 行循环。 理解它,等于理解了所有 Agent 框架的底层协议。


四、生产必须加的三件事

上面的代码是骨架,上线必须补三块:

1. 最大循环次数(防死循环)

python 复制代码
for step in range(MAX_STEPS):   # 如 10 步
    ...
else:
    raise RuntimeError("Max steps exceeded")

模型可能陷入"搜索 → 没结果 → 再搜索"的循环,必须硬上限。

2. 工具错误结构化返回

python 复制代码
try:
    output = run_bash(cmd)
except Exception as e:
    output = f"[ERROR] {type(e).__name__}: {e}"

错误信息以 Observation 喂回,模型能在下一轮 Thought 中自适应修复(换命令、改参数、或承认失败)。

3. 上下文窗口管理

每轮循环追加 Thought + Action + Observation,messages 长度线性增长。长任务必须:

  • 设置 max_steps 硬上限
  • 对历史做滑动窗口或摘要压缩
  • 监控 token 用量,接近上限时触发摘要

五、一句话总结

Agent Loop = while True: llm → check → exec → feed → loop。没有它,Agent 不存在;有了它,外面包什么都只是工程细节。

相关推荐
zx_741484811 小时前
【计算机视觉入门】基于 OpenCV 的银行卡号识别综合案例
人工智能·opencv·计算机视觉
龙虾PRO1 小时前
2026 Headless CMS实操指南:区别传统与解耦CMS,落地全渠道内容复用
人工智能
fīɡЙtīиɡ ℡1 小时前
RAG优化
人工智能
语音之家1 小时前
多方言ASR自蒸馏:学会方言,不忘普通话
人工智能·消融实验·方言 sft
禁默1 小时前
2026年Mac被控远控深度测评横评:六大主流远程软件哪款更能打
人工智能·远程
AR-26710-1 小时前
机器学习复习Day1——线性回归编程作业
人工智能·机器学习
呆呆敲代码的小Y1 小时前
10 分钟搞懂 cua:开源 AI 操作电脑基础设施,附 Python 沙箱与 Agent 上手代码
人工智能·python·开源·ai agent·awesome·llm应用·cua
工具分享1 小时前
带店托管必用爆单AI选品,一人公司轻松掌握
人工智能·python
l1258651 小时前
# RAG低延迟架构设计:从5秒到500ms的优化全链路
数据库·人工智能·python·langchain