fix(MemoryUpdater): fix message cleaning logic, and add refactor todo in updater

This commit is contained in:
2026-03-07 13:53:34 +08:00
parent 28a1bf8d1f
commit 0b63ec8523

View File

@@ -136,11 +136,9 @@ public class MemoryUpdater extends PostRunningAbstractAgentModuleAbstract {
// 对剩下的多人聊天记录进行进行摘要 // 对剩下的多人聊天记录进行进行摘要
Callable<Void> task = () -> { Callable<Void> task = () -> {
log.debug("[MemoryUpdater] 多人聊天记忆更新流程开始..."); log.debug("[MemoryUpdater] 多人聊天记忆更新流程开始...");
List<Message> chatMessages;
cognationCapability.getMessageLock().lock(); cognationCapability.getMessageLock().lock();
chatMessages = new ArrayList<>(cognationCapability.getChatMessages()); List<Message> chatMessages = getCleanedMessages(cognationCapability.getChatMessages());
cognationCapability.getMessageLock().unlock(); cognationCapability.getMessageLock().unlock();
cleanMessage(chatMessages);
if (!chatMessages.isEmpty()) { if (!chatMessages.isEmpty()) {
log.debug("[MemoryUpdater] 存在多人聊天记录, 流程正常进行..."); log.debug("[MemoryUpdater] 存在多人聊天记录, 流程正常进行...");
// 以第一条user对应的id为发起用户 // 以第一条user对应的id为发起用户
@@ -168,15 +166,16 @@ public class MemoryUpdater extends PostRunningAbstractAgentModuleAbstract {
executor.invokeAll(List.of(task)); executor.invokeAll(List.of(task));
} }
private void cleanMessage(List<Message> chatMessages) { // TODO need to move time information into perceive core
// 清理时间标识 private List<Message> getCleanedMessages(List<Message> chatMessages) {
for (Message message : chatMessages) { return chatMessages.stream()
if (message.getRole().equals(ChatConstant.Character.ASSISTANT)) { .map(message -> {
continue; if (message.getRole().equals(ChatConstant.Character.ASSISTANT)) {
} return message;
String time = Arrays.stream(message.getContent().split("\\*\\*")).toList().getLast(); }
message.setContent(message.getContent().replace("\r\n**" + time, "")); 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() { private void clearChatMessages() {