From 97556727500c0ec3c143f35c8703c986c67e0240 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Sun, 12 Apr 2026 18:51:33 +0800 Subject: [PATCH] refactor(action-core): wrap runner submit flow with Result.runCatching and centralize action error handling --- .../core/action/runner/LocalRunnerClient.java | 20 ++++++------------ .../core/action/runner/RunnerClient.java | 21 ++++++++++++------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java b/Partner-Core/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java index b194c686..6c6586fb 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java @@ -23,7 +23,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicBoolean; @Slf4j -public class LocalRunnerClient extends RunnerClient implements AutoCloseable { +public class LocalRunnerClient extends RunnerClient { public static final String MCP_NAME_DESC = "mcp-desc"; public static final String MCP_NAME_DYNAMIC = "mcp-dynamic"; @@ -139,20 +139,12 @@ public class LocalRunnerClient extends RunnerClient implements AutoCloseable { @Override protected RunnerResponse doRun(MetaAction metaAction) { - log.debug("执行行动: {}", metaAction); RunnerResponse response; - try { - response = switch (metaAction.getType()) { - case MCP -> mcpActionExecutor.run(metaAction); - case ORIGIN -> originExecutionService.run(metaAction); - case BUILTIN -> doRunWithBuiltin(metaAction); - }; - } catch (Exception e) { - response = new RunnerResponse(); - response.setOk(false); - response.setData(e.getLocalizedMessage()); - } - log.debug("行动执行结果: {}", response); + response = switch (metaAction.getType()) { + case MCP -> mcpActionExecutor.run(metaAction); + case ORIGIN -> originExecutionService.run(metaAction); + case BUILTIN -> doRunWithBuiltin(metaAction); + }; return response; } diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java b/Partner-Core/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java index 931d2d37..db621b5b 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java @@ -60,14 +60,24 @@ public abstract class RunnerClient implements AutoCloseable { * 执行行动程序 */ public void submit(MetaAction metaAction) { + log.debug("执行行动: {}", metaAction); // 获取已存在行动列表 Result result = metaAction.getResult(); if (!result.getStatus().equals(Result.Status.WAITING)) { return; } - RunnerResponse response = doRun(metaAction); + RunnerResponse response = work.slhaf.partner.framework.agent.support.Result.runCatching(() -> doRun(metaAction)).fold( + runnerResponse -> runnerResponse, + ex -> { + RunnerResponse r = new RunnerResponse(); + r.setOk(false); + r.setData(ex.getLocalizedMessage()); + return r; + } + ); result.setData(response.getData()); result.setStatus(response.isOk() ? Result.Status.SUCCESS : Result.Status.FAILED); + log.debug("行动执行结果: {}", response); } protected abstract RunnerResponse doRun(MetaAction metaAction); @@ -85,13 +95,8 @@ public abstract class RunnerClient implements AutoCloseable { response.setData("BuiltinActionRegistry 未初始化"); return response; } - try { - response.setData(builtinActionRegistry.call(metaAction.getKey(), metaAction.getParams())); - response.setOk(true); - } catch (Exception e) { - response.setOk(false); - response.setData(e.getLocalizedMessage()); - } + response.setData(builtinActionRegistry.call(metaAction.getKey(), metaAction.getParams())); + response.setOk(true); return response; }