refactor(dialog): remove legacy data class

This commit is contained in:
2026-04-15 17:24:22 +08:00
parent f510dc5a42
commit 999a6a8d7e
8 changed files with 55 additions and 163 deletions

View File

@@ -26,18 +26,14 @@ import work.slhaf.partner.framework.agent.factory.component.annotation.InjectMod
import work.slhaf.partner.framework.agent.model.pojo.Message;
import work.slhaf.partner.framework.agent.support.Result;
import work.slhaf.partner.module.action.scheduler.ActionScheduler;
import work.slhaf.partner.module.memory.runtime.MemoryRuntime;
import work.slhaf.partner.module.memory.updater.summarizer.MultiSummarizer;
import work.slhaf.partner.module.memory.updater.summarizer.SingleSummarizer;
import work.slhaf.partner.module.memory.updater.summarizer.entity.SummarizeInput;
import work.slhaf.partner.module.memory.updater.summarizer.entity.SummarizeResult;
import work.slhaf.partner.module.communication.summarizer.MultiSummarizer;
import work.slhaf.partner.module.communication.summarizer.SingleSummarizer;
import work.slhaf.partner.runtime.PartnerRunningFlowContext;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicBoolean;
@EqualsAndHashCode(callSuper = true)
@@ -47,8 +43,10 @@ public class DialogRolling extends AbstractAgentModule.Running<PartnerRunningFlo
private static final String AUTO_UPDATE_CRON = "0/10 * * * * ?";
private static final long UPDATE_TRIGGER_INTERVAL = 60 * 60 * 1000;
private static final int CONTEXT_RETAIN_DIVISOR = 6;
private static final int MEMORY_UPDATE_TRIGGER_ROLL_LIMIT = 36;
private static final int DIALOG_ROLLING_TRIGGER_LIMIT = 36;
private final AtomicBoolean rolling = new AtomicBoolean(false);
@InjectCapability
private CognitionCapability cognitionCapability;
@InjectCapability
@@ -57,8 +55,7 @@ public class DialogRolling extends AbstractAgentModule.Running<PartnerRunningFlo
private PerceiveCapability perceiveCapability;
@InjectCapability
private ActionCapability actionCapability;
@InjectModule
private MemoryRuntime memoryRuntime;
@InjectModule
private MultiSummarizer multiSummarizer;
@InjectModule
@@ -67,11 +64,9 @@ public class DialogRolling extends AbstractAgentModule.Running<PartnerRunningFlo
private ActionScheduler actionScheduler;
@InjectModule
private AfterRollingRegistry afterRollingRegistry;
private ExecutorService executor;
@Init
public void init() {
executor = actionCapability.getExecutor(ActionCore.ExecutorType.VIRTUAL);
registerScheduledUpdater();
}
@@ -93,10 +88,10 @@ public class DialogRolling extends AbstractAgentModule.Running<PartnerRunningFlo
@Override
protected void doExecute(@NotNull PartnerRunningFlowContext context) {
if (cognitionCapability.getChatMessages().size() < MEMORY_UPDATE_TRIGGER_ROLL_LIMIT) {
if (cognitionCapability.getChatMessages().size() < DIALOG_ROLLING_TRIGGER_LIMIT) {
return;
}
executor.execute(() -> triggerRolling(false));
actionCapability.getExecutor(ActionCore.ExecutorType.VIRTUAL).execute(() -> triggerRolling(false));
}
private void tryAutoRolling() {
@@ -163,11 +158,10 @@ public class DialogRolling extends AbstractAgentModule.Running<PartnerRunningFlo
@NotNull
RollingResult buildRollingResult(List<Message> chatSnapshot, int rollingSize, int retainDivisor) {
SummarizeInput summarizeInput = new SummarizeInput(chatSnapshot, memoryRuntime.getTopicTree());
singleSummarizer.execute(summarizeInput.getChatMessages());
Result<SummarizeResult> summarizeResult = multiSummarizer.execute(summarizeInput);
String summary = summarizeResult.fold(
SummarizeResult::getSummary,
singleSummarizer.execute(chatSnapshot);
Result<String> summaryResult = multiSummarizer.execute(chatSnapshot);
String summary = summaryResult.fold(
value -> value,
exp -> "no summary, due to exception"
);
if (summary.isBlank()) {

View File

@@ -0,0 +1,35 @@
package work.slhaf.partner.module.communication.summarizer;
import cn.hutool.json.JSONUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jetbrains.annotations.NotNull;
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.framework.agent.factory.component.annotation.InjectModule;
import work.slhaf.partner.framework.agent.model.ActivateModel;
import work.slhaf.partner.framework.agent.model.pojo.Message;
import work.slhaf.partner.framework.agent.support.Result;
import work.slhaf.partner.module.memory.runtime.MemoryRuntime;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class MultiSummarizer extends AbstractAgentModule.Sub<List<Message>, Result<String>> implements ActivateModel {
@InjectModule
private MemoryRuntime memoryRuntime;
@Override
protected @NotNull Result<String> doExecute(List<Message> messages) {
return chat(
List.of(new Message(Message.Character.USER, JSONUtil.toJsonPrettyStr(messages)))
);
}
@NotNull
@Override
public String modelKey() {
return "multi_summarizer";
}
}

View File

@@ -1,7 +1,8 @@
package work.slhaf.partner.module.memory.updater.summarizer;
package work.slhaf.partner.module.communication.summarizer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jetbrains.annotations.NotNull;
import work.slhaf.partner.core.action.ActionCapability;
import work.slhaf.partner.core.action.ActionCore;
import work.slhaf.partner.framework.agent.factory.capability.annotation.InjectCapability;
@@ -30,7 +31,6 @@ public class SingleSummarizer extends AbstractAgentModule.Sub<List<Message>, Voi
@Override
protected Void doExecute(List<Message> chatMessages) {
log.debug("[MemorySummarizer] 长文本摘要开始...");
CountDownLatch latch = new CountDownLatch(chatMessages.size());
for (int i = 0; i < chatMessages.size(); i++) {
Message chatMessage = chatMessages.get(i);
@@ -56,14 +56,10 @@ public class SingleSummarizer extends AbstractAgentModule.Sub<List<Message>, Voi
latch.await();
} catch (InterruptedException ignored) {
}
log.debug("[MemorySummarizer] 长文本摘要结束");
return null;
}
private String singleExecute(String primaryContent) {
return chat(List.of(new Message(Message.Character.USER, primaryContent))).getOrThrow();
}
@NotNull
@Override
public String modelKey() {
return "single_summarizer";

View File

@@ -1,52 +0,0 @@
package work.slhaf.partner.module.memory.updater.summarizer;
import cn.hutool.json.JSONUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jetbrains.annotations.NotNull;
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.framework.agent.factory.component.annotation.InjectModule;
import work.slhaf.partner.framework.agent.model.ActivateModel;
import work.slhaf.partner.framework.agent.model.pojo.Message;
import work.slhaf.partner.framework.agent.support.Result;
import work.slhaf.partner.module.memory.runtime.MemoryRuntime;
import work.slhaf.partner.module.memory.updater.summarizer.entity.SummarizeInput;
import work.slhaf.partner.module.memory.updater.summarizer.entity.SummarizeResult;
import java.util.ArrayList;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class MultiSummarizer extends AbstractAgentModule.Sub<SummarizeInput, Result<SummarizeResult>> implements ActivateModel {
@InjectModule
private MemoryRuntime memoryRuntime;
@Override
protected @NotNull Result<SummarizeResult> doExecute(SummarizeInput input) {
return formattedChat(
List.of(new Message(Message.Character.USER, JSONUtil.toJsonPrettyStr(input))),
SummarizeResult.class
).onSuccess(this::fix);
}
private void fix(SummarizeResult result) {
if (result == null || result.getTopicPath() == null || result.getTopicPath().isEmpty()) {
return;
}
String topicPath = memoryRuntime.fixTopicPath(result.getTopicPath());
List<String> relatedTopicPath = new ArrayList<>();
for (String s : result.getRelatedTopicPath()) {
relatedTopicPath.add(memoryRuntime.fixTopicPath(s));
}
result.setTopicPath(topicPath);
result.setRelatedTopicPath(relatedTopicPath);
}
@NotNull
@Override
public String modelKey() {
return "multi_summarizer";
}
}

View File

@@ -1,32 +0,0 @@
package work.slhaf.partner.module.memory.updater.summarizer;
import cn.hutool.json.JSONUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.framework.agent.model.ActivateModel;
import work.slhaf.partner.framework.agent.model.pojo.Message;
import java.util.HashMap;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class TotalSummarizer extends AbstractAgentModule.Sub<HashMap<String, String>, String> implements ActivateModel {
protected String doExecute(HashMap<String, String> singleMemorySummary) {
return formattedChat(
List.of(new Message(Message.Character.USER, JSONUtil.toJsonPrettyStr(singleMemorySummary))),
SummaryContent.class
).getOrThrow().getContent();
}
@Override
public String modelKey() {
return "total_summarizer";
}
@lombok.Data
private static class SummaryContent {
private String content;
}
}

View File

@@ -1,14 +0,0 @@
package work.slhaf.partner.module.memory.updater.summarizer.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import work.slhaf.partner.framework.agent.model.pojo.Message;
import java.util.List;
@AllArgsConstructor
@Data
public class SummarizeInput {
private List<Message> chatMessages;
private String topicTree;
}

View File

@@ -1,12 +0,0 @@
package work.slhaf.partner.module.memory.updater.summarizer.entity;
import lombok.Data;
import java.util.List;
@Data
public class SummarizeResult {
private String summary;
private String topicPath;
private List<String> relatedTopicPath;
}