refactor(framework): rename AgentConfigManager to AgentConfigLoader and update agent/core wiring

This commit is contained in:
2026-02-21 16:51:59 +08:00
parent f8399d2280
commit b2d44668da
14 changed files with 31 additions and 45 deletions

View File

@@ -1,7 +1,7 @@
package work.slhaf.partner;
import work.slhaf.partner.api.agent.Agent;
import work.slhaf.partner.common.config.PartnerAgentConfigManager;
import work.slhaf.partner.common.config.PartnerAgentConfigLoader;
import work.slhaf.partner.common.vector.VectorClient;
import work.slhaf.partner.runtime.exception.PartnerExceptionCallback;
import work.slhaf.partner.runtime.interaction.WebSocketGateway;
@@ -9,7 +9,7 @@ import work.slhaf.partner.runtime.interaction.WebSocketGateway;
public class Main {
public static void main(String[] args) {
Agent.newAgent(Main.class)
.setAgentConfigManager(PartnerAgentConfigManager.class)
.setAgentConfigManager(PartnerAgentConfigLoader.class)
.setGateway(WebSocketGateway.class)
.setAgentExceptionCallback(PartnerExceptionCallback.class)
.addAfterLaunchRunners(VectorClient::load)

View File

@@ -4,7 +4,7 @@ import cn.hutool.json.JSONUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.config.exception.ConfigNotExistException;
import work.slhaf.partner.api.agent.runtime.config.FileAgentConfigManager;
import work.slhaf.partner.api.agent.runtime.config.FileAgentConfigLoader;
import work.slhaf.partner.common.exception.ConfigLoadFailedException;
import java.io.File;
@@ -12,7 +12,7 @@ import java.nio.charset.StandardCharsets;
@EqualsAndHashCode(callSuper = true)
@Data
public final class PartnerAgentConfigManager extends FileAgentConfigManager {
public final class PartnerAgentConfigLoader extends FileAgentConfigLoader {
private static final String COMMON_CONFIG_FILE = CONFIG_DIR + "common_config.json";

View File

@@ -4,9 +4,9 @@ import lombok.extern.slf4j.Slf4j;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.factory.Nd4j;
import org.nd4j.linalg.ops.transforms.Transforms;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigLoader;
import work.slhaf.partner.common.config.Config.VectorConfig;
import work.slhaf.partner.common.config.PartnerAgentConfigManager;
import work.slhaf.partner.common.config.PartnerAgentConfigLoader;
import work.slhaf.partner.common.exception.ServiceLoadFailedException;
import work.slhaf.partner.common.vector.exception.VectorClientExecuteException;
import work.slhaf.partner.common.vector.exception.VectorClientLoadFailedException;
@@ -18,7 +18,7 @@ public abstract class VectorClient {
public static VectorClient INSTANCE;
public static void load() {
PartnerAgentConfigManager configManager = (PartnerAgentConfigManager) AgentConfigManager.INSTANCE;
PartnerAgentConfigLoader configManager = (PartnerAgentConfigLoader) AgentConfigLoader.INSTANCE;
VectorConfig vectorConfig = configManager.getConfig().getVectorConfig();
int type = vectorConfig.getType();
try {

View File

@@ -3,9 +3,9 @@ package work.slhaf.partner.core;
import cn.hutool.core.bean.BeanUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigLoader;
import work.slhaf.partner.api.common.entity.PersistableObject;
import work.slhaf.partner.common.config.PartnerAgentConfigManager;
import work.slhaf.partner.common.config.PartnerAgentConfigLoader;
import java.io.*;
import java.nio.file.Files;
@@ -18,7 +18,7 @@ import static work.slhaf.partner.common.Constant.Path.MEMORY_DATA;
@Slf4j
public abstract class PartnerCore<T extends PartnerCore<T>> extends PersistableObject {
private final String id = ((PartnerAgentConfigManager) AgentConfigManager.INSTANCE).getConfig().getAgentId();
private final String id = ((PartnerAgentConfigLoader) AgentConfigLoader.INSTANCE).getConfig().getAgentId();
public PartnerCore() throws IOException, ClassNotFoundException {
createStorageDirectory();

View File

@@ -342,8 +342,8 @@ public class LocalRunnerClient extends RunnerClient {
@Override
public JSONObject listSysDependencies() {
// 先只列出系统/环境的 Python 依赖
// TODO 在 AgentConfigManager 内配置启用的脚本语言及对应的扩展名
// 这里的逻辑后续需要替换为“根据 AgentConfigManager 读取到的脚本语言启用情况,遍历并列出当前系统环境依赖”
// TODO 在 AgentConfigLoader 内配置启用的脚本语言及对应的扩展名
// 这里的逻辑后续需要替换为“根据 AgentConfigLoader 读取到的脚本语言启用情况,遍历并列出当前系统环境依赖”
// 还需要将返回值调整为相应的数据类
// 后续还需要将不同语言的处理逻辑分散到不同方法内,这里为了验证,先写死在当前方法
JSONObject sysDependencies = new JSONObject();

View File

@@ -8,10 +8,10 @@ import org.java_websocket.WebSocket;
import org.java_websocket.framing.Framedata;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigLoader;
import work.slhaf.partner.api.agent.runtime.interaction.AgentGateway;
import work.slhaf.partner.api.agent.runtime.interaction.AgentInteractionAdapter;
import work.slhaf.partner.common.config.PartnerAgentConfigManager;
import work.slhaf.partner.common.config.PartnerAgentConfigLoader;
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
import work.slhaf.partner.runtime.interaction.data.PartnerInputData;
import work.slhaf.partner.runtime.interaction.data.PartnerOutputData;
@@ -33,7 +33,7 @@ public class WebSocketGateway extends WebSocketServer implements AgentGateway<Pa
private final ConcurrentHashMap<WebSocket, Long> lastPongTimes = new ConcurrentHashMap<>();
public WebSocketGateway() {
this(((PartnerAgentConfigManager) AgentConfigManager.INSTANCE).getConfig().getWebSocketConfig().getPort());
this(((PartnerAgentConfigLoader) AgentConfigLoader.INSTANCE).getConfig().getWebSocketConfig().getPort());
}
private WebSocketGateway(int port) {

View File

@@ -2,7 +2,7 @@ package work.slhaf.partner.api.agent;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.AgentRegisterFactory;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigLoader;
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;
@@ -29,7 +29,7 @@ public final class Agent {
}
public interface AgentConfigManagerStep {
AgentGatewayStep setAgentConfigManager(Class<? extends AgentConfigManager> agentConfigManager);
AgentGatewayStep setAgentConfigManager(Class<? extends AgentConfigLoader> agentConfigManager);
}
public interface AgentGatewayStep {
@@ -59,7 +59,7 @@ public final class Agent {
private final Class<?> applicationClass;
private final CountDownLatch latch = new CountDownLatch(1);
private AgentGateway gateway;
private Class<? extends AgentConfigManager> agentConfigManagerClass;
private Class<? extends AgentConfigLoader> agentConfigManagerClass;
private Class<? extends AgentGateway> gatewayClass;
private Class<? extends AgentExceptionCallback> agentExceptionCallbackClass;
@@ -86,7 +86,7 @@ public final class Agent {
}
@Override
public AgentGatewayStep setAgentConfigManager(Class<? extends AgentConfigManager> agentConfigManager) {
public AgentGatewayStep setAgentConfigManager(Class<? extends AgentConfigLoader> agentConfigManager) {
this.agentConfigManagerClass = agentConfigManager;
return this;
}
@@ -134,7 +134,7 @@ public final class Agent {
private void beforeLaunch() {
try {
AgentConfigManager.setINSTANCE(agentConfigManagerClass.getDeclaredConstructor().newInstance());
AgentConfigLoader.setINSTANCE(agentConfigManagerClass.getDeclaredConstructor().newInstance());
log.info("配置管理器设置完毕: {}", agentConfigManagerClass.getSimpleName());
GlobalExceptionHandler.setExceptionCallback(agentExceptionCallbackClass.getDeclaredConstructor().newInstance());
log.info("异常处理回调设置完毕: {}", agentExceptionCallbackClass.getSimpleName());

View File

@@ -1,21 +1,7 @@
package work.slhaf.partner.api.agent.factory;
import work.slhaf.partner.api.agent.factory.capability.exception.CapabilityFactoryExecuteFailedException;
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
import java.lang.reflect.InvocationTargetException;
public abstract class AgentBaseFactory {
public void execute(AgentRegisterContext context) {
try {
setVariables(context);
run();
} catch (Exception e) {
throw new CapabilityFactoryExecuteFailedException(e.getMessage(), e);
}
}
protected abstract void setVariables(AgentRegisterContext context);
protected abstract void run() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException;
abstract void execute(AgentRegisterContext context);
}

View File

@@ -4,10 +4,10 @@ import work.slhaf.partner.api.agent.runtime.exception.AgentLaunchFailedException
public class ConfigFactoryInitFailedException extends AgentLaunchFailedException {
public ConfigFactoryInitFailedException(String message, Throwable cause) {
super("AgentConfigManager 执行失败: " + message, cause);
super("AgentConfigLoader 执行失败: " + message, cause);
}
public ConfigFactoryInitFailedException(String message) {
super("AgentConfigManager 执行失败: " + message);
super("AgentConfigLoader 执行失败: " + message);
}
}

View File

@@ -13,7 +13,7 @@ public class AgentRegisterContext {
private Reflections reflections;
private CapabilityFactoryContext capabilityFactoryContext = new CapabilityFactoryContext();
private ConfigFactoryContext configFactoryContext = new ConfigFactoryContext();
private ModuleFactoryContext moduleFactoryContext = new ModuleFactoryContext();
private AgentContext agentContext = AgentContext.INSTANCE;
public AgentRegisterContext(List<URL> urls) {
reflections = new Reflections(new ConfigurationBuilder().setScanners(

View File

@@ -4,7 +4,7 @@ import org.slf4j.Logger
import org.slf4j.LoggerFactory
import work.slhaf.partner.api.agent.factory.AgentComponent
import work.slhaf.partner.api.agent.factory.module.annotation.Init
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager
import work.slhaf.partner.api.agent.runtime.config.AgentConfigLoader
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext
import work.slhaf.partner.api.chat.ChatClient
import work.slhaf.partner.api.chat.constant.ChatConstant
@@ -47,7 +47,7 @@ interface ActivateModel {
companion object {
val modelMap: MutableMap<String, Model> = mutableMapOf()
private val configManager: AgentConfigManager = AgentConfigManager.INSTANCE
private val configManager: AgentConfigLoader = AgentConfigLoader.INSTANCE
}
@Init(order = -1)

View File

@@ -13,11 +13,11 @@ import java.util.*;
@Slf4j
@Data
public abstract class AgentConfigManager {
public abstract class AgentConfigLoader {
private static final String DEFAULT_KEY = "default";
@Setter
public static AgentConfigManager INSTANCE;
public static AgentConfigLoader INSTANCE;
protected HashMap<String, ModelConfig> modelConfigMap;
protected HashMap<String, List<Message>> modelPromptMap;
protected HashMap<String, Boolean> moduleEnabledStatus;

View File

@@ -22,7 +22,7 @@ import java.util.List;
* 将从当前运行目录的config文件夹下创建并读取配置
*/
@Slf4j
public class FileAgentConfigManager extends AgentConfigManager {
public class FileAgentConfigLoader extends AgentConfigLoader {
protected static final String CONFIG_DIR = "./config/";
protected static final String MODEL_CONFIG_DIR = "./config/model/";

View File

@@ -1,7 +1,7 @@
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.config.AgentConfigLoader;
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;
@@ -13,7 +13,7 @@ import java.util.Map;
public abstract class AgentInteractionAdapter<I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> {
protected AgentRunningFlow<C> agentRunningFlow = new AgentRunningFlow<>();
protected Map<Integer, List<MetaModule>> moduleOrderedMap = AgentConfigManager.INSTANCE.getModuleOrderedMap();
protected Map<Integer, List<MetaModule>> moduleOrderedMap = AgentConfigLoader.INSTANCE.getModuleOrderedMap();
public C call(C finalInputData) {
return agentRunningFlow.launch(moduleOrderedMap, finalInputData);