mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-22 18:08:04 +00:00
jianf:局部重建的闪烁几乎消不掉,应暴露数据查询 api,前端轮询后增量更新视图, 聊天记录也用这套。 后端(数据查询 api): - ChatMsg 增加 seq(服务端单调递增、随记录落盘);老记录加载时补 1..n,重启不重编号。 - /api/v1/chat/history 增加 after=<seq> 增量通道:只回 seq 更大的消息,返回 last_seq 作下次游标;一批超 limit 时回**最旧**的一批(回最新会把被挤掉的旧消息永久漏掉)。 普通响应也带 last_seq,客户端首次全量后据此初始化游标。 - 测试 TestChatHistoryIncrementalAfterCursor 钉住「不重不漏 + 截断停在返回的最后一条」。 前端: - 新增通用 morph():按「子节点位置 + nodeName」递归对账 DOM,同名节点复用、只同步 变化的属性与文本。运行态面板的 put() 由 innerHTML 重建改为 morph —— SVG 圆环、 队列条、数字块这些未变节点不再被替换,CSS 过渡与动画不再从头播。 - 聊天列表改用 keyed commitChatList():按 data-key(服务端 seq / 本地临时 key)对账, 未变消息节点一个字节都不动,只替换真正变化的那条。 - syncChatFromHistory 改走游标:pollChatIncremental() 用 after 拿增量 + tail=1 探尾部 原地更新(工具调用/最终文本是原地改的,不产生新 seq);聊天页可见时 3s 轮询。