refactor(ActionPlanner): support schedule or execute actions(or

confirmed actions) immediately
This commit is contained in:
2026-03-06 14:58:13 +08:00
parent 383a49b855
commit 036fd9e051

View File

@@ -16,6 +16,9 @@ import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.core.memory.MemoryCapability;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract; import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.action.dispatcher.executor.ActionExecutor;
import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.ActionExecutorInput;
import work.slhaf.partner.module.modules.action.dispatcher.scheduler.ActionScheduler;
import work.slhaf.partner.module.modules.action.planner.confirmer.ActionConfirmer; import work.slhaf.partner.module.modules.action.planner.confirmer.ActionConfirmer;
import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerInput; import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerInput;
import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerResult; import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerResult;
@@ -33,10 +36,12 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
/** /**
* 负责针对本次输入生成基础的行动计划,在主模型传达意愿后,执行行动或者放入计划池 * 负责针对本次输入生成基础的行动计划
*/ */
public class ActionPlanner extends PreRunningAbstractAgentModuleAbstract { public class ActionPlanner extends PreRunningAbstractAgentModuleAbstract {
private final ActionAssemblyHelper assemblyHelper = new ActionAssemblyHelper(); private final ActionAssemblyHelper assemblyHelper = new ActionAssemblyHelper();
@InjectCapability @InjectCapability
private CognationCapability cognationCapability; private CognationCapability cognationCapability;
@InjectCapability @InjectCapability
@@ -45,12 +50,18 @@ public class ActionPlanner extends PreRunningAbstractAgentModuleAbstract {
private PerceiveCapability perceiveCapability; private PerceiveCapability perceiveCapability;
@InjectCapability @InjectCapability
private MemoryCapability memoryCapability; private MemoryCapability memoryCapability;
@InjectModule @InjectModule
private ActionEvaluator actionEvaluator; private ActionEvaluator actionEvaluator;
@InjectModule @InjectModule
private ActionExtractor actionExtractor; private ActionExtractor actionExtractor;
@InjectModule @InjectModule
private ActionConfirmer actionConfirmer; private ActionConfirmer actionConfirmer;
@InjectModule
private ActionScheduler actionScheduler;
@InjectModule
private ActionExecutor actionExecutor;
private ExecutorService executor; private ExecutorService executor;
@Init @Init
@@ -136,9 +147,17 @@ public class ActionPlanner extends PreRunningAbstractAgentModuleAbstract {
} }
List<ExecutableAction> pendingActions = actionCapability.popPendingAction(context.getSource()); List<ExecutableAction> pendingActions = actionCapability.popPendingAction(context.getSource());
for (ExecutableAction executableAction : pendingActions) { for (ExecutableAction executableAction : pendingActions) {
// put action into ActionCore to record
if (uuids.contains(executableAction.getUuid())) { if (uuids.contains(executableAction.getUuid())) {
actionCapability.putAction(executableAction); actionCapability.putAction(executableAction);
} }
// execute or schedule it immediately
switch (executableAction) {
case SchedulableExecutableAction action -> actionScheduler.schedule(Set.of(action));
case ImmediateExecutableAction action ->
actionExecutor.execute(new ActionExecutorInput(Set.of(action)));
default -> log.error("unknown executable action type: {}", executableAction.getClass().getSimpleName());
}
} }
} }