From 6e37ed032be8d038419762e9ccd560e04d9a7035 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Sun, 29 Mar 2026 22:26:10 +0800 Subject: [PATCH] refactor(context): support skip modules by adding specific moduleName into runningFlowContext --- .../core/cognition/CognitionCapability.java | 2 +- .../partner/core/cognition/CognitionCore.java | 7 ++++++- .../module/action/planner/ActionPlanner.java | 18 ++++++++---------- .../component/ComponentRegisterFactory.kt | 7 ++++--- .../agent/runtime/interaction/AgentRuntime.kt | 3 +++ .../interaction/flow/RunningFlowContext.kt | 8 ++++++++ 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCapability.java b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCapability.java index d0776597..05da02f5 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCapability.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCapability.java @@ -9,7 +9,7 @@ import java.util.concurrent.locks.Lock; @Capability("cognition") public interface CognitionCapability { - String initiateTurn(String input, String target); + String initiateTurn(String input, String target, String... skippedModules); ContextWorkspace contextWorkspace(); diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCore.java b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCore.java index 60e46c3c..9ead2289 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCore.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCore.java @@ -46,9 +46,14 @@ public class CognitionCore extends PartnerCore { } @CapabilityMethod - public String initiateTurn(String input, String target) { + public String initiateTurn(String input, String target, String... skippedModules) { PartnerRunningFlowContext primaryContext = PartnerRunningFlowContext.Companion.fromSelf(input); primaryContext.setTarget(target); + if (skippedModules != null) { + for (String skippedModule : skippedModules) { + primaryContext.addSkippedModule(skippedModule); + } + } PartnerRunningFlowContext executedContext = AgentRuntime.INSTANCE.submit(primaryContext); return executedContext.getCoreResponse().getString("text"); } diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/ActionPlanner.java b/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/ActionPlanner.java index 99703f35..1d985036 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/ActionPlanner.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/ActionPlanner.java @@ -41,9 +41,6 @@ public class ActionPlanner extends AbstractAgentModule.Running tendencies, String datetime, String input) { - return new BlockContent(TENDENCIES_EVALUATING_BLOCK_NAME, BLOCK_SOURCE, BlockContent.Urgency.HIGH) { + return new BlockContent(TENDENCIES_EVALUATING_BLOCK_NAME, getModuleName(), BlockContent.Urgency.HIGH) { @Override protected void fillXml(@NotNull Document document, @NotNull Element root) { appendTextElement(document, root, "datetime", datetime); @@ -110,7 +108,7 @@ public class ActionPlanner extends AbstractAgentModule.Running tendencies, String datetime, String input) { - return new BlockContent(TENDENCIES_EVALUATING_BLOCK_NAME, BLOCK_SOURCE, BlockContent.Urgency.HIGH) { + return new BlockContent(TENDENCIES_EVALUATING_BLOCK_NAME, getModuleName(), BlockContent.Urgency.HIGH) { @Override protected void fillXml(@NotNull Document document, @NotNull Element root) { int size = tendencies.size(); @@ -124,7 +122,7 @@ public class ActionPlanner extends AbstractAgentModule.Running tendencies) { - return new CommunicationBlockContent(TENDENCIES_EVALUATING_BLOCK_NAME, BLOCK_SOURCE, BlockContent.Urgency.HIGH, CommunicationBlockContent.Projection.SUPPLY) { + return new CommunicationBlockContent(TENDENCIES_EVALUATING_BLOCK_NAME, getModuleName(), BlockContent.Urgency.HIGH, CommunicationBlockContent.Projection.SUPPLY) { @Override protected void fillXml(@NotNull Document document, @NotNull Element root) { appendRepeatedElements(document, root, "tendency", tendencies); @@ -139,7 +137,7 @@ public class ActionPlanner extends AbstractAgentModule.Running, module: AbstractAgentModule, modelConfigMap: Map, @@ -124,7 +125,7 @@ class ComponentRegisterFactory : AgentBaseFactory() { } private fun addAdditionalComponent( - agentContext: work.slhaf.partner.api.agent.factory.context.AgentContext, + agentContext: AgentContext, componentClass: Class<*>, componentInstance: Any ) { diff --git a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/AgentRuntime.kt b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/AgentRuntime.kt index 8f3021f2..568d0349 100644 --- a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/AgentRuntime.kt +++ b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/AgentRuntime.kt @@ -65,6 +65,9 @@ object AgentRuntime { coroutineScope { val jobs = modules.map { module -> async { + if (runningFlowContext.skippedModules.contains(module.instance.moduleName)) { + return@async + } module.instance.execute(runningFlowContext) } } diff --git a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/flow/RunningFlowContext.kt b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/flow/RunningFlowContext.kt index a2160337..6fdb7fe0 100644 --- a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/flow/RunningFlowContext.kt +++ b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/flow/RunningFlowContext.kt @@ -28,9 +28,17 @@ abstract class RunningFlowContext { val additionalUserInfo: Map get() = _additionalUserInfo + private val _skippedModules = mutableSetOf() + val skippedModules: Set + get() = _skippedModules + val status = Status() val info = Info() + fun addSkippedModule(moduleName: String) { + _skippedModules.add(moduleName) + } + fun putUserInfo(key: String, value: String) { _additionalUserInfo[key] = value }