完善了框架层的完整执行流程,待进行demo测试并适配进Partner本体。

- 调整 runtime 目录结构, flow/ 归为 interaction/ 的子包
- 新增了 AgentGateway 以及 Gateway 对应的 Adapter 抽象类,下游必须实现这两者才能启动项目
- 调整 MetaModule 中的某些字段类别, 锁定为 AgentRunningModule 相关子类, 便于在执行流中执行模块
- 修复了 ModuleCheckFactory 中对于 @AgentModule 的错误检验逻辑
- 更新 Agent 启动器为step builder模式进行逐步构建,强制实现 AgentGateway 相关内容, 其余带有默认实现的部分也可自定义实现,只需实现对应的类或接口
This commit is contained in:
2025-08-13 22:03:32 +08:00
parent 86548903a0
commit 10fb689c83
38 changed files with 296 additions and 148 deletions

1
.gitignore vendored
View File

@@ -50,3 +50,4 @@ build/
/Partner-Core/src/main/java/src/main/resources/prompt/module/memory/topic_extractor.json.bak
/backup/
/Partner-Main/src/test/java/text/test.json
/CLAUDE.md

View File

@@ -1,77 +1,114 @@
package work.slhaf.partner.api.agent;
import work.slhaf.partner.api.agent.factory.AgentRegisterFactory;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
import work.slhaf.partner.api.agent.flow.AgentRunningFlow;
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
import work.slhaf.partner.api.agent.runtime.exception.AgentExceptionCallback;
import work.slhaf.partner.api.agent.runtime.exception.AgentLaunchFailedException;
import work.slhaf.partner.api.agent.runtime.exception.GlobalExceptionHandler;
import work.slhaf.partner.api.agent.runtime.interaction.AgentGateway;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Agent启动类
*/
public class Agent {
public final class Agent {
private final List<Runnable> runners = new ArrayList<>();
private final Class<?> applicationClass;
private final RunningFlowContext interactionContext;
private Agent(Class<?> clazz, RunningFlowContext interactionContext) {
this.applicationClass = clazz;
this.interactionContext = interactionContext;
}
public static Agent newAgent(Class<?> clazz, RunningFlowContext interactionContext) {
if (clazz == null || interactionContext == null) {
public static AgentGatewayStep newAgent(Class<?> clazz) {
if (clazz == null) {
throw new AgentLaunchFailedException("Agent class 和 interaction flow context 不能为 null");
}
return new Agent(clazz, interactionContext);
return new AgentApp(clazz);
}
public void run() {
List<MetaModule> moduleList = AgentRegisterFactory.launch(applicationClass.getPackage().getName());
AgentRunningFlow.launch(moduleList, interactionContext);
launchRunners();
public interface AgentGatewayStep {
AgentStep setGateway(AgentGateway gateway);
}
public interface AgentStep {
AgentStep addBeforeLaunchRunners(Runnable... runners);
AgentStep addAfterLaunchRunners(Runnable... runners);
AgentStep setAgentConfigManager(AgentConfigManager agentConfigManager);
AgentStep setAgentExceptionCallback(AgentExceptionCallback agentExceptionCallback);
AgentStep addScanPackage(String packageName);
AgentStep addScanDir(String externalPackagePath);
void launch();
}
private void launchRunners() {
ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor();
for (Runnable runner : runners) {
executorService.execute(runner);
}
public static class AgentApp implements AgentStep, AgentGatewayStep {
private final ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor();
private final List<Runnable> beforeLaunchRunners = new ArrayList<>();
private final List<Runnable> afterLaunchRunners = new ArrayList<>();
private AgentGateway gateway;
private final Class<?> applicationClass;
private AgentApp(Class<?> clazz) {
this.applicationClass = clazz;
}
public Agent addRunners(Runnable... runnable) {
runners.addAll(List.of(runnable));
@Override
public AgentStep setGateway(AgentGateway gateway) {
this.gateway = gateway;
return this;
}
public Agent setAgentConfigManager(AgentConfigManager agentConfigManager) {
@Override
public AgentStep addBeforeLaunchRunners(Runnable... runners) {
this.beforeLaunchRunners.addAll(List.of(runners));
return this;
}
@Override
public AgentStep addAfterLaunchRunners(Runnable... runners) {
this.afterLaunchRunners.addAll(List.of(runners));
return this;
}
@Override
public AgentStep setAgentConfigManager(AgentConfigManager agentConfigManager) {
AgentConfigManager.setINSTANCE(agentConfigManager);
return this;
}
public Agent setAgentExceptionCallback(AgentExceptionCallback agentExceptionCallback){
@Override
public AgentStep setAgentExceptionCallback(AgentExceptionCallback agentExceptionCallback) {
GlobalExceptionHandler.setExceptionCallback(agentExceptionCallback);
return this;
}
public Agent addScanPackage(String packageName) {
@Override
public AgentStep addScanPackage(String packageName) {
AgentRegisterFactory.addScanPackage(packageName);
return this;
}
public Agent addScanDir(String externalPackagePath) {
@Override
public AgentStep addScanDir(String externalPackagePath) {
AgentRegisterFactory.addScanDir(externalPackagePath);
return this;
}
@Override
public void launch() {
launchRunners(beforeLaunchRunners);
AgentRegisterFactory.launch(applicationClass.getPackageName());
executorService.execute(() -> gateway.launch());
launchRunners(afterLaunchRunners);
}
private void launchRunners(List<Runnable> runners) {
for (Runnable runner : runners) {
executorService.execute(runner);
}
}
}
}

View File

@@ -1,5 +1,6 @@
package work.slhaf.partner.api.agent.factory;
import cn.hutool.core.bean.BeanUtil;
import org.reflections.util.ClasspathHelper;
import work.slhaf.partner.api.agent.factory.capability.CapabilityCheckFactory;
import work.slhaf.partner.api.agent.factory.capability.CapabilityInjectFactory;
@@ -13,6 +14,7 @@ import work.slhaf.partner.api.agent.factory.module.ModuleInitHookExecuteFactory;
import work.slhaf.partner.api.agent.factory.module.ModuleProxyFactory;
import work.slhaf.partner.api.agent.factory.module.ModuleRegisterFactory;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
import work.slhaf.partner.api.agent.runtime.data.AgentContext;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
import java.io.File;
@@ -27,7 +29,7 @@ public class AgentRegisterFactory {
private AgentRegisterFactory() {
}
public static List<MetaModule> launch(String packageName) {
public static void launch(String packageName) {
urls.addAll(packageNameToURL(packageName));
AgentRegisterContext registerContext = new AgentRegisterContext(urls);
//流程
@@ -47,7 +49,9 @@ public class AgentRegisterFactory {
new ModuleInitHookExecuteFactory().execute(registerContext);
List<MetaModule> moduleList = registerContext.getModuleFactoryContext().getModuleList();
return AgentConfigManager.INSTANCE.moduleEnabledStatusFilter(moduleList);
AgentConfigManager.INSTANCE.moduleEnabledStatusFilterAndRecord(moduleList);
BeanUtil.copyProperties(registerContext, AgentContext.INSTANCE);
}
@@ -89,5 +93,4 @@ public class AgentRegisterFactory {
return ClasspathHelper.forPackage(packageName).stream().toList();
}
}

View File

@@ -1,6 +1,5 @@
package work.slhaf.partner.api.agent.factory.config;
import lombok.Setter;
import work.slhaf.partner.api.agent.factory.AgentBaseFactory;
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig;
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;

View File

@@ -9,10 +9,10 @@ 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.Init;
import work.slhaf.partner.api.agent.factory.module.exception.ModuleCheckException;
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import java.lang.reflect.Method;
import java.util.HashSet;
@@ -134,7 +134,7 @@ public class ModuleCheckFactory extends AgentBaseFactory {
if (type.isAnnotation()) {
continue;
}
if (type.isAssignableFrom(AgentRunningModule.class)) {
if (AgentRunningModule.class.isAssignableFrom(type) && ClassUtil.isNormalClass(type)) {
continue;
}
throw new ModuleCheckException("存在未继承AgentInteractionModule.class的AgentModule实现: " + type.getSimpleName());

View File

@@ -7,7 +7,7 @@ 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.pojo.MetaMethod;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;

View File

@@ -13,7 +13,7 @@ import work.slhaf.partner.api.agent.factory.module.exception.ModuleInstanceGener
import work.slhaf.partner.api.agent.factory.module.exception.ModuleProxyGenerateFailedException;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaMethod;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -57,8 +57,8 @@ public class ModuleProxyFactory extends AgentBaseFactory {
private void generateProxiedInstances(MethodsListRecord record, MetaModule metaModule) {
try {
Class<?> clazz = metaModule.getClazz();
Class<?> proxyClass = new ByteBuddy()
Class<? extends AgentRunningModule> clazz = metaModule.getClazz();
Class<? extends AgentRunningModule> proxyClass = new ByteBuddy()
.subclass(clazz)
.method(ElementMatchers.isOverriddenFrom(AgentRunningModule.class))
.intercept(MethodDelegation.to(new ModuleProxyInterceptor(record.post, record.pre)))
@@ -137,8 +137,8 @@ public class ModuleProxyFactory extends AgentBaseFactory {
private void generateInstances() {
for (MetaModule metaModule : moduleList) {
try {
Class<?> clazz = metaModule.getClazz();
Object instance = clazz.getConstructor().newInstance();
Class<? extends AgentRunningModule> clazz = metaModule.getClazz();
AgentRunningModule instance = clazz.getConstructor().newInstance();
metaModule.setInstance(instance);
} catch (Exception e) {
throw new ModuleInstanceGenerateFailedException("模块实例构造失败:" + e.getMessage());

View File

@@ -1,11 +1,13 @@
package work.slhaf.partner.api.agent.factory.module;
import cn.hutool.core.util.ClassUtil;
import org.reflections.Reflections;
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.ModuleFactoryContext;
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
import java.util.Comparator;
import java.util.List;
@@ -35,14 +37,17 @@ public class ModuleRegisterFactory extends AgentBaseFactory {
//反射扫描获取@AgentModule所在类, 该部分为Agent流程执行模块
Set<Class<?>> modules = reflections.getTypesAnnotatedWith(AgentModule.class);
for (Class<?> module : modules) {
AgentModule agentModule = module.getAnnotation(AgentModule.class);
if (!ClassUtil.isNormalClass(module)) {
continue;
}
Class<? extends AgentRunningModule> clazz = module.asSubclass(AgentRunningModule.class);
AgentModule agentModule = clazz.getAnnotation(AgentModule.class);
MetaModule metaModule = new MetaModule();
metaModule.setName(agentModule.name());
metaModule.setOrder(agentModule.order());
metaModule.setClazz(module);
metaModule.setClazz(clazz);
moduleList.add(metaModule);
}
moduleList.sort(Comparator.comparing(MetaModule::getOrder));
}
}

View File

@@ -1,12 +1,13 @@
package work.slhaf.partner.api.agent.factory.module.pojo;
import lombok.Data;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
@Data
public class MetaModule {
private String name;
private int order;
private Class<?> clazz;
private Object instance;
private Class<? extends AgentRunningModule> clazz;
private AgentRunningModule instance;
private boolean enabled = true;
}

View File

@@ -1,23 +0,0 @@
package work.slhaf.partner.api.agent.flow;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
import work.slhaf.partner.api.agent.runtime.exception.GlobalExceptionHandler;
import java.util.List;
/**
* Agent执行流程
*/
public class AgentRunningFlow {
private AgentRunningFlow(){}
public static void launch(List<MetaModule> moduleList, RunningFlowContext interactionContext){
try {
//流程执行启动需考虑模块热插拔可结合http调整模块启用情况并序列化至本地或数据库中
}catch (Exception e){
GlobalExceptionHandler.INSTANCE.handle(e);
}
}
}

View File

@@ -1,10 +0,0 @@
package work.slhaf.partner.api.agent.flow.abstracts;
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
/**
* 流程执行模块基类
*/
public abstract class AgentRunningModule extends Module {
public abstract void execute(RunningFlowContext context);
}

View File

@@ -1,6 +1,6 @@
package work.slhaf.partner.api.agent.runtime.config;
import lombok.Getter;
import lombok.Data;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.config.exception.ConfigNotExistException;
@@ -16,21 +16,16 @@ import java.util.List;
import java.util.Set;
@Slf4j
@Data
public abstract class AgentConfigManager {
@Setter
public static AgentConfigManager INSTANCE;
private static final String DEFAULT_KEY = "default";
@Getter
protected HashMap<String, ModelConfig> modelConfigMap;
@Getter
protected HashMap<String, List<Message>> modelPromptMap;
@Getter
@Setter
protected HashMap<String, Boolean> moduleEnabledStatus;
protected List<MetaModule> moduleList;
public void load() {
@@ -48,7 +43,7 @@ public abstract class AgentConfigManager {
protected abstract HashMap<String, Boolean> loadModuleEnabledStatusMap();
public List<MetaModule> moduleEnabledStatusFilter(List<MetaModule> moduleList) {
public void moduleEnabledStatusFilterAndRecord(List<MetaModule> moduleList) {
this.moduleList = moduleList;
this.moduleEnabledStatus = loadModuleEnabledStatusMap();
@@ -65,7 +60,6 @@ public abstract class AgentConfigManager {
if (unmatch) {
dumpModuleEnabledStatus();
}
return moduleList;
}
/**

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime;
package work.slhaf.partner.api.agent.runtime.data;
import lombok.Data;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
@@ -10,6 +10,9 @@ import java.util.function.Function;
@Data
public class AgentContext {
public static AgentContext INSTANCE = new AgentContext();
private HashMap<String, Function<Object[], Object>> methodsRouterTable;
private HashMap<String, Function<Object[], Object>> coordinatedMethodsRouterTable;
private HashMap<Class<?>, Object> capabilityCoreInstances;

View File

@@ -0,0 +1,12 @@
package work.slhaf.partner.api.agent.runtime.interaction;
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentInputData;
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentOutputData;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
public interface AgentGateway {
void launch();
<I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> AgentInteractionAdapter<I, O, C> adapter();
}

View File

@@ -0,0 +1,41 @@
package work.slhaf.partner.api.agent.runtime.interaction;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentInputData;
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentOutputData;
import work.slhaf.partner.api.agent.runtime.interaction.flow.AgentRunningFlow;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
import java.util.List;
public abstract class AgentInteractionAdapter<I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> {
private static AgentInteractionAdapter<?,?,?> INSTANCE;
protected AgentRunningFlow<C> agentRunningFlow = new AgentRunningFlow<>();
protected List<MetaModule> moduleList = AgentConfigManager.INSTANCE.getModuleList();
public void receive(I inputData) {
C finalInputData = parseInputData(inputData);
C outputContext = agentRunningFlow.launch(moduleList, finalInputData);
O outputData = parseOutputData(outputContext);
send(outputData);
}
protected abstract O parseOutputData(C outputContext);
protected abstract C parseInputData(I inputData);
public abstract void send(O outputData);
public static <I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> AgentInteractionAdapter<I, O, C> getInstance() {
@SuppressWarnings("unchecked")
AgentInteractionAdapter<I, O, C> instance = (AgentInteractionAdapter<I, O, C>) INSTANCE;
return instance;
}
public static <I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> void setInstance(AgentInteractionAdapter<I, O, C> instance) {
INSTANCE = instance;
}
}

View File

@@ -0,0 +1,9 @@
package work.slhaf.partner.api.agent.runtime.interaction.data;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public abstract class AgentInputData extends InteractionData{
}

View File

@@ -0,0 +1,16 @@
package work.slhaf.partner.api.agent.runtime.interaction.data;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public abstract class AgentOutputData extends InteractionData{
private int code;
public static class StatusCode {
public static final int SUCCESS = 1;
public static final int FAILED = 0;
}
}

View File

@@ -0,0 +1,12 @@
package work.slhaf.partner.api.agent.runtime.interaction.data;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public abstract class InteractionData {
protected String userInfo;
protected String content;
protected LocalDateTime dateTime;
}

View File

@@ -0,0 +1,25 @@
package work.slhaf.partner.api.agent.runtime.interaction.flow;
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
import work.slhaf.partner.api.agent.runtime.exception.GlobalExceptionHandler;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
import java.util.List;
/**
* Agent执行流程
*/
public class AgentRunningFlow<C extends RunningFlowContext> {
public C launch(List<MetaModule> moduleList, C interactionContext){
try {
//流程执行启动
for (MetaModule metaModule : moduleList) {
metaModule.getInstance().execute(interactionContext);
}
}catch (Exception e){
GlobalExceptionHandler.INSTANCE.handle(e);
}
return interactionContext;
}
}

View File

@@ -1,10 +1,10 @@
package work.slhaf.partner.api.agent.flow.abstracts;
package work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts;
import cn.hutool.core.bean.BeanUtil;
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig;
import work.slhaf.partner.api.agent.factory.module.annotation.Init;
import work.slhaf.partner.api.agent.flow.entity.Model;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.Model;
import work.slhaf.partner.api.chat.ChatClient;
import work.slhaf.partner.api.chat.constant.ChatConstant;
import work.slhaf.partner.api.chat.pojo.ChatResponse;

View File

@@ -0,0 +1,10 @@
package work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
/**
* 流程执行模块基类
*/
public abstract class AgentRunningModule extends Module {
public abstract void execute(RunningFlowContext context);
}

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.flow.abstracts;
package work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts;
/**

View File

@@ -1,9 +1,9 @@
package work.slhaf.partner.api.agent.flow.abstracts;
package work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts;
import lombok.Getter;
import lombok.Setter;
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityHolder;
import work.slhaf.partner.api.agent.flow.entity.Model;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.Model;
/**
* 模块基类

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.flow.entity;
package work.slhaf.partner.api.agent.runtime.interaction.flow.entity;
import lombok.Data;
import work.slhaf.partner.api.chat.ChatClient;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.flow.entity;
package work.slhaf.partner.api.agent.runtime.interaction.flow.entity;
import lombok.Data;

View File

@@ -4,7 +4,7 @@ import net.bytebuddy.ByteBuddy;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.matcher.ElementMatchers;
import org.junit.jupiter.api.Test;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
import java.lang.reflect.InvocationTargetException;

View File

@@ -1,7 +1,7 @@
package module;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
public class MyAgentRunningModule extends AgentRunningModule {
@Override

View File

@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.chat.constant.ChatConstant;
import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.api.chat.pojo.Message;

View File

@@ -6,8 +6,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
import work.slhaf.partner.core.cognation.common.pojo.MemoryResult;
import work.slhaf.partner.core.cognation.common.pojo.MemorySliceResult;

View File

@@ -6,8 +6,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.chat.pojo.Message;
import work.slhaf.partner.api.chat.pojo.MetaMessage;
import work.slhaf.partner.common.exception_handler.GlobalExceptionHandler;

View File

@@ -3,7 +3,7 @@ package work.slhaf.partner.module.modules.memory.updater.summarizer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeInput;
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeResult;

View File

@@ -5,8 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeInput;
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeResult;

View File

@@ -4,8 +4,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.chat.constant.ChatConstant;
import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.api.chat.pojo.Message;

View File

@@ -5,8 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse;
import java.util.HashMap;

View File

@@ -3,8 +3,8 @@ package work.slhaf.partner.module.modules.perceive.updater.relation_extractor;
import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.api.chat.pojo.Message;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;

View File

@@ -5,8 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
import work.slhaf.partner.api.chat.pojo.ChatResponse;
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability;

View File

@@ -1,12 +1,25 @@
package work.slhaf.demo;
import work.slhaf.demo.flow.AgentDemoFlowContext;
import work.slhaf.partner.api.agent.Agent;
import work.slhaf.partner.api.agent.runtime.interaction.AgentGateway;
import work.slhaf.partner.api.agent.runtime.interaction.AgentInteractionAdapter;
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentInputData;
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentOutputData;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
public class AgentDemoApplication {
public static void main(String[] args) {
Agent.newAgent(AgentDemoApplication.class, new AgentDemoFlowContext())
.run();
Agent.newAgent(AgentDemoApplication.class).setGateway(new AgentGateway() {
@Override
public void launch() {
}
@Override
public <I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> AgentInteractionAdapter<I, O, C> adapter() {
return null;
}
}).launch();
}
}

View File

@@ -1,6 +1,6 @@
package work.slhaf.demo.flow;
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
public class AgentDemoFlowContext extends RunningFlowContext {
}