fix(anchor): serialize frame actions and self-heal stale L1 boundary
This commit is contained in:
@@ -367,6 +367,18 @@ async function handleAnchorGenerate() {
|
||||
postToFrame({ type: "ANCHOR_GEN_PROGRESS", current, total, message });
|
||||
});
|
||||
|
||||
// Self-heal: if chunks are empty but boundary looks "already built",
|
||||
// reset boundary so incremental L1 rebuild can start from floor 0.
|
||||
const [meta, storageStats] = await Promise.all([
|
||||
getMeta(chatId),
|
||||
getStorageStats(chatId),
|
||||
]);
|
||||
const lastFloor = (chat?.length || 0) - 1;
|
||||
if (storageStats.chunks === 0 && lastFloor >= 0 && (meta.lastChunkFloor ?? -1) >= lastFloor) {
|
||||
await updateMeta(chatId, { lastChunkFloor: -1 });
|
||||
xbLog.warn(MODULE_ID, "Detected empty L1 chunks with full boundary, reset lastChunkFloor=-1");
|
||||
}
|
||||
|
||||
postToFrame({ type: "ANCHOR_GEN_PROGRESS", current: 0, total: 1, message: "向量化 L1..." });
|
||||
const chunkResult = await buildIncrementalChunks({ vectorConfig: vectorCfg });
|
||||
|
||||
@@ -1157,7 +1169,7 @@ function updateFrameStatsAfterSummary(endMesId, merged) {
|
||||
// iframe 消息处理
|
||||
// ═══════════════════════════════════════════════════════════════════════════
|
||||
|
||||
function handleFrameMessage(event) {
|
||||
async function handleFrameMessage(event) {
|
||||
const iframe = document.getElementById("xiaobaix-story-summary-iframe");
|
||||
if (!isTrustedMessage(event, iframe, "LittleWhiteBox-StoryFrame")) return;
|
||||
|
||||
@@ -1212,7 +1224,7 @@ function handleFrameMessage(event) {
|
||||
break;
|
||||
|
||||
case "VECTOR_CLEAR":
|
||||
handleClearVectors();
|
||||
await handleClearVectors();
|
||||
break;
|
||||
|
||||
case "VECTOR_CANCEL_GENERATE":
|
||||
@@ -1223,11 +1235,11 @@ function handleFrameMessage(event) {
|
||||
break;
|
||||
|
||||
case "ANCHOR_GENERATE":
|
||||
handleAnchorGenerate();
|
||||
await handleAnchorGenerate();
|
||||
break;
|
||||
|
||||
case "ANCHOR_CLEAR":
|
||||
handleAnchorClear();
|
||||
await handleAnchorClear();
|
||||
break;
|
||||
|
||||
case "ANCHOR_CANCEL":
|
||||
|
||||
Reference in New Issue
Block a user