fix(recall): pass generation context to primary reroll path + trace gates

This commit is contained in:
youzini
2026-05-31 21:05:59 +00:00
parent c81a91f485
commit 52c3d59e0e
2 changed files with 67 additions and 4 deletions

View File

@@ -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,