From 0b63ec8523dc778c77eb03dba310e1376f059427 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Sat, 7 Mar 2026 13:53:34 +0800 Subject: [PATCH] fix(MemoryUpdater): fix message cleaning logic, and add refactor todo in updater --- .../modules/memory/updater/MemoryUpdater.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/memory/updater/MemoryUpdater.java b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/memory/updater/MemoryUpdater.java index c12406a2..11107c1b 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/memory/updater/MemoryUpdater.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/memory/updater/MemoryUpdater.java @@ -136,11 +136,9 @@ public class MemoryUpdater extends PostRunningAbstractAgentModuleAbstract { // 对剩下的多人聊天记录进行进行摘要 Callable task = () -> { log.debug("[MemoryUpdater] 多人聊天记忆更新流程开始..."); - List chatMessages; cognationCapability.getMessageLock().lock(); - chatMessages = new ArrayList<>(cognationCapability.getChatMessages()); + List chatMessages = getCleanedMessages(cognationCapability.getChatMessages()); cognationCapability.getMessageLock().unlock(); - cleanMessage(chatMessages); if (!chatMessages.isEmpty()) { log.debug("[MemoryUpdater] 存在多人聊天记录, 流程正常进行..."); // 以第一条user对应的id为发起用户 @@ -168,15 +166,16 @@ public class MemoryUpdater extends PostRunningAbstractAgentModuleAbstract { executor.invokeAll(List.of(task)); } - private void cleanMessage(List chatMessages) { - // 清理时间标识 - for (Message message : chatMessages) { - if (message.getRole().equals(ChatConstant.Character.ASSISTANT)) { - continue; - } - String time = Arrays.stream(message.getContent().split("\\*\\*")).toList().getLast(); - message.setContent(message.getContent().replace("\r\n**" + time, "")); - } + // TODO need to move time information into perceive core + private List getCleanedMessages(List chatMessages) { + return chatMessages.stream() + .map(message -> { + if (message.getRole().equals(ChatConstant.Character.ASSISTANT)) { + return message; + } + String time = Arrays.stream(message.getContent().split("\\*\\*")).toList().getLast(); + return new Message(ChatConstant.Character.USER, message.getContent().replace("\r\n**" + time, "")); + }).toList(); } private void clearChatMessages() {