Skip to main content
Zeus 使用 Server-Sent Events (SSE) 将 Agent 的推理过程和工具调用实时流式传输到前端。本页描述流式传输的完整链路、事件类型和分块行为。

Streaming Pipeline

流式传输采用端到端 SSE 透传:Python 后端生成事件 → Next.js API 代理转发 → 前端 StreamProcessor 消费。

Event Types

Core Events

沙盒工具(sandbox_exec_pysandbox_exec_sh 等)的执行结果通过标准的 tool_call_result 事件返回,不使用单独的事件类型。

Event Mapping

DeepAgents 框架内部事件到 SSE 消息的映射关系:

Tool Call ID Queue

为了正确匹配 on_tool_end 事件与对应的工具调用,运行时维护一个 FIFO 队列(按工具名分组存储 tool_call_id)。on_chat_model_end 时入队,on_tool_end 时出队匹配。

Frontend StreamProcessor

前端 handleStreamMessage() 消费 SSE 流,将事件路由到对应的状态管理:

Tool Call Streaming(流式工具调用)

工具调用支持两阶段流式传输:先通过 tool_call_chunk 流式展示参数,再通过 tool_call 发送完整参数。

前端期望的事件顺序

stream-processor.ts 收到 tool_call_chunk 时创建/更新流式预览卡片(带 streamingArgs),收到 tool_call 时将其替换为带完整 parameters 的最终卡片。

ai-backend(LangChain)

LangChain 的事件天然匹配这个顺序:
on_chat_model_end 时 LLM 已经生成完了所有参数,tc.get("args", {}) 直接拿到完整的 dict。

Chunking & Batching

消息批处理

前端合并快速连续的文本更新,以约 60fps 的频率批量刷新 UI,避免过度渲染。

虚拟滚动

对长对话使用虚拟滚动,只渲染可视区域的消息卡片,提升滚动性能。

选择性状态持久化

只持久化必要的状态(如 sessionIdmessageIds),完整消息内容从服务器按需加载。