refactor: 统一类型注解风格并优化代码结构

- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链

BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
This commit is contained in:
明天好像没什么
2025-10-31 22:42:39 +08:00
parent 5080cfccfc
commit 0e129d385e
105 changed files with 592 additions and 561 deletions

View File

@@ -87,8 +87,8 @@ class ComponentRegistry:
self._tool_registry: dict[str, type["BaseTool"]] = {} # 工具名 -> 工具类
self._llm_available_tools: dict[str, type["BaseTool"]] = {} # llm可用的工具名 -> 工具类
# MCP 工具注册表运行时动态加载
self._mcp_tools: list["BaseTool"] = [] # MCP 工具适配器实例列表
# MCP 工具注册表(运行时动态加载)
self._mcp_tools: list[Any] = [] # MCP 工具适配器实例列表
self._mcp_tools_loaded = False # MCP 工具是否已加载
# EventHandler特定注册表

View File

@@ -7,7 +7,6 @@ from threading import Lock
from typing import Any, Optional
from src.common.logger import get_logger
from src.plugin_system import BaseEventHandler
from src.plugin_system.base.base_event import BaseEvent, HandlerResultsCollection
from src.plugin_system.base.base_events_handler import BaseEventHandler
from src.plugin_system.base.component_types import EventType
@@ -176,10 +175,10 @@ class EventManager:
# 处理init_subscribe缓存失败的订阅
if self._event_handlers[handler_name].init_subscribe:
failed_subscriptions = []
for event_name in self._event_handlers[handler_name].init_subscribe:
if not self.subscribe_handler_to_event(handler_name, event_name):
failed_subscriptions.append(event_name)
failed_subscriptions = [
event_name for event_name in self._event_handlers[handler_name].init_subscribe
if not self.subscribe_handler_to_event(handler_name, event_name)
]
# 缓存失败的订阅
if failed_subscriptions:

View File

@@ -4,7 +4,7 @@ MCP Tool Adapter
将 MCP 工具适配为 BaseTool使其能够被插件系统识别和调用
"""
from typing import Any, ClassVar
from typing import Any
import mcp.types
@@ -27,9 +27,6 @@ class MCPToolAdapter(BaseTool):
3. 参与工具缓存机制
"""
# 类级别默认值,使用 ClassVar 标注
available_for_llm: ClassVar[bool] = True
def __init__(self, server_name: str, mcp_tool: mcp.types.Tool, plugin_config: dict | None = None):
"""
初始化 MCP 工具适配器
@@ -47,6 +44,7 @@ class MCPToolAdapter(BaseTool):
# 设置实例属性
self.name = f"mcp_{server_name}_{mcp_tool.name}"
self.description = mcp_tool.description or f"MCP tool from {server_name}"
self.available_for_llm = True # MCP 工具默认可供 LLM 使用
# 转换参数定义
self.parameters = self._convert_parameters(mcp_tool.inputSchema)

View File

@@ -456,8 +456,7 @@ class PermissionManager(IPermissionManager):
)
granted_users = result.scalars().all()
for user_perm in granted_users:
users.append((user_perm.platform, user_perm.user_id))
users.extend((user_perm.platform, user_perm.user_id) for user_perm in granted_users)
# 如果是默认授权的权限节点,还需要考虑没有明确设置的用户
# 但这里我们只返回明确授权的用户,避免返回所有用户

View File

@@ -94,7 +94,6 @@ class PluginManager:
if not plugin_class:
logger.error(f"插件 {plugin_name} 的插件类未注册或不存在")
return False, 1
init_module = None # 预先定义,避免后续条件加载导致未绑定
try:
# 使用记录的插件目录路径
plugin_dir = self.plugin_paths.get(plugin_name)