From ec429db4dad6a3f0ae25550aed1c8f97b98a3c26 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Sun, 8 Mar 2026 13:31:53 +0800 Subject: [PATCH] refactor(Core): normalize preprocess user resolution from source/additional info, add Kotlin-safe AgentConfigLoader getters, and update async summary writes by index --- .../core/action/entity/PhaserRecord.java | 2 +- .../updater/summarizer/SingleSummarizer.java | 7 ++-- .../modules/process/PreprocessExecutor.java | 32 +++++++++++++------ .../runtime/config/AgentConfigLoader.java | 9 ++++++ 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/action/entity/PhaserRecord.java b/Partner-Core/src/main/java/work/slhaf/partner/core/action/entity/PhaserRecord.java index 6d12f058..6b2bcc8c 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/action/entity/PhaserRecord.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/action/entity/PhaserRecord.java @@ -1,6 +1,6 @@ package work.slhaf.partner.core.action.entity; -import work.slhaf.partner.core.action.entity.ExecutableAction.Status; +import work.slhaf.partner.core.action.entity.Action.Status; import java.util.concurrent.Phaser; diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/SingleSummarizer.java b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/SingleSummarizer.java index 3a479580..446182cf 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/SingleSummarizer.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/SingleSummarizer.java @@ -32,14 +32,17 @@ public class SingleSummarizer extends AbstractAgentModule.Sub, Voi log.debug("[MemorySummarizer] 长文本摘要开始..."); List> tasks = new ArrayList<>(); AtomicInteger counter = new AtomicInteger(); - for (Message chatMessage : chatMessages) { + for (int i = 0; i < chatMessages.size(); i++) { + Message chatMessage = chatMessages.get(i); if (chatMessage.getRole().equals(ChatConstant.Character.ASSISTANT)) { String content = chatMessage.getContent(); if (chatMessage.getContent().length() > 500) { + int index = i; tasks.add(() -> { int thisCount = counter.incrementAndGet(); log.debug("[MemorySummarizer] 长文本摘要[{}]启动", thisCount); - chatMessage.setContent(singleExecute(JSONObject.of("content", content).toString())); + String summarized = singleExecute(JSONObject.of("content", content).toString()); + chatMessages.set(index, new Message(chatMessage.getRole(), summarized)); log.debug("[MemorySummarizer] 长文本摘要[{}]完成", thisCount); return null; }); diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java index f072846f..4beab4c3 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java @@ -18,6 +18,9 @@ import java.util.Map; @EqualsAndHashCode(callSuper = true) @Data public class PreprocessExecutor extends PreRunningAbstractAgentModuleAbstract { + private static final String INFO_PLATFORM = "platform"; + private static final String INFO_NICKNAME = "nickname"; + @InjectCapability private CognationCapability cognationCapability; @InjectCapability @@ -38,19 +41,28 @@ public class PreprocessExecutor extends PreRunningAbstractAgentModuleAbstract { private void getInteractionContext(PartnerRunningFlowContext context) { log.debug("[PreprocessExecutor] 预处理原始输入: {}", context); - User user = perceiveCapability.getUser(context.getUserInfo(), context.getPlatform()); + String platform = context.getAdditionalUserInfo().getOrDefault(INFO_PLATFORM, ""); + String nickName = context.getAdditionalUserInfo().getOrDefault(INFO_NICKNAME, ""); + String sourceUserId = parseSourceUserId(context.getSource()); + User user = perceiveCapability.getUser(sourceUserId, platform); if (user == null) { - user = perceiveCapability.addUser(context.getUserInfo(), context.getPlatform(), context.getUserNickname()); + user = perceiveCapability.addUser(sourceUserId, platform, nickName); } String userId = user.getUuid(); - context.setUserId(userId); - String userStr = "[" + context.getUserNickname() + "(" + userId + ")]"; + String userStr = "[" + nickName + "(" + userId + ")]"; String input = userStr + " " + context.getInput(); - context.setInput(input); - setCoreContext(context); + setCoreContext(context, input, nickName, userId); log.debug("[PreprocessExecutor] 预处理结果: {}", context); } + private String parseSourceUserId(String source) { + int split = source.indexOf(':'); + if (split < 0 || split + 1 >= source.length()) { + return source; + } + return source.substring(split + 1).trim(); + } + @Override protected Map getPromptDataMap(PartnerRunningFlowContext context) { HashMap map = new HashMap<>(); @@ -68,12 +80,12 @@ public class PreprocessExecutor extends PreRunningAbstractAgentModuleAbstract { return "[基础模块]"; } - private void setCoreContext(PartnerRunningFlowContext context) { + private void setCoreContext(PartnerRunningFlowContext context, String input, String nickName, String userId) { CoreContext coreContext = context.getCoreContext(); - coreContext.setText(context.getInput()); + coreContext.setText(input); coreContext.setDateTime(LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); - coreContext.setUserNick(context.getUserNickname()); - coreContext.setUserId(context.getUserId()); + coreContext.setUserNick(nickName); + coreContext.setUserId(userId); } @Override diff --git a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/config/AgentConfigLoader.java b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/config/AgentConfigLoader.java index 335afb5d..7348849b 100644 --- a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/config/AgentConfigLoader.java +++ b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/config/AgentConfigLoader.java @@ -31,6 +31,15 @@ public abstract class AgentConfigLoader { public abstract void dumpModelConfig(String key); + // Keep explicit getters for Kotlin compilation phase (without Lombok-generated methods). + public HashMap getModelConfigMap() { + return modelConfigMap; + } + + public HashMap> getModelPromptMap() { + return modelPromptMap; + } + public List loadModelPrompt(String modelKey) { if (!modelPromptMap.containsKey(modelKey)) { throw new PromptNotExistException("不存在的modelPrompt: " + modelKey);