需继续为上层模块构建注册体系以适应完整的加载逻辑。

- 移除了 BaseCoordinateManager 抽象类,而是添加了 @CoordinateManager 注解
- 移除了 CapabilityHolder 抽象类,换成 @CapabilityHolder 注解
- 新增了适应新注册机制的部分类,仍需进一步推进
This commit is contained in:
2025-07-22 22:04:46 +08:00
parent 954095aa55
commit effa1df7fa
72 changed files with 148 additions and 738 deletions

View File

@@ -3,7 +3,7 @@ package work.slhaf.partner.common.exception_handler.pojo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.cognation.CognationCore;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;
import work.slhaf.partner.core.session.SessionManager;
@@ -20,7 +20,7 @@ public class GlobalException extends RuntimeException {
this.data = new GlobalExceptionData();
this.data.setExceptionTime(System.currentTimeMillis());
this.data.setSessionManager(SessionManager.getInstance());
this.data.setCognationManager(CognationManager.getInstance());
this.data.setCognationCore(CognationCore.getInstance());
this.data.setContext(InteractionContext.getInstance());
} catch (Exception e) {
log.error("[GlobalException] 捕获异常, 获取数据失败");

View File

@@ -3,7 +3,7 @@ package work.slhaf.partner.common.exception_handler.pojo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.common.serialize.PersistableObject;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.cognation.CognationCore;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;
import work.slhaf.partner.core.session.SessionManager;
@@ -21,6 +21,6 @@ public class GlobalExceptionData extends PersistableObject {
protected HashMap<String, InteractionContext> context;
protected SessionManager sessionManager;
protected CognationManager cognationManager;
protected CognationCore cognationCore;
protected Long exceptionTime;
}

View File

@@ -3,7 +3,6 @@ package work.slhaf.partner.core;
import lombok.Data;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.capability.CapabilityRegisterFactory;
import work.slhaf.partner.common.exception_handler.GlobalExceptionHandler;
import work.slhaf.partner.common.exception_handler.pojo.GlobalException;
import work.slhaf.partner.core.interaction.agent_interface.TaskCallback;
@@ -33,7 +32,6 @@ public class InteractionHub {
interactionHub = new InteractionHub();
//加载模块
interactionHub.setInteractionModules(InteractionModulesLoader.getInstance().registerInteractionModules());
CapabilityRegisterFactory.getInstance().registerCapabilities("work.slhaf.partner");
log.info("InteractionHub注册完毕...");
}
}

View File

@@ -1,9 +1,8 @@
package work.slhaf.partner.core.cognation;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.capability.BaseCoordinateManager;
import work.slhaf.partner.api.capability.annotation.CoordinateManager;
import work.slhaf.partner.api.capability.annotation.Coordinated;
import work.slhaf.partner.common.chat.constant.ChatConstant;
import work.slhaf.partner.common.exception_handler.GlobalExceptionHandler;
@@ -28,15 +27,15 @@ import java.util.concurrent.locks.ReentrantLock;
import static work.slhaf.partner.common.util.ExtractUtil.extractUserId;
@EqualsAndHashCode(callSuper = true)
@Data
@Slf4j
public class CognationManager extends BaseCoordinateManager implements Serializable {
@CoordinateManager
public class CoordinatedManager implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private static volatile CognationManager cognationManager;
private static volatile CoordinatedManager coordinatedManager;
private final Lock sliceInsertLock = new ReentrantLock();
private CognationCore cognationCore;
@@ -45,22 +44,22 @@ public class CognationManager extends BaseCoordinateManager implements Serializa
private PerceiveCore perceiveCore;
private DispatchCore dispatchCore;
private CognationManager() {
private CoordinatedManager() {
}
public static CognationManager getInstance() throws IOException, ClassNotFoundException {
if (cognationManager == null) {
synchronized (CognationManager.class) {
if (cognationManager == null) {
cognationManager = new CognationManager();
cognationManager.setCognationCore(CognationCore.getInstance());
cognationManager.setCores();
log.info("[CognationManager] MemoryManager注册完毕...");
public static CoordinatedManager getInstance() throws IOException, ClassNotFoundException {
if (coordinatedManager == null) {
synchronized (CoordinatedManager.class) {
if (coordinatedManager == null) {
coordinatedManager = new CoordinatedManager();
coordinatedManager.setCognationCore(CognationCore.getInstance());
coordinatedManager.setCores();
log.info("[CoordinatedManager] MemoryManager注册完毕...");
}
}
}
return cognationManager;
return coordinatedManager;
}
private void setCores() {
@@ -88,9 +87,9 @@ public class CognationManager extends BaseCoordinateManager implements Serializa
//尝试更新缓存
cacheCore.updateCache(topicPath, memoryResult);
} catch (Exception e) {
log.error("[CognationManager] selectMemory error: ", e);
log.error("[CognationManager] 路径: {}", topicPathStr);
log.error("[CognationManager] 主题树: {}", memoryCore.getTopicTree());
log.error("[CoordinatedManager] selectMemory error: ", e);
log.error("[CoordinatedManager] 路径: {}", topicPathStr);
log.error("[CoordinatedManager] 主题树: {}", memoryCore.getTopicTree());
memoryResult = new MemoryResult();
memoryResult.setRelatedMemorySliceResult(new ArrayList<>());
memoryResult.setMemorySliceResult(new CopyOnWriteArrayList<>());
@@ -131,10 +130,10 @@ public class CognationManager extends BaseCoordinateManager implements Serializa
cacheCore.updateUserDialogMap(memorySlice);
}
} catch (Exception e) {
log.error("[CognationManager] 插入记忆时出错: ", e);
log.error("[CoordinatedManager] 插入记忆时出错: ", e);
GlobalExceptionHandler.writeExceptionState(new GlobalException("插入记忆时出错: " + e.getLocalizedMessage()));
}
log.debug("[CognationManager] 插入切片: {}, 路径: {}", memorySlice, topicPath);
log.debug("[CoordinatedManager] 插入切片: {}, 路径: {}", memorySlice, topicPath);
sliceInsertLock.unlock();
}

View File

@@ -62,6 +62,8 @@ public class CognationCore extends PersistableObject {
private void connectCores(CognationCore temp) {
temp.setCacheCore(CacheCore.getInstance());
temp.setMemoryCore(MemoryCore.getInstance());
temp.setPerceiveCore(PerceiveCore.getInstance());
}
private void setupHook(CognationCore temp) {
@@ -138,7 +140,7 @@ public class CognationCore extends PersistableObject {
public void updateActivatedSlices(String userId, List<EvaluatedSlice> memorySlices) {
activeData.updateActivatedSlices(userId, memorySlices);
log.debug("[CognationManager] 已更新激活切片, userId: {}", userId);
log.debug("[CoordinatedManager] 已更新激活切片, userId: {}", userId);
}
public String getActivatedSlicesStr(String userId) {

View File

@@ -1,7 +1,6 @@
package work.slhaf.partner.core.cognation.submodule.cache;
import work.slhaf.partner.api.capability.annotation.Capability;
import work.slhaf.partner.api.capability.annotation.CapabilityMethod;
import java.time.LocalDateTime;
import java.util.HashMap;

View File

@@ -1,7 +1,6 @@
package work.slhaf.partner.core.cognation.submodule.memory;
import work.slhaf.partner.api.capability.annotation.Capability;
import work.slhaf.partner.api.capability.annotation.CapabilityMethod;
import work.slhaf.partner.api.capability.annotation.ToCoordinated;
import work.slhaf.partner.core.cognation.common.pojo.MemoryResult;
import work.slhaf.partner.core.cognation.submodule.memory.pojo.MemorySlice;

View File

@@ -1,7 +1,6 @@
package work.slhaf.partner.core.cognation.submodule.perceive;
import work.slhaf.partner.api.capability.annotation.Capability;
import work.slhaf.partner.api.capability.annotation.CapabilityMethod;
import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User;
@Capability(value = "perceive")

View File

@@ -14,7 +14,7 @@ import java.util.List;
public interface ActivateModel {
default void modelSettings() {
Model model = getModel();
Model model = new Model();
ModelConfig modelConfig = ModelConfig.load(modelKey());
model.setBaseMessages(withAwareness() ? ResourcesUtil.Prompt.loadPromptWithSelfAwareness(modelKey(), promptModule()) : ResourcesUtil.Prompt.loadPrompt(modelKey(), promptModule()));
model.setChatClient(new ChatClient(modelConfig.getBaseUrl(), modelConfig.getApikey(), modelConfig.getModel()));

View File

@@ -2,17 +2,12 @@ package work.slhaf.partner.module.common.model;
import lombok.Data;
import work.slhaf.partner.common.chat.ChatClient;
import work.slhaf.partner.common.chat.constant.ChatConstant;
import work.slhaf.partner.common.chat.pojo.ChatResponse;
import work.slhaf.partner.common.chat.pojo.Message;
import work.slhaf.partner.common.config.ModelConfig;
import work.slhaf.partner.common.util.ResourcesUtil;
import java.util.ArrayList;
import java.util.List;
@Data
public abstract class Model {
public class Model {
protected ChatClient chatClient;
protected List<Message> chatMessages;

View File

@@ -1,7 +1,5 @@
package work.slhaf.partner.module.common.module;
import work.slhaf.partner.core.interaction.module.InteractionFlow;
public abstract class CoreModule extends InteractionModule {
}

View File

@@ -2,10 +2,11 @@ package work.slhaf.partner.module.common.module;
import lombok.Getter;
import lombok.Setter;
import work.slhaf.partner.api.capability.module.CapabilityHolder;
import work.slhaf.partner.api.capability.annotation.CapabilityHolder;
import work.slhaf.partner.module.common.model.Model;
public abstract class Module extends CapabilityHolder {
@CapabilityHolder
public abstract class Module {
@Getter
@Setter

View File

@@ -1,7 +1,6 @@
package work.slhaf.partner.module.common.module;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;
import work.slhaf.partner.core.interaction.module.InteractionFlow;
import work.slhaf.partner.module.common.entity.AppendPromptData;
import java.util.HashMap;

View File

@@ -5,7 +5,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.capability.annotation.InjectCapability;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
import work.slhaf.partner.core.cognation.common.pojo.MemoryResult;
import work.slhaf.partner.core.cognation.submodule.cache.CacheCapability;

View File

@@ -10,14 +10,12 @@ import work.slhaf.partner.common.chat.pojo.Message;
import work.slhaf.partner.common.chat.pojo.MetaMessage;
import work.slhaf.partner.common.exception_handler.GlobalExceptionHandler;
import work.slhaf.partner.common.exception_handler.pojo.GlobalException;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
import work.slhaf.partner.core.cognation.submodule.memory.MemoryCapability;
import work.slhaf.partner.core.cognation.submodule.memory.pojo.EvaluatedSlice;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;
import work.slhaf.partner.core.session.SessionManager;
import work.slhaf.partner.module.common.model.ActivateModel;
import work.slhaf.partner.module.common.model.Model;
import work.slhaf.partner.module.common.model.ModelConstant;
import work.slhaf.partner.module.common.module.SubModule;
import work.slhaf.partner.module.modules.memory.selector.extractor.data.ExtractorInput;

View File

@@ -8,14 +8,12 @@ import work.slhaf.partner.api.capability.annotation.InjectCapability;
import work.slhaf.partner.common.chat.constant.ChatConstant;
import work.slhaf.partner.common.chat.pojo.Message;
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
import work.slhaf.partner.core.cognation.submodule.cache.CacheCapability;
import work.slhaf.partner.core.cognation.submodule.memory.MemoryCapability;
import work.slhaf.partner.core.cognation.submodule.memory.pojo.MemorySlice;
import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;
import work.slhaf.partner.core.interaction.module.InteractionFlow;
import work.slhaf.partner.core.session.SessionManager;
import work.slhaf.partner.module.common.module.PostModule;
import work.slhaf.partner.module.modules.memory.selector.extractor.MemorySelectExtractor;

View File

@@ -7,7 +7,6 @@ import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.common.chat.pojo.ChatResponse;
import work.slhaf.partner.module.common.model.ActivateModel;
import work.slhaf.partner.module.common.model.Model;
import work.slhaf.partner.module.common.model.ModelConstant;
import work.slhaf.partner.module.common.module.SubModule;
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeInput;

View File

@@ -9,7 +9,6 @@ import work.slhaf.partner.common.chat.pojo.ChatResponse;
import work.slhaf.partner.common.chat.pojo.Message;
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
import work.slhaf.partner.module.common.model.ActivateModel;
import work.slhaf.partner.module.common.model.Model;
import work.slhaf.partner.module.common.model.ModelConstant;
import work.slhaf.partner.module.common.module.SubModule;

View File

@@ -7,7 +7,6 @@ import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.common.chat.pojo.ChatResponse;
import work.slhaf.partner.module.common.model.ActivateModel;
import work.slhaf.partner.module.common.model.Model;
import work.slhaf.partner.module.common.model.ModelConstant;
import work.slhaf.partner.module.common.module.SubModule;

View File

@@ -3,7 +3,6 @@ package work.slhaf.partner.module.modules.perceive.selector;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.capability.annotation.InjectCapability;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability;
import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;

View File

@@ -5,14 +5,10 @@ import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.capability.annotation.InjectCapability;
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability;
import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;
import work.slhaf.partner.core.interaction.module.InteractionFlow;
import work.slhaf.partner.module.common.model.Model;
import work.slhaf.partner.module.common.model.ModelConstant;
import work.slhaf.partner.module.common.module.PostModule;
import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.RelationExtractor;
import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.pojo.RelationExtractResult;

View File

@@ -5,13 +5,11 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.common.chat.pojo.ChatResponse;
import work.slhaf.partner.common.chat.pojo.Message;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability;
import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;
import work.slhaf.partner.module.common.model.ActivateModel;
import work.slhaf.partner.module.common.model.Model;
import work.slhaf.partner.module.common.model.ModelConstant;
import work.slhaf.partner.module.common.module.SubModule;
import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.pojo.RelationExtractInput;

View File

@@ -6,12 +6,10 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.capability.annotation.InjectCapability;
import work.slhaf.partner.common.chat.pojo.ChatResponse;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;
import work.slhaf.partner.module.common.model.ActivateModel;
import work.slhaf.partner.module.common.model.Model;
import work.slhaf.partner.module.common.model.ModelConstant;
import work.slhaf.partner.module.common.module.SubModule;
import work.slhaf.partner.module.modules.perceive.updater.static_extractor.data.StaticMemoryExtractInput;

View File

@@ -4,10 +4,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.capability.annotation.InjectCapability;
import work.slhaf.partner.core.cognation.CognationManager;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
import work.slhaf.partner.core.interaction.data.context.InteractionContext;
import work.slhaf.partner.core.interaction.module.InteractionFlow;
import work.slhaf.partner.module.common.module.PostModule;
import java.io.IOException;

View File

@@ -1,10 +1,9 @@
package work.slhaf.partner.module.modules.process;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.capability.annotation.CapabilityHolder;
import work.slhaf.partner.api.capability.annotation.InjectCapability;
import work.slhaf.partner.api.capability.module.CapabilityHolder;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability;
import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User;
@@ -18,10 +17,10 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
@EqualsAndHashCode(callSuper = true)
@Data
@Slf4j
public class PreprocessExecutor extends CapabilityHolder {
@CapabilityHolder
public class PreprocessExecutor {
private static volatile PreprocessExecutor preprocessExecutor;

View File

@@ -1,9 +1,6 @@
package work.slhaf.partner.module.modules.task;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.module.common.model.Model;
import work.slhaf.partner.module.common.model.ModelConstant;
@Data
public class TaskEvaluator {