refactor: 移除兴趣计算器相关代码和配置,优化系统管理插件

This commit is contained in:
Windpicker-owo
2025-12-12 14:38:15 +08:00
parent e6a4f855a2
commit 0193913841
11 changed files with 5 additions and 249 deletions

View File

@@ -11,7 +11,6 @@ if TYPE_CHECKING:
from src.common.data_models.database_data_model import DatabaseMessages
from src.common.logger import get_logger
from src.plugin_system.base.component_types import ComponentType, InterestCalculatorInfo
logger = get_logger("base_interest_calculator")
@@ -210,26 +209,6 @@ class BaseInterestCalculator(ABC):
return default
return current
@classmethod
def get_interest_calculator_info(cls) -> "InterestCalculatorInfo":
"""从类属性生成InterestCalculatorInfo
遵循BaseCommand和BaseAction的设计模式从类属性自动生成组件信息
Returns:
InterestCalculatorInfo: 生成的兴趣计算器信息对象
"""
name = getattr(cls, "component_name", cls.__name__.lower().replace("calculator", ""))
if "." in name:
logger.error(f"InterestCalculator名称 '{name}' 包含非法字符 '.',请使用下划线替代")
raise ValueError(f"InterestCalculator名称 '{name}' 包含非法字符 '.',请使用下划线替代")
return InterestCalculatorInfo(
name=name,
component_type=ComponentType.INTEREST_CALCULATOR,
description=getattr(cls, "component_description", cls.__doc__ or "兴趣度计算器"),
enabled_by_default=getattr(cls, "enabled_by_default", True),
)
def __repr__(self) -> str:
return (

View File

@@ -7,7 +7,6 @@ from src.plugin_system.base.component_types import (
CommandInfo,
ComponentType,
EventHandlerInfo,
InterestCalculatorInfo,
PlusCommandInfo,
PromptInfo,
ToolInfo,
@@ -17,7 +16,6 @@ from .base_action import BaseAction
from .base_adapter import BaseAdapter
from .base_command import BaseCommand
from .base_events_handler import BaseEventHandler
from .base_interest_calculator import BaseInterestCalculator
from .base_prompt import BasePrompt
from .base_tool import BaseTool
from .plugin_base import PluginBase
@@ -59,15 +57,6 @@ class BasePlugin(PluginBase):
logger.warning(f"Action组件 {component_class.__name__} 缺少 get_action_info 方法")
return None
elif component_type == ComponentType.INTEREST_CALCULATOR:
if hasattr(component_class, "get_interest_calculator_info"):
return component_class.get_interest_calculator_info()
else:
logger.warning(
f"InterestCalculator组件 {component_class.__name__} 缺少 get_interest_calculator_info 方法"
)
return None
elif component_type == ComponentType.PLUS_COMMAND:
# PlusCommand组件的get_info方法尚未实现
logger.warning("PlusCommand组件的get_info方法尚未实现")
@@ -123,7 +112,6 @@ class BasePlugin(PluginBase):
| tuple[PlusCommandInfo, type[PlusCommand]]
| tuple[EventHandlerInfo, type[BaseEventHandler]]
| tuple[ToolInfo, type[BaseTool]]
| tuple[InterestCalculatorInfo, type[BaseInterestCalculator]]
| tuple[PromptInfo, type[BasePrompt]]
]:
"""获取插件包含的组件列表

View File

@@ -48,7 +48,6 @@ class ComponentType(Enum):
SCHEDULER = "scheduler" # 定时任务组件(预留)
EVENT_HANDLER = "event_handler" # 事件处理组件
CHATTER = "chatter" # 聊天处理器组件
INTEREST_CALCULATOR = "interest_calculator" # 兴趣度计算组件
PROMPT = "prompt" # Prompt组件
ROUTER = "router" # 路由组件
ADAPTER = "adapter" # 适配器组件
@@ -298,17 +297,6 @@ class ChatterInfo(ComponentInfo):
self.component_type = ComponentType.CHATTER
@dataclass
class InterestCalculatorInfo(ComponentInfo):
"""兴趣度计算组件信息(单例模式)"""
enabled_by_default: bool = True # 是否默认启用
def __post_init__(self):
super().__post_init__()
self.component_type = ComponentType.INTEREST_CALCULATOR
@dataclass
class EventInfo(ComponentInfo):
"""事件组件信息"""

View File

@@ -17,7 +17,6 @@ from src.plugin_system.base.base_chatter import BaseChatter
from src.plugin_system.base.base_command import BaseCommand
from src.plugin_system.base.base_events_handler import BaseEventHandler
from src.plugin_system.base.base_http_component import BaseRouterComponent
from src.plugin_system.base.base_interest_calculator import BaseInterestCalculator
from src.plugin_system.base.base_prompt import BasePrompt
from src.plugin_system.base.base_tool import BaseTool
from src.plugin_system.base.component_types import (
@@ -28,7 +27,6 @@ from src.plugin_system.base.component_types import (
ComponentInfo,
ComponentType,
EventHandlerInfo,
InterestCalculatorInfo,
PluginInfo,
PlusCommandInfo,
PromptInfo,
@@ -48,7 +46,6 @@ ComponentClassType = (
| type[BaseEventHandler]
| type[PlusCommand]
| type[BaseChatter]
| type[BaseInterestCalculator]
| type[BasePrompt]
| type[BaseRouterComponent]
| type[BaseAdapter]
@@ -144,10 +141,6 @@ class ComponentRegistry:
self._chatter_registry: dict[str, type[BaseChatter]] = {}
self._enabled_chatter_registry: dict[str, type[BaseChatter]] = {}
# InterestCalculator 相关
self._interest_calculator_registry: dict[str, type[BaseInterestCalculator]] = {}
self._enabled_interest_calculator_registry: dict[str, type[BaseInterestCalculator]] = {}
# Prompt 相关
self._prompt_registry: dict[str, type[BasePrompt]] = {}
self._enabled_prompt_registry: dict[str, type[BasePrompt]] = {}
@@ -283,7 +276,6 @@ class ComponentRegistry:
ComponentType.TOOL: self._register_tool,
ComponentType.EVENT_HANDLER: self._register_event_handler,
ComponentType.CHATTER: self._register_chatter,
ComponentType.INTEREST_CALCULATOR: self._register_interest_calculator,
ComponentType.PROMPT: self._register_prompt,
ComponentType.ROUTER: self._register_router,
ComponentType.ADAPTER: self._register_adapter,
@@ -344,9 +336,6 @@ class ComponentRegistry:
case ComponentType.CHATTER:
self._chatter_registry.pop(component_name, None)
self._enabled_chatter_registry.pop(component_name, None)
case ComponentType.INTEREST_CALCULATOR:
self._interest_calculator_registry.pop(component_name, None)
self._enabled_interest_calculator_registry.pop(component_name, None)
case ComponentType.PROMPT:
self._prompt_registry.pop(component_name, None)
self._enabled_prompt_registry.pop(component_name, None)
@@ -497,25 +486,6 @@ class ComponentRegistry:
self._enabled_chatter_registry[info.name] = chatter_class
return True
def _register_interest_calculator(self, info: ComponentInfo, cls: ComponentClassType) -> bool:
"""
注册 InterestCalculator 组件到特定注册表。
Args:
info: InterestCalculator 组件的元数据信息
cls: InterestCalculator 组件的类定义
Returns:
注册成功返回 True
"""
calc_info = cast(InterestCalculatorInfo, info)
calc_class = cast(type[BaseInterestCalculator], cls)
_assign_plugin_attrs(calc_class, info.plugin_name, self.get_plugin_config(info.plugin_name) or {})
self._interest_calculator_registry[info.name] = calc_class
if calc_info.enabled:
self._enabled_interest_calculator_registry[info.name] = calc_class
return True
def _register_prompt(self, info: ComponentInfo, cls: ComponentClassType) -> bool:
"""
注册 Prompt 组件到 Prompt 特定注册表。
@@ -950,26 +920,6 @@ class ComponentRegistry:
info = self.get_component_info(chatter_name, ComponentType.CHATTER)
return info if isinstance(info, ChatterInfo) else None
# --- InterestCalculator ---
def get_interest_calculator_registry(self) -> dict[str, type[BaseInterestCalculator]]:
"""获取所有已注册的 InterestCalculator 类。"""
return self._interest_calculator_registry.copy()
def get_enabled_interest_calculator_registry(self) -> dict[str, type[BaseInterestCalculator]]:
"""
获取所有已启用的 InterestCalculator 类。
会检查组件的全局启用状态。
Returns:
可用的 InterestCalculator 名称到类的字典
"""
return {
name: cls
for name, cls in self._interest_calculator_registry.items()
if self.is_component_available(name, ComponentType.INTEREST_CALCULATOR)
}
# --- Prompt ---
def get_prompt_registry(self) -> dict[str, type[BasePrompt]]:
"""获取所有已注册的 Prompt 类。"""

View File

@@ -110,8 +110,6 @@ class ComponentStateManager:
)
case ComponentType.CHATTER:
self._registry._enabled_chatter_registry[component_name] = target_class # type: ignore
case ComponentType.INTEREST_CALCULATOR:
self._registry._enabled_interest_calculator_registry[component_name] = target_class # type: ignore
case ComponentType.PROMPT:
self._registry._enabled_prompt_registry[component_name] = target_class # type: ignore
case ComponentType.ADAPTER:
@@ -161,8 +159,6 @@ class ComponentStateManager:
event_manager.remove_event_handler(component_name)
case ComponentType.CHATTER:
self._registry._enabled_chatter_registry.pop(component_name, None)
case ComponentType.INTEREST_CALCULATOR:
self._registry._enabled_interest_calculator_registry.pop(component_name, None)
case ComponentType.PROMPT:
self._registry._enabled_prompt_registry.pop(component_name, None)
case ComponentType.ADAPTER: