Skip to content

feat: 支持桌面与手机网页流式回复 - #145

Open
ciko5450 wants to merge 2 commits into
Rvosy:devfrom
ciko5450:feat/streaming-chat
Open

ciko5450 wants to merge 2 commits into
Rvosy:devfrom
ciko5450:feat/streaming-chat

Conversation

@ciko5450

Copy link
Copy Markdown

改动

  • 为 OpenAI 兼容 chat/completions 增加 stream=true 请求,解析 SSE 和逐行 JSON 数据。
  • 流式请求支持取消、首块前重试、运行时上下文角色回退以及不兼容参数自动移除;开始输出后不再自动重试,避免重复回复。
  • 普通纯文字聊天走低延迟 fast path;工具调用、图片、URL、浏览器/桌面操作和记忆指令继续使用完整 Agent 链路。
  • 模型每完成一个结构化句段就发送到桌面字幕与 TTS 队列;流中断时保留已完成句段,最终结果不会重复播放。
  • 手机网页新增 POST /api/chat/stream,通过 readysegmentdoneerror SSE 事件逐段显示,等待期间每 10 秒保活。
  • 原有 /api/chat JSON 接口保持兼容;图片或不适合流式处理的手机请求自动回退完整回复。

用户影响

普通聊天不再等待整段模型输出完成。桌面端和手机网页都会在第一个完整句段生成后立即展示,后续句段继续进入同一回复序列。

验证

  • 完整测试:1479 passed, 3 skipped
  • 流式与手机相关宽范围测试:417 passed
  • 移动网页 JavaScript 通过 node --check
  • 真实浏览器验证:约 450ms 时 DOM 只有第一句,第二句稍后到达;完成后无重复消息
  • 390x844 手机视口截图检查通过,无控件或消息重叠
  • OpenAI 兼容中转站实测:首个有效块约 2583ms,3 个句段,总耗时约 3539ms
  • git diff --check 与敏感信息扫描通过

兼容性与风险

没有持久化配置格式变化。不支持流式的供应商会自动回退原有完整 Agent 请求。fast path 使用保守规则排除可能需要工具或媒体处理的消息。手机浏览器断开连接后,宿主已经开始的回合仍会完成并写入历史,避免产生半条历史,但可能继续消耗当前一次模型请求。

@ciko5450
ciko5450 marked this pull request as ready for review July 14, 2026 08:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant