fix: 修复继续对话时消息覆盖问题

- 对话完成时正确重置 currentSegmentedMessage
- 继续对话时创建新的消息容器
- 删除调试日志代码
This commit is contained in:
Roe-xin
2026-03-03 20:04:41 +08:00
parent 52834047f2
commit 15445aa13c

View File

@ -1007,28 +1007,27 @@ export function getMessageAreaScript(): string {
// 实时更新分段消息(按后端返回顺序) // 实时更新分段消息(按后端返回顺序)
function updateSegmentsRealtime(segments, isComplete) { function updateSegmentsRealtime(segments, isComplete) {
console.log('[WebView] updateSegmentsRealtime 被调用, segments:', segments, 'isComplete:', isComplete); // 如果对话完成且没有新段落,只重置容器
if (isComplete && (!segments || segments.length === 0)) {
currentSegmentedMessage = null;
return;
}
if (!segments || segments.length === 0) { if (!segments || segments.length === 0) {
console.log('[WebView] segments 为空,跳过渲染');
return; return;
} }
// 如果没有当前分段消息容器,创建一个 // 如果没有当前分段消息容器,创建一个
if (!currentSegmentedMessage) { if (!currentSegmentedMessage) {
console.log('[WebView] 创建新的分段消息容器');
// 移除流式消息(如果有) // 移除流式消息(如果有)
if (currentStreamingMessage) { if (currentStreamingMessage) {
console.log('[WebView] 移除流式消息');
currentStreamingMessage.remove(); currentStreamingMessage.remove();
currentStreamingMessage = null; currentStreamingMessage = null;
} }
// 移除所有工具状态消息(因为会在分段中显示) // 移除所有工具状态消息(因为会在分段中显示)
const toolStatuses = messagesEl.querySelectorAll('.tool-status'); const toolStatuses = messagesEl.querySelectorAll('.tool-status');
console.log('[WebView] 找到工具状态消息数量:', toolStatuses.length);
toolStatuses.forEach(el => { toolStatuses.forEach(el => {
console.log('[WebView] 移除工具状态消息:', el.className);
el.remove(); el.remove();
}); });
@ -1246,7 +1245,7 @@ export function getMessageAreaScript(): string {
currentSegmentedMessage.appendChild(segmentDiv); currentSegmentedMessage.appendChild(segmentDiv);
}); });
// 如果对话完成,添加操作按钮 // 如果对话完成,添加操作按钮并重置容器
if (isComplete) { if (isComplete) {
console.log('[WebView] 对话完成,添加操作按钮'); console.log('[WebView] 对话完成,添加操作按钮');
const actionsDiv = document.createElement('div'); const actionsDiv = document.createElement('div');
@ -1281,7 +1280,7 @@ export function getMessageAreaScript(): string {
actionsDiv.appendChild(dislikeBtn); actionsDiv.appendChild(dislikeBtn);
currentSegmentedMessage.appendChild(actionsDiv); currentSegmentedMessage.appendChild(actionsDiv);
// 重置当前分段消息容器 // 重置当前分段消息容器(继续对话时创建新容器)
currentSegmentedMessage = null; currentSegmentedMessage = null;
} }