Agent 循环
Agent 把模型、工具、Tape 与循环组装在一起:模型决定下一步,工具执行动作,Tape 提供历史,循环把这些步骤推进到最终答案。
Agent 循环
Section titled “Agent 循环”一次循环按以下方式推进:
- 通过
TapeContext读取历史,加入新的用户消息,调用模型; - 如果模型请求工具,就执行工具并把结果交回模型;
- 如果模型直接作答,本次 Run 结束。
这里有两个执行粒度:
| 概念 | 定义 | 结束条件 |
|---|---|---|
| Run | 一次完整的 Agent 执行,向调用方提供 StreamEvent 流 |
模型不再请求工具,或调用方关闭流 |
| Step | 一次模型推理,以及该响应请求的全部工具调用 | 本次推理请求的 tool calls 处理完毕 |
需要分清三个边界:
- Run 由事件流驱动。只有迭代事件流,模型与工具循环才会推进;这是执行方式,不是另一种事件机制。
- 模型上下文来自 Tape,不来自 Run。Run 不另外维护一份消息列表,每次模型调用都通过
TapeContext投影历史,见 Tape。 - Run 不等于 Turn。Run 是 Agent 的一次执行;Turn 是应用层对一条消息的处理,直接命令甚至可以不经过 Run,见 Turn。
核心层与应用层
Section titled “核心层与应用层”core.Agent 是 Bub 的微内核:负责模型与工具循环、事件和 Tape,不负责会话路由、配置、插件发现与消息渠道。应用层在同一个循环之外补充这些能力,而不是实现另一套 Agent。
因此,嵌入现有服务时,模型、工具和存储等资源由宿主显式传入;需要完整消息生命周期时,再使用应用层。具体入口见 SDK 与复用 Bub 应用。