fix(http): SSE 无 Last-Event-ID/重放——lagged 静默丢弃 + 1h 硬超时强制重连,断线窗口事件永久丢失
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
Read src/http/handlers.rs around lines 1155, 1301, 1308-1328, and 1338 to trace the per-session broadcast channel, lag handling, and one-hour timeout. Check how SSE requests are parsed and how GET /sessions/:id is exposed before defining the event sequence and bounded replay behavior. Done means SSE events have monotonic IDs, reconnects honor Last-Event-ID, and the since endpoint can replay missed events.
由索引模型根据 Issue 内容生成。
描述
场景 gap 单(okguitar 提报)· 优先级 P1 · 依赖:depends-on: #117(未终态时 keeper 自动 hold)
基线 HEAD = 9165b9a0。
Summary
- 每会话
broadcast::channel(64)(src/http/handlers.rs:1155,1301);消费慢于 64 条时BroadcastStream的 Lagged 错误被Err(_) => None静默丢弃(handlers.rs:1308-1328)——不报错、不重放,直接缺段。 - 全程无
Last-Event-ID读取、无事件序号/重放缓冲;连接有 1h 硬超时强制重连(handlers.rs:1338),重连即从订阅时刻开始。 - C 端弱网/移动端网络切换/代理超时重连是常态:断连窗口内的 PartialMessage/ToolCall/ToolResult/Done 全部丢失,客户端流式状态机无法恢复;最终兜底只有
GET /sessions/:id的 committed 消息(partial 与工具进度无补偿)。
建议
每会话保留有界事件环形缓冲 + 单调 seq,SSE 事件带 id,支持 Last-Event-ID 头与 GET /sessions/:id/events?since=<seq> 重放。
- 主要语言
- Rust
- 星标
- 4
- 派生
- 0
- 平均合并
- 5 小时 32 分钟
- 30 天内合并 PR
- 7
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 没有贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
jeffkit/recursive 的其他 Issue
-
难度 3/5 半天 新手友好度 72/100
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 68/100
jeffkit/recursive#141 · 3 条评论 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 66/100
jeffkit/recursive#138 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 20/100
jeffkit/recursive#134 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 30/100
维护者通常 1 天内回复
查看 jeffkit/recursive 的全部 Issue
相似的 Issue
-
documentation
难度 1/5 1 小时以内 新手友好度 90/100
fastrevmd-lab/rustmistmcp#161 ·
-
arch-audit refactor
难度 2/5 1-3 小时 新手友好度 82/100
SocketDev/socket-patch#1011 ·
维护者通常 1 天内回复
-
bug user-priority/P2
难度 1/5 1 小时以内 新手友好度 92/100
维护者通常 1 天内回复
-
opencode: an unanswered --version probe launches opencode 2 without per-session service isolation未关闭
难度 2/5 1-3 小时 新手友好度 84/100
维护者通常 1 天内回复
-
security-advisory
难度 2/5 1-3 小时 新手友好度 85/100
MinBZK/regelrecht#1686 ·
维护者通常 1 天内回复