feat:实现任务历史加载功能 - 完整还原对话样式
主要改进: 1. 实现selectConversation功能,支持点击任务历史列表加载会话 2. 优化会话存储格式,保存完整的segments信息(包括工具调用) 3. 添加旧格式到新格式的自动转换,兼容历史数据 4. 改进错误处理,自动清理无效的空任务目录 5. 优化路径编码逻辑,确保跨平台一致性 6. 前端支持clearChat、addUserMessage、addAiMessage命令 技术细节: - 扩展AiMessage数据结构,添加segments字段 - 修改messageHandler保存逻辑,将完整segments保存到一条消息 - 实现loadTaskSession方法,加载指定任务的完整会话 - 添加自动清理机制,删除无效的空任务目录
This commit is contained in:
@ -170,35 +170,16 @@ async function handleUserMessageWithBackend(
|
||||
});
|
||||
console.log('[MessageHandler] postMessage 返回值:', result);
|
||||
|
||||
// 按照 segments 顺序保存AI响应到历史记录
|
||||
// 保存完整的 segments 到历史记录
|
||||
try {
|
||||
// 遍历 segments,按顺序保存每个段落
|
||||
for (const segment of segments) {
|
||||
if (segment.type === 'text' && segment.content) {
|
||||
// 保存文本消息
|
||||
await historyManager.addAiMessage(segment.content);
|
||||
} else if (segment.type === 'tool') {
|
||||
// 保存工具调用请求(作为AI消息的一部分)
|
||||
const toolRequest = {
|
||||
id: segment.askId || `tool_${Date.now()}`,
|
||||
name: segment.toolName || '',
|
||||
arguments: ''
|
||||
};
|
||||
await historyManager.addAiMessage('', [toolRequest]);
|
||||
// 将完整的 segments 保存到一条 AI 消息中
|
||||
// 这样加载时可以完整还原对话样式
|
||||
const textContent = segments
|
||||
.filter(s => s.type === 'text' && s.content)
|
||||
.map(s => s.content)
|
||||
.join('\n');
|
||||
|
||||
// 如果有工具执行结果,保存工具执行结果
|
||||
if (segment.toolResult) {
|
||||
await historyManager.addToolExecutionResult(
|
||||
toolRequest.id,
|
||||
segment.toolName || '',
|
||||
segment.toolResult
|
||||
);
|
||||
}
|
||||
} else if (segment.type === 'question') {
|
||||
// 保存问题(作为AI消息)
|
||||
await historyManager.addAiMessage(segment.question || '');
|
||||
}
|
||||
}
|
||||
await historyManager.addAiMessage(textContent, undefined, segments);
|
||||
} catch (error) {
|
||||
console.warn("保存AI响应历史失败:", error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user