From 0b750f802885776035c25d4ddf6b1f40df0bf0be Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Sun, 29 Mar 2026 22:58:55 +0800 Subject: [PATCH] refactor(action): support initiate turn after evaluation --- .../module/action/planner/ActionPlanner.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/ActionPlanner.java b/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/ActionPlanner.java index 1d985036..080f5fb6 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/ActionPlanner.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/ActionPlanner.java @@ -163,18 +163,35 @@ public class ActionPlanner extends AbstractAgentModule.Running evaluatorResults, String source, String input) { + List passedActions = new ArrayList<>(); + int approvedExecutableCount = 0; + int pendingConfirmCount = 0; for (EvaluatorResult evaluatorResult : evaluatorResults) { expireResolvedPending(evaluatorResult); if (!evaluatorResult.isOk()) { continue; } ExecutableAction executableAction = assemblyHelper.buildActionData(evaluatorResult, source); + passedActions.add(executableAction); if (evaluatorResult.isNeedConfirm()) { registerPendingContextBlock(executableAction, evaluatorResult, input); + pendingConfirmCount++; continue; } executeOrSchedule(executableAction); + approvedExecutableCount++; } + if (passedActions.isEmpty()) { + return; + } + createTurn(approvedExecutableCount, pendingConfirmCount, source, input); + } + + private void createTurn(int approvedExecutableCount, int pendingConfirmCount, String source, String input) { + String turnInput = approvedExecutableCount + " actions are approved for execution, " + + pendingConfirmCount + " actions are waiting for confirmation, " + + "according to input: " + trimInput(input) + ". For more information, please refer to the context content or other tags in this input block."; + cognitionCapability.initiateTurn(turnInput, source, getModuleName()); } private void expireResolvedPending(EvaluatorResult evaluatorResult) {