# 2026-08-14:真实模型 SSE 文本流
# 目标
将 OpenAI-compatible 模型从“完整响应返回后一次性发送 message_update”改为真实 SSE 文本增量转发;不在本次引入或展示 provider 的 reasoning 内容。
# 变更
Model新增默认completeStream(input, onTextDelta):既有 Mock 或自定义模型无需修改,仍以完整文本回调一次。OpenAIModel覆写该方法,请求stream: true,逐条解析data:SSE 帧;文本delta.content立即回调,工具调用的 id、名称、arguments 按 index 聚合到流结束。AgentLoop在模型调用前发送 assistantmessagestart,每个模型 delta 立即转换为messageupdate;流结束后只发送message_end,避免把完整回答重复追加。
# 契约与边界
- 浏览器继续消费既有的
messagestart/messageupdate/message_endSSE 事件,前端协议不变。 - 本次仅流式处理最终文本;
reasoning_content、<thinking>不是本次契约,仍不会作为可信推理链展示。 - provider 未在流结束帧返回
usage时,usage 保持零值;后续可按 provider 能力增加streamoptions.includeusage。
# 验证
mvn -pl pi-agent-v1 test通过。- 用本地 OpenAI-compatible 伪 SSE 服务验证:收到两个独立文本 delta
你好、,SSE 已启用。,最终 AssistantMessage 聚合文本与 usage 正确。 - 用流式假模型验证 AgentLoop:
message_update序列为[A, B],最终消息为AB,未重复发送全文。