diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/memory/MemoryCapability.java b/Partner-Core/src/main/java/work/slhaf/partner/core/memory/MemoryCapability.java index 692536d9..d5dbd493 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/memory/MemoryCapability.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/memory/MemoryCapability.java @@ -3,18 +3,20 @@ package work.slhaf.partner.core.memory; import work.slhaf.partner.core.memory.pojo.MemorySlice; import work.slhaf.partner.core.memory.pojo.MemoryUnit; import work.slhaf.partner.framework.agent.factory.capability.annotation.Capability; +import work.slhaf.partner.framework.agent.model.pojo.Message; import java.util.Collection; +import java.util.List; @Capability(value = "memory") public interface MemoryCapability { - void saveMemoryUnit(MemoryUnit memoryUnit); - MemoryUnit getMemoryUnit(String unitId); MemorySlice getMemorySlice(String unitId, String sliceId); + MemoryUnit updateMemoryUnit(List chatMessages, String summary); + Collection listMemoryUnits(); void refreshMemorySession(); diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/memory/MemoryCore.java b/Partner-Core/src/main/java/work/slhaf/partner/core/memory/MemoryCore.java index d8698bad..28c4dbc2 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/memory/MemoryCore.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/memory/MemoryCore.java @@ -8,6 +8,7 @@ import work.slhaf.partner.core.memory.pojo.MemorySlice; import work.slhaf.partner.core.memory.pojo.MemoryUnit; import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityCore; import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityMethod; +import work.slhaf.partner.framework.agent.model.pojo.Message; import work.slhaf.partner.framework.agent.state.State; import work.slhaf.partner.framework.agent.state.StateSerializable; import work.slhaf.partner.framework.agent.state.StateValue; @@ -33,11 +34,25 @@ public class MemoryCore implements StateSerializable { } @CapabilityMethod - public void saveMemoryUnit(MemoryUnit memoryUnit) { + public MemoryUnit updateMemoryUnit(List chatMessages, String summary) { memoryLock.lock(); try { - normalizeMemoryUnit(memoryUnit); - memoryUnits.put(memoryUnit.getId(), memoryUnit); + MemoryUnit unit = getMemoryUnit(memorySessionId); + unit.updateTimestamp(); + + List conversationMessages = unit.getConversationMessages(); + int startIndex = conversationMessages.size(); + + MemorySlice memorySlice = new MemorySlice( + startIndex, + startIndex + chatMessages.size(), + summary + ); + + conversationMessages.addAll(chatMessages); + + unit.getSlices().add(memorySlice); + return unit; } finally { memoryLock.unlock(); } diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/memory/runtime/MemoryRuntime.java b/Partner-Core/src/main/java/work/slhaf/partner/module/memory/runtime/MemoryRuntime.java index 305b3e75..376e5204 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/memory/runtime/MemoryRuntime.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/memory/runtime/MemoryRuntime.java @@ -78,7 +78,6 @@ public class MemoryRuntime extends AbstractAgentModule.Standalone { } public void recordMemory(MemoryUnit memoryUnit, String topicPath, List relatedTopicPaths) { - memoryCapability.saveMemoryUnit(memoryUnit); MemorySlice memorySlice = memoryUnit.getSlices().getLast(); SliceRef sliceRef = new SliceRef(memoryUnit.getId(), memorySlice.getId()); indexMemoryUnit(memoryUnit);