diff --git a/extraction-controller.js b/extraction-controller.js index 6695850..588836c 100644 --- a/extraction-controller.js +++ b/extraction-controller.js @@ -223,7 +223,7 @@ export async function runExtractionController(runtime) { } } -export async function onManualExtractController(runtime) { +export async function onManualExtractController(runtime, options = {}) { if (runtime.getIsExtracting()) { runtime.toastr.info("记忆提取正在进行中,请稍候"); return; @@ -271,6 +271,7 @@ export async function onManualExtractController(runtime) { "手动提取中", `待处理 assistant 楼层 ${pendingAssistantTurns.length} 条`, "running", + { syncRuntime: true, toastKind: "info", toastTitle: "ST-BME 手动提取" }, ); try { @@ -307,6 +308,10 @@ export async function onManualExtractController(runtime) { if (Array.isArray(batchResult.effects?.warnings)) { warnings.push(...batchResult.effects.warnings); } + + if (options?.drainAll === false) { + break; + } } if (totals.batches === 0) { @@ -521,7 +526,7 @@ export async function onRerollController(runtime, { fromFloor } = {}) { timeOut: 2500, }); - await runtime.onManualExtract(); + await runtime.onManualExtract({ drainAll: false }); runtime.refreshPanelLiveState(); return { ...rollbackResult, diff --git a/index.js b/index.js index 55dbd5a..336c56e 100644 --- a/index.js +++ b/index.js @@ -5058,7 +5058,7 @@ async function onFetchEmbeddingModels(mode = null) { ); } -async function onManualExtract() { +async function onManualExtract(options = {}) { return await onManualExtractController({ beginStageAbortController, clampInt, @@ -5086,7 +5086,7 @@ async function onManualExtract() { }, setLastExtractionStatus, toastr, - }); + }, options); } async function onReroll({ fromFloor } = {}) { diff --git a/tests/mobile-status-regressions.mjs b/tests/mobile-status-regressions.mjs index 04209bb..20374d6 100644 --- a/tests/mobile-status-regressions.mjs +++ b/tests/mobile-status-regressions.mjs @@ -28,7 +28,7 @@ const vectorSnippet = extractSnippet( "async function ensureVectorReadyIfNeeded(", ); const manualExtractSnippet = extractSnippet( - "async function onManualExtract() {", + "async function onManualExtract(options = {}) {", "async function onReroll(", ); const rebuildSnippet = extractSnippet(