# 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 不存在;有了它,外面包什么都只是工程细节。

相关推荐
杜大哥几秒前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python
wuyk5551 分钟前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python
今日热点2 分钟前
2026 企业微信主体变更公证书办理方法与私域资产保全指南:活码存档权限全规范
人工智能·企业微信
Dawson Zhu3 分钟前
AI 辅助调试陷入「反复修改」循环?用证据驱动的四步法破局
人工智能·语言模型·架构·aigc·agi
信誓旦旦的程序猿8 分钟前
【量化系统从零构建 #04】存储设计:选型·建库·交易日历
java·人工智能·python·股票数据api·股票数据·股票数据api接口·股票api数据接口
yurenpai(27届找实习中)8 分钟前
Java 10 的 var 为什么不能随便用?从订单汇总看懂类型推断与泛型陷阱
java·开发语言·java18
、如果12 分钟前
PDF图片文字提取零依赖方案:pymupdf+AI视觉实战
人工智能·数据分析·pdf·图片提取·文字提取·skills
米小虾16 分钟前
不偷权重,只问问题:蒸馏攻击是怎么把前沿模型"问"走的,以及什么真能挡住
人工智能
2601_9605544724 分钟前
会议录音一键生成纪要:实测告别手工整理
人工智能
米小虾27 分钟前
一周 AI 观察(9.5–9.11):AI 从"产品"变成"基础设施"
人工智能