流式输出

session.stream(prompt) 会在回合运行过程中逐步产出事件,因此你可以在文本到达时即时渲染,并实时响应工具活动。当你需要实时 UI,或希望 CLI 逐 token 打印输出(而不是等待 send 或 run 返回完整结果)时,请使用它。

每个事件都带有稳定的 version、type、payload 和可选 metadata 信封字段。常见类型包括 agent_start、text_delta / reasoning_delta、tool_start / tool_end、agent_end 和 error。验证信息位于 agent_end 的 payload 与便捷字段中。

Rust
Node.js
Python
Go

说明:

  • Rust 从 Tokio channel 接收 AgentEvent,并等待返回的生命周期句柄。Node.js 使用 for await 遍历 EventStream(也可以直接调用 stream.next())。Python 的 EventStream 同时支持 for 与 async for。Go 必须先持续读取 stream.Events,再从 stream.Done 读取最终错误。取消 Go Context 也会请求原生 Session 取消当前 Run。
  • 四种 SDK 都公开规范事件类型。Node.js 和 Python 提供便捷投影;Go 将 Payload 与 Metadata 保留为 json.RawMessage,并提供 DecodePayload。未来未知事件类型在四种 SDK 中都不会丢失。
  • tool_start 在模型开始输出工具调用时触发;tool_execution_start 在工具真正开始执行时触发;tool_end 携带工具输出与退出码。
  • 启用确认策略后,流中还会出现人工介入(human-in-the-loop)信号:先是 confirmation_required,收到答复后是 confirmation_received。待确认的调用会一直挂起直到得到答复,不存在计时器替它结算。只有当确认通道在答复前关闭(例如取消或关闭 Session)时,才会发出带 action_taken 的 confirmation_timeout。

可运行的流式示例位于 sdk/node/examples/streaming/。完整的人工确认 循环在 sdk/node/examples/streaming/hitl_confirmation_loop.ts, 对应 Python 版本位于 sdk/python/examples/,Go 流式行为由 sdk/go/session_test.go 覆盖。