图_10SSE流式时序
原生 Excalidraw 可编辑画布,基于 SuperMew-0.1.0。请使用 Obsidian 的 Excalidraw 视图打开。
视图归属: M3 SSE 流式专题。
组成
- Agent worker、ctx 队列、SSE service 和前端读取器共同传递事件。
流程
- 进度由 ctx 线程安全入队;worker 把文本或错误入队。
- service 发送 content/rag_step/trace/hitl_request 等 JSON 事件。
- 内部 None 表示 worker 结束;SSE DONE 是另一种哨兵。
完成时序
- DONE 后才更新笔记并保存,前端继续读至 EOF。
- 用户停止只是取消路径,不保证外部调用立刻停止或 AI 已保存。
源码对应
backend/chat/service.py:chat_with_agent_stream()backend/chat/request_context.py:emit_rag_step()backend/api/routes/chat.py:chat_stream_endpoint()frontend/src/stores/chat.ts
上级主图
[[图_2用户问答流程]]
Excalidraw Data
Text Elements
10 SSE 事件与完成时序 ^2623e67d
原版真实分支与时序;全部图形、文字与连线均为可编辑元素。 ^84b06cc3
M3 SSE 流式专题 · 上级主图:[[图_2用户问答流程|图2]] ^a74bc166
PG / Redis Storage ^006a4189
ctx + ^0f490e63
asyncio.Queue ^45660b5a
Agent worker ^bc44aa6a
SSE Service ^68f99aa1
前端 chat.ts ^7714dc48
opt ^d93dd9fe
[普通路径且首轮] ^7f91aa6a
loop ^610e00b3
[模型与 RAG 执行期间] ^96da7801
opt ^5471232f
[需要用户补充] ^909c802f
此时最终 AI 与 pending ^75482a2d
可能尚未提交 ^98b2c454
提前 abort ^704da2a9
是另一条路径:终止读取、请求取消;不保证后台外部调用立即终- ^1733b1b0
止或 AI 已保存 ^ca6c1dee
POST /chat/stream + Bearer ^9dea659c
- session_id ^d12e1a9f
初始 rag_step(已接收) ^c2eaf83a
load_with_meta ^c3cd02a4
for_stream 绑定本请求 loop / queue ^bfb785c7
第一次 save Human ^362c4d1f
session_title ^a73f2fc0
create_task / agent.astream ^acbeaa26
RAG ^f00858a1
emit_rag_step(call_soon_threa- ^2b85eaaa
dsafe) ^7e62e8ae
AI 文本 ^7447bb0f
content(过滤工具参数与 HITL ^5daf877a
内容) ^3e4a0de9
进度 / 内容 / 可选 error ^0ec0a6b2
data: JSON + 双换行 ^38bc6ed3
累积网络分片,按双换行解析 ^32ec91cc
更新发起会话的消息 / Trace 视图 ^a42cfbb9
内部 None:worker 结束 ^26f1fd89
None(不是 SSE DONE) ^649bd6f0
take_rag_trace ^e8272ca6
trace(若存在) ^9a651427
hitl_request ^1e4d383b
data: [DONE] ^62e7b240
必要时 await 更新 ^d79b35f5
persistent_note ^726455da
第二次 save AI + Trace + metadata ^55fc19a2
finally ctx.close ^6f46be05
连接 EOF ^19de2de6
loading=false / 清除 ^7fb9664d
controller ^8c4f1856
读图说明 · M3 流式编排 + M1 消费 ^eabe80eb
组成 ^6d67e62f
• Agent worker、ctx 队列、SSE service 和前端 读取器共同传递事件。 ^ca1ac78f
流程 ^81fa37a1
• 进度由 ctx 线程安全入队;worker 把文本或错 误入队。 ^92b67061
• service 发送 content/rag_step/trace/hitl_request 等 JSON 事件。 ^8de7f1bc
• 内部 None 表示 worker 结束;SSE DONE 是另 一种哨兵。 ^095178a1
完成时序 ^279b04e2
• DONE 后才更新笔记并保存,前端继续读至 EOF 。 ^38222cd7
• 用户停止只是取消路径,不保证外部调用立刻停 止或 AI 已保存。 ^275f3110
Element Links
a74bc166: [[图_2用户问答流程]]
%%
Drawing
1 | N4IgLgngDgpiBcIYA8DGBDANgSwCYCd0B3EAGhADcZ8BnbAewDsEAmcm+gV31TkQAswYKDXgB6MSgw4CxAHSp6AWzJJMMJTEZgaCANqg8CELgAsuAGymLuAAyrIsY/hiow6RgHN1q5AgCM/gAcbCAQAQDstuREeGD8CACsLNEg/DDYnoIIFrb+5B7efKk0YPj0ANYwAML0mPT4xgDEqABGuIkw/qqt6KgVnuWcjLi19Y2ITQBmQVPoU6iqU9iYmA |
%%