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 29b147f1..7297589a 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 @@ -228,6 +228,12 @@ public class ActionCore extends PartnerCore { metaAction.setParams(metaActionInfo.getParams()); metaAction.setType(metaActionInfo.getType()); metaAction.setIo(metaActionInfo.isIo()); + String[] split = actionKey.split("::"); + if (split.length < 2) { + throw new MetaActionNotFoundException("未找到对应的行动程序,原因: 传入的 actionKey(" + actionKey + ") 存在异常"); + } + metaAction.setLocation(split[0]); + metaAction.setName(split[1]); return metaAction; } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/MetaAction.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/MetaAction.java index f0ddda65..515737b0 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/MetaAction.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/MetaAction.java @@ -2,11 +2,8 @@ package work.slhaf.partner.core.action.entity; import lombok.Data; -import java.nio.file.Path; import java.util.Map; -import static work.slhaf.partner.common.Constant.Path.ACTION_PROGRAM; - /** * 行动链中的单一元素,封装了调用外部行动程序的必要信息与结果容器,可被{@link work.slhaf.partner.core.action.ActionCapability}执行 */ @@ -14,9 +11,9 @@ import static work.slhaf.partner.common.Constant.Path.ACTION_PROGRAM; public class MetaAction { /** - * 行动key,用于标识与定位行动程序 + * 行动name,用于标识行动程序 */ - private String key; + private String name; /** * 行动程序可接受的参数,由调用处设置 */ @@ -34,13 +31,19 @@ public class MetaAction { */ private MetaActionType type; - private Path path; + /** + * 当类型为 MCP 时,该字段对应相应 MCP Client 注册时生成的 id; + * 当类型为 ORIGIN 时,该字段对应相应的磁盘路径字符串 + */ + private String location; - public void resetPath() { - path = switch (type) { - case ORIGIN -> path; - case MCP -> Path.of(ACTION_PROGRAM, key, "action.json"); - }; + /** + * actionKey 将由 location+name 共同定位 + * + * @return actionKey + */ + public String getKey() { + return location + "::" + name; } @Data diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java index 725da9a1..66bd93d8 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java @@ -57,7 +57,7 @@ public class LocalRunnerClient extends RunnerClient { private RunnerResponse doRunWithOrigin(MetaAction metaAction) { RunnerResponse response = new RunnerResponse(); - File file = metaAction.getPath().toFile(); + File file = new File(metaAction.getLocation()); String ext = FileUtil.getSuffix(file); if (ext == null || ext.isEmpty()) { response.setOk(false); @@ -98,13 +98,13 @@ public class LocalRunnerClient extends RunnerClient { } @Override - public Path buildTmpPath(MetaAction tempAction, String codeType) { - return Path.of(TMP_ACTION_DIR_LOCAL, System.currentTimeMillis() + "-" + tempAction.getKey() + codeType); + public String buildTmpPath(MetaAction tempAction, String codeType) { + return Path.of(TMP_ACTION_DIR_LOCAL, System.currentTimeMillis() + "-" + tempAction.getKey() + codeType).toString(); } @Override public void tmpSerialize(MetaAction tempAction, String code, String codeType) throws IOException { - Path path = tempAction.getPath(); + Path path = Path.of(tempAction.getLocation()); File file = path.toFile(); file.createNewFile(); Files.writeString(path, code); 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 79661bfa..65382ba1 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 @@ -27,7 +27,6 @@ import work.slhaf.partner.core.action.entity.MetaAction.ResultStatus; import work.slhaf.partner.core.action.entity.MetaActionInfo; import java.io.IOException; -import java.nio.file.Path; import java.time.Duration; import java.util.HashMap; import java.util.List; @@ -152,7 +151,7 @@ public abstract class RunnerClient { protected abstract RunnerResponse doRun(MetaAction metaAction); - public abstract Path buildTmpPath(MetaAction tempAction, String codeType); + public abstract String buildTmpPath(MetaAction tempAction, String codeType); public abstract void tmpSerialize(MetaAction tempAction, String code, String codeType) throws IOException; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/SandboxRunnerClient.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/SandboxRunnerClient.java index 86bdd6b5..de1e7715 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/SandboxRunnerClient.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/SandboxRunnerClient.java @@ -1,13 +1,11 @@ package work.slhaf.partner.core.action.runner; import com.alibaba.fastjson2.JSONObject; - import work.slhaf.partner.core.action.entity.McpData; import work.slhaf.partner.core.action.entity.MetaAction; import work.slhaf.partner.core.action.entity.MetaActionInfo; import java.io.IOException; -import java.nio.file.Path; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -42,7 +40,7 @@ public class SandboxRunnerClient extends RunnerClient { } @Override - public Path buildTmpPath(MetaAction tempAction, String codeType) { + public String buildTmpPath(MetaAction tempAction, String codeType) { throw new UnsupportedOperationException("Unimplemented method 'buildTmpPath'"); } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/DynamicActionGenerator.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/DynamicActionGenerator.java index c7e1d72f..45ac8e90 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/DynamicActionGenerator.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/DynamicActionGenerator.java @@ -48,7 +48,7 @@ public class DynamicActionGenerator extends AgentRunningSubModule params; private String description; private Map paramsDescription; diff --git a/Partner-Main/src/test/java/work/slhaf/partner/core/action/runner/LocalRunnerClientTest.java b/Partner-Main/src/test/java/work/slhaf/partner/core/action/runner/LocalRunnerClientTest.java index 903fda79..ddf76f54 100644 --- a/Partner-Main/src/test/java/work/slhaf/partner/core/action/runner/LocalRunnerClientTest.java +++ b/Partner-Main/src/test/java/work/slhaf/partner/core/action/runner/LocalRunnerClientTest.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test; import work.slhaf.partner.core.action.entity.MetaAction; import work.slhaf.partner.core.action.entity.MetaActionType; -import java.nio.file.Path; import java.util.Map; import java.util.concurrent.Executors; @@ -30,10 +29,10 @@ public class LocalRunnerClientTest { private static @NotNull MetaAction buildTmpMetaAction() { MetaAction metaAction = new MetaAction(); metaAction.setIo(false); - metaAction.setKey("hello_world"); + metaAction.setName("hello_world"); metaAction.setParams(Map.of("name", "origin_run")); metaAction.setType(MetaActionType.ORIGIN); - metaAction.setPath(Path.of("/home/slhaf/Projects/IdeaProjects/Projects/Partner/Partner-Main/src/test/java/resources/action/tmp/hello_world.py")); + metaAction.setLocation("/home/slhaf/Projects/IdeaProjects/Projects/Partner/Partner-Main/src/test/java/resources/action/tmp/hello_world.py"); return metaAction; } } diff --git a/Partner-Main/src/test/java/work/slhaf/partner/core/action/runner/RunnerClientTest.java b/Partner-Main/src/test/java/work/slhaf/partner/core/action/runner/RunnerClientTest.java index 6f463270..56400410 100644 --- a/Partner-Main/src/test/java/work/slhaf/partner/core/action/runner/RunnerClientTest.java +++ b/Partner-Main/src/test/java/work/slhaf/partner/core/action/runner/RunnerClientTest.java @@ -13,7 +13,6 @@ import work.slhaf.partner.core.action.entity.MetaAction; import work.slhaf.partner.core.action.entity.MetaActionInfo; import java.io.IOException; -import java.nio.file.Path; import java.util.List; import java.util.Map; import java.util.concurrent.Executors; @@ -86,7 +85,7 @@ public class RunnerClientTest { } @Override - public Path buildTmpPath(MetaAction tempAction, String codeType) { + public String buildTmpPath(MetaAction tempAction, String codeType) { return null; }