From 225802c1a8ebeab2bae85d543fc2e24af210b8b0 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Fri, 19 Dec 2025 20:41:07 +0800 Subject: [PATCH] refactor(MetaActionInfo): remove key attribute and update related logic Context: MetaActionInfo was previously located via its own key attribute. This is now redundant, as ActionCore already uses the key of existedMetaActions as the single source of truth. --- .../partner/core/action/ActionCapability.java | 3 ++- .../slhaf/partner/core/action/ActionCore.java | 20 +++++++++---------- .../core/action/entity/MetaActionInfo.java | 1 - .../core/action/runner/RunnerClient.java | 2 +- .../planner/evaluator/ActionEvaluator.java | 5 +---- 5 files changed, 14 insertions(+), 17 deletions(-) diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCapability.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCapability.java index 27b55d4c..743baea0 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCapability.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCapability.java @@ -10,6 +10,7 @@ import work.slhaf.partner.core.action.entity.cache.CacheAdjustData; import work.slhaf.partner.core.action.runner.SandboxRunnerClient; import java.util.List; +import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Phaser; @@ -43,7 +44,7 @@ public interface ActionCapability { MetaActionInfo loadMetaActionInfo(@NonNull String actionKey); - List listAvailableActions(); + Map listAvailableActions(); boolean checkExists(String... actionKeys); diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCore.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCore.java index 5373b147..29b147f1 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCore.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCore.java @@ -1,6 +1,5 @@ package work.slhaf.partner.core.action; -import cn.hutool.core.bean.BeanUtil; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityCore; @@ -183,8 +182,8 @@ public class ActionCore extends PartnerCore { } @CapabilityMethod - public List listAvailableActions() { - return existedMetaActions.values().stream().toList(); + public Map listAvailableActions() { + return existedMetaActions; } @CapabilityMethod @@ -221,14 +220,15 @@ public class ActionCore extends PartnerCore { @CapabilityMethod public MetaAction loadMetaAction(@NonNull String actionKey) { - for (MetaActionInfo actionInfo : existedMetaActions.values()) { - if (actionInfo.getKey().equals(actionKey)) { - MetaAction metaAction = new MetaAction(); - BeanUtil.copyProperties(actionInfo, metaAction); - return metaAction; - } + MetaActionInfo metaActionInfo = existedMetaActions.get(actionKey); + if (metaActionInfo == null) { + throw new MetaActionNotFoundException("未找到对应的行动程序信息" + actionKey); } - throw new MetaActionNotFoundException("未找到对应的行动程序信息" + actionKey); + MetaAction metaAction = new MetaAction(); + metaAction.setParams(metaActionInfo.getParams()); + metaAction.setType(metaActionInfo.getType()); + metaAction.setIo(metaActionInfo.isIo()); + return metaAction; } @CapabilityMethod diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/MetaActionInfo.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/MetaActionInfo.java index bd8dbc6c..5f957b24 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/MetaActionInfo.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/MetaActionInfo.java @@ -8,7 +8,6 @@ import java.util.Map; @Data public class MetaActionInfo { - private String key; private boolean io; private MetaActionType type; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java index 4ac0f326..79661bfa 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java @@ -103,7 +103,7 @@ public abstract class RunnerClient { // 忽略非文本类型,行动描述信息只会以文本形式存在 if (resourceContent instanceof McpSchema.TextResourceContents content) { MetaActionInfo metaActionInfo = JSONObject.parseObject(content.text(), MetaActionInfo.class); - existedMetaActions.put(id + "::" + metaActionInfo.getKey(), metaActionInfo); + existedMetaActions.put(id + "::" + resource.name(), metaActionInfo); } } } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/evaluator/ActionEvaluator.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/evaluator/ActionEvaluator.java index 0ca828aa..323ef5b8 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/evaluator/ActionEvaluator.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/evaluator/ActionEvaluator.java @@ -11,7 +11,6 @@ import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunn import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor; import work.slhaf.partner.core.action.ActionCapability; -import work.slhaf.partner.core.action.entity.MetaActionInfo; import work.slhaf.partner.core.memory.pojo.EvaluatedSlice; import work.slhaf.partner.module.modules.action.planner.evaluator.entity.EvaluatorBatchInput; import work.slhaf.partner.module.modules.action.planner.evaluator.entity.EvaluatorInput; @@ -69,9 +68,7 @@ public class ActionEvaluator extends AgentRunningSubModule availableActions = new HashMap<>(); - for (MetaActionInfo metaActionInfo : actionCapability.listAvailableActions()) { - availableActions.put(metaActionInfo.getKey(), metaActionInfo.getDescription()); - } + actionCapability.listAvailableActions().forEach((key, info) -> availableActions.put(key, info.getDescription())); temp.setAvailableActions(availableActions); list.add(temp); }