流式输出
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 从 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 覆盖。