fix: 在消息落盘后触发自动提取

This commit is contained in:
Youzini-afk
2026-03-24 22:45:01 +08:00
parent 7cab764d79
commit 599404b512

View File

@@ -915,10 +915,14 @@ async function handleExtractionSuccess(result, endIdx, settings) {
};
}
function isAssistantChatMessage(message) {
return Boolean(message) && !message.is_user && !message.is_system;
}
function getAssistantTurns(chat) {
const assistantTurns = [];
for (let index = 0; index < chat.length; index++) {
if (chat[index].is_user === false && !chat[index].is_system) {
if (isAssistantChatMessage(chat[index])) {
assistantTurns.push(index);
}
}
@@ -1456,19 +1460,25 @@ function onMessageSwiped() {
inspectHistoryMutation("message-swiped");
}
async function onGenerationAfterCommands() {
await runExtraction();
}
async function onBeforeCombinePrompts() {
await runRecall();
}
function onMessageReceived() {
async function onMessageReceived() {
// 新消息到达,图状态可能需要更新
if (currentGraph) {
saveGraphToChat();
}
const context = getContext();
const chat = context?.chat;
const lastMessage = Array.isArray(chat) && chat.length > 0
? chat[chat.length - 1]
: null;
if (isAssistantChatMessage(lastMessage)) {
await runExtraction();
}
}
// ==================== UI 操作 ====================
@@ -1884,10 +1894,6 @@ async function onReembedDirect() {
// 注册事件钩子
eventSource.on(event_types.CHAT_CHANGED, onChatChanged);
eventSource.on(
event_types.GENERATION_AFTER_COMMANDS,
onGenerationAfterCommands,
);
eventSource.on(
event_types.GENERATE_BEFORE_COMBINE_PROMPTS,
onBeforeCombinePrompts,