From c706ec6aaf82db9591d30c7db286462781683b7c Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Fri, 6 Jun 2025 10:01:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E7=AC=AC=E4=BA=8C=E9=98=B6?= =?UTF-8?q?=E6=AE=B5=E8=B0=83=E8=AF=95=E4=BF=AE=E5=A4=8D=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=83=A8=E5=88=86=E7=BB=86=E8=8A=82=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 调整'fixTopicPath'在提取主题路径时的执行时机 - 记忆切片索引出错将不再保存异常快照,只保留日志 - 尝试发布临时版本 --- .../modules/memory/selector/MemorySelector.java | 7 ++----- .../selector/extractor/MemorySelectExtractor.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) 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; }