mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 08:43:02 +08:00
refactor(framework): rename CapabilityHolder to AgentComponent across factory and module hooks
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
package work.slhaf.partner.api.agent.factory.capability.annotation;
|
||||
package work.slhaf.partner.api.agent.factory;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Inherited
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE)
|
||||
public @interface CapabilityHolder {
|
||||
public @interface AgentComponent {
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package work.slhaf.partner.api.agent.factory.capability;
|
||||
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.AgentComponent;
|
||||
import work.slhaf.partner.api.agent.factory.capability.annotation.*;
|
||||
import work.slhaf.partner.api.agent.factory.capability.exception.*;
|
||||
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
|
||||
@@ -40,7 +41,7 @@ import static work.slhaf.partner.api.agent.util.AgentUtil.methodSignature;
|
||||
* </li>
|
||||
* <li>
|
||||
* <p>{@link CapabilityCheckFactory#checkInjectCapability()}</p>
|
||||
* 检查 {@link InjectCapability} 注解是否只用在 {@link CapabilityHolder} 所标识类的字段上。{@link AgentRunningModule} 与 {@link AgentSubModule} 已经被 {@link CapabilityHolder} 标注
|
||||
* 检查 {@link InjectCapability} 注解是否只用在 {@link AgentComponent} 所标识类的字段上。{@link AgentRunningModule} 与 {@link AgentSubModule} 已经被 {@link AgentComponent} 标注
|
||||
* </li>
|
||||
* </ol>
|
||||
*
|
||||
@@ -92,13 +93,13 @@ public class CapabilityCheckFactory extends AgentBaseFactory {
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查<code>@InjectCapability</code>注解是否只用在<code>@CapabilityHolder</code>所标识类的字段上
|
||||
* 检查<code>@InjectCapability</code>注解是否只用在<code>@AgentComponent</code>所标识类的字段上
|
||||
*/
|
||||
private void checkInjectCapability() {
|
||||
reflections.getFieldsAnnotatedWith(InjectCapability.class).forEach(field -> {
|
||||
Class<?> declaringClass = field.getDeclaringClass();
|
||||
if (!isAssignableFromAnnotation(declaringClass, CapabilityHolder.class)) {
|
||||
throw new UnMatchedCapabilityException("InjectCapability 注解只能用于 CapabilityHolder 注解所在类,检查该类是否使用了@CapabilityHolder注解或者受其标注的注解或父类: " + declaringClass);
|
||||
if (!isAssignableFromAnnotation(declaringClass, AgentComponent.class)) {
|
||||
throw new UnMatchedCapabilityException("InjectCapability 注解只能用于 AgentComponent 注解所在类,检查该类是否使用了@CapabilityHolder注解或者受其标注的注解或父类: " + declaringClass);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package work.slhaf.partner.api.agent.factory.capability;
|
||||
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.AgentComponent;
|
||||
import work.slhaf.partner.api.agent.factory.capability.annotation.*;
|
||||
import work.slhaf.partner.api.agent.factory.capability.exception.CapabilityCoreInstancesCreateFailedException;
|
||||
import work.slhaf.partner.api.agent.factory.capability.exception.CapabilityFactoryExecuteFailedException;
|
||||
@@ -86,7 +87,7 @@ public class CapabilityRegisterFactory extends AgentBaseFactory {
|
||||
}
|
||||
|
||||
private void setCapabilityHolderInstances() {
|
||||
Set<Class<?>> collect = reflections.getTypesAnnotatedWith(CapabilityHolder.class).stream()
|
||||
Set<Class<?>> collect = reflections.getTypesAnnotatedWith(AgentComponent.class).stream()
|
||||
.filter(ClassUtil::isNormalClass)
|
||||
.filter(clazz -> !capabilityHolderInstances.containsKey(clazz))
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package work.slhaf.partner.api.agent.factory.capability.annotation;
|
||||
|
||||
import work.slhaf.partner.api.agent.factory.AgentComponent;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 用于注入`Capability`
|
||||
* 用于注入`Capability`,适用于{@link AgentComponent} 实例
|
||||
*/
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -2,7 +2,7 @@ package work.slhaf.partner.api.agent.factory.module.abstracts
|
||||
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityHolder
|
||||
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.interaction.flow.entity.RunningFlowContext
|
||||
@@ -14,7 +14,7 @@ import work.slhaf.partner.api.chat.pojo.Message
|
||||
/**
|
||||
* 模块基类
|
||||
*/
|
||||
@CapabilityHolder
|
||||
@AgentComponent
|
||||
sealed class AbstractAgentModule {
|
||||
|
||||
var moduleName: String = javaClass.simpleName
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
package work.slhaf.partner.api.agent.factory.module.annotation;
|
||||
|
||||
import work.slhaf.partner.api.agent.factory.AgentComponent;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 初始化 Hook,适用于{@link AgentComponent} 实例
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.METHOD)
|
||||
public @interface Init {
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
package work.slhaf.partner.api.agent.factory.module.annotation;
|
||||
|
||||
import work.slhaf.partner.api.agent.factory.AgentComponent;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 模块注入 Hook,适用于{@link AgentComponent} 实例
|
||||
*/
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface InjectModule {
|
||||
|
||||
Reference in New Issue
Block a user