跳转到内容

Agent 循环

Agent 把模型、工具、Tape 与循环组装在一起:模型决定下一步,工具执行动作,Tape 提供历史,循环把这些步骤推进到最终答案。

一次循环按以下方式推进:

  1. 通过 TapeContext 读取历史,加入新的用户消息,调用模型;
  2. 如果模型请求工具,就执行工具并把结果交回模型;
  3. 如果模型直接作答,本次 Run 结束。

这里有两个执行粒度:

概念 定义 结束条件
Run 一次完整的 Agent 执行,向调用方提供 StreamEvent 流 模型不再请求工具,或调用方关闭流
Step 一次模型推理,以及该响应请求的全部工具调用 本次推理请求的 tool calls 处理完毕

需要分清三个边界:

  • Run 由事件流驱动。只有迭代事件流,模型与工具循环才会推进;这是执行方式,不是另一种事件机制。
  • 模型上下文来自 Tape,不来自 Run。Run 不另外维护一份消息列表,每次模型调用都通过 TapeContext 投影历史,见 Tape。
  • Run 不等于 Turn。Run 是 Agent 的一次执行;Turn 是应用层对一条消息的处理,直接命令甚至可以不经过 Run,见 Turn。

core.Agent 是 Bub 的微内核:负责模型与工具循环、事件和 Tape,不负责会话路由、配置、插件发现与消息渠道。应用层在同一个循环之外补充这些能力,而不是实现另一套 Agent。

因此,嵌入现有服务时,模型、工具和存储等资源由宿主显式传入;需要完整消息生命周期时,再使用应用层。具体入口见 SDK 与复用 Bub 应用。