fix: 调整对话流程顺序

1. 用户发送消息 → 前端立即显示
2. 后端收到 → 广播用户消息 → 执行搜索 → 发送搜索结果
3. AI生成回复 → 显示

- sendMessage 立即显示用户消息
- user_message 事件避免重复显示
- 后端处理顺序:广播 → 搜索 → 保存 → LLM
This commit is contained in:
2026-04-13 17:11:11 +08:00
parent 3cbdddf773
commit 813b4887ed
2 changed files with 115 additions and 125 deletions

View File

@@ -280,9 +280,11 @@
case 'stream_end': document.getElementById('sendBtn').disabled = false; break;
case 'user_message':
lastUserMessage = data.message.content; // 存储最后一条用户消息
if (!isRegenerating) {
// 如果是刚发送的消息,已经显示了,不再重复显示
if (!isRegenerating && data.message.content !== lastSentMessage) {
appendMessage('user', data.message.content);
}
lastSentMessage = null; // 清除标记
// 注意:不要在这里重置 isRegenerating要等 assistant_message 处理后再重置
break;
case 'assistant_message':
@@ -756,6 +758,10 @@
input.value = '';
input.style.height = 'auto';
// 立即显示用户消息(不等后端广播)
lastSentMessage = msg; // 记录最后发送的消息,避免重复显示
appendMessage('user', msg);
// 获取工具禁用状态
const enableSearch = document.getElementById('enableSearch').checked;
const disabledTools = [];
@@ -772,6 +778,8 @@
}
}
let lastSentMessage = null; // 记录最后发送的消息
function setupTextarea() {
const textarea = document.getElementById('messageInput');
textarea.addEventListener('keydown', e => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); sendMessage(); } });