From 558b589830c9c25c031092ea98c94fc8ac7fed08 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Thu, 5 Feb 2026 15:48:58 +0800 Subject: [PATCH] refactor(ActionInterventor): redefine DTOs in ActionInterventor to adapt the actual intervention logic --- .../action/interventor/ActionInterventor.java | 3 +- .../evaluator/InterventionEvaluator.java | 40 ++++++++----------- .../evaluator/entity/EvaluatorInput.java | 3 +- .../recognizer/InterventionRecognizer.java | 19 +++------ .../recognizer/entity/RecognizerInput.java | 3 +- .../recognizer/entity/RecognizerResult.java | 5 +-- 6 files changed, 27 insertions(+), 46 deletions(-) diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/ActionInterventor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/ActionInterventor.java index e80fa592..549e1685 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/ActionInterventor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/ActionInterventor.java @@ -10,6 +10,7 @@ import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateM import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.core.action.ActionCore; import work.slhaf.partner.core.action.entity.ActionData; +import work.slhaf.partner.core.action.entity.PhaserRecord; import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.module.common.module.PreRunningModule; @@ -174,7 +175,7 @@ public class ActionInterventor extends PreRunningModule implements ActivateModel recognizerInput.setUserDialogMapStr(memoryCapability.getUserDialogMapStr(userId)); // 参考的对话列表大小或需调整 recognizerInput.setRecentMessages(cognationCapability.getChatMessages()); - recognizerInput.setExecutingActions(actionCapability.listPhaserRecords()); + recognizerInput.setExecutingActions(actionCapability.listPhaserRecords().stream().map(PhaserRecord::actionData).toList()); recognizerInput.setPreparedActions(actionCapability.listPreparedAction(userId)); return recognizerInput; } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/evaluator/InterventionEvaluator.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/evaluator/InterventionEvaluator.java index f0391293..f0675e9f 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/evaluator/InterventionEvaluator.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/evaluator/InterventionEvaluator.java @@ -11,7 +11,6 @@ import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.core.action.ActionCore.ExecutorType; import work.slhaf.partner.core.action.entity.ActionData; -import work.slhaf.partner.core.action.entity.PhaserRecord; import work.slhaf.partner.core.memory.pojo.EvaluatedSlice; import work.slhaf.partner.module.modules.action.interventor.evaluator.entity.EvaluatorInput; import work.slhaf.partner.module.modules.action.interventor.evaluator.entity.EvaluatorResult; @@ -37,7 +36,7 @@ public class InterventionEvaluator extends AgentRunningSubModule executingInterventions = input.getExecutingInterventions(); + Map executingInterventions = input.getExecutingInterventions(); Map preparedInterventions = input.getPreparedInterventions(); CountDownLatch latch = new CountDownLatch(executingInterventions.size() + preparedInterventions.size()); @@ -59,30 +58,23 @@ public class InterventionEvaluator extends AgentRunningSubModule void evaluateIntervention(List evaluatedDataList, Map interventionMap, EvaluatorInput input, ExecutorService executor, CountDownLatch latch) { - interventionMap.forEach((tendency, data) -> { - executor.execute(() -> { - try { - ActionData actionData = switch (data) { - case PhaserRecord record -> record.actionData(); - case ActionData tempData -> tempData; - default -> null; - }; - String prompt = buildPrompt(input.getRecentMessages(), input.getActivatedSlices(), actionData, tendency); + private void evaluateIntervention(List evaluatedDataList, Map interventionMap, EvaluatorInput input, ExecutorService executor, CountDownLatch latch) { + interventionMap.forEach((tendency, actionData) -> executor.execute(() -> { + try { + String prompt = buildPrompt(input.getRecentMessages(), input.getActivatedSlices(), actionData, tendency); - ChatResponse response = this.singleChat(prompt); - EvaluatedInterventionData evaluatedData = JSONObject.parseObject(response.getMessage(), - EvaluatedInterventionData.class); - synchronized (evaluatedDataList) { - evaluatedDataList.add(evaluatedData); - } - } catch (Exception e) { - log.error("干预意图评估出错: {}", tendency, e); - } finally { - latch.countDown(); + ChatResponse response = this.singleChat(prompt); + EvaluatedInterventionData evaluatedData = JSONObject.parseObject(response.getMessage(), + EvaluatedInterventionData.class); + synchronized (evaluatedDataList) { + evaluatedDataList.add(evaluatedData); } - }); - }); + } catch (Exception e) { + log.error("干预意图评估出错: {}", tendency, e); + } finally { + latch.countDown(); + } + })); } private String buildPrompt(List recentMessages, List activatedSlices, diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/evaluator/entity/EvaluatorInput.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/evaluator/entity/EvaluatorInput.java index ab3345dd..d25d8729 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/evaluator/entity/EvaluatorInput.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/evaluator/entity/EvaluatorInput.java @@ -3,7 +3,6 @@ package work.slhaf.partner.module.modules.action.interventor.evaluator.entity; import lombok.Data; import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.core.action.entity.ActionData; -import work.slhaf.partner.core.action.entity.PhaserRecord; import work.slhaf.partner.core.memory.pojo.EvaluatedSlice; import java.util.List; @@ -11,7 +10,7 @@ import java.util.Map; @Data public class EvaluatorInput { - private Map executingInterventions; + private Map executingInterventions; private Map preparedInterventions; private List activatedSlices; private List recentMessages; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/InterventionRecognizer.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/InterventionRecognizer.java index 2616da62..b809f35d 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/InterventionRecognizer.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/InterventionRecognizer.java @@ -10,7 +10,6 @@ import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.core.action.ActionCore; import work.slhaf.partner.core.action.entity.ActionData; -import work.slhaf.partner.core.action.entity.PhaserRecord; import work.slhaf.partner.module.modules.action.interventor.recognizer.entity.MetaRecognizerResult; import work.slhaf.partner.module.modules.action.interventor.recognizer.entity.RecognizerInput; import work.slhaf.partner.module.modules.action.interventor.recognizer.entity.RecognizerResult; @@ -31,13 +30,13 @@ public class InterventionRecognizer extends AgentRunningSubModule executingActions = input.getExecutingActions(); + List executingActions = input.getExecutingActions(); List preparedActions = input.getPreparedActions(); CountDownLatch countDownLatch = new CountDownLatch(executingActions.size() + preparedActions.size()); // 创建结果容器 RecognizerResult recognizerResult = new RecognizerResult(); - Map executingInterventions = recognizerResult.getExecutingInterventions(); + Map executingInterventions = recognizerResult.getExecutingInterventions(); Map preparedInterventions = recognizerResult.getPreparedInterventions(); // 执行识别操作 @@ -52,8 +51,8 @@ public class InterventionRecognizer extends AgentRunningSubModule void recognizeIntervention(Map interventionsMap, List actions, ExecutorService executor, RecognizerInput input, CountDownLatch latch) { - for (T data : actions) { + private void recognizeIntervention(Map interventionsMap, List actions, ExecutorService executor, RecognizerInput input, CountDownLatch latch) { + for (ActionData data : actions) { executor.execute(() -> { try { String prompt = buildPrompt(data, input); @@ -73,15 +72,7 @@ public class InterventionRecognizer extends AgentRunningSubModule String buildPrompt(T data, RecognizerInput input) { - ActionData actionData = switch (data) { - case PhaserRecord record -> record.actionData(); - case ActionData tempData -> tempData; - default -> null; - }; - if (actionData == null) { - return null; - } + private String buildPrompt(ActionData actionData, RecognizerInput input) { JSONObject json = new JSONObject(); JSONObject actionInfo = json.putObject("行动信息"); diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/entity/RecognizerInput.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/entity/RecognizerInput.java index 2677aad8..9deca7cf 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/entity/RecognizerInput.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/entity/RecognizerInput.java @@ -3,7 +3,6 @@ package work.slhaf.partner.module.modules.action.interventor.recognizer.entity; import lombok.Data; import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.core.action.entity.ActionData; -import work.slhaf.partner.core.action.entity.PhaserRecord; import java.util.List; @@ -18,6 +17,6 @@ public class RecognizerInput { /** * 正在执行的行动-Phaser记录列表,在Recognizer中结合本次输入并发评估(考虑到不同行动链之间对LLM的影响) */ - private List executingActions; + private List executingActions; private List preparedActions; } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/entity/RecognizerResult.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/entity/RecognizerResult.java index 202b3061..e05511ec 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/entity/RecognizerResult.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/interventor/recognizer/entity/RecognizerResult.java @@ -2,7 +2,6 @@ package work.slhaf.partner.module.modules.action.interventor.recognizer.entity; import lombok.Data; import work.slhaf.partner.core.action.entity.ActionData; -import work.slhaf.partner.core.action.entity.PhaserRecord; import java.util.HashMap; import java.util.Map; @@ -16,9 +15,9 @@ public class RecognizerResult { *

将被干预的‘执行中行动’

* key: 干预倾向 *
- * value: 干预倾向将作用的 phaser 记录 + * value: 干预倾向将作用的行动数据 */ - private Map executingInterventions = new HashMap<>(); + private Map executingInterventions = new HashMap<>(); /** *

将被干预的‘等待中行动’