mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
refactor(action-core): wrap runner submit flow with Result.runCatching and centralize action error handling
This commit is contained in:
@@ -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);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user