refactor(framework): rename AgentRunningModule/SubModule to AbstractAgent* and migrate module inheritance usage

This commit is contained in:
2026-02-19 15:04:30 +08:00
parent 8735660830
commit c7f113b59a
47 changed files with 155 additions and 159 deletions

View File

@@ -1,9 +1,9 @@
package work.slhaf.partner.module.common.module; package work.slhaf.partner.module.common.module;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
public abstract class PostRunningModule extends AgentRunningModule<PartnerRunningFlowContext> { public abstract class PostRunningAbstractAgentModuleAbstract extends AbstractAgentRunningModule<PartnerRunningFlowContext> {
@Override @Override
public final void execute(PartnerRunningFlowContext context) { public final void execute(PartnerRunningFlowContext context) {

View File

@@ -1,7 +1,7 @@
package work.slhaf.partner.module.common.module; package work.slhaf.partner.module.common.module;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import work.slhaf.partner.module.common.entity.AppendPromptData; import work.slhaf.partner.module.common.entity.AppendPromptData;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
@@ -11,7 +11,7 @@ import java.util.Map;
* 前置模块抽象类 * 前置模块抽象类
*/ */
@Slf4j @Slf4j
public abstract class PreRunningModule extends AgentRunningModule<PartnerRunningFlowContext> { public abstract class PreRunningAbstractAgentModuleAbstract extends AbstractAgentRunningModule<PartnerRunningFlowContext> {
private synchronized void setAppendedPrompt(PartnerRunningFlowContext context) { private synchronized void setAppendedPrompt(PartnerRunningFlowContext context) {
AppendPromptData data = new AppendPromptData(); AppendPromptData data = new AppendPromptData();
data.setModuleName(moduleName()); data.setModuleName(moduleName());

View File

@@ -10,7 +10,7 @@ import work.slhaf.partner.core.action.ActionCore;
import work.slhaf.partner.core.action.entity.ExecutableAction; import work.slhaf.partner.core.action.entity.ExecutableAction;
import work.slhaf.partner.core.action.entity.ImmediateExecutableAction; import work.slhaf.partner.core.action.entity.ImmediateExecutableAction;
import work.slhaf.partner.core.action.entity.SchedulableExecutableAction; import work.slhaf.partner.core.action.entity.SchedulableExecutableAction;
import work.slhaf.partner.module.common.module.PostRunningModule; import work.slhaf.partner.module.common.module.PostRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.action.dispatcher.executor.ActionExecutor; import work.slhaf.partner.module.modules.action.dispatcher.executor.ActionExecutor;
import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.ActionExecutorInput; import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.ActionExecutorInput;
import work.slhaf.partner.module.modules.action.dispatcher.scheduler.ActionScheduler; import work.slhaf.partner.module.modules.action.dispatcher.scheduler.ActionScheduler;
@@ -21,7 +21,7 @@ import java.util.Set;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
@AgentModule(name = "action_dispatcher", order = 7) @AgentModule(name = "action_dispatcher", order = 7)
public class ActionDispatcher extends PostRunningModule { public class ActionDispatcher extends PostRunningAbstractAgentModuleAbstract {
@InjectCapability @InjectCapability
private ActionCapability actionCapability; private ActionCapability actionCapability;

View File

@@ -2,8 +2,8 @@ package work.slhaf.partner.module.modules.action.dispatcher.executor;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import lombok.val; import lombok.val;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.CorrectorInput; import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.CorrectorInput;
import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.CorrectorResult; import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.CorrectorResult;
@@ -12,7 +12,7 @@ import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.Corre
* 负责在单组行动执行后,根据行动意图与结果检查后续行动是否符合目的,必要时直接调整行动链,或发起自对话请求进行干预 * 负责在单组行动执行后,根据行动意图与结果检查后续行动是否符合目的,必要时直接调整行动链,或发起自对话请求进行干预
*/ */
@AgentSubModule @AgentSubModule
public class ActionCorrector extends AgentRunningSubModule<CorrectorInput, CorrectorResult> implements ActivateModel { public class ActionCorrector extends AbstractAgentSubModule<CorrectorInput, CorrectorResult> implements ActivateModel {
@Override @Override
public CorrectorResult execute(CorrectorInput input) { public CorrectorResult execute(CorrectorInput input) {

View File

@@ -3,7 +3,7 @@ package work.slhaf.partner.module.modules.action.dispatcher.executor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import lombok.val; import lombok.val;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule; import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule;
@@ -28,7 +28,7 @@ import java.util.concurrent.atomic.AtomicInteger;
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class ActionExecutor extends AgentRunningSubModule<ActionExecutorInput, Void> { public class ActionExecutor extends AbstractAgentSubModule<ActionExecutorInput, Void> {
@InjectCapability @InjectCapability
private ActionCapability actionCapability; private ActionCapability actionCapability;

View File

@@ -6,8 +6,8 @@ import com.alibaba.fastjson2.TypeReference;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule; import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule;
@@ -45,7 +45,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*/ */
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class ActionRepairer extends AgentRunningSubModule<RepairerInput, RepairerResult> implements ActivateModel { public class ActionRepairer extends AbstractAgentSubModule<RepairerInput, RepairerResult> implements ActivateModel {
@InjectCapability @InjectCapability
private ActionCapability actionCapability; private ActionCapability actionCapability;

View File

@@ -3,8 +3,8 @@ package work.slhaf.partner.module.modules.action.dispatcher.executor;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import lombok.val; import lombok.val;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
@@ -20,7 +20,7 @@ import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.Gener
* 负责依据输入内容生成可执行的动态行动单元,并选择是否持久化至 SandboxRunner 容器内 * 负责依据输入内容生成可执行的动态行动单元,并选择是否持久化至 SandboxRunner 容器内
*/ */
@AgentSubModule @AgentSubModule
public class DynamicActionGenerator extends AgentRunningSubModule<GeneratorInput, GeneratorResult> public class DynamicActionGenerator extends AbstractAgentSubModule<GeneratorInput, GeneratorResult>
implements ActivateModel { implements ActivateModel {
@InjectCapability @InjectCapability

View File

@@ -3,8 +3,8 @@ package work.slhaf.partner.module.modules.action.dispatcher.executor;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.core.action.entity.MetaActionInfo; import work.slhaf.partner.core.action.entity.MetaActionInfo;
@@ -20,7 +20,7 @@ import java.util.List;
*/ */
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class ParamsExtractor extends AgentRunningSubModule<ExtractorInput, ExtractorResult> implements ActivateModel { public class ParamsExtractor extends AbstractAgentSubModule<ExtractorInput, ExtractorResult> implements ActivateModel {
@Override @Override
public ExtractorResult execute(ExtractorInput input) { public ExtractorResult execute(ExtractorInput input) {

View File

@@ -12,7 +12,7 @@ import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule
import work.slhaf.partner.api.agent.factory.module.annotation.Init import work.slhaf.partner.api.agent.factory.module.annotation.Init
import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule
@@ -31,7 +31,7 @@ import java.util.stream.Collectors
import kotlin.jvm.optionals.getOrNull import kotlin.jvm.optionals.getOrNull
@AgentSubModule @AgentSubModule
class ActionScheduler : AgentRunningSubModule<Set<Schedulable>, Void>() { class ActionScheduler : AbstractAgentSubModule<Set<Schedulable>, Void>() {
@InjectCapability @InjectCapability
private lateinit var actionCapability: ActionCapability private lateinit var actionCapability: ActionCapability

View File

@@ -13,7 +13,7 @@ import work.slhaf.partner.core.action.entity.ExecutableAction;
import work.slhaf.partner.core.action.entity.PhaserRecord; import work.slhaf.partner.core.action.entity.PhaserRecord;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.core.memory.MemoryCapability;
import work.slhaf.partner.module.common.module.PreRunningModule; import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.action.interventor.entity.InterventionType; import work.slhaf.partner.module.modules.action.interventor.entity.InterventionType;
import work.slhaf.partner.module.modules.action.interventor.entity.MetaIntervention; import work.slhaf.partner.module.modules.action.interventor.entity.MetaIntervention;
import work.slhaf.partner.module.modules.action.interventor.evaluator.InterventionEvaluator; import work.slhaf.partner.module.modules.action.interventor.evaluator.InterventionEvaluator;
@@ -35,7 +35,7 @@ import java.util.stream.Stream;
* 负责识别潜在的行动干预信息,作用于正在进行或已存在的行动池中内容 * 负责识别潜在的行动干预信息,作用于正在进行或已存在的行动池中内容
*/ */
@AgentModule(name = "action_identifier", order = 2) @AgentModule(name = "action_identifier", order = 2)
public class ActionInterventor extends PreRunningModule implements ActivateModel { public class ActionInterventor extends PreRunningAbstractAgentModuleAbstract implements ActivateModel {
@InjectModule @InjectModule
private InterventionRecognizer interventionRecognizer; private InterventionRecognizer interventionRecognizer;

View File

@@ -3,8 +3,8 @@ package work.slhaf.partner.module.modules.action.interventor.evaluator;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.api.chat.pojo.Message;
@@ -23,7 +23,7 @@ import java.util.concurrent.ExecutorService;
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class InterventionEvaluator extends AgentRunningSubModule<EvaluatorInput, EvaluatorResult> public class InterventionEvaluator extends AbstractAgentSubModule<EvaluatorInput, EvaluatorResult>
implements ActivateModel { implements ActivateModel {
@InjectCapability @InjectCapability

View File

@@ -3,8 +3,8 @@ package work.slhaf.partner.module.modules.action.interventor.recognizer;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.core.action.ActionCapability;
@@ -21,7 +21,7 @@ import java.util.concurrent.ExecutorService;
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class InterventionRecognizer extends AgentRunningSubModule<RecognizerInput, RecognizerResult> implements ActivateModel { public class InterventionRecognizer extends AbstractAgentSubModule<RecognizerInput, RecognizerResult> implements ActivateModel {
@InjectCapability @InjectCapability
private ActionCapability actionCapability; private ActionCapability actionCapability;

View File

@@ -17,7 +17,7 @@ import work.slhaf.partner.core.action.entity.cache.CacheAdjustMetaData;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.core.memory.MemoryCapability;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.module.common.module.PreRunningModule; import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.action.planner.confirmer.ActionConfirmer; import work.slhaf.partner.module.modules.action.planner.confirmer.ActionConfirmer;
import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerInput; import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerInput;
import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerResult; import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerResult;
@@ -39,7 +39,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
*/ */
@Slf4j @Slf4j
@AgentModule(name = "action_planner", order = 2) @AgentModule(name = "action_planner", order = 2)
public class ActionPlanner extends PreRunningModule { public class ActionPlanner extends PreRunningAbstractAgentModuleAbstract {
@InjectCapability @InjectCapability
private CognationCapability cognationCapability; private CognationCapability cognationCapability;

View File

@@ -4,8 +4,8 @@ import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.api.chat.pojo.Message;
@@ -23,7 +23,7 @@ import static work.slhaf.partner.common.util.ExtractUtil.extractJson;
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class ActionConfirmer extends AgentRunningSubModule<ConfirmerInput, ConfirmerResult> implements ActivateModel { public class ActionConfirmer extends AbstractAgentSubModule<ConfirmerInput, ConfirmerResult> implements ActivateModel {
@InjectCapability @InjectCapability
private ActionCapability actionCapability; private ActionCapability actionCapability;

View File

@@ -4,8 +4,8 @@ import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
@@ -23,7 +23,7 @@ import java.util.Map;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
@AgentSubModule @AgentSubModule
public class ActionEvaluator extends AgentRunningSubModule<EvaluatorInput, List<EvaluatorResult>> implements ActivateModel { public class ActionEvaluator extends AbstractAgentSubModule<EvaluatorInput, List<EvaluatorResult>> implements ActivateModel {
@InjectCapability @InjectCapability
private ActionCapability actionCapability; private ActionCapability actionCapability;

View File

@@ -3,8 +3,8 @@ package work.slhaf.partner.module.modules.action.planner.extractor;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.core.action.ActionCapability;
@@ -15,7 +15,7 @@ import java.util.List;
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class ActionExtractor extends AgentRunningSubModule<ExtractorInput, ExtractorResult> implements ActivateModel { public class ActionExtractor extends AbstractAgentSubModule<ExtractorInput, ExtractorResult> implements ActivateModel {
@InjectCapability @InjectCapability
private ActionCapability actionCapability; private ActionCapability actionCapability;

View File

@@ -5,8 +5,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.factory.module.annotation.CoreModule; import work.slhaf.partner.api.agent.factory.module.annotation.CoreModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.chat.constant.ChatConstant; import work.slhaf.partner.api.chat.constant.ChatConstant;
@@ -29,7 +29,7 @@ import static work.slhaf.partner.common.util.ExtractUtil.extractJson;
@Data @Data
@Slf4j @Slf4j
@CoreModule @CoreModule
public class CoreModel extends AgentRunningModule<PartnerRunningFlowContext> implements ActivateModel { public class CoreModel extends AbstractAgentRunningModule<PartnerRunningFlowContext> implements ActivateModel {
@InjectCapability @InjectCapability
private CognationCapability cognationCapability; private CognationCapability cognationCapability;

View File

@@ -14,7 +14,7 @@ import work.slhaf.partner.core.memory.exception.UnExistedTopicException;
import work.slhaf.partner.core.memory.pojo.EvaluatedSlice; import work.slhaf.partner.core.memory.pojo.EvaluatedSlice;
import work.slhaf.partner.core.memory.pojo.MemoryResult; import work.slhaf.partner.core.memory.pojo.MemoryResult;
import work.slhaf.partner.core.memory.pojo.MemorySlice; import work.slhaf.partner.core.memory.pojo.MemorySlice;
import work.slhaf.partner.module.common.module.PreRunningModule; import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.memory.selector.evaluator.SliceSelectEvaluator; import work.slhaf.partner.module.modules.memory.selector.evaluator.SliceSelectEvaluator;
import work.slhaf.partner.module.modules.memory.selector.evaluator.entity.EvaluatorInput; import work.slhaf.partner.module.modules.memory.selector.evaluator.entity.EvaluatorInput;
import work.slhaf.partner.module.modules.memory.selector.extractor.MemorySelectExtractor; import work.slhaf.partner.module.modules.memory.selector.extractor.MemorySelectExtractor;
@@ -29,7 +29,7 @@ import java.util.*;
@Data @Data
@Slf4j @Slf4j
@AgentModule(name = "memory_selector", order = 2) @AgentModule(name = "memory_selector", order = 2)
public class MemorySelector extends PreRunningModule { public class MemorySelector extends PreRunningAbstractAgentModuleAbstract {
@InjectCapability @InjectCapability
private MemoryCapability memoryCapability; private MemoryCapability memoryCapability;

View File

@@ -6,8 +6,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor; import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
@@ -32,7 +32,7 @@ import static work.slhaf.partner.common.util.ExtractUtil.extractJson;
@Data @Data
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class SliceSelectEvaluator extends AgentRunningSubModule<EvaluatorInput, List<EvaluatedSlice>> implements ActivateModel { public class SliceSelectEvaluator extends AbstractAgentSubModule<EvaluatorInput, List<EvaluatedSlice>> implements ActivateModel {
private InteractionThreadPoolExecutor executor; private InteractionThreadPoolExecutor executor;

View File

@@ -6,8 +6,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.api.chat.pojo.Message;
import work.slhaf.partner.api.chat.pojo.MetaMessage; import work.slhaf.partner.api.chat.pojo.MetaMessage;
@@ -29,7 +29,7 @@ import static work.slhaf.partner.common.util.ExtractUtil.fixTopicPath;
@Data @Data
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class MemorySelectExtractor extends AgentRunningSubModule<PartnerRunningFlowContext, ExtractorResult> public class MemorySelectExtractor extends AbstractAgentSubModule<PartnerRunningFlowContext, ExtractorResult>
implements ActivateModel { implements ActivateModel {
@InjectCapability @InjectCapability

View File

@@ -15,7 +15,7 @@ import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.core.memory.MemoryCapability;
import work.slhaf.partner.core.memory.pojo.MemorySlice; import work.slhaf.partner.core.memory.pojo.MemorySlice;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.module.common.module.PostRunningModule; import work.slhaf.partner.module.common.module.PostRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.memory.updater.summarizer.MultiSummarizer; import work.slhaf.partner.module.modules.memory.updater.summarizer.MultiSummarizer;
import work.slhaf.partner.module.modules.memory.updater.summarizer.SingleSummarizer; import work.slhaf.partner.module.modules.memory.updater.summarizer.SingleSummarizer;
import work.slhaf.partner.module.modules.memory.updater.summarizer.TotalSummarizer; import work.slhaf.partner.module.modules.memory.updater.summarizer.TotalSummarizer;
@@ -34,7 +34,7 @@ import static work.slhaf.partner.common.util.ExtractUtil.extractUserId;
@Data @Data
@Slf4j @Slf4j
@AgentModule(name = "memory_updater", order = 7) @AgentModule(name = "memory_updater", order = 7)
public class MemoryUpdater extends PostRunningModule { public class MemoryUpdater extends PostRunningAbstractAgentModuleAbstract {
private static final long SCHEDULED_UPDATE_INTERVAL = 10 * 1000; private static final long SCHEDULED_UPDATE_INTERVAL = 10 * 1000;
private static final long UPDATE_TRIGGER_INTERVAL = 60 * 60 * 1000; private static final long UPDATE_TRIGGER_INTERVAL = 60 * 60 * 1000;

View File

@@ -5,8 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
@@ -23,7 +23,7 @@ import static work.slhaf.partner.common.util.ExtractUtil.fixTopicPath;
@Data @Data
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class MultiSummarizer extends AgentRunningSubModule<SummarizeInput, SummarizeResult> implements ActivateModel { public class MultiSummarizer extends AbstractAgentSubModule<SummarizeInput, SummarizeResult> implements ActivateModel {
@Init @Init
public void init() { public void init() {

View File

@@ -4,8 +4,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.chat.constant.ChatConstant; import work.slhaf.partner.api.chat.constant.ChatConstant;
@@ -23,7 +23,7 @@ import java.util.concurrent.atomic.AtomicInteger;
@Slf4j @Slf4j
@Data @Data
@AgentSubModule @AgentSubModule
public class SingleSummarizer extends AgentRunningSubModule<List<Message>,Void> implements ActivateModel { public class SingleSummarizer extends AbstractAgentSubModule<List<Message>, Void> implements ActivateModel {
private InteractionThreadPoolExecutor executor; private InteractionThreadPoolExecutor executor;

View File

@@ -5,8 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
@@ -19,7 +19,7 @@ import static work.slhaf.partner.common.util.ExtractUtil.extractJson;
@Data @Data
@Slf4j @Slf4j
@AgentSubModule @AgentSubModule
public class TotalSummarizer extends AgentRunningSubModule<HashMap<String, String>, String> implements ActivateModel { public class TotalSummarizer extends AbstractAgentSubModule<HashMap<String, String>, String> implements ActivateModel {
@Init @Init
public void init() { public void init() {

View File

@@ -6,7 +6,7 @@ import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapabili
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.core.perceive.pojo.User; import work.slhaf.partner.core.perceive.pojo.User;
import work.slhaf.partner.module.common.module.PreRunningModule; import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
import java.util.HashMap; import java.util.HashMap;
@@ -15,7 +15,7 @@ import java.util.Map;
@Slf4j @Slf4j
@Setter @Setter
@AgentModule(name = "perceive_selector",order = 2) @AgentModule(name = "perceive_selector",order = 2)
public class PerceiveSelector extends PreRunningModule { public class PerceiveSelector extends PreRunningAbstractAgentModuleAbstract {
@InjectCapability @InjectCapability
private PerceiveCapability perceiveCapability; private PerceiveCapability perceiveCapability;

View File

@@ -11,7 +11,7 @@ import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.core.perceive.pojo.User; import work.slhaf.partner.core.perceive.pojo.User;
import work.slhaf.partner.module.common.module.PostRunningModule; import work.slhaf.partner.module.common.module.PostRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.RelationExtractor; import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.RelationExtractor;
import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.entity.RelationExtractResult; import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.entity.RelationExtractResult;
import work.slhaf.partner.module.modules.perceive.updater.static_extractor.StaticMemoryExtractor; import work.slhaf.partner.module.modules.perceive.updater.static_extractor.StaticMemoryExtractor;
@@ -30,7 +30,7 @@ import java.util.concurrent.locks.ReentrantLock;
@Slf4j @Slf4j
@Data @Data
@AgentModule(name = "perceive_updater", order = 7) @AgentModule(name = "perceive_updater", order = 7)
public class PerceiveUpdater extends PostRunningModule { public class PerceiveUpdater extends PostRunningAbstractAgentModuleAbstract {
@InjectCapability @InjectCapability
private PerceiveCapability perceiveCapability; private PerceiveCapability perceiveCapability;

View File

@@ -4,8 +4,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.api.chat.pojo.Message;
@@ -23,7 +23,7 @@ import java.util.List;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@AgentSubModule @AgentSubModule
public class RelationExtractor extends AgentRunningSubModule<PartnerRunningFlowContext, RelationExtractResult> implements ActivateModel { public class RelationExtractor extends AbstractAgentSubModule<PartnerRunningFlowContext, RelationExtractResult> implements ActivateModel {
@InjectCapability @InjectCapability
private CognationCapability cognationCapability; private CognationCapability cognationCapability;

View File

@@ -5,8 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse; import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
@@ -19,7 +19,7 @@ import java.util.HashMap;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@AgentSubModule @AgentSubModule
public class StaticMemoryExtractor extends AgentRunningSubModule<PartnerRunningFlowContext, HashMap<String, String>> implements ActivateModel { public class StaticMemoryExtractor extends AbstractAgentSubModule<PartnerRunningFlowContext, HashMap<String, String>> implements ActivateModel {
@InjectCapability @InjectCapability
private CognationCapability cognationCapability; private CognationCapability cognationCapability;

View File

@@ -4,7 +4,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
@@ -13,7 +13,7 @@ import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowCon
@Slf4j @Slf4j
@Data @Data
@AgentModule(name = "postprocess_executor", order = 6) @AgentModule(name = "postprocess_executor", order = 6)
public class PostprocessExecutor extends AgentRunningModule<PartnerRunningFlowContext> { public class PostprocessExecutor extends AbstractAgentRunningModule<PartnerRunningFlowContext> {
private static final int POST_PROCESS_TRIGGER_ROLL_LIMIT = 36; private static final int POST_PROCESS_TRIGGER_ROLL_LIMIT = 36;

View File

@@ -8,7 +8,7 @@ import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.core.perceive.pojo.User; import work.slhaf.partner.core.perceive.pojo.User;
import work.slhaf.partner.module.common.module.PreRunningModule; import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
import work.slhaf.partner.runtime.interaction.data.context.subcontext.CoreContext; import work.slhaf.partner.runtime.interaction.data.context.subcontext.CoreContext;
@@ -21,7 +21,7 @@ import java.util.Map;
@Data @Data
@Slf4j @Slf4j
@AgentModule(name = "preprocess_executor", order = 1) @AgentModule(name = "preprocess_executor", order = 1)
public class PreprocessExecutor extends PreRunningModule { public class PreprocessExecutor extends PreRunningAbstractAgentModuleAbstract {
@InjectCapability @InjectCapability
private CognationCapability cognationCapability; private CognationCapability cognationCapability;

View File

@@ -4,9 +4,9 @@ import cn.hutool.core.util.ClassUtil;
import org.reflections.Reflections; import org.reflections.Reflections;
import work.slhaf.partner.api.agent.factory.AgentBaseFactory; import work.slhaf.partner.api.agent.factory.AgentBaseFactory;
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext; import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AfterExecute; import work.slhaf.partner.api.agent.factory.module.annotation.AfterExecute;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
@@ -31,7 +31,7 @@ import static work.slhaf.partner.api.agent.util.AgentUtil.getMethodAnnotationTyp
* <ol> * <ol>
* <li> * <li>
* <p>{@link ModuleCheckFactory#annotationAbstractCheck(Set, Class)}</p> * <p>{@link ModuleCheckFactory#annotationAbstractCheck(Set, Class)}</p>
* 所有添加了 {@link AgentModule} 注解的类都将作为Agent的执行模块为规范模块入口都必须实现抽象类: {@link AgentRunningModule}; {@link AgentSubModule} 注解所在类则必须实现 {@link AgentRunningSubModule} * 所有添加了 {@link AgentModule} 注解的类都将作为Agent的执行模块为规范模块入口都必须实现抽象类: {@link AbstractAgentRunningModule}; {@link AgentSubModule} 注解所在类则必须实现 {@link AbstractAgentSubModule}
* </li> * </li>
* <li> * <li>
* <p>{@link ModuleCheckFactory#moduleConstructorsCheck(Set)}</p> * <p>{@link ModuleCheckFactory#moduleConstructorsCheck(Set)}</p>
@@ -60,8 +60,8 @@ public class ModuleCheckFactory extends AgentBaseFactory {
ExtendedModules extendedModules = getExtendedModules(); ExtendedModules extendedModules = getExtendedModules();
checkIfClassCorresponds(annotatedModules, extendedModules); checkIfClassCorresponds(annotatedModules, extendedModules);
//检查注解AgentModule或AgentSubModule所在类是否继承了对应的抽象类 //检查注解AgentModule或AgentSubModule所在类是否继承了对应的抽象类
annotationAbstractCheck(annotatedModules.moduleTypes(), AgentRunningModule.class); annotationAbstractCheck(annotatedModules.moduleTypes(), AbstractAgentRunningModule.class);
annotationAbstractCheck(annotatedModules.subModuleTypes(), AgentRunningSubModule.class); annotationAbstractCheck(annotatedModules.subModuleTypes(), AbstractAgentSubModule.class);
//检查AgentModule是否具备无参构造方法 //检查AgentModule是否具备无参构造方法
moduleConstructorsCheck(annotatedModules.moduleTypes()); moduleConstructorsCheck(annotatedModules.moduleTypes());
moduleConstructorsCheck(annotatedModules.subModuleTypes()); moduleConstructorsCheck(annotatedModules.subModuleTypes());
@@ -72,11 +72,11 @@ public class ModuleCheckFactory extends AgentBaseFactory {
} }
private ExtendedModules getExtendedModules() { private ExtendedModules getExtendedModules() {
Set<Class<?>> moduleTypes = reflections.getSubTypesOf(AgentRunningModule.class) Set<Class<?>> moduleTypes = reflections.getSubTypesOf(AbstractAgentRunningModule.class)
.stream() .stream()
.filter(ClassUtil::isNormalClass) .filter(ClassUtil::isNormalClass)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
Set<Class<?>> subModuleTypes = reflections.getSubTypesOf(AgentRunningSubModule.class) Set<Class<?>> subModuleTypes = reflections.getSubTypesOf(AbstractAgentSubModule.class)
.stream() .stream()
.filter(ClassUtil::isNormalClass) .filter(ClassUtil::isNormalClass)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
@@ -156,10 +156,10 @@ public class ModuleCheckFactory extends AgentBaseFactory {
private void checkLocation(Set<Class<?>> types) { private void checkLocation(Set<Class<?>> types) {
for (Class<?> type : types) { for (Class<?> type : types) {
if (AgentRunningModule.class.isAssignableFrom(type)) { if (AbstractAgentRunningModule.class.isAssignableFrom(type)) {
continue; continue;
} }
if (AgentRunningSubModule.class.isAssignableFrom(type)) { if (AbstractAgentSubModule.class.isAssignableFrom(type)) {
continue; continue;
} }
if (ActivateModel.class.isAssignableFrom(type)) { if (ActivateModel.class.isAssignableFrom(type)) {

View File

@@ -4,9 +4,9 @@ import work.slhaf.partner.api.agent.factory.AgentBaseFactory;
import work.slhaf.partner.api.agent.factory.AgentRegisterFactory; import work.slhaf.partner.api.agent.factory.AgentRegisterFactory;
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext; import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
import work.slhaf.partner.api.agent.factory.context.ModuleFactoryContext; import work.slhaf.partner.api.agent.factory.context.ModuleFactoryContext;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.Module; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.agent.factory.module.exception.ModuleInitHookExecuteFailedException; import work.slhaf.partner.api.agent.factory.module.exception.ModuleInitHookExecuteFailedException;
import work.slhaf.partner.api.agent.factory.module.pojo.BaseMetaModule; import work.slhaf.partner.api.agent.factory.module.pojo.BaseMetaModule;
@@ -59,12 +59,12 @@ public class ModuleInitHookExecuteFactory extends AgentBaseFactory {
protected void run() { protected void run() {
//遍历模块列表,并向上查找@Init注解 //遍历模块列表,并向上查找@Init注解
for (MetaSubModule metaSubModule : subModuleList) { for (MetaSubModule metaSubModule : subModuleList) {
List<MetaMethod> initHookMethods = collectInitHookMethods(metaSubModule.getClazz(),AgentRunningModule.class); List<MetaMethod> initHookMethods = collectInitHookMethods(metaSubModule.getClazz(), AbstractAgentRunningModule.class);
proceedInitMethods(metaSubModule, initHookMethods); proceedInitMethods(metaSubModule, initHookMethods);
} }
for (MetaModule metaModule : moduleList) { for (MetaModule metaModule : moduleList) {
List<MetaMethod> initHookMethods = collectInitHookMethods(metaModule.getClazz(), AgentRunningSubModule.class); List<MetaMethod> initHookMethods = collectInitHookMethods(metaModule.getClazz(), AbstractAgentSubModule.class);
proceedInitMethods(metaModule, initHookMethods); proceedInitMethods(metaModule, initHookMethods);
} }
} }
@@ -79,7 +79,7 @@ public class ModuleInitHookExecuteFactory extends AgentBaseFactory {
} }
} }
private List<MetaMethod> collectInitHookMethods(Class<?> clazz, Class<? extends Module> target) { private List<MetaMethod> collectInitHookMethods(Class<?> clazz, Class<? extends AbstractAgentModule> target) {
Set<Class<?>> classes = collectExtendedClasses(clazz, target); Set<Class<?>> classes = collectExtendedClasses(clazz, target);
return classes.stream() return classes.stream()
.map(Class::getDeclaredMethods) .map(Class::getDeclaredMethods)

View File

@@ -10,9 +10,9 @@ import work.slhaf.partner.api.agent.factory.capability.CapabilityCheckFactory;
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext; import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
import work.slhaf.partner.api.agent.factory.context.CapabilityFactoryContext; import work.slhaf.partner.api.agent.factory.context.CapabilityFactoryContext;
import work.slhaf.partner.api.agent.factory.context.ModuleFactoryContext; import work.slhaf.partner.api.agent.factory.context.ModuleFactoryContext;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.Module; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AfterExecute; import work.slhaf.partner.api.agent.factory.module.annotation.AfterExecute;
import work.slhaf.partner.api.agent.factory.module.annotation.BeforeExecute; import work.slhaf.partner.api.agent.factory.module.annotation.BeforeExecute;
import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule; import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule;
@@ -96,8 +96,8 @@ public class ModuleProxyFactory extends AgentBaseFactory {
} }
private void createProxiedInstances() { private void createProxiedInstances() {
generateModuleProxy(moduleList, AgentRunningModule.class); generateModuleProxy(moduleList, AbstractAgentRunningModule.class);
generateModuleProxy(subModuleList, AgentRunningSubModule.class); generateModuleProxy(subModuleList, AbstractAgentSubModule.class);
updateInstanceMap(moduleInstances, moduleList); updateInstanceMap(moduleInstances, moduleList);
updateInstanceMap(subModuleInstances, subModuleList); updateInstanceMap(subModuleInstances, subModuleList);
updateCapabilityHolderInstances(); updateCapabilityHolderInstances();
@@ -115,7 +115,7 @@ public class ModuleProxyFactory extends AgentBaseFactory {
} }
private void generateModuleProxy(List<? extends BaseMetaModule> list, Class<? extends Module> overrideSource) { private void generateModuleProxy(List<? extends BaseMetaModule> list, Class<? extends AbstractAgentModule> overrideSource) {
for (BaseMetaModule module : list) { for (BaseMetaModule module : list) {
Class<?> clazz = module.getClazz(); Class<?> clazz = module.getClazz();
try { try {
@@ -128,10 +128,10 @@ public class ModuleProxyFactory extends AgentBaseFactory {
} }
} }
private void generateProxiedInstances(MethodsListRecord record, BaseMetaModule module, Class<? extends Module> overrideSource) { private void generateProxiedInstances(MethodsListRecord record, BaseMetaModule module, Class<? extends AbstractAgentModule> overrideSource) {
try { try {
Class<? extends Module> clazz = module.getClazz(); Class<? extends AbstractAgentModule> clazz = module.getClazz();
Class<? extends Module> proxyClass = new ByteBuddy() Class<? extends AbstractAgentModule> proxyClass = new ByteBuddy()
.subclass(clazz) .subclass(clazz)
.method(ElementMatchers.isOverriddenFrom(overrideSource)) .method(ElementMatchers.isOverriddenFrom(overrideSource))
.intercept(MethodDelegation.to(new ModuleProxyInterceptor(record.post, record.pre))) .intercept(MethodDelegation.to(new ModuleProxyInterceptor(record.post, record.pre)))
@@ -159,7 +159,7 @@ public class ModuleProxyFactory extends AgentBaseFactory {
//获取该类本身的hook逻辑 //获取该类本身的hook逻辑
collectHookMethods(post, pre, clazz); collectHookMethods(post, pre, clazz);
//获取它所继承、实现的抽象类或接口, 以Module为终点收集继承链上所有父类和接口 //获取它所继承、实现的抽象类或接口, 以Module为终点收集继承链上所有父类和接口
Set<Class<?>> classes = collectExtendedClasses(clazz, Module.class); Set<Class<?>> classes = collectExtendedClasses(clazz, AbstractAgentModule.class);
//获取这些类中的hook逻辑 //获取这些类中的hook逻辑
collectHookMethods(post, pre, classes); collectHookMethods(post, pre, classes);
return new MethodsListRecord(post, pre); return new MethodsListRecord(post, pre);

View File

@@ -5,8 +5,8 @@ import org.reflections.Reflections;
import work.slhaf.partner.api.agent.factory.AgentBaseFactory; import work.slhaf.partner.api.agent.factory.AgentBaseFactory;
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext; import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
import work.slhaf.partner.api.agent.factory.context.ModuleFactoryContext; import work.slhaf.partner.api.agent.factory.context.ModuleFactoryContext;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
import work.slhaf.partner.api.agent.factory.module.annotation.CoreModule; import work.slhaf.partner.api.agent.factory.module.annotation.CoreModule;
@@ -60,34 +60,7 @@ public class ModuleRegisterFactory extends AgentBaseFactory {
setSubModuleList(); setSubModuleList();
} }
private void setSubModuleList() { private static MetaModule getMetaModule(Class<? extends AbstractAgentRunningModule> clazz) {
Set<Class<?>> subModules = reflections.getTypesAnnotatedWith(AgentSubModule.class);
for (Class<?> subModule : subModules) {
if (!ClassUtil.isNormalClass(subModule)) {
continue;
}
Class<? extends AgentRunningSubModule> clazz = subModule.asSubclass(AgentRunningSubModule.class);
MetaSubModule metaSubModule = new MetaSubModule();
metaSubModule.setClazz(clazz);
subModuleList.add(metaSubModule);
}
}
private void setModuleList() {
//反射扫描获取@AgentModule所在类, 该部分为Agent流程执行模块
Set<Class<?>> modules = reflections.getTypesAnnotatedWith(AgentModule.class);
for (Class<?> module : modules) {
if (!ClassUtil.isNormalClass(module)) {
continue;
}
Class<? extends AgentRunningModule> clazz = module.asSubclass(AgentRunningModule.class);
MetaModule metaModule = getMetaModule(clazz);
moduleList.add(metaModule);
}
moduleList.sort(Comparator.comparing(MetaModule::getOrder));
}
private static MetaModule getMetaModule(Class<? extends AgentRunningModule> clazz) {
MetaModule metaModule = new MetaModule(); MetaModule metaModule = new MetaModule();
AgentModule agentModule; AgentModule agentModule;
if (clazz.isAnnotationPresent(CoreModule.class)){ if (clazz.isAnnotationPresent(CoreModule.class)){
@@ -101,4 +74,31 @@ public class ModuleRegisterFactory extends AgentBaseFactory {
return metaModule; return metaModule;
} }
private void setSubModuleList() {
Set<Class<?>> subModules = reflections.getTypesAnnotatedWith(AgentSubModule.class);
for (Class<?> subModule : subModules) {
if (!ClassUtil.isNormalClass(subModule)) {
continue;
}
Class<? extends AbstractAgentSubModule> clazz = subModule.asSubclass(AbstractAgentSubModule.class);
MetaSubModule metaSubModule = new MetaSubModule();
metaSubModule.setClazz(clazz);
subModuleList.add(metaSubModule);
}
}
private void setModuleList() {
//反射扫描获取@AgentModule所在类, 该部分为Agent流程执行模块
Set<Class<?>> modules = reflections.getTypesAnnotatedWith(AgentModule.class);
for (Class<?> module : modules) {
if (!ClassUtil.isNormalClass(module)) {
continue;
}
Class<? extends AbstractAgentRunningModule> clazz = module.asSubclass(AbstractAgentRunningModule.class);
MetaModule metaModule = getMetaModule(clazz);
moduleList.add(metaModule);
}
moduleList.sort(Comparator.comparing(MetaModule::getOrder));
}
} }

View File

@@ -7,7 +7,7 @@ import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.Model;
/** /**
* 模块基类 * 模块基类
*/ */
public abstract class Module { public abstract class AbstractAgentModule {
@Getter @Getter
@Setter @Setter

View File

@@ -11,7 +11,7 @@ import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowC
* 流程执行模块基类 * 流程执行模块基类
*/ */
@Slf4j @Slf4j
public abstract class AgentRunningModule<C extends RunningFlowContext> extends Module { public abstract class AbstractAgentRunningModule<C extends RunningFlowContext> extends AbstractAgentModule {
public abstract void execute(C context); public abstract void execute(C context);
@BeforeExecute @BeforeExecute
@@ -30,7 +30,7 @@ public abstract class AgentRunningModule<C extends RunningFlowContext> extends M
} else if (this.getClass().isAnnotationPresent(CoreModule.class)) { } else if (this.getClass().isAnnotationPresent(CoreModule.class)) {
return CoreModule.class.getAnnotation(AgentModule.class).name(); return CoreModule.class.getAnnotation(AgentModule.class).name();
}else { }else {
return "Unknown Module"; return "Unknown AbstractAgentModule";
} }
} }
} }

View File

@@ -0,0 +1,11 @@
package work.slhaf.partner.api.agent.factory.module.abstracts;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public abstract class AbstractAgentSubModule<I, O> extends AbstractAgentModule {
public abstract O execute(I data);
}

View File

@@ -80,11 +80,11 @@ public interface ActivateModel {
* @return 持有的model实例 * @return 持有的model实例
*/ */
default Model getModel() { default Model getModel() {
return ((Module) this).getModel(); return ((AbstractAgentModule) this).getModel();
} }
default void setModel(Model model) { default void setModel(Model model) {
((Module) this).setModel(model); ((AbstractAgentModule) this).setModel(model);
} }
/** /**

View File

@@ -1,15 +0,0 @@
package work.slhaf.partner.api.agent.factory.module.abstracts;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.module.annotation.AfterExecute;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
import work.slhaf.partner.api.agent.factory.module.annotation.BeforeExecute;
import work.slhaf.partner.api.agent.factory.module.annotation.CoreModule;
@Slf4j
public abstract class AgentRunningSubModule<I, O> extends Module {
public abstract O execute(I data);
}

View File

@@ -10,7 +10,7 @@ import java.lang.annotation.Target;
* 仅适用于以下类中的方法: * 仅适用于以下类中的方法:
* 1. <code>@AgentModule</code>注解所在类 * 1. <code>@AgentModule</code>注解所在类
* 2. <code>ActivateModel</code>子类 * 2. <code>ActivateModel</code>子类
* 3. <code>AgentRunningModule</code>或者<code>AgentRunningSubModule</code>子类 * 3. <code>AbstractAgentRunningModule</code>或者<code>AbstractAgentSubModule</code>子类
*/ */
@Target(ElementType.METHOD) @Target(ElementType.METHOD)

View File

@@ -9,7 +9,7 @@ import java.lang.annotation.Target;
* 仅适用于以下类中的方法: * 仅适用于以下类中的方法:
* 1. <code>@AgentModule</code>注解所在类 * 1. <code>@AgentModule</code>注解所在类
* 2. <code>ActivateModel</code>子类 * 2. <code>ActivateModel</code>子类
* 3. <code>AgentRunningModule</code>或者<code>AgentRunningSubModule</code>子类 * 3. <code>AbstractAgentRunningModule</code>或者<code>AbstractAgentSubModule</code>子类
*/ */
@Target(ElementType.METHOD) @Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)

View File

@@ -1,10 +1,10 @@
package work.slhaf.partner.api.agent.factory.module.pojo; package work.slhaf.partner.api.agent.factory.module.pojo;
import lombok.Data; import lombok.Data;
import work.slhaf.partner.api.agent.factory.module.abstracts.Module; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentModule;
@Data @Data
public abstract class BaseMetaModule <C extends Module> { public abstract class BaseMetaModule<C extends AbstractAgentModule> {
private Class<? extends C> clazz; private Class<? extends C> clazz;
private C instance; private C instance;
} }

View File

@@ -2,11 +2,11 @@ package work.slhaf.partner.api.agent.factory.module.pojo;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
public class MetaModule extends BaseMetaModule<AgentRunningModule>{ public class MetaModule extends BaseMetaModule<AbstractAgentRunningModule> {
private String name; private String name;
private int order; private int order;
private boolean enabled = true; private boolean enabled = true;

View File

@@ -2,9 +2,9 @@ package work.slhaf.partner.api.agent.factory.module.pojo;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningSubModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentSubModule;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
public class MetaSubModule extends BaseMetaModule<AgentRunningSubModule>{ public class MetaSubModule extends BaseMetaModule<AbstractAgentSubModule> {
} }

View File

@@ -4,21 +4,21 @@ import net.bytebuddy.ByteBuddy;
import net.bytebuddy.implementation.MethodDelegation; import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.matcher.ElementMatchers; import net.bytebuddy.matcher.ElementMatchers;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule; import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
public class ModuleProxyTest { public class AbstractAgentModuleProxyTest {
@Test @Test
public void test() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, IOException, ClassNotFoundException { public void test() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, IOException, ClassNotFoundException {
Class<? extends AgentRunningModule> clazz = new ByteBuddy().subclass(MyAgentRunningModule.class) Class<? extends AbstractAgentRunningModule> clazz = new ByteBuddy().subclass(MyAbstractAgentRunningAbstractAgentModule.class)
.method(ElementMatchers.isOverriddenFrom(AgentRunningModule.class)) .method(ElementMatchers.isOverriddenFrom(AbstractAgentRunningModule.class))
.intercept(MethodDelegation.to( .intercept(MethodDelegation.to(
new MyModuleProxyInterceptor() new MyModuleProxyInterceptor()
)) ))
.make() .make()
.load(ModuleProxyTest.class.getClassLoader()) .load(AbstractAgentModuleProxyTest.class.getClassLoader())
.getLoaded(); .getLoaded();
clazz.getConstructor().newInstance().execute(null); clazz.getConstructor().newInstance().execute(null);
} }

View File

@@ -0,0 +1,11 @@
package module;
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
public class MyAbstractAgentRunningAbstractAgentModule extends AbstractAgentRunningModule {
@Override
public void execute(RunningFlowContext context) {
System.out.println("MyAbstractAgentRunningAbstractAgentModule");
}
}

View File

@@ -1,11 +0,0 @@
package module;
import work.slhaf.partner.api.agent.factory.module.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
public class MyAgentRunningModule extends AgentRunningModule {
@Override
public void execute(RunningFlowContext context) {
System.out.println("MyAgentRunningModule");
}
}