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; } };