refactor(memory): remove postprocess executor and simplify memory updater trigger

This commit is contained in:
2026-03-10 23:07:58 +08:00
parent c1998f61b6
commit cdfae8ab1a
3 changed files with 8 additions and 65 deletions

View File

@@ -1,19 +0,0 @@
package work.slhaf.partner.module.common.module;
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
public abstract class PostRunningAgentModule extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
@Override
public final void execute(PartnerRunningFlowContext context) {
boolean trigger = context.getModuleContext().getExtraContext().getBoolean("post_process_trigger");
if (!trigger && relyOnMessage()) {
return;
}
doExecute(context);
}
public abstract void doExecute(PartnerRunningFlowContext context);
protected abstract boolean relyOnMessage();
}

View File

@@ -5,6 +5,7 @@ import kotlin.Unit;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.api.agent.factory.component.annotation.Init; import work.slhaf.partner.api.agent.factory.component.annotation.Init;
import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule; import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule;
import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.api.chat.pojo.Message;
@@ -16,7 +17,6 @@ import work.slhaf.partner.core.memory.MemoryCapability;
import work.slhaf.partner.core.memory.pojo.MemorySlice; import work.slhaf.partner.core.memory.pojo.MemorySlice;
import work.slhaf.partner.core.memory.pojo.MemoryUnit; import work.slhaf.partner.core.memory.pojo.MemoryUnit;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.module.common.module.PostRunningAgentModule;
import work.slhaf.partner.module.modules.action.scheduler.ActionScheduler; import work.slhaf.partner.module.modules.action.scheduler.ActionScheduler;
import work.slhaf.partner.module.modules.memory.runtime.MemoryRuntime; import work.slhaf.partner.module.modules.memory.runtime.MemoryRuntime;
import work.slhaf.partner.module.modules.memory.updater.summarizer.MultiSummarizer; import work.slhaf.partner.module.modules.memory.updater.summarizer.MultiSummarizer;
@@ -32,11 +32,12 @@ import java.util.concurrent.atomic.AtomicBoolean;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
public class MemoryUpdater extends PostRunningAgentModule { public class MemoryUpdater extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
private static final String AUTO_UPDATE_CRON = "0/10 * * * * ?"; private static final String AUTO_UPDATE_CRON = "0/10 * * * * ?";
private static final long UPDATE_TRIGGER_INTERVAL = 60 * 60 * 1000; private static final long UPDATE_TRIGGER_INTERVAL = 60 * 60 * 1000;
private static final int CONTEXT_RETAIN_DIVISOR = 6; private static final int CONTEXT_RETAIN_DIVISOR = 6;
private static final int MEMORY_UPDATE_TRIGGER_ROLL_LIMIT = 36;
@InjectCapability @InjectCapability
private CognationCapability cognationCapability; private CognationCapability cognationCapability;
@@ -80,28 +81,17 @@ public class MemoryUpdater extends PostRunningAgentModule {
} }
@Override @Override
public void doExecute(PartnerRunningFlowContext context) { public void execute(PartnerRunningFlowContext context) {
boolean trigger = cognationCapability.getChatMessages().size() >= MEMORY_UPDATE_TRIGGER_ROLL_LIMIT;
if (!trigger) {
return;
}
executor.execute(() -> { executor.execute(() -> {
JSONObject moduleContext = context.getModuleContext().getExtraContext();
boolean recall = moduleContext.getBoolean("recall");
if (recall) {
int recallCount = moduleContext.getIntValue("recall_count");
log.debug("[MemoryUpdater] 当前激活记忆数量 [{}]", recallCount);
}
boolean trigger = moduleContext.getBoolean("post_process_trigger");
if (!trigger) {
return;
}
log.debug("[MemoryUpdater] 记忆更新触发"); log.debug("[MemoryUpdater] 记忆更新触发");
triggerMemoryUpdate(false); triggerMemoryUpdate(false);
}); });
} }
@Override
protected boolean relyOnMessage() {
return true;
}
private void tryAutoUpdate() { private void tryAutoUpdate() {
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
int chatCount = cognationCapability.snapshotChatMessages().size(); int chatCount = cognationCapability.snapshotChatMessages().size();

View File

@@ -1,28 +0,0 @@
package work.slhaf.partner.module.modules.process;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
@EqualsAndHashCode(callSuper = true)
@Data
public class PostprocessExecutor extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
private static final int POST_PROCESS_TRIGGER_ROLL_LIMIT = 36;
@InjectCapability
private CognationCapability cognationCapability;
@Override
public void execute(PartnerRunningFlowContext context) {
boolean trigger = cognationCapability.getChatMessages().size() >= POST_PROCESS_TRIGGER_ROLL_LIMIT;
context.getModuleContext().getExtraContext().put("post_process_trigger", trigger);
log.debug("[PostprocessExecutor] 是否执行后处理: {}", trigger);
}
@Override
public int order() {
return 6;
}
}