diff --git a/modules/story-summary/generate/prompt.js b/modules/story-summary/generate/prompt.js index 081bca3..2d078b2 100644 --- a/modules/story-summary/generate/prompt.js +++ b/modules/story-summary/generate/prompt.js @@ -52,9 +52,6 @@ const SUMMARIZED_EVIDENCE_MAX = 1500; const UNSUMMARIZED_EVIDENCE_MAX = 5000; const TOP_N_STAR = 5; -// 邻近补挂:未被事件消费的 L0,如果距最近事件 ≤ 此值则补挂 -const NEARBY_FLOOR_TOLERANCE = 2; - // L0 显示文本:分号拼接 vs 多行模式的阈值 const L0_JOINED_MAX_LENGTH = 120; // 背景证据:无实体匹配时保留的最低相似度(与 recall.js CONFIG.EVENT_ENTITY_BYPASS_SIM 保持一致) @@ -945,68 +942,6 @@ async function buildVectorPrompt(store, recallResult, causalById, focusEntities, // 每个 L0 只挂最近的一个事件,不扩展事件范围,不产生重叠 // ═══════════════════════════════════════════════════════════════════ - const allSelectedItems = [...selectedDirect, ...selectedRelated]; - const nearbyByItem = new Map(); - - for (const l0 of l0Selected) { - if (usedL0Ids.has(l0.id)) continue; - - let bestItem = null; - let bestDistance = Infinity; - - for (const item of allSelectedItems) { - const range = parseFloorRange(item.event?.summary); - if (!range) continue; - - let distance; - if (l0.floor < range.start) distance = range.start - l0.floor; - else if (l0.floor > range.end) distance = l0.floor - range.end; - else continue; - - if (distance <= NEARBY_FLOOR_TOLERANCE && distance <= bestDistance) { - bestDistance = distance; - bestItem = item; - } - } - - if (bestItem) { - if (!nearbyByItem.has(bestItem)) nearbyByItem.set(bestItem, []); - nearbyByItem.get(bestItem).push(l0); - usedL0Ids.add(l0.id); - } - } - - for (const [item, nearbyL0s] of nearbyByItem) { - const floorMap = groupL0ByFloor(nearbyL0s); - - for (const [floor, l0s] of floorMap) { - const group = buildEvidenceGroup(floor, l0s, l1ByFloor); - item.evidenceGroups.push(group); - } - - item.evidenceGroups.sort((a, b) => a.floor - b.floor); - - const newText = formatEventWithEvidence(item, 0, item.evidenceGroups, causalById); - const newTokens = estimateTokens(newText); - const delta = newTokens - item.tokens; - - if (total.used + delta > total.max) { - for (const l0 of nearbyL0s) usedL0Ids.delete(l0.id); - continue; - } - - total.used += delta; - eventBudget.used += delta; - - const isDirect = selectedDirect.includes(item); - if (!isDirect) relatedBudget.used += delta; - - injectionStats.evidence.l0InEvents += nearbyL0s.length; - item.text = newText; - item.tokens = newTokens; - injectionStats.event.tokens += delta; - } - // 重新编号 + 星标 const directEventTexts = selectedDirect.map((it, i) => { const numbered = renumberEventText(it.text, i + 1);