Update events.js

This commit is contained in:
2025-07-12 17:42:56 +08:00
committed by GitHub
parent 028742ddbd
commit afa4b125cd

View File

@@ -7,99 +7,87 @@ import { executeAutoHide } from './autoHideManager.js';
const pendingWriteData = {
summary: null,
targetLorebook: null,
targetLorebook: null, // (此条目很快将被新设定取代,但为兼容性暂时保留)
settings: null, // 【新增栏位】用以存放完整的史册律法。
chatIdentifier: null,
sourceAiMessageTimestamp: null,
};
export async function onMessageReceived(data) {
const context = getContext();
if ((data && data.is_user) || context.isWaitingForUserInput) {
return;
}
const context = getContext();
if ((data && data.is_user) || context.isWaitingForUserInput) { return; }
const settings = extension_settings[extensionName];
const chat = context.chat;
if (!chat || chat.length === 0) return;
const settings = extension_settings[extensionName];
const chat = context.chat;
if (!chat || chat.length === 0) return;
const latestMessage = chat[chat.length - 1];
const latestMessage = chat[chat.length - 1];
if (latestMessage.is_user) { return; }
if (latestMessage.is_user) {
return;
}
await executeAutoHide();
await executeAutoHide();
if (!settings.enabled) {
return;
}
if (chat.length < 2 || !chat[chat.length - 2].is_user) {
console.log("[Amily2号] 检测到消息并非AI对用户的直接回复已跳过优化总结。");
return;
}
if (pendingWriteData.summary) {
await writeSummaryToLorebook(pendingWriteData);
}
if (!settings.optimizationEnabled && !settings.summarizationEnabled) {
console.log("[Amily2号] 优化与总结功能均未启用,任务中止。");
return;
}
if (!settings.apiUrl) return;
const contextCount = settings.contextMessages || 2;
const startIndex = Math.max(0, chat.length - 1 - contextCount);
const previousMessages = chat.slice(startIndex, chat.length - 1);
const result = await checkAndFixWithAPI(latestMessage, previousMessages);
if (result) {
if (
result.optimizedContent &&
result.optimizedContent !== latestMessage.mes &&
settings.optimizationEnabled
) {
latestMessage.mes = result.optimizedContent;
await saveChatConditional();
if (settings.optimizationMode === "refresh") {
await reloadCurrentChat();
}
if (pendingWriteData.summary && pendingWriteData.settings) {
await writeSummaryToLorebook(pendingWriteData);
pendingWriteData.summary = null;
pendingWriteData.settings = null;
}
if (result.summary && settings.summarizationEnabled) {
pendingWriteData.summary = result.summary;
pendingWriteData.sourceAiMessageTimestamp = latestMessage.send_date;
pendingWriteData.targetLorebook = settings.lorebookTarget;
pendingWriteData.chatIdentifier = await getChatIdentifier();
if (!settings.enabled || (!settings.optimizationEnabled && !settings.summarizationEnabled) || !settings.apiUrl) {
return;
}
if (settings.showOptimizationToast) {
let targetName = "独立中央档案";
if (settings.lorebookTarget === "character_main") {
const character = characters[context.characterId];
targetName = character?.data?.extensions?.world || "未绑定的主世界书";
if (chat.length < 2 || !chat[chat.length - 2].is_user) {
console.log("[Amily2号] 检测到消息并非AI对用户的直接回复已跳过优化总结。");
return;
}
const contextCount = settings.contextMessages || 2;
const startIndex = Math.max(0, chat.length - 1 - contextCount);
const previousMessages = chat.slice(startIndex, chat.length - 1);
const result = await checkAndFixWithAPI(latestMessage, previousMessages);
if (result) {
if (result.optimizedContent && result.optimizedContent !== latestMessage.mes && settings.optimizationEnabled) {
latestMessage.mes = result.optimizedContent;
await saveChatConditional();
if (settings.optimizationMode === 'refresh') {
await reloadCurrentChat();
}
}
toastr.info(
`已优化并将总结:“${result.summary}” 写入 “${targetName}`,
"Amily2号",
{ timeOut: 7000 },
);
}
}
}
}
if (result.summary && result.loreSettings && settings.summarizationEnabled) {
pendingWriteData.summary = result.summary;
pendingWriteData.settings = result.loreSettings;
pendingWriteData.sourceAiMessageTimestamp = latestMessage.send_date;
pendingWriteData.chatIdentifier = await getChatIdentifier();
if (settings.showOptimizationToast) {
let targetName = `独立中央档案(${result.loreSettings.target})`;
if (result.loreSettings.target === "character_main") {
const character = characters[context.characterId];
targetName = character?.data?.extensions?.world || "未绑定的主世界书";
}
toastr.info(`已优化并将总结:“${result.summary}” 备妥,待写入 “${targetName}`, "Amily2号", { timeOut: 7000 });
}
}
// ====================================================================
}
}
export function onChatChanged() {
const context = getContext();
const chat = context.chat;
if (!chat || chat.length === 0) {
pendingWriteData.summary = null;
pendingWriteData.settings = null;
return;
}
const latestMessage = chat[chat.length - 1];
if (latestMessage.is_user && pendingWriteData.summary) {
console.log(
"[Amily2号-遗忘哨兵] 检测到AI回复被操作,已清除待写入的过时总结。",
"[Amily2号-遗忘哨兵] 裁决:检测到AI回复已被陛下操作,遵旨废黜过时总结。",
);
pendingWriteData.summary = null;
pendingWriteData.settings = null;
}
}