Skip to content

Agent Loop:Agent 的心跳

agent-loop-flow

普通聊天机器人的工作方式很简单:你问一句,它答一句。每次对话都是独立的,模型看不到之前的上下文(或者只看最近几轮),更不会主动推进任务。

但真实的工作不是这样的。

假设你去看医生,你描述了症状,医生不会听完就给你开药。他会先查看病历,然后可能说“我需要看一下你的验血报告”,你去做检查,拿到结果后医生再综合判断。如果结果不够明确,他可能还会让你做进一步检查。这是一个循环的过程:收集信息、做出判断、采取行动、观察结果、再继续调整。

什么让 Agent 从“一问一答”变成“持续推进”

Agent 区别于普通聊天机器人的关键是:

Agent Loop 让大语言模型围绕目标持续思考、行动、观察,不断循环直到任务结束。

Agent Loop 的核心本质是一个 while (true) 循环,直到模型认为任务完成才退出。

可以用一段伪代码来概括:

text
循环开始:
    消息历史 = [用户的任务描述]

    重复执行:
        本轮快照 = 复制当前消息历史     ← 封存对话历史,每轮迭代产生新对象,不修改旧状态

        ① 整理上下文
           检查本轮快照是否过长
           如果过长,进行压缩或摘要,保留关键信息

        ② 思考 (Thought)
           模型阅读本轮快照,决定下一步做什么

        ③ 行动 (Action)
           模型选择一个动作:
           - 调用一个工具(如搜索、读写文件、执行代码)
           - 直接给出最终回答

        ④ 观察 (Observation)
           如果调用了工具,获取执行结果
           将结果写入一份新的消息历史(不修改本轮快照)

        如果 模型给出了最终回答:
            循环结束,返回结果

循环什么时候停下来

循环不能永远跑下去。Agent Loop 有三种主要的终止情况:

  • 任务完成:最理想的退出方式。模型认为目标已经达成,直接给出最终回答,不再调用任何工具。这是正常流程的终点。

  • 达到上限:循环次数或资源消耗超出了预设的阈值。比如设置了“最多循环 10 次”的保护机制、上下文超限等

  • 出错中断:用户主动停止(比如觉得方向不对,按下了中断键),或者系统遇到了无法恢复的错误(比如网络断开、工具执行失败且无法重试)。