refactor(ActionExecutor): correct input actions' type in ActionExecutor

This commit is contained in:
2026-02-06 23:38:13 +08:00
parent 08100aea8a
commit 050c39cbc7
4 changed files with 26 additions and 29 deletions

View File

@@ -16,8 +16,8 @@ import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.Actio
import work.slhaf.partner.module.modules.action.dispatcher.scheduler.ActionScheduler; import work.slhaf.partner.module.modules.action.dispatcher.scheduler.ActionScheduler;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
import java.util.ArrayList; import java.util.HashSet;
import java.util.List; import java.util.Set;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
@AgentModule(name = "action_dispatcher", order = 7) @AgentModule(name = "action_dispatcher", order = 7)
@@ -32,7 +32,6 @@ public class ActionDispatcher extends PostRunningModule {
private ActionScheduler actionScheduler; private ActionScheduler actionScheduler;
private ExecutorService executor; private ExecutorService executor;
private final AssemblyHelper assemblyHelper = new AssemblyHelper();
@Init @Init
public void init() { public void init() {
@@ -49,8 +48,8 @@ public class ActionDispatcher extends PostRunningModule {
String userId = context.getUserId(); String userId = context.getUserId();
val preparedActions = actionCapability.listActions(ActionData.ActionStatus.PREPARE, userId); val preparedActions = actionCapability.listActions(ActionData.ActionStatus.PREPARE, userId);
// 分类成PLANNING和IMMEDIATE两类 // 分类成PLANNING和IMMEDIATE两类
List<ScheduledActionData> scheduledActions = new ArrayList<>(); Set<ScheduledActionData> scheduledActions = new HashSet<>();
List<ImmediateActionData> immediateActions = new ArrayList<>(); Set<ImmediateActionData> immediateActions = new HashSet<>();
for (ActionData preparedAction : preparedActions) { for (ActionData preparedAction : preparedActions) {
if (preparedAction instanceof ScheduledActionData actionInfo) { if (preparedAction instanceof ScheduledActionData actionInfo) {
scheduledActions.add(actionInfo); scheduledActions.add(actionInfo);
@@ -58,7 +57,11 @@ public class ActionDispatcher extends PostRunningModule {
immediateActions.add(actionInfo); immediateActions.add(actionInfo);
} }
} }
actionExecutor.execute(assemblyHelper.buildExecutorInput(immediateActions, userId)); val actionExecutorInput = ActionExecutorInput.builder()
.userId(userId)
.actions(immediateActions)
.build();
actionExecutor.execute(actionExecutorInput);
actionScheduler.execute(scheduledActions); actionScheduler.execute(scheduledActions);
}); });
} }
@@ -68,15 +71,4 @@ public class ActionDispatcher extends PostRunningModule {
return false; return false;
} }
@SuppressWarnings("InnerClassMayBeStatic")
private class AssemblyHelper {
public ActionExecutorInput buildExecutorInput(List<ImmediateActionData> immediateActions, String userId) {
ActionExecutorInput input = new ActionExecutorInput();
input.setImmediateActions(immediateActions);
input.setUserId(userId);
return input;
}
}
} }

View File

@@ -9,8 +9,11 @@ import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule; import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.core.action.ActionCapability;
import work.slhaf.partner.core.action.ActionCore; import work.slhaf.partner.core.action.ActionCore;
import work.slhaf.partner.core.action.entity.*; import work.slhaf.partner.core.action.entity.ActionData;
import work.slhaf.partner.core.action.entity.ActionData.ActionStatus; import work.slhaf.partner.core.action.entity.ActionData.ActionStatus;
import work.slhaf.partner.core.action.entity.MetaAction;
import work.slhaf.partner.core.action.entity.MetaActionInfo;
import work.slhaf.partner.core.action.entity.PhaserRecord;
import work.slhaf.partner.core.action.runner.RunnerClient; import work.slhaf.partner.core.action.runner.RunnerClient;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.core.memory.MemoryCapability;
@@ -63,10 +66,10 @@ public class ActionExecutor extends AgentRunningSubModule<ActionExecutorInput, V
*/ */
@Override @Override
public Void execute(ActionExecutorInput input) { public Void execute(ActionExecutorInput input) {
val immediateActions = input.getImmediateActions(); val immediateActions = input.getActions();
val userId = input.getUserId(); val userId = input.getUserId();
// 异步执行所有行动 // 异步执行所有行动
for (ImmediateActionData actionData : immediateActions) { for (ActionData actionData : immediateActions) {
platformExecutor.execute(() -> { platformExecutor.execute(() -> {
if (actionData.getStatus() != ActionData.ActionStatus.PREPARE) { if (actionData.getStatus() != ActionData.ActionStatus.PREPARE) {
return; return;
@@ -298,7 +301,7 @@ public class ActionExecutor extends AgentRunningSubModule<ActionExecutorInput, V
return input; return input;
} }
private CorrectorInput buildCorrectorInput(ImmediateActionData actionData, String userId) { private CorrectorInput buildCorrectorInput(ActionData actionData, String userId) {
return CorrectorInput.builder() return CorrectorInput.builder()
.tendency(actionData.getTendency()) .tendency(actionData.getTendency())
.source(actionData.getSource()) .source(actionData.getSource())

View File

@@ -1,18 +1,20 @@
package work.slhaf.partner.module.modules.action.dispatcher.executor.entity; package work.slhaf.partner.module.modules.action.dispatcher.executor.entity;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import work.slhaf.partner.core.action.entity.ImmediateActionData; import work.slhaf.partner.core.action.entity.ActionData;
import java.util.List; import java.util.Set;
@Data @Data
@Builder
public class ActionExecutorInput { public class ActionExecutorInput {
/** /**
* 用户ID * 用户ID
*/ */
private String userId; private String userId;
/** /**
* 即时行动数据列表 * 将执行的行动数据列表
*/ */
private List<ImmediateActionData> immediateActions; private Set<? extends ActionData> actions;
} }

View File

@@ -369,10 +369,10 @@ class ActionExecutorTest {
} }
private ActionExecutorInput buildInput(String userId, ImmediateActionData actionData) { private ActionExecutorInput buildInput(String userId, ImmediateActionData actionData) {
ActionExecutorInput input = new ActionExecutorInput(); return ActionExecutorInput.builder()
input.setUserId(userId); .userId(userId)
input.setImmediateActions(List.of(actionData)); .actions(Set.of(actionData))
return input; .build();
} }
private ImmediateActionData buildActionData(Map<Integer, List<MetaAction>> actionChain) { private ImmediateActionData buildActionData(Map<Integer, List<MetaAction>> actionChain) {