refactor(action): adjust pending action block content and make full-expanded block as SUPPLY block

This commit is contained in:
2026-03-29 22:07:29 +08:00
parent 71956b4dce
commit b6c86c6640

View File

@@ -85,8 +85,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
} }
private void appendTendencyBlock(List<String> tendencies, String input) { private void appendTendencyBlock(List<String> tendencies, String input) {
input = input.trim(); input = trimInput(input);
input = input.length() <= 100 ? input : input.substring(0, 100);
String datetime = ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String datetime = ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
cognitionCapability.contextWorkspace().register(new ContextBlock( cognitionCapability.contextWorkspace().register(new ContextBlock(
buildTendenciesEvaluatingFullBlock(tendencies), buildTendenciesEvaluatingFullBlock(tendencies),
@@ -137,7 +136,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
executor.execute(() -> { executor.execute(() -> {
EvaluatorInput evaluatorInput = assemblyHelper.buildEvaluatorInput(extractorResult); EvaluatorInput evaluatorInput = assemblyHelper.buildEvaluatorInput(extractorResult);
List<EvaluatorResult> evaluatorResults = actionEvaluator.execute(evaluatorInput); // 并发操作均为访问 List<EvaluatorResult> evaluatorResults = actionEvaluator.execute(evaluatorInput); // 并发操作均为访问
handleEvaluatorResults(evaluatorResults, source); handleEvaluatorResults(evaluatorResults, source, input);
updateTendencyCache(evaluatorResults, input, extractorResult); updateTendencyCache(evaluatorResults, input, extractorResult);
cognitionCapability.contextWorkspace().expire(TENDENCIES_EVALUATING_BLOCK_NAME, BLOCK_SOURCE); cognitionCapability.contextWorkspace().expire(TENDENCIES_EVALUATING_BLOCK_NAME, BLOCK_SOURCE);
@@ -165,7 +164,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
}); });
} }
private void handleEvaluatorResults(List<EvaluatorResult> evaluatorResults, String source) { private void handleEvaluatorResults(List<EvaluatorResult> evaluatorResults, String source, String input) {
for (EvaluatorResult evaluatorResult : evaluatorResults) { for (EvaluatorResult evaluatorResult : evaluatorResults) {
expireResolvedPending(evaluatorResult); expireResolvedPending(evaluatorResult);
if (!evaluatorResult.isOk()) { if (!evaluatorResult.isOk()) {
@@ -173,7 +172,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
} }
ExecutableAction executableAction = assemblyHelper.buildActionData(evaluatorResult, source); ExecutableAction executableAction = assemblyHelper.buildActionData(evaluatorResult, source);
if (evaluatorResult.isNeedConfirm()) { if (evaluatorResult.isNeedConfirm()) {
registerPendingContextBlock(executableAction, evaluatorResult); registerPendingContextBlock(executableAction, evaluatorResult, input);
continue; continue;
} }
executeOrSchedule(executableAction); executeOrSchedule(executableAction);
@@ -194,12 +193,13 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
); );
} }
private void registerPendingContextBlock(ExecutableAction executableAction, EvaluatorResult evaluatorResult) { private void registerPendingContextBlock(ExecutableAction executableAction, EvaluatorResult evaluatorResult, String input) {
String blockName = buildPendingBlockName(executableAction); String blockName = buildPendingBlockName(executableAction);
input = trimInput(input);
ContextBlock block = new ContextBlock( ContextBlock block = new ContextBlock(
buildPendingBlock(blockName, executableAction, evaluatorResult), buildPendingBlock(blockName, executableAction, evaluatorResult),
buildPendingCompactBlock(blockName, executableAction, evaluatorResult), buildPendingCompactBlock(blockName, executableAction, evaluatorResult, input),
buildPendingAbstractBlock(blockName, executableAction, evaluatorResult), buildPendingAbstractBlock(blockName, executableAction, evaluatorResult, input),
Set.of(ContextBlock.VisibleDomain.ACTION), Set.of(ContextBlock.VisibleDomain.ACTION),
PENDING_REPLACE_FADE_FACTOR, PENDING_REPLACE_FADE_FACTOR,
PENDING_TIME_FADE_FACTOR, PENDING_TIME_FADE_FACTOR,
@@ -213,7 +213,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
} }
private BlockContent buildPendingBlock(String blockName, ExecutableAction executableAction, EvaluatorResult evaluatorResult) { private BlockContent buildPendingBlock(String blockName, ExecutableAction executableAction, EvaluatorResult evaluatorResult) {
return new BlockContent(blockName, BLOCK_SOURCE, BlockContent.Urgency.HIGH) { return new CommunicationBlockContent(blockName, BLOCK_SOURCE, BlockContent.Urgency.HIGH, CommunicationBlockContent.Projection.SUPPLY) {
@Override @Override
protected void fillXml(@NotNull Document document, @NotNull Element root) { protected void fillXml(@NotNull Document document, @NotNull Element root) {
appendTextElement(document, root, "state", "waiting_confirm"); appendTextElement(document, root, "state", "waiting_confirm");
@@ -252,11 +252,12 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
}; };
} }
private BlockContent buildPendingCompactBlock(String blockName, ExecutableAction executableAction, EvaluatorResult evaluatorResult) { private BlockContent buildPendingCompactBlock(String blockName, ExecutableAction executableAction, EvaluatorResult evaluatorResult, String input) {
return new BlockContent(blockName, BLOCK_SOURCE, BlockContent.Urgency.HIGH) { return new BlockContent(blockName, BLOCK_SOURCE, BlockContent.Urgency.HIGH) {
@Override @Override
protected void fillXml(@NotNull Document document, @NotNull Element root) { protected void fillXml(@NotNull Document document, @NotNull Element root) {
appendTextElement(document, root, "state", "waiting_confirm"); appendTextElement(document, root, "state", "waiting_confirm");
appendTextElement(document, root, "related_input", input);
appendTextElement(document, root, "tendency", executableAction.getTendency()); appendTextElement(document, root, "tendency", executableAction.getTendency());
appendTextElement(document, root, "description", executableAction.getDescription()); appendTextElement(document, root, "description", executableAction.getDescription());
appendTextElement(document, root, "action_type", evaluatorResult.getType()); appendTextElement(document, root, "action_type", evaluatorResult.getType());
@@ -264,10 +265,12 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
}; };
} }
private BlockContent buildPendingAbstractBlock(String blockName, ExecutableAction executableAction, EvaluatorResult evaluatorResult) { private BlockContent buildPendingAbstractBlock(String blockName, ExecutableAction executableAction, EvaluatorResult evaluatorResult, String input) {
return new BlockContent(blockName, BLOCK_SOURCE, BlockContent.Urgency.HIGH) { return new BlockContent(blockName, BLOCK_SOURCE, BlockContent.Urgency.HIGH) {
@Override @Override
protected void fillXml(@NotNull Document document, @NotNull Element root) { protected void fillXml(@NotNull Document document, @NotNull Element root) {
appendTextElement(document, root, "state", "waiting_confirm");
appendTextElement(document, root, "related_input", input);
appendTextElement(document, root, "pending_tendency", executableAction.getTendency()); appendTextElement(document, root, "pending_tendency", executableAction.getTendency());
appendTextElement(document, root, "summary", "exists pending action waiting for confirmation"); appendTextElement(document, root, "summary", "exists pending action waiting for confirmation");
appendTextElement(document, root, "action_type", evaluatorResult.getType()); appendTextElement(document, root, "action_type", evaluatorResult.getType());
@@ -336,6 +339,12 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
return 2; return 2;
} }
private String trimInput(@NotNull String input) {
input = input.trim();
input = input.length() <= 100 ? input : input.substring(0, 100);
return input;
}
private final class ActionAssemblyHelper { private final class ActionAssemblyHelper {
private ActionAssemblyHelper() { private ActionAssemblyHelper() {
} }