Agent 凭什么自己干活?聊聊 Agent Loop 这个核心循环

前阵子有个朋友问我,同样是接大模型,为什么聊天机器人只能你问一句它答一句,Agent 却能自己查资料、写代码、跑命令,一路把活干完。我想了想说,中间隔着的不是什么神秘黑科技,就是一个 while 循环。

这个循环叫 Agent Loop,是这两年几乎所有智能体框架的心脏。今天我用大白话把它拆开讲讲。

聊天机器人差在哪

普通对话模式下,模型的工作方式是一锤子买卖。你给它一段输入,它吐一段输出,然后就没有然后了。它没法验证自己说得对不对,也没法在答错之后自己重来一遍。你让它查今天的天气,它只能凭训练时的旧记忆瞎编,因为它根本够不着外部世界。

Agent 想解决的就是这个问题:让模型从「只会说」变成「能动手」。可大模型本体依然只会输出文本,它没有手。怎么办?工程师在外面套了一层循环,替它跑腿。

循环怎么转,什么时候停

Agent Loop 的核心节奏可以概括成三步:观察、思考、行动。这套划分来自经典的 ReAct 范式,它把推理和行动拧在一起转。

具体到一轮循环是这样的。模型先读到当前的任务和历史记录,这是它眼里的「观察」。然后它琢磨一下:信息够不够?要不要调个工具?这是「思考」。想清楚之后,它输出一份结构化的工具调用请求,比如让搜索工具去查一个关键词。外层代码接住请求真正去执行,再把执行结果作为一条新消息追加进对话历史,喂给模型进入下一轮。这就是「行动」,以及新一轮的「观察」。

说白了,模型没有记忆,它每一轮都是把整个对话历史从头读一遍,再决定下一步。工具结果的回灌,靠的就是往消息数组里追加内容。听起来朴素得让人发笑,但正是这个机制,让模型能一步步逼近目标。

用几行伪代码就能画出它的骨架:

messages = [{"role": "user", "content": task}]
for step in range(max_steps):
    resp = llm.chat(messages, tools=tools)
    if not resp.tool_calls:
        return resp.content   # 模型不再要工具,视为交卷
    for call in resp.tool_calls:
        result = run_tool(call)
        messages.append(as_tool_msg(call, result))  # 结果回灌
return "触发步数上限,强制停下"

看代码你会发现两件事。一是循环的燃料就是那个不断变长的消息数组,二是循环必须有出口。

没有停止条件的 Agent Loop 是危险的,这话一点不夸张。模型可能陷入死循环,反复调同一个工具,或者在两个错误选项之间来回横跳,每转一圈都在烧钱。工程上常见的刹车有好几道。最自然的一道是模型自己交卷:某一轮它不再请求任何工具调用,直接给出最终回答,循环就该结束了。兜底的则是硬性限制,比如最大步数、token 预算封顶,还有连续多轮没有实质进展就强制中断的检测。多层保险叠在一起,才敢把它放进生产环境。

越转越贵的烦恼

循环转起来之后,一个绕不开的痛点是上下文膨胀。前面说了,每一轮都要把全部历史重新塞给模型,工具返回的结果又往往很长,一次网页抓取可能就是几千 token。转到十几二十轮,上下文很快逼近模型的窗口上限。

代价是实打实的。最直接的是钱和延迟,上下文越长,每一轮推理越慢越贵,而且每轮都要重复付这笔账。窗口装不下时就得裁剪,常见做法有滑动窗口丢掉早期消息、把历史压缩成摘要、或者外挂一个向量库当长期记忆,需要时再检索回来。但这些方案都不是免费午餐:摘要会丢细节,模型可能基于一段不完整的记忆做出错误决策;检索可能捞不回关键信息;滑动窗口则可能把最初的任务要求直接滑没了。我自己见过的翻车案例,一多半都能追溯到上下文管理没做好。

ReAct 式循环还有另一笔账:每一步都要发起一次推理请求,任务链路一长,耗时相当可观。所以后来又出现了 Plan-and-Execute 这类范式,让模型一次性规划好全部步骤再顺序执行,省下大量调用,代价是中途纠偏能力变弱,计划一旦跑偏就得推倒重来。两种路子各有适用场景,没有万能答案。

对了,还有个不起眼的地方值得提一句。Agent 调的外部工具,不管是搜索 API 还是代码沙箱,基本都走 HTTPS,你自己搭的 Agent 服务对外也得有证书。我维护自己那套小基础设施时,用 lcjmSSL 的轻量 API 把证书申请、验证、部署整个流程做成了自动化,脚本里调一下就完事,不用再手动折腾,也就不担心哪天证书过期把循环卡死。传输层的事交给工具,注意力才能留在循环本身。

回头看,Agent Loop 没有任何玄学。它就是一个 while 循环,加一份不断追加的对话历史,再加几道刹车。模型想一步、做一步、看结果、再想下一步,用一轮轮试错逼近目标,拿算力和 token 换取单轮问答给不了的可靠性。理解了「循环」这两个字,再看市面上花样繁多的智能体框架,你会发现它们大多是在这个骨架上换皮加料而已。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐