refactor(framework): register capability core instances per capability and store cores in AgentContext

This commit is contained in:
2026-02-26 22:27:43 +08:00
parent dde01a6253
commit a863b43563
2 changed files with 21 additions and 3 deletions

View File

@@ -34,7 +34,8 @@ class CapabilityRegisterFactory : AgentBaseFactory() {
val capabilityValue = capabilityType.getAnnotation(Capability::class.java).value
val proxy = createCapabilityProxy(capabilityType, capabilityValue, methodsRouterTable)
val methods = buildCapabilityMethodMap(capabilityType, capabilityValue, methodBindingMap)
agentContext.addCapability(capabilityValue, proxy, methods)
val cores = buildCapabilityCoreMap(capabilityValue, coreInstances)
agentContext.addCapability(capabilityValue, proxy, cores, methods)
}
}
@@ -124,6 +125,17 @@ class CapabilityRegisterFactory : AgentBaseFactory() {
return methods
}
private fun buildCapabilityCoreMap(
capabilityValue: String,
coreInstances: Map<Class<*>, Any>
): Map<Class<*>, Any> {
return coreInstances
.filterKeys { coreType ->
coreType.getAnnotation(CapabilityCore::class.java)?.value == capabilityValue
}
.toMap()
}
private fun invokeMethod(instance: Any, method: Method, args: Array<Any?>): Any? {
return try {
method.invoke(instance, *args)

View File

@@ -35,8 +35,13 @@ object AgentContext {
_modules[name] = module
}
fun addCapability(capability: String, instance: Any, methods: Map<String, Method>) {
val newImpl = CapabilityImplementation(instance.javaClass, instance, methods)
fun addCapability(
capability: String,
instance: Any,
cores: Map<Class<*>, Any>,
methods: Map<String, Method>
) {
val newImpl = CapabilityImplementation(instance.javaClass, instance, cores, methods)
_capabilities[capability] = newImpl
}
@@ -62,6 +67,7 @@ object AgentContext {
data class CapabilityImplementation(
val clazz: Class<*>,
val instance: Any,
val cores: Map<Class<*>, Any>,
val methods: Map<String, Method>
)
}