跳到主要内容

Agent Loop

internal/agent 是严格的 inner-loop kernel。它是可复用执行机械,不是 Anyy 产品 runtime。

Loop 职责

Loop 接受 RunRequest,通过 LLMProvider streaming,记录 assistant messages,执行请求的 AgentTool calls,追加 tool-result messages,并重复直到完成或遇到 stop condition。

Continue 用额外 steering messages 恢复执行。Cancellation 来自 gateway/runtime 传入的 context。

Runtime 职责

Runtime code 提供 provider 和 tool interfaces。它拥有 persistence、approvals、ChangePlan checks、 audit、model fallback、context assembly、memory、skills、channel routing 和 user-facing delivery。

这些关注点通过 request fields 和 hooks 进入 loop,而不是通过 internal/agent 的 imports 进入。

消息与工具调用

Loop messages 是 AgentMessage values。Provider adapters 把它们转换成各模型 API 的 wire format, 再把 streamed deltas 转回 loop events。

Tool calls 到达 loop 时必须是完整的。Provider-specific partial tool argument assembly 属于 provider adapter。

中断

当 context cancelled,或 runtime hooks 返回 runtime tool error 时,loop 停止。Gateway 通过 session stop、interrupt、queue 和 steering RPCs 暴露这些能力。

Runtime 可以把 steering 注入下一个 tool result。Loop 本身不理解 TUI commands 或 channel commands。

压缩

当达到 turn iteration budget 时,loop 可以生成一次 final no-tool summary request。Session compression、 memory suggestions、raw retention 和 summary storage 是 runtime/state 职责。