refactor(memory): compute memory slice in MemoryCore

This commit is contained in:
2026-04-07 17:13:51 +08:00
parent 6fd12cd19f
commit b80ff8400c
3 changed files with 22 additions and 6 deletions

View File

@@ -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<Message> chatMessages, String summary);
Collection<MemoryUnit> listMemoryUnits();
void refreshMemorySession();

View File

@@ -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<Message> chatMessages, String summary) {
memoryLock.lock();
try {
normalizeMemoryUnit(memoryUnit);
memoryUnits.put(memoryUnit.getId(), memoryUnit);
MemoryUnit unit = getMemoryUnit(memorySessionId);
unit.updateTimestamp();
List<Message> 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();
}

View File

@@ -78,7 +78,6 @@ public class MemoryRuntime extends AbstractAgentModule.Standalone {
}
public void recordMemory(MemoryUnit memoryUnit, String topicPath, List<String> relatedTopicPaths) {
memoryCapability.saveMemoryUnit(memoryUnit);
MemorySlice memorySlice = memoryUnit.getSlices().getLast();
SliceRef sliceRef = new SliceRef(memoryUnit.getId(), memorySlice.getId());
indexMemoryUnit(memoryUnit);