流式推理与 SSE¶
POST /api/chat/stream 返回的是 Server-Sent Events 流。SPA 用
EventSource / fetch+stream-reader 消费,按 event 类型派发到 store。
事件类型¶
Event |
Data shape |
用途 |
|---|---|---|
|
|
一段 assistant 消息开始 |
|
|
增量 token |
|
|
LLM 决定调工具 |
|
|
工具参数增量 |
|
|
工具参数完整 |
|
|
工具执行结果 |
|
|
一段消息结束(含 token usage) |
|
|
call_agent 切了 agent |
|
|
错误(不一定致命) |
|
|
整个 turn 结束 |
同步消息 vs 流¶
每个 SSE event 都对应 messages: [] 历史里的一个或多个条目变化。
当流结束(done event),sidecar 会 store.append(...) 把完整的
assistant + tool messages 持久化到 conversations/<sid>.json。
client_only 消息
某些消息(例如 stream 中断的错误提示)只该出现在客户端、不发回 LLM。
SPA 标 client_only: true,server-side sync 时保留。
详见 Workspace 与 Conversation。
中断 / 重连¶
SPA 主动中断:直接关 EventSource,sidecar 检测到客户端断开会停止 生成(不重启进程)
网络断:sidecar 继续跑、消息照样持久化到磁盘——SPA 重连后从
/api/conversations/:sid拉就行
进一步¶
Tool execution pipeline — tool_result 怎么生成
HTTP API — endpoint 全景