From 4a7af49fea09ef3a2d94ac6239a84fb205f6ef4a Mon Sep 17 00:00:00 2001 From: XiaoFeng <117837368+Fzhiyu1@users.noreply.github.com> Date: Sat, 10 Jan 2026 16:45:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DSSE=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E5=90=8E=E5=81=9C=E6=AD=A2=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E4=B8=8D=E6=B6=88=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加hasCompleted标志位跟踪complete事件 - onClose时检查并补充完成逻辑 - sendMessage时重置hasCompleted状态 --- src/services/dialogService.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/services/dialogService.ts b/src/services/dialogService.ts index 192ecd6..713b779 100644 --- a/src/services/dialogService.ts +++ b/src/services/dialogService.ts @@ -92,6 +92,7 @@ export class DialogSession { private toolContext: ToolExecutorContext; private accumulatedText = ''; private isActive = false; + private hasCompleted = false; // 标记是否已收到 complete 事件 private segments: MessageSegment[] = []; private currentTextSegment: MessageSegment | null = null; @@ -331,6 +332,7 @@ export class DialogSession { } this.isActive = true; + this.hasCompleted = false; // 重置完成标志 this.accumulatedText = ''; this.segments = []; this.currentTextSegment = null; @@ -686,6 +688,7 @@ export class DialogSession { onComplete: (data) => { this.isActive = false; + this.hasCompleted = true; // 标记已收到 complete 事件 this.finalizeTextSegment(); // 追踪 AI 消息(用于后端重启后恢复) @@ -807,6 +810,15 @@ export class DialogSession { onClose: () => { console.log('[DialogSession] SSE 连接已关闭'); + // 如果没有收到 complete 事件,需要补充完成逻辑 + if (!this.hasCompleted && this.isActive) { + console.log('[DialogSession] 未收到 complete 事件,补充完成处理'); + this.finalizeTextSegment(); + if (this.accumulatedText) { + historyManager.trackAiMessage(this.accumulatedText); + } + callbacks.onComplete?.(this.segments); + } this.isActive = false; } };