diff --git a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/AgentRegisterFactory.java b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/AgentRegisterFactory.java
deleted file mode 100644
index 9d1ae16c..00000000
--- a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/AgentRegisterFactory.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package work.slhaf.partner.api.agent.factory;
-
-import org.reflections.util.ClasspathHelper;
-import work.slhaf.partner.api.agent.factory.capability.CapabilityAnnotationValidatorFactory;
-import work.slhaf.partner.api.agent.factory.capability.CapabilityInjectorFactory;
-import work.slhaf.partner.api.agent.factory.capability.CapabilityRegisterFactory;
-import work.slhaf.partner.api.agent.factory.component.ComponentAnnotationValidatorFactory;
-import work.slhaf.partner.api.agent.factory.component.ComponentInitHookExecuteFactory;
-import work.slhaf.partner.api.agent.factory.component.ComponentInjectorFactory;
-import work.slhaf.partner.api.agent.factory.component.ComponentRegisterFactory;
-import work.slhaf.partner.api.agent.factory.config.ConfigLoaderFactory;
-import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
-import work.slhaf.partner.api.agent.factory.exception.ExternalModuleLoadFailedException;
-import work.slhaf.partner.api.agent.factory.exception.ExternalModulePathNotExistException;
-import work.slhaf.partner.api.agent.runtime.config.AgentConfigLoader;
-import work.slhaf.partner.api.agent.runtime.interaction.flow.AgentRunningFlow;
-
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
Agent 注册工厂
- *
- *
- * 具体流程依次按照 {@link AgentRegisterFactory#launch(String)} 方法顺序执行,最终将执行模块列表对应实例交给 {@link AgentConfigLoader} ,传递给 {@link AgentRunningFlow} 针对交互做出调用
- *
- */
-public class AgentRegisterFactory {
-
- private static final List urls = new ArrayList<>();
-
- private AgentRegisterFactory() {
- }
-
- public static void launch(String packageName) {
- urls.addAll(packageNameToURL(packageName));
- AgentRegisterContext registerContext = new AgentRegisterContext(urls);
- //流程
- //0. 加载配置
- new ConfigLoaderFactory().execute(registerContext);
- //1. 校验 Component 级别注解是否合规,避免注入到异常位置
- new ComponentAnnotationValidatorFactory().execute(registerContext);
- //2. 收集所有的 AgentComponent 实例
- new ComponentRegisterFactory().execute(registerContext);
- //3. 对模块与额外组件进行模块依赖注入
- new ComponentInjectorFactory().execute(registerContext);
- //4. 加载检查Capability层内容后进行能力层的内容注册
- new CapabilityAnnotationValidatorFactory().execute(registerContext);
- //5. 根据 Capability 相关的扫描结果构造 Capability 实例
- new CapabilityRegisterFactory().execute(registerContext);
- //6. 将 Capability 实例注入至各个 AgentComponent 中
- new CapabilityInjectorFactory().execute(registerContext);
- //7. 执行模块PreHook逻辑
- new ComponentInitHookExecuteFactory().execute(registerContext);
-
- }
-
-
- /**
- * 添加可扫描包
- *
- * @param packageName 指定的包名
- */
- public static void addScanPackage(String packageName) {
- urls.addAll(packageNameToURL(packageName));
- }
-
- /**
- * 添加外部模块目录
- *
- * @param externalPackagePath 指定的外部模块目录路径
- */
- public static void addScanDir(String externalPackagePath) {
- File file = new File(externalPackagePath);
- if (!file.exists() || !file.isDirectory()) {
- throw new ExternalModulePathNotExistException("不存在的外部模块目录: " + externalPackagePath);
- }
- try {
- File[] files = file.listFiles();
- if (files == null || files.length == 0) {
- throw new ExternalModulePathNotExistException("外部模块目录为空: " + externalPackagePath);
- }
- for (File f : files) {
- if (f.getName().endsWith(".jar")) {
- urls.add(f.toURI().toURL());
- }
- }
- } catch (Exception e) {
- throw new ExternalModuleLoadFailedException("外部模块URL获取失败: " + externalPackagePath, e);
- }
- }
-
- private static List packageNameToURL(String packageName) {
- return ClasspathHelper.forPackage(packageName).stream().toList();
- }
-
-}
diff --git a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/AgentRegisterFactory.kt b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/AgentRegisterFactory.kt
new file mode 100644
index 00000000..8e05ca23
--- /dev/null
+++ b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/AgentRegisterFactory.kt
@@ -0,0 +1,72 @@
+package work.slhaf.partner.api.agent.factory
+
+import org.reflections.util.ClasspathHelper
+import work.slhaf.partner.api.agent.factory.capability.CapabilityAnnotationValidatorFactory
+import work.slhaf.partner.api.agent.factory.capability.CapabilityInjectorFactory
+import work.slhaf.partner.api.agent.factory.capability.CapabilityRegisterFactory
+import work.slhaf.partner.api.agent.factory.component.ComponentAnnotationValidatorFactory
+import work.slhaf.partner.api.agent.factory.component.ComponentInitHookExecuteFactory
+import work.slhaf.partner.api.agent.factory.component.ComponentInjectorFactory
+import work.slhaf.partner.api.agent.factory.component.ComponentRegisterFactory
+import work.slhaf.partner.api.agent.factory.config.ConfigLoaderFactory
+import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
+import work.slhaf.partner.api.agent.factory.exception.ExternalModuleLoadFailedException
+import work.slhaf.partner.api.agent.factory.exception.ExternalModulePathNotExistException
+import java.io.File
+import java.net.URL
+
+object AgentRegisterFactory {
+ private val urls: MutableList = mutableListOf()
+
+ @JvmStatic
+ fun launch(packageName: String) {
+ urls.addAll(packageNameToURL(packageName))
+ val registerContext = AgentRegisterContext(urls)
+ // 0. 加载配置
+ ConfigLoaderFactory().execute(registerContext)
+ // 1. 校验 Component 级别注解是否合规,避免注入到异常位置
+ ComponentAnnotationValidatorFactory().execute(registerContext)
+ // 2. 收集所有的 AgentComponent 实例
+ ComponentRegisterFactory().execute(registerContext)
+ // 3. 对模块与额外组件进行模块依赖注入
+ ComponentInjectorFactory().execute(registerContext)
+ // 4. 校验 Capability 注解与方法关系
+ CapabilityAnnotationValidatorFactory().execute(registerContext)
+ // 5. 根据 Capability 相关的扫描结果构造 Capability 实例
+ CapabilityRegisterFactory().execute(registerContext)
+ // 6. 将 Capability 实例注入至各个 AgentComponent 中
+ CapabilityInjectorFactory().execute(registerContext)
+ // 7. 执行模块 Init Hook 逻辑
+ ComponentInitHookExecuteFactory().execute(registerContext)
+ }
+
+ @JvmStatic
+ fun addScanPackage(packageName: String) {
+ urls.addAll(packageNameToURL(packageName))
+ }
+
+ @JvmStatic
+ fun addScanDir(externalPackagePath: String) {
+ val file = File(externalPackagePath)
+ if (!file.exists() || !file.isDirectory) {
+ throw ExternalModulePathNotExistException("不存在的外部模块目录: $externalPackagePath")
+ }
+ try {
+ val files = file.listFiles()
+ ?: throw ExternalModulePathNotExistException("外部模块目录为空: $externalPackagePath")
+ if (files.isEmpty()) {
+ throw ExternalModulePathNotExistException("外部模块目录为空: $externalPackagePath")
+ }
+ files.asSequence()
+ .filter { it.name.endsWith(".jar") }
+ .forEach { urls.add(it.toURI().toURL()) }
+ } catch (e: Exception) {
+ throw ExternalModuleLoadFailedException("外部模块URL获取失败: $externalPackagePath", e)
+ }
+ }
+
+ private fun packageNameToURL(packageName: String): List {
+ return ClasspathHelper.forPackage(packageName).toList()
+ }
+}
+