feat:优化后端消息处理逻辑,确保AI响应保存到历史记录并更新面板状态
This commit is contained in:
@ -213,14 +213,23 @@ async function handleUserMessageWithBackend(
|
|||||||
},
|
},
|
||||||
|
|
||||||
onComplete: async (segments) => {
|
onComplete: async (segments) => {
|
||||||
// 隐藏状态栏
|
|
||||||
panel.webview.postMessage({
|
|
||||||
command: "hideStatus",
|
|
||||||
});
|
|
||||||
|
|
||||||
// 最后一次发送完整的段落
|
|
||||||
console.log("[MessageHandler] 对话完成, 段落数:", segments.length);
|
console.log("[MessageHandler] 对话完成, 段落数:", segments.length);
|
||||||
|
|
||||||
|
// 先保存到历史记录(优先级最高,确保数据不丢失)
|
||||||
|
try {
|
||||||
|
// 将完整的 segments 保存到一条 AI 消息中
|
||||||
|
// 这样加载时可以完整还原对话样式
|
||||||
|
const textContent = segments
|
||||||
|
.filter((s) => s.type === "text" && s.content)
|
||||||
|
.map((s) => s.content)
|
||||||
|
.join("\n");
|
||||||
|
|
||||||
|
await historyManager.addAiMessage(textContent, undefined, segments);
|
||||||
|
console.log("[MessageHandler] AI响应已保存到历史记录");
|
||||||
|
} catch (error) {
|
||||||
|
console.error("[MessageHandler] 保存AI响应历史失败:", error);
|
||||||
|
}
|
||||||
|
|
||||||
// 对话完成后重新获取余额(因为已经消耗了 Credits)
|
// 对话完成后重新获取余额(因为已经消耗了 Credits)
|
||||||
try {
|
try {
|
||||||
console.log("[MessageHandler] 对话完成,重新获取余额...");
|
console.log("[MessageHandler] 对话完成,重新获取余额...");
|
||||||
@ -232,25 +241,22 @@ async function handleUserMessageWithBackend(
|
|||||||
console.error("[MessageHandler] 获取余额失败:", error);
|
console.error("[MessageHandler] 获取余额失败:", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await panel.webview.postMessage({
|
// 尝试更新面板(如果面板已关闭,这些操作会失败,但不影响数据保存)
|
||||||
command: "updateSegments",
|
|
||||||
segments: segments,
|
|
||||||
isComplete: true,
|
|
||||||
});
|
|
||||||
console.log("[MessageHandler] postMessage 返回值:", result);
|
|
||||||
|
|
||||||
// 保存完整的 segments 到历史记录
|
|
||||||
try {
|
try {
|
||||||
// 将完整的 segments 保存到一条 AI 消息中
|
// 隐藏状态栏
|
||||||
// 这样加载时可以完整还原对话样式
|
panel.webview.postMessage({
|
||||||
const textContent = segments
|
command: "hideStatus",
|
||||||
.filter((s) => s.type === "text" && s.content)
|
});
|
||||||
.map((s) => s.content)
|
|
||||||
.join("\n");
|
|
||||||
|
|
||||||
await historyManager.addAiMessage(textContent, undefined, segments);
|
// 最后一次发送完整的段落
|
||||||
|
const result = await panel.webview.postMessage({
|
||||||
|
command: "updateSegments",
|
||||||
|
segments: segments,
|
||||||
|
isComplete: true,
|
||||||
|
});
|
||||||
|
console.log("[MessageHandler] postMessage 返回值:", result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn("保存AI响应历史失败:", error);
|
console.warn("[MessageHandler] 更新面板失败(面板可能已关闭):", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve();
|
resolve();
|
||||||
|
|||||||
Reference in New Issue
Block a user