From 50b07488a6d6f094faa316e296ca3b94d7b6be48 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Tue, 24 Mar 2026 11:49:29 +0800 Subject: [PATCH] refactor(action): adjust ActionPlanner and related submodules to adapt to current Agent Context acquisition --- .../modules/action/planner/ActionPlanner.java | 30 +++---------------- .../planner/evaluator/ActionEvaluator.java | 16 ++++++++-- .../planner/extractor/ActionExtractor.java | 23 +++++++++----- .../modules/core/CommunicationProducer.java | 2 +- 4 files changed, 34 insertions(+), 37 deletions(-) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/ActionPlanner.java b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/ActionPlanner.java index 13cf4a7c..6771056e 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/ActionPlanner.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/ActionPlanner.java @@ -6,7 +6,6 @@ import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapabili 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.InjectModule; -import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.common.vector.VectorClient; import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.core.action.ActionCore; @@ -14,7 +13,6 @@ import work.slhaf.partner.core.action.entity.*; import work.slhaf.partner.core.action.entity.cache.CacheAdjustData; import work.slhaf.partner.core.action.entity.cache.CacheAdjustMetaData; import work.slhaf.partner.core.cognition.CognitionCapability; -import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.module.modules.action.executor.ActionExecutor; import work.slhaf.partner.module.modules.action.planner.confirmer.ActionConfirmer; import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerInput; @@ -24,7 +22,6 @@ import work.slhaf.partner.module.modules.action.planner.evaluator.ActionEvaluato import work.slhaf.partner.module.modules.action.planner.evaluator.entity.EvaluatorInput; import work.slhaf.partner.module.modules.action.planner.evaluator.entity.EvaluatorResult; import work.slhaf.partner.module.modules.action.planner.extractor.ActionExtractor; -import work.slhaf.partner.module.modules.action.planner.extractor.entity.ExtractorInput; import work.slhaf.partner.module.modules.action.planner.extractor.entity.ExtractorResult; import work.slhaf.partner.module.modules.action.scheduler.ActionScheduler; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; @@ -52,8 +49,6 @@ public class ActionPlanner extends AbstractAgentModule.Running> tasks = new ArrayList<>(); addConfirmTask(tasks, context); @@ -93,12 +88,11 @@ public class ActionPlanner extends AbstractAgentModule.Running> tasks, PartnerRunningFlowContext context) { tasks.add(() -> { - ExtractorInput extractorInput = assemblyHelper.buildExtractorInput(context); - ExtractorResult extractorResult = actionExtractor.execute(extractorInput); + ExtractorResult extractorResult = actionExtractor.execute(context.getInput()); if (extractorResult.getTendencies().isEmpty()) { return null; } - EvaluatorInput evaluatorInput = assemblyHelper.buildEvaluatorInput(extractorResult, context.getSource()); + EvaluatorInput evaluatorInput = assemblyHelper.buildEvaluatorInput(extractorResult); List evaluatorResults = actionEvaluator.execute(evaluatorInput); // 并发操作均为访问 putActionData(evaluatorResults, context); updateTendencyCache(evaluatorResults, context.getInput(), extractorResult); @@ -306,25 +300,9 @@ public class ActionPlanner extends AbstractAgentModule.Running chatMessages = cognitionCapability.snapshotChatMessages(); - List recentMessages = new ArrayList<>(); - if (chatMessages.size() > 5) { - recentMessages.addAll(chatMessages.subList(chatMessages.size() - 5, chatMessages.size() - 1)); - } else if (chatMessages.size() > 1) { - recentMessages.addAll(chatMessages.subList(0, chatMessages.size() - 1)); - } - input.setRecentMessages(recentMessages); - return input; - } - - private EvaluatorInput buildEvaluatorInput(ExtractorResult extractorResult, String userId) { + private EvaluatorInput buildEvaluatorInput(ExtractorResult extractorResult) { EvaluatorInput input = new EvaluatorInput(); input.setTendencies(extractorResult.getTendencies()); - input.setRecentMessages(cognitionCapability.snapshotChatMessages()); - input.setActivatedSlices(memoryCapability.getActivatedSlices()); return input; } diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/evaluator/ActionEvaluator.java b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/evaluator/ActionEvaluator.java index 68eed331..6540f561 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/evaluator/ActionEvaluator.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/evaluator/ActionEvaluator.java @@ -10,6 +10,8 @@ import work.slhaf.partner.api.agent.factory.component.annotation.Init; import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor; import work.slhaf.partner.core.action.ActionCapability; +import work.slhaf.partner.core.cognition.CognitionCapability; +import work.slhaf.partner.core.cognition.ContextBlock; import work.slhaf.partner.core.memory.pojo.ActivatedMemorySlice; import work.slhaf.partner.module.modules.action.planner.evaluator.entity.EvaluatorBatchInput; import work.slhaf.partner.module.modules.action.planner.evaluator.entity.EvaluatorInput; @@ -22,8 +24,12 @@ import java.util.Map; import java.util.concurrent.Callable; public class ActionEvaluator extends AbstractAgentModule.Sub> implements ActivateModel { + @InjectCapability private ActionCapability actionCapability; + @InjectCapability + private CognitionCapability cognitionCapability; + private InteractionThreadPoolExecutor executor; @Init @@ -40,16 +46,20 @@ public class ActionEvaluator extends AbstractAgentModule.Sub execute(EvaluatorInput data) { List batchInputs = buildEvaluatorBatchInput(data); - List> tasks = getTasks(batchInputs); + List> tasks = buildEvaluateTasks(batchInputs); return executor.invokeAllAndReturn(tasks); } - private List> getTasks(List batchInputs) { + private List> buildEvaluateTasks(List batchInputs) { List> list = new ArrayList<>(); for (EvaluatorBatchInput batchInput : batchInputs) { list.add(() -> { + List messages = List.of( + cognitionCapability.contextWorkspace().resolve(List.of(ContextBlock.VisibleDomain.ACTION, ContextBlock.VisibleDomain.COGNITION, ContextBlock.VisibleDomain.MEMORY)).encodeToContextMessage(), + new Message(Message.Character.USER, buildPrompt(batchInput)) + ); EvaluatorResult evaluatorResult = formattedChat( - List.of(new Message(Message.Character.USER, buildPrompt(batchInput))), + messages, EvaluatorResult.class ); evaluatorResult.setTendency(batchInput.getTendency()); diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/ActionExtractor.java b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/ActionExtractor.java index d5be105a..fe801021 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/ActionExtractor.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/ActionExtractor.java @@ -1,32 +1,40 @@ package work.slhaf.partner.module.modules.action.planner.extractor; -import com.alibaba.fastjson2.JSONObject; +import org.jetbrains.annotations.NotNull; 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.abstracts.ActivateModel; import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.core.action.ActionCapability; -import work.slhaf.partner.module.modules.action.planner.extractor.entity.ExtractorInput; +import work.slhaf.partner.core.cognition.CognitionCapability; +import work.slhaf.partner.core.cognition.ContextBlock; import work.slhaf.partner.module.modules.action.planner.extractor.entity.ExtractorResult; import java.util.List; -public class ActionExtractor extends AbstractAgentModule.Sub implements ActivateModel { +public class ActionExtractor extends AbstractAgentModule.Sub implements ActivateModel { @InjectCapability private ActionCapability actionCapability; + @InjectCapability + private CognitionCapability cognitionCapability; @Override - public ExtractorResult execute(ExtractorInput data) { - ExtractorResult result = new ExtractorResult(); - List tendencyCache = actionCapability.selectTendencyCache(data.getInput()); + public ExtractorResult execute(String input) { + List tendencyCache = actionCapability.selectTendencyCache(input); if (tendencyCache != null && !tendencyCache.isEmpty()) { + ExtractorResult result = new ExtractorResult(); result.setTendencies(tendencyCache); return result; } for (int i = 0; i < 3; i++) { try { + + List messages = List.of( + cognitionCapability.contextWorkspace().resolve(List.of(ContextBlock.VisibleDomain.COGNITION)).encodeToContextMessage(), + new Message(Message.Character.USER, input) + ); return formattedChat( - List.of(new Message(Message.Character.USER, JSONObject.toJSONString(data))), + messages, ExtractorResult.class ); } catch (Exception e) { @@ -36,6 +44,7 @@ public class ActionExtractor extends AbstractAgentModule.Sub chatMessages = cognitionCapability.getChatMessages(); - appendRepeatedElements(document, root, "chat_message", List.of(chatMessages.subList(chatMessages.size() - 5, chatMessages.size() - 1))); + appendRepeatedElements(document, root, "chat_message", List.of(chatMessages.subList(chatMessages.size() - 7, chatMessages.size() - 1))); } }, Set.of(ContextBlock.VisibleDomain.COGNITION),