From ba34f1eed3a49d6eba1c9164937fca2a602a7fac Mon Sep 17 00:00:00 2001 From: matevip Date: Fri, 10 Apr 2026 07:58:19 +0800 Subject: [PATCH] fix(chat): preserve intermediate reasoning in segments via phase-based splitting --- .../vip/mate/channel/web/ChatController.java | 3 + .../src/components/chat/ContentSegment.vue | 98 ++++++++++++++++--- .../src/components/chat/MessageBubble.vue | 4 +- 3 files changed, 89 insertions(+), 16 deletions(-) diff --git a/mateclaw-server/src/main/java/vip/mate/channel/web/ChatController.java b/mateclaw-server/src/main/java/vip/mate/channel/web/ChatController.java index 283551dd..c2042a57 100644 --- a/mateclaw-server/src/main/java/vip/mate/channel/web/ChatController.java +++ b/mateclaw-server/src/main/java/vip/mate/channel/web/ChatController.java @@ -1248,6 +1248,9 @@ public class ChatController { String phase = String.valueOf(delta.eventData().getOrDefault("phase", "")); if (!phase.isBlank()) { streamTracker.updatePhase(conversationId, phase); + // 关键:phase 变化时关闭 running 的 content/thinking segments + // 让每个阶段(reasoning → tool → summarize → final answer)的文字成为独立 segment + closeRunningSegments("content", "thinking"); } } // 累积工具调用事件,用于持久化到消息历史 diff --git a/mateclaw-ui/src/components/chat/ContentSegment.vue b/mateclaw-ui/src/components/chat/ContentSegment.vue index 038fa4a5..db792060 100644 --- a/mateclaw-ui/src/components/chat/ContentSegment.vue +++ b/mateclaw-ui/src/components/chat/ContentSegment.vue @@ -1,33 +1,103 @@ diff --git a/mateclaw-ui/src/components/chat/MessageBubble.vue b/mateclaw-ui/src/components/chat/MessageBubble.vue index ba526a32..67c39282 100644 --- a/mateclaw-ui/src/components/chat/MessageBubble.vue +++ b/mateclaw-ui/src/components/chat/MessageBubble.vue @@ -21,10 +21,10 @@