F8.2 F8

Agentic 循环:推理 → 行动 → 观察 → 重复

Agentic 循环是让 agent 运转起来的引擎。它是一个重复的周期:模型推理该做什么,执行一个动作(工具调用),观察结果,然后决定继续还是停止。没有这个循环,你只有一个 chatbot。

循环过程

  1. 模型接收对话历史(包括之前的工具结果)
  2. 模型推理任务并决定下一步动作
  3. 如果需要工具 → 模型返回一个工具调用(stop_reason: tool_use)。Client 执行工具,追加结果,把一切送回去。循环继续。
  4. 如果任务完成 → 模型返回最终响应(stop_reason: end_turn)。循环终止。

每次迭代都涉及一次 API 调用。模型看到完整的累积对话——所有之前的消息、工具调用和工具结果——然后决定接下来做什么。

stop_reason 驱动循环

stop_reason 字段是控制信号:

  • tool_use → 模型需要执行一个工具。继续循环。
  • end_turn → 模型结束了。返回最终响应。

这让循环是模型驱动的。模型决定什么时候继续(通过请求工具)和什么时候停止(通过返回最终响应)。不是固定迭代次数,不是计时器,不是每步都要人工批准。

不保证完成

Agentic 循环不保证任务完成。工具可能失败。信息可能不可用。任务可能就是做不到。模型可能撞上 max_tokens。循环可以在没有成功完成任务的情况下终止。

这就是 max_turns 作为安全限制存在的原因——它防止模型一直尝试但永远不收敛的失控循环。但它不会让循环成功;只是防止无限转圈。

计算迭代次数

一个”找出所有 TODO 注释并生成摘要”的任务至少需要 3 次迭代:

  1. 模型调用 Grep → 结果返回(tool_use)
  2. 模型调用 Read → 文件内容返回(tool_use)
  3. 模型生成摘要 → 完成(end_turn)

“至少”是因为模型可能需要对多个文件调用多次 Read。每次工具调用是一次单独的迭代。模型不能把 Read 和摘要生成批量处理——它需要先拿到 Read 的结果才能总结。

循环 vs 单次调用

单次 API 调用生成文本然后停止。Agentic 循环加上了带观察的迭代工具执行:调用工具、看到结果、推理、决定下一步。这个观察 → 推理 → 行动的循环才是复杂多步任务得以实现的原因。同一个模型,同一个 API——循环加的是迭代能力,不是模型算力。


一句话总结: Agentic 循环按”推理 → 工具调用 → 观察结果 → 重复”运转,由 stop_reason 驱动(tool_use = 继续,end_turn = 停止)——它使多步任务成为可能,但不保证完成。