Agent Loop:Agent 的心跳
本章摘要:
Agent 的本质是一个不断重复的循环:思考 → 行动 → 观察。模型在迭代中消化真实任务的不确定性,直到任务完成或需要停下为止。理解这个循环,是理解 Agent 全部子系统的基础。

什么让 Agent 从"一问一答"变成"持续推进"
普通聊天机器人的工作方式很简单:你问一句,它答一句。每次对话都是独立的,模型看不到之前的上下文(或者只看最近几轮),更不会主动推进任务。
但真实的工作不是这样的。假设你让一个程序去做一件事,它往往不是一步完成的:它要先看现有材料,再决定下一步动作,执行后看结果,再调整方向。Agent 就是把这种"持续推进"的能力交给了大语言模型。
Agent Loop 让大语言模型围绕目标持续思考、行动、观察,不断循环直到任务结束。
医生看病是一个很好的类比:你描述了症状,他不会听完就开药,而是先查病历、必要时让你做检查、拿到结果后综合判断,必要时让你做进一步检查——这是一个循环的过程:收集信息、做出判断、采取行动、观察结果、再继续调整。
循环的四步
把循环拆开看,每一轮都有四步:
思考(Thought):模型阅读本轮能看到的所有信息,决定下一步要做什么。这一步是模型的"内心独白"——它会判断任务进度、评估当前情况、规划接下来的动作。
行动(Action):模型选择一个动作。可以是调用外部能力(搜索、读写文件、执行代码),也可以是直接给出最终回答。
观察(Observation):如果调用了外部能力,系统把执行结果反馈回来。模型读到这个结果,更新自己的判断。
推进:把本轮的"思考 + 行动 + 观察"沉淀到对话历史里。判断当前的对话历史是否过长(模型的对话历史长度有一个上限),过长则触发对话历史总结。然后回到第 1 步开始下一轮。
四步的意义在于:每一步都是可独立推理的环节。模型不是一锤子买卖地把任务做完,而是分步走、每步都能调整。
每一轮独立、可回退
循环有一个看似细节、实则关键的设计:每一轮的对话历史是独立的、可回退的。
具体说就是:每轮开始时,系统把当前对话历史做一个"快照"(不可变的对象)。模型在本快照上思考、行动、观察。结束后,这一轮产生的新内容被追加到下一轮的快照上,旧的快照不会被修改。
这样做的好处是单步出错只影响当前轮:如果某一步走错了,Agent 可以回到上一轮的快照重新开始,不会污染已经积累的正确进展。
这种"快照 + 追加"的细节看起来像工程实现,但它在 Agent 设计中扮演重要角色:它让"尝试"和"撤销"成为可能。后续章节讨论的"上下文管理"和"权限确认"会反复用到这个性质。
循环什么时候停下来
循环不能永远跑下去。Agent Loop 有三种主要的终止情况:
任务完成:最理想的退出方式。模型认为目标已经达成,直接给出最终回答,不再调用任何外部能力。这是正常流程的终点。
资源不足:循环次数或资源消耗超出了预算。比如设置了"最多循环 N 次"的保护、模型可用的上下文或计算资源已经不够继续推理。
出错中断:用户主动停止(觉得方向不对),或者系统遇到了无法恢复的错误(网络断开、外部能力执行失败且无法重试)。