mirror of
https://github.com/slhaf/Partner.git
synced 2026-10-26 19:32:04 +00:00
refactor(memory): snapshot rolling results
This commit is contained in:
@@ -4,8 +4,8 @@ import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
import work.slhaf.partner.core.memory.pojo.MemorySlice;
|
||||
import work.slhaf.partner.core.memory.pojo.MemoryUnit;
|
||||
import work.slhaf.partner.core.memory.pojo.MemorySliceSnapshot;
|
||||
import work.slhaf.partner.core.memory.pojo.MemoryUnitSnapshot;
|
||||
import work.slhaf.partner.framework.agent.model.pojo.Message;
|
||||
|
||||
import java.nio.file.Path;
|
||||
@@ -32,7 +32,7 @@ class MemoryCoreTest {
|
||||
void shouldCreateFirstSliceFromChatMessages() {
|
||||
String sessionId = memoryCore.getMemorySessionId();
|
||||
|
||||
MemoryUnit updatedUnit = memoryCore.updateMemoryUnit(List.of(
|
||||
MemoryUnitSnapshot updatedUnit = memoryCore.updateMemoryUnit(List.of(
|
||||
new Message(Message.Character.USER, "m0"),
|
||||
new Message(Message.Character.USER, "m1"),
|
||||
new Message(Message.Character.USER, "m2")
|
||||
@@ -43,7 +43,7 @@ class MemoryCoreTest {
|
||||
updatedUnit.getConversationMessages().stream().map(Message::getContent).toList());
|
||||
assertEquals(1, updatedUnit.getSlices().size());
|
||||
|
||||
MemorySlice firstSlice = updatedUnit.getSlices().getFirst();
|
||||
MemorySliceSnapshot firstSlice = updatedUnit.getSlices().getFirst();
|
||||
assertNotNull(firstSlice.getId());
|
||||
assertEquals(0, firstSlice.getStartIndex());
|
||||
assertEquals(3, firstSlice.getEndIndex());
|
||||
@@ -60,7 +60,7 @@ class MemoryCoreTest {
|
||||
new Message(Message.Character.USER, "m0")
|
||||
), "first-summary");
|
||||
|
||||
MemoryUnit updatedUnit = memoryCore.updateMemoryUnit(List.of(
|
||||
MemoryUnitSnapshot updatedUnit = memoryCore.updateMemoryUnit(List.of(
|
||||
new Message(Message.Character.ASSISTANT, "m1"),
|
||||
new Message(Message.Character.USER, "m2")
|
||||
), "second-summary");
|
||||
@@ -70,14 +70,14 @@ class MemoryCoreTest {
|
||||
updatedUnit.getConversationMessages().stream().map(Message::getContent).toList());
|
||||
assertEquals(2, updatedUnit.getSlices().size());
|
||||
|
||||
MemorySlice appendedSlice = updatedUnit.getSlices().getLast();
|
||||
MemorySliceSnapshot appendedSlice = updatedUnit.getSlices().getLast();
|
||||
assertNotNull(appendedSlice.getId());
|
||||
assertEquals(1, appendedSlice.getStartIndex());
|
||||
assertEquals(3, appendedSlice.getEndIndex());
|
||||
assertEquals("second-summary", appendedSlice.getSummary());
|
||||
assertTrue(appendedSlice.getTimestamp() > 0);
|
||||
|
||||
MemorySlice loadedSlice = memoryCore.getMemorySlice(sessionId, appendedSlice.getId()).getOrThrow();
|
||||
MemorySliceSnapshot loadedSlice = memoryCore.getMemorySlice(sessionId, appendedSlice.getId()).getOrThrow();
|
||||
assertNotNull(loadedSlice);
|
||||
assertEquals(1, loadedSlice.getStartIndex());
|
||||
assertEquals(3, loadedSlice.getEndIndex());
|
||||
|
||||
+19
-16
@@ -6,7 +6,9 @@ import org.junit.jupiter.api.io.TempDir;
|
||||
import org.mockito.Mockito;
|
||||
import work.slhaf.partner.core.memory.MemoryCapability;
|
||||
import work.slhaf.partner.core.memory.pojo.MemorySlice;
|
||||
import work.slhaf.partner.core.memory.pojo.MemorySliceSnapshot;
|
||||
import work.slhaf.partner.core.memory.pojo.MemoryUnit;
|
||||
import work.slhaf.partner.core.memory.pojo.MemoryUnitSnapshot;
|
||||
import work.slhaf.partner.framework.agent.model.pojo.Message;
|
||||
import work.slhaf.partner.framework.agent.support.Result;
|
||||
import work.slhaf.partner.module.communication.summarizer.MessageCompressor;
|
||||
@@ -63,19 +65,19 @@ class DialogRollingTest {
|
||||
message(Message.Character.ASSISTANT, "new-assistant")
|
||||
), 4, 6);
|
||||
|
||||
MemoryUnit merged = memoryCapability.getMemoryUnit(sessionId);
|
||||
MemoryUnitSnapshot merged = memoryCapability.getMemoryUnit(sessionId);
|
||||
assertEquals(List.of("old-user", "old-assistant", "new-user", "new-assistant"),
|
||||
merged.getConversationMessages().stream().map(Message::getContent).toList());
|
||||
assertEquals(2, merged.getSlices().size());
|
||||
|
||||
MemorySlice appendedSlice = merged.getSlices().getLast();
|
||||
MemorySliceSnapshot appendedSlice = merged.getSlices().getLast();
|
||||
assertNotNull(appendedSlice.getId());
|
||||
assertEquals(2, appendedSlice.getStartIndex());
|
||||
assertEquals(4, appendedSlice.getEndIndex());
|
||||
assertEquals("new-summary", appendedSlice.getSummary());
|
||||
assertEquals(sessionId, rollingResult.memoryUnit().getId());
|
||||
assertEquals(appendedSlice.getId(), rollingResult.memorySlice().getId());
|
||||
assertEquals("new-summary", rollingResult.summary());
|
||||
assertEquals(sessionId, rollingResult.getMemoryUnit().getId());
|
||||
assertEquals(appendedSlice.getId(), rollingResult.getMemorySlice().getId());
|
||||
assertEquals("new-summary", rollingResult.getSummary());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -96,7 +98,7 @@ class DialogRollingTest {
|
||||
message(Message.Character.ASSISTANT, "second")
|
||||
), 2, 6);
|
||||
|
||||
MemoryUnit created = memoryCapability.getMemoryUnit(sessionId);
|
||||
MemoryUnitSnapshot created = memoryCapability.getMemoryUnit(sessionId);
|
||||
assertNotNull(created);
|
||||
assertEquals(List.of("first", "second"),
|
||||
created.getConversationMessages().stream().map(Message::getContent).toList());
|
||||
@@ -104,7 +106,7 @@ class DialogRollingTest {
|
||||
assertEquals(0, created.getSlices().getFirst().getStartIndex());
|
||||
assertEquals(2, created.getSlices().getFirst().getEndIndex());
|
||||
assertEquals("fresh-summary", created.getSlices().getFirst().getSummary());
|
||||
assertEquals(created, rollingResult.memoryUnit());
|
||||
assertEquals(created, rollingResult.getMemoryUnit());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -151,8 +153,8 @@ class DialogRollingTest {
|
||||
message(Message.Character.ASSISTANT, "a1")
|
||||
), 2, 6);
|
||||
|
||||
assertEquals(sessionId, rollingResult.memoryUnit().getId());
|
||||
assertEquals("no summary, due to empty summarize result", rollingResult.summary());
|
||||
assertEquals(sessionId, rollingResult.getMemoryUnit().getId());
|
||||
assertEquals("no summary, due to empty summarize result", rollingResult.getSummary());
|
||||
}
|
||||
|
||||
private static final class StubMemoryCapability implements MemoryCapability {
|
||||
@@ -172,28 +174,29 @@ class DialogRollingTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MemoryUnit getMemoryUnit(String unitId) {
|
||||
return units.get(unitId);
|
||||
public MemoryUnitSnapshot getMemoryUnit(String unitId) {
|
||||
MemoryUnit unit = units.get(unitId);
|
||||
return unit == null ? null : unit.snapshot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public work.slhaf.partner.framework.agent.support.Result<MemorySlice> getMemorySlice(String unitId, String sliceId) {
|
||||
public work.slhaf.partner.framework.agent.support.Result<MemorySliceSnapshot> getMemorySlice(String unitId, String sliceId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MemoryUnit updateMemoryUnit(List<Message> chatMessages, String summary) {
|
||||
public MemoryUnitSnapshot updateMemoryUnit(List<Message> chatMessages, String summary) {
|
||||
MemoryUnit unit = units.computeIfAbsent(sessionId, MemoryUnit::new);
|
||||
unit.updateTimestamp();
|
||||
int startIndex = unit.getConversationMessages().size();
|
||||
unit.getConversationMessages().addAll(chatMessages);
|
||||
unit.getSlices().add(new MemorySlice(startIndex, startIndex + chatMessages.size(), summary));
|
||||
return unit;
|
||||
return unit.snapshot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<MemoryUnit> listMemoryUnits() {
|
||||
return units.values();
|
||||
public Collection<MemoryUnitSnapshot> listMemoryUnits() {
|
||||
return units.values().stream().map(MemoryUnit::snapshot).toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+26
-27
@@ -11,7 +11,9 @@ import work.slhaf.partner.core.cognition.CognitionCapability;
|
||||
import work.slhaf.partner.core.cognition.context.ContextWorkspace;
|
||||
import work.slhaf.partner.core.memory.MemoryCapability;
|
||||
import work.slhaf.partner.core.memory.pojo.MemorySlice;
|
||||
import work.slhaf.partner.core.memory.pojo.MemorySliceSnapshot;
|
||||
import work.slhaf.partner.core.memory.pojo.MemoryUnit;
|
||||
import work.slhaf.partner.core.memory.pojo.MemoryUnitSnapshot;
|
||||
import work.slhaf.partner.framework.agent.model.pojo.Message;
|
||||
import work.slhaf.partner.framework.agent.support.Result;
|
||||
import work.slhaf.partner.module.memory.pojo.ActivationProfile;
|
||||
@@ -19,7 +21,6 @@ import work.slhaf.partner.module.memory.runtime.exception.MemoryLookupException;
|
||||
import work.slhaf.partner.module.memory.selector.ActivatedMemorySlice;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.nio.file.Path;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
@@ -41,11 +42,8 @@ class MemoryRuntimeTest {
|
||||
System.setProperty("user.home", tempDir.toAbsolutePath().toString());
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static List<Message> invokeSliceMessages(MemoryRuntime runtime, MemoryUnit unit, MemorySlice slice) throws Exception {
|
||||
Method method = MemoryRuntime.class.getDeclaredMethod("sliceMessages", MemoryUnit.class, MemorySlice.class);
|
||||
method.setAccessible(true);
|
||||
return (List<Message>) method.invoke(runtime, unit, slice);
|
||||
private static List<Message> invokeSliceMessages(MemoryRuntime runtime, MemoryUnit unit, MemorySlice slice) {
|
||||
return unit.snapshot().messagesOf(slice.snapshot());
|
||||
}
|
||||
|
||||
private static void setField(Object target, String fieldName, Object value) throws Exception {
|
||||
@@ -200,7 +198,7 @@ class MemoryRuntimeTest {
|
||||
unit.getSlices().addAll(List.of(firstSlice, secondSlice));
|
||||
memoryCapability.remember(unit);
|
||||
|
||||
runtime.recordMemory(unit, "topic/main", List.of("topic/related"), DEFAULT_PROFILE);
|
||||
runtime.recordMemory(unit.snapshot(), "topic/main", List.of("topic/related"), DEFAULT_PROFILE);
|
||||
|
||||
List<ActivatedMemorySlice> topicResult = runtime.queryActivatedMemoryByTopicPath("topic/main");
|
||||
assertEquals(List.of("slice-2"), topicResult.stream().map(ActivatedMemorySlice::getSliceId).toList());
|
||||
@@ -240,8 +238,8 @@ class MemoryRuntimeTest {
|
||||
relatedUnit.getSlices().add(relatedSlice);
|
||||
memoryCapability.remember(relatedUnit);
|
||||
|
||||
runtime.recordMemory(mainUnit, "topic/main", List.of("topic/related"), DEFAULT_PROFILE);
|
||||
runtime.recordMemory(relatedUnit, "topic/related", List.of(), DEFAULT_PROFILE);
|
||||
runtime.recordMemory(mainUnit.snapshot(), "topic/main", List.of("topic/related"), DEFAULT_PROFILE);
|
||||
runtime.recordMemory(relatedUnit.snapshot(), "topic/related", List.of(), DEFAULT_PROFILE);
|
||||
|
||||
List<ActivatedMemorySlice> topicResult = runtime.queryActivatedMemoryByTopicPath("topic/main");
|
||||
assertEquals(List.of("slice-main", "slice-related"),
|
||||
@@ -260,7 +258,7 @@ class MemoryRuntimeTest {
|
||||
MemorySlice firstSlice = MemorySlice.restore("slice-1", 0, 1, "first", 86_400_000L);
|
||||
firstUnitSnapshot.getSlices().add(firstSlice);
|
||||
memoryCapability.remember(firstUnitSnapshot);
|
||||
runtime.recordMemory(firstUnitSnapshot, "topic/main", List.of(), DEFAULT_PROFILE);
|
||||
runtime.recordMemory(firstUnitSnapshot.snapshot(), "topic/main", List.of(), DEFAULT_PROFILE);
|
||||
|
||||
firstUnitSnapshot.getConversationMessages().clear();
|
||||
firstUnitSnapshot.getConversationMessages().addAll(List.of(message("m2"), message("m3")));
|
||||
@@ -268,7 +266,7 @@ class MemoryRuntimeTest {
|
||||
firstUnitSnapshot.getSlices().clear();
|
||||
firstUnitSnapshot.getSlices().add(secondSlice);
|
||||
memoryCapability.remember(firstUnitSnapshot);
|
||||
runtime.recordMemory(firstUnitSnapshot, "topic/main", List.of(), DEFAULT_PROFILE);
|
||||
runtime.recordMemory(firstUnitSnapshot.snapshot(), "topic/main", List.of(), DEFAULT_PROFILE);
|
||||
|
||||
JSONObject state = JSONObject.parseObject(runtime.convert().toString());
|
||||
JSONArray dateIndex = state.getJSONArray("date_index");
|
||||
@@ -306,14 +304,14 @@ class MemoryRuntimeTest {
|
||||
MemorySlice secondSlice = MemorySlice.restore("slice-2", 2, 4, "second", 172_800_000L);
|
||||
mainUnit.getSlices().addAll(List.of(firstSlice, secondSlice));
|
||||
memoryCapability.remember(mainUnit);
|
||||
runtime.recordMemory(mainUnit, "topic/main", List.of("topic/related"), DEFAULT_PROFILE);
|
||||
runtime.recordMemory(mainUnit.snapshot(), "topic/main", List.of("topic/related"), DEFAULT_PROFILE);
|
||||
|
||||
MemoryUnit relatedUnit = new MemoryUnit("unit-201");
|
||||
relatedUnit.getConversationMessages().addAll(List.of(message("r0"), message("r1")));
|
||||
MemorySlice relatedSlice = MemorySlice.restore("slice-3", 0, 2, "related", 259_200_000L);
|
||||
relatedUnit.getSlices().add(relatedSlice);
|
||||
memoryCapability.remember(relatedUnit);
|
||||
runtime.recordMemory(relatedUnit, "topic/related", List.of(), DEFAULT_PROFILE);
|
||||
runtime.recordMemory(relatedUnit.snapshot(), "topic/related", List.of(), DEFAULT_PROFILE);
|
||||
|
||||
JSONObject state = JSONObject.parseObject(runtime.convert().toString());
|
||||
JSONArray topicSlices = state.getJSONArray("topic_slices");
|
||||
@@ -380,21 +378,21 @@ class MemoryRuntimeTest {
|
||||
MemorySlice primarySlice = MemorySlice.restore("slice-primary", 0, 2, "primary", System.currentTimeMillis());
|
||||
primaryUnit.getSlices().add(primarySlice);
|
||||
memoryCapability.remember(primaryUnit);
|
||||
runtime.recordMemory(primaryUnit, "topic->main", List.of("topic->related"), new ActivationProfile(0.9f, 0.1f, 0.9f));
|
||||
runtime.recordMemory(primaryUnit.snapshot(), "topic->main", List.of("topic->related"), new ActivationProfile(0.9f, 0.1f, 0.9f));
|
||||
|
||||
MemoryUnit relatedUnit = new MemoryUnit("unit-related-rank");
|
||||
relatedUnit.getConversationMessages().addAll(List.of(message("r0"), message("r1")));
|
||||
MemorySlice relatedSlice = MemorySlice.restore("slice-related-rank", 0, 2, "related", System.currentTimeMillis());
|
||||
relatedUnit.getSlices().add(relatedSlice);
|
||||
memoryCapability.remember(relatedUnit);
|
||||
runtime.recordMemory(relatedUnit, "topic->related", List.of(), new ActivationProfile(1.0f, 1.0f, 1.0f));
|
||||
runtime.recordMemory(relatedUnit.snapshot(), "topic->related", List.of(), new ActivationProfile(1.0f, 1.0f, 1.0f));
|
||||
|
||||
MemoryUnit parentUnit = new MemoryUnit("unit-parent");
|
||||
parentUnit.getConversationMessages().addAll(List.of(message("x0"), message("x1")));
|
||||
MemorySlice parentSlice = MemorySlice.restore("slice-parent", 0, 2, "parent", System.currentTimeMillis());
|
||||
parentUnit.getSlices().add(parentSlice);
|
||||
memoryCapability.remember(parentUnit);
|
||||
runtime.recordMemory(parentUnit, "topic", List.of(), new ActivationProfile(1.0f, 1.0f, 1.0f));
|
||||
runtime.recordMemory(parentUnit.snapshot(), "topic", List.of(), new ActivationProfile(1.0f, 1.0f, 1.0f));
|
||||
|
||||
List<ActivatedMemorySlice> topicResult = runtime.queryActivatedMemoryByTopicPath("topic->main");
|
||||
assertEquals(List.of("slice-primary", "slice-related-rank", "slice-parent"),
|
||||
@@ -414,7 +412,7 @@ class MemoryRuntimeTest {
|
||||
primaryUnit.getSlices().add(primarySlice);
|
||||
memoryCapability.remember(primaryUnit);
|
||||
runtime.recordMemory(
|
||||
primaryUnit,
|
||||
primaryUnit.snapshot(),
|
||||
"topic->main",
|
||||
List.of("topic->related"),
|
||||
new ActivationProfile(0.8f, 0.0f, 0.8f)
|
||||
@@ -425,7 +423,7 @@ class MemoryRuntimeTest {
|
||||
MemorySlice relatedSlice = MemorySlice.restore("slice-related-zero", 0, 2, "related", System.currentTimeMillis());
|
||||
relatedUnit.getSlices().add(relatedSlice);
|
||||
memoryCapability.remember(relatedUnit);
|
||||
runtime.recordMemory(relatedUnit, "topic->related", List.of(), new ActivationProfile(1.0f, 1.0f, 1.0f));
|
||||
runtime.recordMemory(relatedUnit.snapshot(), "topic->related", List.of(), new ActivationProfile(1.0f, 1.0f, 1.0f));
|
||||
|
||||
List<ActivatedMemorySlice> topicResult = runtime.queryActivatedMemoryByTopicPath("topic->main");
|
||||
assertEquals(List.of("slice-primary-zero"), topicResult.stream().map(ActivatedMemorySlice::getSliceId).toList());
|
||||
@@ -444,10 +442,10 @@ class MemoryRuntimeTest {
|
||||
unit.getSlices().add(slice);
|
||||
memoryCapability.remember(unit);
|
||||
|
||||
runtime.recordMemory(unit, "topic->main", List.of("topic->related"), new ActivationProfile(0.2f, 0.1f, 0.2f));
|
||||
runtime.recordMemory(unit.snapshot(), "topic->main", List.of("topic->related"), new ActivationProfile(0.2f, 0.1f, 0.2f));
|
||||
unit.getSlices().clear();
|
||||
unit.getSlices().add(MemorySlice.restore("slice-refresh", 0, 2, "summary", 172_800_000L));
|
||||
runtime.recordMemory(unit, "topic->main", List.of("topic->related-2"), new ActivationProfile(0.9f, 0.8f, 0.7f));
|
||||
runtime.recordMemory(unit.snapshot(), "topic->main", List.of("topic->related-2"), new ActivationProfile(0.9f, 0.8f, 0.7f));
|
||||
|
||||
JSONObject state = JSONObject.parseObject(runtime.convert().toString());
|
||||
JSONObject mainTopic = state.getJSONArray("topic_slices").stream()
|
||||
@@ -481,12 +479,13 @@ class MemoryRuntimeTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MemoryUnit getMemoryUnit(String unitId) {
|
||||
return units.get(unitId);
|
||||
public MemoryUnitSnapshot getMemoryUnit(String unitId) {
|
||||
MemoryUnit unit = units.get(unitId);
|
||||
return unit == null ? null : unit.snapshot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<MemorySlice> getMemorySlice(String unitId, String sliceId) {
|
||||
public Result<MemorySliceSnapshot> getMemorySlice(String unitId, String sliceId) {
|
||||
MemoryUnit unit = units.get(unitId);
|
||||
if (unit == null || unit.getSlices() == null) {
|
||||
return Result.failure(new MemoryLookupException(
|
||||
@@ -498,7 +497,7 @@ class MemoryRuntimeTest {
|
||||
return unit.getSlices().stream()
|
||||
.filter(slice -> sliceId.equals(slice.getId()))
|
||||
.findFirst()
|
||||
.map(Result::success)
|
||||
.map(slice -> Result.success(slice.snapshot()))
|
||||
.orElseGet(() -> Result.failure(new MemoryLookupException(
|
||||
"Memory slice not found: " + unitId + ":" + sliceId,
|
||||
unitId + ":" + sliceId,
|
||||
@@ -507,13 +506,13 @@ class MemoryRuntimeTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MemoryUnit updateMemoryUnit(List<Message> chatMessages, String summary) {
|
||||
public MemoryUnitSnapshot updateMemoryUnit(List<Message> chatMessages, String summary) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<MemoryUnit> listMemoryUnits() {
|
||||
return units.values();
|
||||
public Collection<MemoryUnitSnapshot> listMemoryUnits() {
|
||||
return units.values().stream().map(MemoryUnit::snapshot).toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+6
-9
@@ -79,13 +79,10 @@ class MemoryRecallProfileExtractorTest {
|
||||
MemorySlice slice = new MemorySlice(2, 4, "slice-summary");
|
||||
unit.getSlices().add(slice);
|
||||
|
||||
updater.consume(new RollingResult(unit, slice, List.of(
|
||||
message(Message.Character.USER, "new"),
|
||||
message(Message.Character.ASSISTANT, "new-reply")
|
||||
), "slice-summary", 4, 6));
|
||||
updater.consume(new RollingResult(unit.snapshot(), slice.snapshot(), 4, 6));
|
||||
|
||||
verify(memoryRuntime).recordMemory(
|
||||
eq(unit),
|
||||
eq(unit.snapshot()),
|
||||
eq("root->branch"),
|
||||
eq(List.of("root->related")),
|
||||
argThat(profile -> profile != null
|
||||
@@ -113,10 +110,10 @@ class MemoryRecallProfileExtractorTest {
|
||||
MemorySlice slice = new MemorySlice(0, 2, "slice-summary");
|
||||
unit.getSlices().add(slice);
|
||||
|
||||
updater.consume(new RollingResult(unit, slice, unit.getConversationMessages(), "slice-summary", 2, 6));
|
||||
updater.consume(new RollingResult(unit.snapshot(), slice.snapshot(), 2, 6));
|
||||
|
||||
verify(memoryRuntime).recordMemory(
|
||||
eq(unit),
|
||||
eq(unit.snapshot()),
|
||||
eq(null),
|
||||
eq(List.of()),
|
||||
argThat(profile -> profile != null
|
||||
@@ -147,10 +144,10 @@ class MemoryRecallProfileExtractorTest {
|
||||
MemorySlice slice = new MemorySlice(0, 1, "slice-summary");
|
||||
unit.getSlices().add(slice);
|
||||
|
||||
updater.consume(new RollingResult(unit, slice, unit.getConversationMessages(), "slice-summary", 1, 6));
|
||||
updater.consume(new RollingResult(unit.snapshot(), slice.snapshot(), 1, 6));
|
||||
|
||||
verify(memoryRuntime).recordMemory(
|
||||
eq(unit),
|
||||
eq(unit.snapshot()),
|
||||
eq("root->branch"),
|
||||
eq(List.of()),
|
||||
argThat(profile -> profile != null
|
||||
|
||||
Reference in New Issue
Block a user