refactor(communication): create prompts for summarizer, and optimize message structure

This commit is contained in:
2026-04-17 23:16:20 +08:00
parent 0c079c127e
commit e0543a8966
12 changed files with 423 additions and 135 deletions

View File

@@ -1,6 +1,7 @@
package work.slhaf.partner.module.communication;
import org.junit.jupiter.api.Test;
import org.w3c.dom.Element;
import work.slhaf.partner.core.cognition.CognitionCapability;
import work.slhaf.partner.core.cognition.ContextWorkspace;
import work.slhaf.partner.framework.agent.model.pojo.Message;
@@ -51,8 +52,8 @@ class CommunicationProducerTest {
List<Message> chatMessages = cognitionCapability.getChatMessages();
assertEquals(2, chatMessages.size());
assertEquals("[[USER]: user-1]: hello", chatMessages.get(0).getContent());
assertEquals("[NOT_REPLIED]: not now", chatMessages.get(1).getContent());
assertEquals("[[USER]: user-1]:\n\nhello", chatMessages.get(0).getContent());
assertEquals("[[AGENT]: self]: [NOT_REPLIED]:\n\nnot now", chatMessages.get(1).getContent());
}
@Test
@@ -68,7 +69,7 @@ class CommunicationProducerTest {
);
List<Message> chatMessages = cognitionCapability.getChatMessages();
assertEquals("normal reply", chatMessages.get(1).getContent());
assertEquals("[[AGENT]: self]:\n\nnormal reply", chatMessages.get(1).getContent());
}
private static final class StubCognitionCapability implements CognitionCapability {
@@ -103,6 +104,11 @@ class CommunicationProducerTest {
public void refreshRecentChatMessagesContext() {
}
@Override
public Element messageNotesElement() {
return null;
}
@Override
public Lock getMessageLock() {
return lock;

View File

@@ -9,8 +9,8 @@ import work.slhaf.partner.core.memory.pojo.MemorySlice;
import work.slhaf.partner.core.memory.pojo.MemoryUnit;
import work.slhaf.partner.framework.agent.model.pojo.Message;
import work.slhaf.partner.framework.agent.support.Result;
import work.slhaf.partner.module.communication.summarizer.MultiSummarizer;
import work.slhaf.partner.module.communication.summarizer.SingleSummarizer;
import work.slhaf.partner.module.communication.summarizer.MessageCompressor;
import work.slhaf.partner.module.communication.summarizer.MessageSummarizer;
import java.lang.reflect.Field;
import java.nio.file.Path;
@@ -42,13 +42,13 @@ class DialogRollingTest {
String sessionId = "dialog-rolling-" + UUID.randomUUID();
StubMemoryCapability memoryCapability = new StubMemoryCapability(sessionId);
DialogRolling dialogRolling = new DialogRolling();
MultiSummarizer multiSummarizer = Mockito.mock(MultiSummarizer.class);
SingleSummarizer singleSummarizer = Mockito.mock(SingleSummarizer.class);
MessageSummarizer messageSummarizer = Mockito.mock(MessageSummarizer.class);
MessageCompressor messageCompressor = Mockito.mock(MessageCompressor.class);
setField(dialogRolling, "memoryCapability", memoryCapability);
setField(dialogRolling, "multiSummarizer", multiSummarizer);
setField(dialogRolling, "singleSummarizer", singleSummarizer);
setField(dialogRolling, "messageSummarizer", messageSummarizer);
setField(dialogRolling, "messageCompressor", messageCompressor);
when(multiSummarizer.execute(Mockito.any())).thenReturn(Result.success("new-summary"));
when(messageSummarizer.execute(Mockito.any())).thenReturn(Result.success("new-summary"));
MemoryUnit existingUnit = new MemoryUnit(sessionId);
existingUnit.getConversationMessages().addAll(List.of(
@@ -83,13 +83,13 @@ class DialogRollingTest {
String sessionId = "dialog-rolling-" + UUID.randomUUID();
StubMemoryCapability memoryCapability = new StubMemoryCapability(sessionId);
DialogRolling dialogRolling = new DialogRolling();
MultiSummarizer multiSummarizer = Mockito.mock(MultiSummarizer.class);
SingleSummarizer singleSummarizer = Mockito.mock(SingleSummarizer.class);
MessageSummarizer messageSummarizer = Mockito.mock(MessageSummarizer.class);
MessageCompressor messageCompressor = Mockito.mock(MessageCompressor.class);
setField(dialogRolling, "memoryCapability", memoryCapability);
setField(dialogRolling, "multiSummarizer", multiSummarizer);
setField(dialogRolling, "singleSummarizer", singleSummarizer);
setField(dialogRolling, "messageSummarizer", messageSummarizer);
setField(dialogRolling, "messageCompressor", messageCompressor);
when(multiSummarizer.execute(Mockito.any())).thenReturn(Result.success("fresh-summary"));
when(messageSummarizer.execute(Mockito.any())).thenReturn(Result.success("fresh-summary"));
RollingResult rollingResult = dialogRolling.buildRollingResult(List.of(
message(Message.Character.USER, "first"),
@@ -138,13 +138,13 @@ class DialogRollingTest {
String sessionId = "dialog-rolling-" + UUID.randomUUID();
StubMemoryCapability memoryCapability = new StubMemoryCapability(sessionId);
DialogRolling dialogRolling = new DialogRolling();
MultiSummarizer multiSummarizer = Mockito.mock(MultiSummarizer.class);
SingleSummarizer singleSummarizer = Mockito.mock(SingleSummarizer.class);
MessageSummarizer messageSummarizer = Mockito.mock(MessageSummarizer.class);
MessageCompressor messageCompressor = Mockito.mock(MessageCompressor.class);
setField(dialogRolling, "memoryCapability", memoryCapability);
setField(dialogRolling, "multiSummarizer", multiSummarizer);
setField(dialogRolling, "singleSummarizer", singleSummarizer);
setField(dialogRolling, "messageSummarizer", messageSummarizer);
setField(dialogRolling, "messageCompressor", messageCompressor);
when(multiSummarizer.execute(Mockito.any())).thenReturn(Result.success(" "));
when(messageSummarizer.execute(Mockito.any())).thenReturn(Result.success(" "));
RollingResult rollingResult = dialogRolling.buildRollingResult(List.of(
message(Message.Character.USER, "u1"),

View File

@@ -6,6 +6,7 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.w3c.dom.Element;
import work.slhaf.partner.core.cognition.CognitionCapability;
import work.slhaf.partner.core.memory.MemoryCapability;
import work.slhaf.partner.core.memory.pojo.MemorySlice;
@@ -93,6 +94,11 @@ class MemoryRuntimeTest {
}
@Override
public Element messageNotesElement() {
return null;
}
@Override
public Lock getMessageLock() {
return lock;