diff --git a/pom.xml b/pom.xml
index b75d12fd..facc723f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,8 +44,12 @@
org.junit.jupiter
junit-jupiter
- RELEASE
- test
+ 5.13.2
+
+
+ org.reflections
+ reflections
+ 0.10.2
org.slf4j
diff --git a/src/main/java/work/slhaf/agent/core/cognation/CognationManager.java b/src/main/java/work/slhaf/agent/core/cognation/CognationManager.java
index 4f36858b..da8ede0f 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/CognationManager.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/CognationManager.java
@@ -10,19 +10,22 @@ import work.slhaf.agent.common.config.Config;
import work.slhaf.agent.common.exception_handler.GlobalExceptionHandler;
import work.slhaf.agent.common.exception_handler.pojo.GlobalException;
import work.slhaf.agent.common.serialize.PersistableObject;
-import work.slhaf.agent.core.cognation.common.exception.UserNotExistsException;
-import work.slhaf.agent.core.cognation.common.pojo.ActiveData;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
+import work.slhaf.agent.core.cognation.cognation.CognationCore;
+import work.slhaf.agent.core.cognation.cognation.exception.UserNotExistsException;
+import work.slhaf.agent.core.cognation.cognation.pojo.ActiveData;
import work.slhaf.agent.core.cognation.common.pojo.MemoryResult;
import work.slhaf.agent.core.cognation.common.pojo.MemorySliceResult;
-import work.slhaf.agent.core.cognation.submodule.cache.CacheCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CacheCapability;
import work.slhaf.agent.core.cognation.submodule.cache.CacheCore;
-import work.slhaf.agent.core.cognation.submodule.memory.MemoryCapability;
+import work.slhaf.agent.core.cognation.submodule.dispatch.DispatchCore;
+import work.slhaf.agent.core.cognation.capability.ability.MemoryCapability;
import work.slhaf.agent.core.cognation.submodule.memory.MemoryCore;
import work.slhaf.agent.core.cognation.submodule.memory.pojo.MemorySlice;
-import work.slhaf.agent.core.cognation.submodule.perceive.PerceiveCapability;
+import work.slhaf.agent.core.cognation.capability.ability.PerceiveCapability;
import work.slhaf.agent.core.cognation.submodule.perceive.PerceiveCore;
import work.slhaf.agent.core.cognation.submodule.perceive.pojo.User;
-import work.slhaf.agent.shared.memory.EvaluatedSlice;
+import work.slhaf.agent.core.cognation.submodule.memory.pojo.EvaluatedSlice;
import java.io.IOException;
import java.io.Serial;
@@ -53,6 +56,7 @@ public class CognationManager extends PersistableObject implements CacheCapabili
private CacheCore cacheCore;
private MemoryCore memoryCore;
private PerceiveCore perceiveCore;
+ private DispatchCore dispatchCore;
private ActiveData activeData;
diff --git a/src/main/java/work/slhaf/agent/core/cognation/NewCognationManager.java b/src/main/java/work/slhaf/agent/core/cognation/NewCognationManager.java
new file mode 100644
index 00000000..802772cb
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/cognation/NewCognationManager.java
@@ -0,0 +1,5 @@
+package work.slhaf.agent.core.cognation;
+
+public class NewCognationManager {
+
+}
diff --git a/src/main/java/work/slhaf/agent/core/cognation/capability/CapabilityRegister.java b/src/main/java/work/slhaf/agent/core/cognation/capability/CapabilityRegister.java
new file mode 100644
index 00000000..6b7ecf2a
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/CapabilityRegister.java
@@ -0,0 +1,67 @@
+package work.slhaf.agent.core.cognation.capability;
+
+import org.reflections.Reflections;
+import work.slhaf.agent.core.cognation.capability.exception.CapabilityRegisterFailedException;
+import work.slhaf.agent.core.cognation.capability.interfaces.Capability;
+import work.slhaf.agent.core.cognation.capability.interfaces.CapabilityCore;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class CapabilityRegister {
+
+ public static volatile CapabilityRegister capabilityRegister;
+
+ private CapabilityRegister(){
+ }
+
+ public static CapabilityRegister getInstance(){
+ if (capabilityRegister == null) {
+ synchronized (CapabilityRegister.class) {
+ if (capabilityRegister == null) {
+ capabilityRegister = new CapabilityRegister();
+ }
+ }
+ }
+ return capabilityRegister;
+ }
+
+ public void registerCapabilities(){
+ //检查可注册能力是否正常
+ statusCheck();
+ //扫描现有Capability, value为键,返回函数路由表
+ }
+
+ private void statusCheck(){
+ Reflections reflections = new Reflections("work.slhaf.agent.core");
+ Set> cores = reflections.getTypesAnnotatedWith(CapabilityCore.class);
+ Set> capabilities = reflections.getTypesAnnotatedWith(Capability.class);
+ if (cores.size() != capabilities.size()){
+ throw new CapabilityRegisterFailedException("Capability 注册异常: 已存在的CapabilityCore与Capability数量不匹配!");
+ }
+ if (checkValuesMatched(cores,capabilities)){
+ throw new CapabilityRegisterFailedException("Capability 注册异常: 已存在的CapabilityCore与Capability不匹配!");
+ }
+ }
+
+
+ private static boolean checkValuesMatched(Set> cores, Set> capabilities) {
+ List coresValues = new ArrayList<>();
+ List capabilitiesValues = new ArrayList<>();
+ for (Class> core : cores) {
+ CapabilityCore annotation = core.getAnnotation(CapabilityCore.class);
+ if (annotation != null) {
+ coresValues.add(annotation.value());
+ }
+ }
+ for (Class> capability : capabilities) {
+ Capability annotation = capability.getAnnotation(Capability.class);
+ if (annotation != null) {
+ capabilitiesValues.add(annotation.value());
+ }
+ }
+ return coresValues.equals(capabilitiesValues);
+ }
+}
diff --git a/src/main/java/work/slhaf/agent/core/cognation/submodule/cache/CacheCapability.java b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/CacheCapability.java
similarity index 72%
rename from src/main/java/work/slhaf/agent/core/cognation/submodule/cache/CacheCapability.java
rename to src/main/java/work/slhaf/agent/core/cognation/capability/ability/CacheCapability.java
index 3d972e69..e1593bb8 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/submodule/cache/CacheCapability.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/CacheCapability.java
@@ -1,9 +1,12 @@
-package work.slhaf.agent.core.cognation.submodule.cache;
+package work.slhaf.agent.core.cognation.capability.ability;
+
+import work.slhaf.agent.core.cognation.capability.interfaces.Capability;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
+@Capability(value = "cache")
public interface CacheCapability {
HashMap getDialogMap();
ConcurrentHashMap getUserDialogMap(String userId);
diff --git a/src/main/java/work/slhaf/agent/core/cognation/CognationCapability.java b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/CognationCapability.java
similarity index 84%
rename from src/main/java/work/slhaf/agent/core/cognation/CognationCapability.java
rename to src/main/java/work/slhaf/agent/core/cognation/capability/ability/CognationCapability.java
index 57ced5eb..0c63fc81 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/CognationCapability.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/CognationCapability.java
@@ -1,12 +1,11 @@
-package work.slhaf.agent.core.cognation;
+package work.slhaf.agent.core.cognation.capability.ability;
import work.slhaf.agent.common.chat.pojo.Message;
-import work.slhaf.agent.shared.memory.EvaluatedSlice;
+import work.slhaf.agent.core.cognation.submodule.memory.pojo.EvaluatedSlice;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
public interface CognationCapability {
List getChatMessages();
diff --git a/src/main/java/work/slhaf/agent/core/cognation/capability/ability/DispatchCapability.java b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/DispatchCapability.java
new file mode 100644
index 00000000..a4249709
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/DispatchCapability.java
@@ -0,0 +1,4 @@
+package work.slhaf.agent.core.cognation.capability.ability;
+
+public interface DispatchCapability {
+}
diff --git a/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/MemoryCapability.java b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/MemoryCapability.java
similarity index 89%
rename from src/main/java/work/slhaf/agent/core/cognation/submodule/memory/MemoryCapability.java
rename to src/main/java/work/slhaf/agent/core/cognation/capability/ability/MemoryCapability.java
index 7607d7e8..9316b113 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/MemoryCapability.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/MemoryCapability.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.cognation.submodule.memory;
+package work.slhaf.agent.core.cognation.capability.ability;
import work.slhaf.agent.core.cognation.common.pojo.MemoryResult;
import work.slhaf.agent.core.cognation.submodule.memory.pojo.MemorySlice;
diff --git a/src/main/java/work/slhaf/agent/core/cognation/submodule/perceive/PerceiveCapability.java b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/PerceiveCapability.java
similarity index 83%
rename from src/main/java/work/slhaf/agent/core/cognation/submodule/perceive/PerceiveCapability.java
rename to src/main/java/work/slhaf/agent/core/cognation/capability/ability/PerceiveCapability.java
index 7389aa8b..000af60a 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/submodule/perceive/PerceiveCapability.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/ability/PerceiveCapability.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.cognation.submodule.perceive;
+package work.slhaf.agent.core.cognation.capability.ability;
import work.slhaf.agent.core.cognation.submodule.perceive.pojo.User;
diff --git a/src/main/java/work/slhaf/agent/core/cognation/capability/exception/CapabilityRegisterFailedException.java b/src/main/java/work/slhaf/agent/core/cognation/capability/exception/CapabilityRegisterFailedException.java
new file mode 100644
index 00000000..f5e7e31c
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/exception/CapabilityRegisterFailedException.java
@@ -0,0 +1,7 @@
+package work.slhaf.agent.core.cognation.capability.exception;
+
+public class CapabilityRegisterFailedException extends RuntimeException {
+ public CapabilityRegisterFailedException(String message) {
+ super(message);
+ }
+}
diff --git a/src/main/java/work/slhaf/agent/core/cognation/capability/interfaces/Capability.java b/src/main/java/work/slhaf/agent/core/cognation/capability/interfaces/Capability.java
new file mode 100644
index 00000000..6221b73b
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/interfaces/Capability.java
@@ -0,0 +1,12 @@
+package work.slhaf.agent.core.cognation.capability.interfaces;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface Capability {
+ String value();
+}
diff --git a/src/main/java/work/slhaf/agent/core/cognation/capability/interfaces/CapabilityCore.java b/src/main/java/work/slhaf/agent/core/cognation/capability/interfaces/CapabilityCore.java
new file mode 100644
index 00000000..4d151170
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/interfaces/CapabilityCore.java
@@ -0,0 +1,12 @@
+package work.slhaf.agent.core.cognation.capability.interfaces;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface CapabilityCore {
+ String value();
+}
diff --git a/src/main/java/work/slhaf/agent/core/cognation/capability/interfaces/InjectCapability.java b/src/main/java/work/slhaf/agent/core/cognation/capability/interfaces/InjectCapability.java
new file mode 100644
index 00000000..706a9594
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/cognation/capability/interfaces/InjectCapability.java
@@ -0,0 +1,9 @@
+package work.slhaf.agent.core.cognation.capability.interfaces;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD)
+public @interface InjectCapability {
+ String value();
+}
diff --git a/src/main/java/work/slhaf/agent/core/cognation/CognationCore.java b/src/main/java/work/slhaf/agent/core/cognation/cognation/CognationCore.java
similarity index 98%
rename from src/main/java/work/slhaf/agent/core/cognation/CognationCore.java
rename to src/main/java/work/slhaf/agent/core/cognation/cognation/CognationCore.java
index de8a422d..02483c4c 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/CognationCore.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/cognation/CognationCore.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.cognation;
+package work.slhaf.agent.core.cognation.cognation;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/work/slhaf/agent/core/cognation/common/exception/UserNotExistsException.java b/src/main/java/work/slhaf/agent/core/cognation/cognation/exception/UserNotExistsException.java
similarity index 70%
rename from src/main/java/work/slhaf/agent/core/cognation/common/exception/UserNotExistsException.java
rename to src/main/java/work/slhaf/agent/core/cognation/cognation/exception/UserNotExistsException.java
index da4ee37c..a688636e 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/common/exception/UserNotExistsException.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/cognation/exception/UserNotExistsException.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.cognation.common.exception;
+package work.slhaf.agent.core.cognation.cognation.exception;
public class UserNotExistsException extends RuntimeException {
public UserNotExistsException(String message) {
diff --git a/src/main/java/work/slhaf/agent/core/cognation/common/pojo/ActiveData.java b/src/main/java/work/slhaf/agent/core/cognation/cognation/pojo/ActiveData.java
similarity index 88%
rename from src/main/java/work/slhaf/agent/core/cognation/common/pojo/ActiveData.java
rename to src/main/java/work/slhaf/agent/core/cognation/cognation/pojo/ActiveData.java
index a9f2da38..bb97363f 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/common/pojo/ActiveData.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/cognation/pojo/ActiveData.java
@@ -1,7 +1,7 @@
-package work.slhaf.agent.core.cognation.common.pojo;
+package work.slhaf.agent.core.cognation.cognation.pojo;
import lombok.Data;
-import work.slhaf.agent.shared.memory.EvaluatedSlice;
+import work.slhaf.agent.core.cognation.submodule.memory.pojo.EvaluatedSlice;
import java.util.HashMap;
import java.util.List;
diff --git a/src/main/java/work/slhaf/agent/core/cognation/submodule/cache/CacheCore.java b/src/main/java/work/slhaf/agent/core/cognation/submodule/cache/CacheCore.java
index 50f1ba96..2dbe3f07 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/submodule/cache/CacheCore.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/submodule/cache/CacheCore.java
@@ -4,6 +4,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.agent.common.serialize.PersistableObject;
+import work.slhaf.agent.core.cognation.capability.interfaces.CapabilityCore;
import work.slhaf.agent.core.cognation.common.pojo.MemoryResult;
import work.slhaf.agent.core.cognation.submodule.memory.pojo.MemorySlice;
@@ -16,6 +17,7 @@ import java.util.concurrent.ConcurrentHashMap;
@EqualsAndHashCode(callSuper = true)
@Data
@Slf4j
+@CapabilityCore(value = "cache")
public class CacheCore extends PersistableObject {
@Serial
diff --git a/src/main/java/work/slhaf/agent/core/cognation/submodule/dispatch/DispatchCore.java b/src/main/java/work/slhaf/agent/core/cognation/submodule/dispatch/DispatchCore.java
new file mode 100644
index 00000000..3f2ff198
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/cognation/submodule/dispatch/DispatchCore.java
@@ -0,0 +1,32 @@
+package work.slhaf.agent.core.cognation.submodule.dispatch;
+
+import work.slhaf.agent.common.serialize.PersistableObject;
+import work.slhaf.agent.core.cognation.submodule.dispatch.pojo.DispatchData;
+
+import java.io.Serial;
+
+public class DispatchCore extends PersistableObject {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+ public static volatile DispatchCore dispatchCore;
+
+ public static DispatchCore getInstance() {
+ if (dispatchCore == null) {
+ synchronized (DispatchCore.class) {
+ if (dispatchCore == null) {
+ dispatchCore = new DispatchCore();
+ }
+ }
+ }
+ return dispatchCore;
+ }
+
+ public void dispatch(DispatchData dispatchData){
+
+ }
+
+ public void listDispatchData(){
+
+ }
+}
diff --git a/src/main/java/work/slhaf/agent/core/cognation/submodule/dispatch/pojo/DispatchData.java b/src/main/java/work/slhaf/agent/core/cognation/submodule/dispatch/pojo/DispatchData.java
new file mode 100644
index 00000000..04560722
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/cognation/submodule/dispatch/pojo/DispatchData.java
@@ -0,0 +1,15 @@
+package work.slhaf.agent.core.cognation.submodule.dispatch.pojo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class DispatchData {
+ private LocalDateTime dateTime;
+ private String userId;
+ private String comment;
+
+ //TODO 替换为<执行器>或者<插件>
+ private String executor;
+}
diff --git a/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/MemoryCore.java b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/MemoryCore.java
index b2e5c5a9..2722de71 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/MemoryCore.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/MemoryCore.java
@@ -3,8 +3,8 @@ package work.slhaf.agent.core.cognation.submodule.memory;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.agent.common.serialize.PersistableObject;
-import work.slhaf.agent.core.cognation.common.exception.UnExistedDateIndexException;
-import work.slhaf.agent.core.cognation.common.exception.UnExistedTopicException;
+import work.slhaf.agent.core.cognation.submodule.memory.exception.UnExistedDateIndexException;
+import work.slhaf.agent.core.cognation.submodule.memory.exception.UnExistedTopicException;
import work.slhaf.agent.core.cognation.common.pojo.MemoryResult;
import work.slhaf.agent.core.cognation.common.pojo.MemorySliceResult;
import work.slhaf.agent.core.cognation.submodule.memory.pojo.MemorySlice;
diff --git a/src/main/java/work/slhaf/agent/core/cognation/common/exception/NullSliceListException.java b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/exception/NullSliceListException.java
similarity index 68%
rename from src/main/java/work/slhaf/agent/core/cognation/common/exception/NullSliceListException.java
rename to src/main/java/work/slhaf/agent/core/cognation/submodule/memory/exception/NullSliceListException.java
index d9c33cb2..f8eafd8d 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/common/exception/NullSliceListException.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/exception/NullSliceListException.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.cognation.common.exception;
+package work.slhaf.agent.core.cognation.submodule.memory.exception;
public class NullSliceListException extends RuntimeException {
public NullSliceListException(String message) {
diff --git a/src/main/java/work/slhaf/agent/core/cognation/common/exception/UnExistedDateIndexException.java b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/exception/UnExistedDateIndexException.java
similarity index 69%
rename from src/main/java/work/slhaf/agent/core/cognation/common/exception/UnExistedDateIndexException.java
rename to src/main/java/work/slhaf/agent/core/cognation/submodule/memory/exception/UnExistedDateIndexException.java
index 25afdd18..6944cca2 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/common/exception/UnExistedDateIndexException.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/exception/UnExistedDateIndexException.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.cognation.common.exception;
+package work.slhaf.agent.core.cognation.submodule.memory.exception;
public class UnExistedDateIndexException extends RuntimeException {
public UnExistedDateIndexException(String message) {
diff --git a/src/main/java/work/slhaf/agent/core/cognation/common/exception/UnExistedTopicException.java b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/exception/UnExistedTopicException.java
similarity index 68%
rename from src/main/java/work/slhaf/agent/core/cognation/common/exception/UnExistedTopicException.java
rename to src/main/java/work/slhaf/agent/core/cognation/submodule/memory/exception/UnExistedTopicException.java
index d151f58d..727d47e2 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/common/exception/UnExistedTopicException.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/exception/UnExistedTopicException.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.cognation.common.exception;
+package work.slhaf.agent.core.cognation.submodule.memory.exception;
public class UnExistedTopicException extends RuntimeException {
public UnExistedTopicException(String message) {
diff --git a/src/main/java/work/slhaf/agent/shared/memory/EvaluatedSlice.java b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/pojo/EvaluatedSlice.java
similarity index 88%
rename from src/main/java/work/slhaf/agent/shared/memory/EvaluatedSlice.java
rename to src/main/java/work/slhaf/agent/core/cognation/submodule/memory/pojo/EvaluatedSlice.java
index 45b4e07a..eb746db4 100644
--- a/src/main/java/work/slhaf/agent/shared/memory/EvaluatedSlice.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/pojo/EvaluatedSlice.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.shared.memory;
+package work.slhaf.agent.core.cognation.submodule.memory.pojo;
import lombok.Builder;
import lombok.Data;
diff --git a/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/pojo/node/MemoryNode.java b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/pojo/node/MemoryNode.java
index 17ba1e57..1a58b3c8 100644
--- a/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/pojo/node/MemoryNode.java
+++ b/src/main/java/work/slhaf/agent/core/cognation/submodule/memory/pojo/node/MemoryNode.java
@@ -4,7 +4,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.agent.common.serialize.PersistableObject;
-import work.slhaf.agent.core.cognation.common.exception.NullSliceListException;
+import work.slhaf.agent.core.cognation.submodule.memory.exception.NullSliceListException;
import work.slhaf.agent.core.cognation.submodule.memory.pojo.MemorySlice;
import java.io.*;
diff --git a/src/main/java/work/slhaf/agent/module/modules/core/CoreModel.java b/src/main/java/work/slhaf/agent/module/modules/core/CoreModel.java
index 82c1e559..3bce7663 100644
--- a/src/main/java/work/slhaf/agent/module/modules/core/CoreModel.java
+++ b/src/main/java/work/slhaf/agent/module/modules/core/CoreModel.java
@@ -8,7 +8,7 @@ import work.slhaf.agent.common.chat.constant.ChatConstant;
import work.slhaf.agent.common.chat.pojo.ChatResponse;
import work.slhaf.agent.common.chat.pojo.Message;
import work.slhaf.agent.common.chat.pojo.MetaMessage;
-import work.slhaf.agent.core.cognation.CognationCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
import work.slhaf.agent.core.cognation.CognationManager;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
import work.slhaf.agent.core.interaction.module.InteractionModule;
diff --git a/src/main/java/work/slhaf/agent/module/modules/memory/selector/MemorySelector.java b/src/main/java/work/slhaf/agent/module/modules/memory/selector/MemorySelector.java
index 178fbbf9..ff53efc7 100644
--- a/src/main/java/work/slhaf/agent/module/modules/memory/selector/MemorySelector.java
+++ b/src/main/java/work/slhaf/agent/module/modules/memory/selector/MemorySelector.java
@@ -3,13 +3,13 @@ package work.slhaf.agent.module.modules.memory.selector;
import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import work.slhaf.agent.core.cognation.CognationCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
import work.slhaf.agent.core.cognation.CognationManager;
-import work.slhaf.agent.core.cognation.common.exception.UnExistedDateIndexException;
-import work.slhaf.agent.core.cognation.common.exception.UnExistedTopicException;
+import work.slhaf.agent.core.cognation.submodule.memory.exception.UnExistedDateIndexException;
+import work.slhaf.agent.core.cognation.submodule.memory.exception.UnExistedTopicException;
import work.slhaf.agent.core.cognation.common.pojo.MemoryResult;
-import work.slhaf.agent.core.cognation.submodule.cache.CacheCapability;
-import work.slhaf.agent.core.cognation.submodule.memory.MemoryCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CacheCapability;
+import work.slhaf.agent.core.cognation.capability.ability.MemoryCapability;
import work.slhaf.agent.core.cognation.submodule.memory.pojo.MemorySlice;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
import work.slhaf.agent.core.session.SessionManager;
@@ -19,7 +19,7 @@ import work.slhaf.agent.module.modules.memory.selector.evaluator.data.EvaluatorI
import work.slhaf.agent.module.modules.memory.selector.extractor.MemorySelectExtractor;
import work.slhaf.agent.module.modules.memory.selector.extractor.data.ExtractorMatchData;
import work.slhaf.agent.module.modules.memory.selector.extractor.data.ExtractorResult;
-import work.slhaf.agent.shared.memory.EvaluatedSlice;
+import work.slhaf.agent.core.cognation.submodule.memory.pojo.EvaluatedSlice;
import java.io.IOException;
import java.time.LocalDate;
diff --git a/src/main/java/work/slhaf/agent/module/modules/memory/selector/evaluator/SliceSelectEvaluator.java b/src/main/java/work/slhaf/agent/module/modules/memory/selector/evaluator/SliceSelectEvaluator.java
index d89163a1..75e8d6b5 100644
--- a/src/main/java/work/slhaf/agent/module/modules/memory/selector/evaluator/SliceSelectEvaluator.java
+++ b/src/main/java/work/slhaf/agent/module/modules/memory/selector/evaluator/SliceSelectEvaluator.java
@@ -16,7 +16,7 @@ import work.slhaf.agent.module.modules.memory.selector.evaluator.data.EvaluatorB
import work.slhaf.agent.module.modules.memory.selector.evaluator.data.EvaluatorInput;
import work.slhaf.agent.module.modules.memory.selector.evaluator.data.EvaluatorResult;
import work.slhaf.agent.module.modules.memory.selector.evaluator.data.SliceSummary;
-import work.slhaf.agent.shared.memory.EvaluatedSlice;
+import work.slhaf.agent.core.cognation.submodule.memory.pojo.EvaluatedSlice;
import java.io.IOException;
import java.util.*;
diff --git a/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/MemorySelectExtractor.java b/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/MemorySelectExtractor.java
index 4dd1db8b..e810b0ab 100644
--- a/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/MemorySelectExtractor.java
+++ b/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/MemorySelectExtractor.java
@@ -9,9 +9,9 @@ import work.slhaf.agent.common.chat.pojo.Message;
import work.slhaf.agent.common.chat.pojo.MetaMessage;
import work.slhaf.agent.common.exception_handler.GlobalExceptionHandler;
import work.slhaf.agent.common.exception_handler.pojo.GlobalException;
-import work.slhaf.agent.core.cognation.CognationCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
import work.slhaf.agent.core.cognation.CognationManager;
-import work.slhaf.agent.core.cognation.submodule.memory.MemoryCapability;
+import work.slhaf.agent.core.cognation.capability.ability.MemoryCapability;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
import work.slhaf.agent.core.session.SessionManager;
import work.slhaf.agent.module.common.Model;
@@ -19,7 +19,7 @@ import work.slhaf.agent.module.common.ModelConstant;
import work.slhaf.agent.module.modules.memory.selector.extractor.data.ExtractorInput;
import work.slhaf.agent.module.modules.memory.selector.extractor.data.ExtractorMatchData;
import work.slhaf.agent.module.modules.memory.selector.extractor.data.ExtractorResult;
-import work.slhaf.agent.shared.memory.EvaluatedSlice;
+import work.slhaf.agent.core.cognation.submodule.memory.pojo.EvaluatedSlice;
import java.io.IOException;
import java.util.ArrayList;
diff --git a/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/data/ExtractorInput.java b/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/data/ExtractorInput.java
index 4c093317..36adc323 100644
--- a/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/data/ExtractorInput.java
+++ b/src/main/java/work/slhaf/agent/module/modules/memory/selector/extractor/data/ExtractorInput.java
@@ -3,7 +3,7 @@ package work.slhaf.agent.module.modules.memory.selector.extractor.data;
import lombok.Builder;
import lombok.Data;
import work.slhaf.agent.common.chat.pojo.Message;
-import work.slhaf.agent.shared.memory.EvaluatedSlice;
+import work.slhaf.agent.core.cognation.submodule.memory.pojo.EvaluatedSlice;
import java.time.LocalDate;
import java.util.List;
diff --git a/src/main/java/work/slhaf/agent/module/modules/memory/updater/MemoryUpdater.java b/src/main/java/work/slhaf/agent/module/modules/memory/updater/MemoryUpdater.java
index 94c4bf9d..35bf6b09 100644
--- a/src/main/java/work/slhaf/agent/module/modules/memory/updater/MemoryUpdater.java
+++ b/src/main/java/work/slhaf/agent/module/modules/memory/updater/MemoryUpdater.java
@@ -6,12 +6,12 @@ import lombok.extern.slf4j.Slf4j;
import work.slhaf.agent.common.chat.constant.ChatConstant;
import work.slhaf.agent.common.chat.pojo.Message;
import work.slhaf.agent.common.thread.InteractionThreadPoolExecutor;
-import work.slhaf.agent.core.cognation.CognationCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
import work.slhaf.agent.core.cognation.CognationManager;
-import work.slhaf.agent.core.cognation.submodule.cache.CacheCapability;
-import work.slhaf.agent.core.cognation.submodule.memory.MemoryCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CacheCapability;
+import work.slhaf.agent.core.cognation.capability.ability.MemoryCapability;
import work.slhaf.agent.core.cognation.submodule.memory.pojo.MemorySlice;
-import work.slhaf.agent.core.cognation.submodule.perceive.PerceiveCapability;
+import work.slhaf.agent.core.cognation.capability.ability.PerceiveCapability;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
import work.slhaf.agent.core.interaction.module.InteractionModule;
import work.slhaf.agent.core.session.SessionManager;
diff --git a/src/main/java/work/slhaf/agent/module/modules/perceive/selector/PerceiveSelector.java b/src/main/java/work/slhaf/agent/module/modules/perceive/selector/PerceiveSelector.java
index 27574b43..0c672427 100644
--- a/src/main/java/work/slhaf/agent/module/modules/perceive/selector/PerceiveSelector.java
+++ b/src/main/java/work/slhaf/agent/module/modules/perceive/selector/PerceiveSelector.java
@@ -3,7 +3,7 @@ package work.slhaf.agent.module.modules.perceive.selector;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.agent.core.cognation.CognationManager;
-import work.slhaf.agent.core.cognation.submodule.perceive.PerceiveCapability;
+import work.slhaf.agent.core.cognation.capability.ability.PerceiveCapability;
import work.slhaf.agent.core.cognation.submodule.perceive.pojo.User;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
import work.slhaf.agent.module.common.PreModule;
diff --git a/src/main/java/work/slhaf/agent/module/modules/perceive/updater/PerceiveUpdater.java b/src/main/java/work/slhaf/agent/module/modules/perceive/updater/PerceiveUpdater.java
index 13d8722e..958ade73 100644
--- a/src/main/java/work/slhaf/agent/module/modules/perceive/updater/PerceiveUpdater.java
+++ b/src/main/java/work/slhaf/agent/module/modules/perceive/updater/PerceiveUpdater.java
@@ -4,9 +4,9 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.agent.common.thread.InteractionThreadPoolExecutor;
-import work.slhaf.agent.core.cognation.CognationCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
import work.slhaf.agent.core.cognation.CognationManager;
-import work.slhaf.agent.core.cognation.submodule.perceive.PerceiveCapability;
+import work.slhaf.agent.core.cognation.capability.ability.PerceiveCapability;
import work.slhaf.agent.core.cognation.submodule.perceive.pojo.User;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
import work.slhaf.agent.core.interaction.module.InteractionModule;
diff --git a/src/main/java/work/slhaf/agent/module/modules/perceive/updater/relation_extractor/RelationExtractor.java b/src/main/java/work/slhaf/agent/module/modules/perceive/updater/relation_extractor/RelationExtractor.java
index 949231a4..8325551e 100644
--- a/src/main/java/work/slhaf/agent/module/modules/perceive/updater/relation_extractor/RelationExtractor.java
+++ b/src/main/java/work/slhaf/agent/module/modules/perceive/updater/relation_extractor/RelationExtractor.java
@@ -4,9 +4,9 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import work.slhaf.agent.common.chat.pojo.ChatResponse;
import work.slhaf.agent.common.chat.pojo.Message;
-import work.slhaf.agent.core.cognation.CognationCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
import work.slhaf.agent.core.cognation.CognationManager;
-import work.slhaf.agent.core.cognation.submodule.perceive.PerceiveCapability;
+import work.slhaf.agent.core.cognation.capability.ability.PerceiveCapability;
import work.slhaf.agent.core.cognation.submodule.perceive.pojo.User;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
import work.slhaf.agent.module.common.Model;
diff --git a/src/main/java/work/slhaf/agent/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java b/src/main/java/work/slhaf/agent/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java
index fd29647c..e714ed69 100644
--- a/src/main/java/work/slhaf/agent/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java
+++ b/src/main/java/work/slhaf/agent/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java
@@ -5,9 +5,9 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.agent.common.chat.pojo.ChatResponse;
-import work.slhaf.agent.core.cognation.CognationCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
import work.slhaf.agent.core.cognation.CognationManager;
-import work.slhaf.agent.core.cognation.submodule.perceive.PerceiveCapability;
+import work.slhaf.agent.core.cognation.capability.ability.PerceiveCapability;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
import work.slhaf.agent.module.common.Model;
import work.slhaf.agent.module.common.ModelConstant;
diff --git a/src/main/java/work/slhaf/agent/module/modules/process/PostprocessExecutor.java b/src/main/java/work/slhaf/agent/module/modules/process/PostprocessExecutor.java
index cd8deb4d..abf7f291 100644
--- a/src/main/java/work/slhaf/agent/module/modules/process/PostprocessExecutor.java
+++ b/src/main/java/work/slhaf/agent/module/modules/process/PostprocessExecutor.java
@@ -2,7 +2,7 @@ package work.slhaf.agent.module.modules.process;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import work.slhaf.agent.core.cognation.CognationCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
import work.slhaf.agent.core.cognation.CognationManager;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
import work.slhaf.agent.core.interaction.module.InteractionModule;
diff --git a/src/main/java/work/slhaf/agent/module/modules/process/PreprocessExecutor.java b/src/main/java/work/slhaf/agent/module/modules/process/PreprocessExecutor.java
index 17e5fe28..cf042ae5 100644
--- a/src/main/java/work/slhaf/agent/module/modules/process/PreprocessExecutor.java
+++ b/src/main/java/work/slhaf/agent/module/modules/process/PreprocessExecutor.java
@@ -2,9 +2,9 @@ package work.slhaf.agent.module.modules.process;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import work.slhaf.agent.core.cognation.CognationCapability;
+import work.slhaf.agent.core.cognation.capability.ability.CognationCapability;
import work.slhaf.agent.core.cognation.CognationManager;
-import work.slhaf.agent.core.cognation.submodule.perceive.PerceiveCapability;
+import work.slhaf.agent.core.cognation.capability.ability.PerceiveCapability;
import work.slhaf.agent.core.cognation.submodule.perceive.pojo.User;
import work.slhaf.agent.core.interaction.data.InteractionInputData;
import work.slhaf.agent.core.interaction.data.context.InteractionContext;
diff --git a/src/test/java/ReflectionTest.java b/src/test/java/ReflectionTest.java
new file mode 100644
index 00000000..4adc632f
--- /dev/null
+++ b/src/test/java/ReflectionTest.java
@@ -0,0 +1,30 @@
+import org.junit.jupiter.api.Test;
+import work.slhaf.agent.core.cognation.capability.CapabilityRegister;
+import work.slhaf.agent.core.cognation.capability.ability.MemoryCapability;
+import work.slhaf.agent.core.cognation.common.pojo.MemoryResult;
+
+import java.lang.reflect.Proxy;
+import java.util.function.Function;
+
+public class ReflectionTest {
+
+ @Test
+ public void test1() {
+ }
+
+ @Test
+ public void proxyTest() {
+ MemoryCapability memory = (MemoryCapability) Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[]{MemoryCapability.class}, (proxy, method, args) -> {
+ if ("selectMemory".equals(method.getName())){
+ System.out.println(111);
+ return new MemoryResult();
+ }
+ return null;
+ });
+ memory.selectMemory("111");
+
+ Function function = s -> {
+ return s.length();
+ };
+ }
+}