mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-06-14 02:40:45 +08:00
fix(recall): pass generation context to primary reroll path + trace gates
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
// ST-BME: 召回输入解析与注入控制器(纯函数)
|
||||
|
||||
import { debugLog } from "../runtime/debug-logging.js";
|
||||
import { debugLog, debugWarn } from "../runtime/debug-logging.js";
|
||||
import { isSystemMessageForExtraction } from "../maintenance/chat-history.js";
|
||||
|
||||
export function buildRecallRecentMessagesController(
|
||||
@@ -161,13 +161,29 @@ function resolveReusablePersistedRecallRecord(chat, recallInput, runtime) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!Number.isFinite(targetUserMessageIndex)) return null;
|
||||
if (!Number.isFinite(targetUserMessageIndex)) {
|
||||
debugWarn("[ST-BME][reroll-trace] no target user floor resolved", {
|
||||
generationType,
|
||||
recallSource,
|
||||
currentRecallInputText: currentRecallInputText.slice(0, 60),
|
||||
chatLength: Array.isArray(chat) ? chat.length : null,
|
||||
});
|
||||
return null;
|
||||
}
|
||||
|
||||
const targetMessage = Array.isArray(chat) ? chat[targetUserMessageIndex] : null;
|
||||
if (!targetMessage?.is_user) return null;
|
||||
|
||||
const record = readPersistedRecallFromUserMessage(chat, targetUserMessageIndex);
|
||||
if (!record?.injectionText) return null;
|
||||
if (!record?.injectionText) {
|
||||
debugWarn("[ST-BME][reroll-trace] target floor has no persisted recall record", {
|
||||
generationType,
|
||||
recallSource,
|
||||
targetUserMessageIndex,
|
||||
targetUserFloorText: String(targetMessage?.mes || "").slice(0, 60),
|
||||
});
|
||||
return null;
|
||||
}
|
||||
|
||||
const currentUserFloorText = normalizeText(targetMessage?.mes || "");
|
||||
const recordRecallInput = normalizeText(record?.recallInput || "");
|
||||
@@ -228,9 +244,34 @@ function resolveReusablePersistedRecallRecord(chat, recallInput, runtime) {
|
||||
!canReuseUnboundTargetRecord &&
|
||||
!canTrustUserFloorRecord
|
||||
) {
|
||||
debugWarn("[ST-BME][reroll-trace] reuse REJECTED", {
|
||||
generationType,
|
||||
recallSource,
|
||||
targetUserMessageIndex,
|
||||
isActiveInputSource,
|
||||
isNoNewUserGeneration,
|
||||
hasRecord: Boolean(record?.injectionText),
|
||||
currentUserFloorText: currentUserFloorText.slice(0, 60),
|
||||
currentRecallInputText: currentRecallInputText.slice(0, 60),
|
||||
recordRecallInput: recordRecallInput.slice(0, 60),
|
||||
boundUserFloorText: boundUserFloorText.slice(0, 60),
|
||||
matchesPersistedRecord,
|
||||
canReuseUnboundTargetRecord,
|
||||
canTrustUserFloorRecord,
|
||||
recordRecallInputMismatch,
|
||||
});
|
||||
return null;
|
||||
}
|
||||
|
||||
debugWarn("[ST-BME][reroll-trace] reuse ACCEPTED", {
|
||||
generationType,
|
||||
recallSource,
|
||||
targetUserMessageIndex,
|
||||
matchesPersistedRecord,
|
||||
canReuseUnboundTargetRecord,
|
||||
canTrustUserFloorRecord,
|
||||
});
|
||||
|
||||
return {
|
||||
record,
|
||||
targetUserMessageIndex,
|
||||
|
||||
Reference in New Issue
Block a user