diff --git a/templates/index.html b/templates/index.html
index 966799d..803177c 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -171,6 +171,7 @@
let agents = [];
let quickPhrases = [];
let lastUserMessage = null; // 存储最后一条用户消息,用于重新生成
+ let isRegenerating = false; // 标志:正在重新生成,跳过用户消息显示
document.addEventListener('DOMContentLoaded', () => {
loadAgents();
@@ -240,7 +241,10 @@
case 'stream_end': document.getElementById('sendBtn').disabled = false; break;
case 'user_message':
lastUserMessage = data.message.content; // 存储最后一条用户消息
- appendMessage('user', data.message.content);
+ if (!isRegenerating) {
+ appendMessage('user', data.message.content);
+ }
+ isRegenerating = false; // 重置标志
break;
case 'assistant_message': appendMessage('assistant', data.message.content, data.message.thinking_content, data.message.agent_name); document.getElementById('sendBtn').disabled = false; break;
case 'error': showError(data.message); document.getElementById('sendBtn').disabled = false; break;
@@ -313,24 +317,44 @@
function copyMessage(btn) {
// 从隐藏input获取原始内容
- const hiddenInput = btn.closest('.message-body').querySelector('.copy-source');
+ const actionsDiv = btn.parentElement;
+ const messageBody = actionsDiv.parentElement;
+ const hiddenInput = messageBody.querySelector('.copy-source');
if (!hiddenInput) {
console.error('找不到复制源');
+ btn.innerHTML = ' 失败';
return;
}
const text = hiddenInput.value;
- navigator.clipboard.writeText(text).then(() => {
- btn.innerHTML = ' 已复制';
- btn.classList.add('copied');
- setTimeout(() => {
- btn.innerHTML = ' 复制';
- btn.classList.remove('copied');
- }, 2000);
- }).catch(err => {
+ // 使用传统复制方法(兼容性更好)
+ const textarea = document.createElement('textarea');
+ textarea.value = text;
+ textarea.style.position = 'fixed';
+ textarea.style.left = '-9999px';
+ textarea.style.top = '0';
+ document.body.appendChild(textarea);
+ textarea.focus();
+ textarea.select();
+
+ try {
+ const success = document.execCommand('copy');
+ if (success) {
+ btn.innerHTML = ' 已复制';
+ btn.classList.add('copied');
+ setTimeout(() => {
+ btn.innerHTML = ' 复制';
+ btn.classList.remove('copied');
+ }, 2000);
+ } else {
+ btn.innerHTML = ' 失败';
+ }
+ } catch (err) {
console.error('复制失败:', err);
btn.innerHTML = ' 失败';
- });
+ }
+
+ document.body.removeChild(textarea);
}
function regenerateMessage() {
@@ -338,6 +362,8 @@
alert('没有可重新生成的消息');
return;
}
+ // 设置重新生成标志,避免再次显示用户消息
+ isRegenerating = true;
// 移除最后一条助手消息
const container = document.getElementById('messagesContainer');
const messages = container.querySelectorAll('.message.assistant');