diff --git a/src/main/java/work/slhaf/agent/module/modules/memory/selector/MemorySelector.java b/src/main/java/work/slhaf/agent/module/modules/memory/selector/MemorySelector.java index b38aeef1..b81f98bb 100644 --- a/src/main/java/work/slhaf/agent/module/modules/memory/selector/MemorySelector.java +++ b/src/main/java/work/slhaf/agent/module/modules/memory/selector/MemorySelector.java @@ -118,10 +118,7 @@ public class MemorySelector implements InteractionModule, PreModuleActions { for (ExtractorMatchData match : matches) { try { MemoryResult memoryResult = switch (match.getType()) { - case ExtractorMatchData.Constant.TOPIC -> { - fixTopicPath(match.getText()); - yield memoryManager.selectMemory(match.getText()); - } + case ExtractorMatchData.Constant.TOPIC -> memoryManager.selectMemory(match.getText()); case ExtractorMatchData.Constant.DATE -> memoryManager.selectMemory(LocalDate.parse(match.getText())); default -> null; @@ -131,7 +128,7 @@ public class MemorySelector implements InteractionModule, PreModuleActions { memoryResultList.add(memoryResult); } catch (UnExistedDateIndexException | UnExistedTopicException e) { log.error("[MemorySelector] 不存在的记忆索引! 请尝试更换更合适的主题提取LLM!", e); - GlobalExceptionHandler.writeExceptionState(new GlobalException(e.getMessage())); + log.error("[MemorySelector] 错误索引: {}", match.getText()); } } //清理切片记录 diff --git a/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/MemorySelectExtractor.java b/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/MemorySelectExtractor.java index b77d8be9..c9986f89 100644 --- a/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/MemorySelectExtractor.java +++ b/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/MemorySelectExtractor.java @@ -15,6 +15,7 @@ import work.slhaf.agent.core.session.SessionManager; import work.slhaf.agent.module.common.Model; import work.slhaf.agent.module.common.ModelConstant; import work.slhaf.agent.module.modules.memory.selector.extractor.data.ExtractorInput; +import work.slhaf.agent.module.modules.memory.selector.extractor.data.ExtractorMatchData; import work.slhaf.agent.module.modules.memory.selector.extractor.data.ExtractorResult; import work.slhaf.agent.shared.memory.EvaluatedSlice; @@ -23,6 +24,7 @@ import java.util.ArrayList; import java.util.List; import static work.slhaf.agent.common.util.ExtractUtil.extractJson; +import static work.slhaf.agent.common.util.ExtractUtil.fixTopicPath; @EqualsAndHashCode(callSuper = true) @Data @@ -86,6 +88,17 @@ public class MemorySelectExtractor extends Model { extractorResult.setRecall(false); extractorResult.setMatches(List.of()); } + return fix(extractorResult); + } + + private ExtractorResult fix(ExtractorResult extractorResult) { + extractorResult.getMatches().forEach(m -> { + if (m.getType().equals(ExtractorMatchData.Constant.DATE)) { + return; + } + m.setText(fixTopicPath(m.getText())); + }); + extractorResult.getMatches().removeIf(m -> m.getText().split("->")[0].isEmpty()); return extractorResult; }