diff --git a/src/plugin_system/core/mcp_client_manager.py b/src/plugin_system/core/mcp_client_manager.py index ffcec9e1c..4ab10971a 100644 --- a/src/plugin_system/core/mcp_client_manager.py +++ b/src/plugin_system/core/mcp_client_manager.py @@ -146,9 +146,9 @@ class MCPClientManager: try: client = await self._create_client(server_config) self.clients[server_name] = client - logger.info(f"✅ MCP 服务器 '{server_name}' 连接成功") + logger.info(f" MCP 服务器 '{server_name}' 连接成功") except Exception as e: - logger.error(f"❌ 连接 MCP 服务器 '{server_name}' 失败: {e}") + logger.error(f" 连接 MCP 服务器 '{server_name}' 失败: {e}") continue self._initialized = True diff --git a/src/plugin_system/core/mcp_tool_adapter.py b/src/plugin_system/core/mcp_tool_adapter.py index ec5faf441..47e1547b7 100644 --- a/src/plugin_system/core/mcp_tool_adapter.py +++ b/src/plugin_system/core/mcp_tool_adapter.py @@ -47,7 +47,7 @@ class MCPToolAdapter(BaseTool): self.available_for_llm = True # MCP 工具默认可供 LLM 使用 # 转换参数定义 - self.parameters = self._convert_parameters(mcp_tool.inputSchema) + self.parameters: list[tuple[str, ToolParamType, str, bool, list[str] | None]] = self._convert_parameters(mcp_tool.inputSchema) logger.debug(f"创建 MCP 工具适配器: {self.name}") @@ -238,9 +238,9 @@ async def load_mcp_tools_as_adapters() -> list[MCPToolAdapter]: try: adapter = MCPToolAdapter.from_mcp_tool(server_name, mcp_tool) adapters.append(adapter) - logger.debug(f" ✓ 加载工具: {adapter.name}") + logger.debug(f" 加载工具: {adapter.name}") except Exception as e: - logger.error(f" ✗ 创建工具适配器失败: {mcp_tool.name} | 错误: {e}") + logger.error(f" 创建工具适配器失败: {mcp_tool.name} | 错误: {e}") continue logger.info(f"MCP 工具加载完成: 成功 {len(adapters)}/{total_tools} 个") diff --git a/src/plugin_system/core/plugin_manager.py b/src/plugin_system/core/plugin_manager.py index 7b3900279..a409279d1 100644 --- a/src/plugin_system/core/plugin_manager.py +++ b/src/plugin_system/core/plugin_manager.py @@ -109,7 +109,7 @@ class PluginManager: if not module or not hasattr(module, "__plugin_meta__"): self.failed_plugins[plugin_name] = "插件模块中缺少 __plugin_meta__" - logger.error(f"❌ 插件加载失败: {plugin_name} - 缺少 __plugin_meta__") + logger.error(f" 插件加载失败: {plugin_name} - 缺少 __plugin_meta__") return False, 1 metadata: PluginMetadata = getattr(module, "__plugin_meta__") @@ -154,14 +154,14 @@ class PluginManager: return True, 1 else: self.failed_plugins[plugin_name] = "插件注册失败" - logger.error(f"❌ 插件注册失败: {plugin_name}") + logger.error(f" 插件注册失败: {plugin_name}") return False, 1 except Exception as e: # 其他错误 error_msg = f"未知错误: {e!s}" self.failed_plugins[plugin_name] = error_msg - logger.error(f"❌ 插件加载失败: {plugin_name} - {error_msg}") + logger.error(f" 插件加载失败: {plugin_name} - {error_msg}") logger.debug("详细错误信息: ", exc_info=True) return False, 1 @@ -340,14 +340,14 @@ class PluginManager: if not success: error_msg = f"Python依赖检查失败: {', '.join(errors)}" self.failed_plugins[plugin_name] = error_msg - logger.error(f"❌ 插件加载失败: {plugin_name} - {error_msg}") + logger.error(f" 插件加载失败: {plugin_name} - {error_msg}") return None # 依赖检查失败,不加载该模块 # 2. 检查插件依赖 if not self._check_plugin_dependencies(metadata): error_msg = f"插件依赖检查失败: 请确保依赖 {metadata.dependencies} 已正确安装并加载。" self.failed_plugins[plugin_name] = error_msg - logger.error(f"❌ 插件加载失败: {plugin_name} - {error_msg}") + logger.error(f" 插件加载失败: {plugin_name} - {error_msg}") return None # 插件依赖检查失败 # --- 依赖检查逻辑结束 --- @@ -408,7 +408,7 @@ class PluginManager: # 📋 显示插件加载总览 if total_registered > 0: - logger.info("🎉 插件系统加载完成!") + logger.info(" 插件系统加载完成!") logger.info( f"📊 总览: {total_registered}个插件, {total_components}个组件 (Action: {action_count}, Command: {command_count}, Tool: {tool_count}, PlusCommand: {plus_command_count}, EventHandler: {event_handler_count}, Chatter: {chatter_count}, Prompt: {prompt_count}, Router: {router_count})" ) @@ -616,7 +616,7 @@ class PluginManager: return True except Exception as e: - logger.error(f"❌ 插件卸载失败: {plugin_name} - {e!s}", exc_info=True) + logger.error(f" 插件卸载失败: {plugin_name} - {e!s}", exc_info=True) return False diff --git a/src/plugin_system/core/stream_tool_history.py b/src/plugin_system/core/stream_tool_history.py index fd440a04a..6a2cfc997 100644 --- a/src/plugin_system/core/stream_tool_history.py +++ b/src/plugin_system/core/stream_tool_history.py @@ -245,7 +245,7 @@ class StreamToolHistoryManager: lines = ["## 🔧 最近工具调用记录"] for i, record in enumerate(recent_records, 1): - status_icon = "✅" if record.status == "success" else "❌" if record.status == "error" else "⏳" + status_icon = "success" if record.status == "success" else "error" if record.status == "error" else "pending" # 格式化参数 args_preview = self._format_args_preview(record.args) diff --git a/src/plugin_system/utils/dependency_manager.py b/src/plugin_system/utils/dependency_manager.py index 4d5e48a9d..2939d8bb6 100644 --- a/src/plugin_system/utils/dependency_manager.py +++ b/src/plugin_system/utils/dependency_manager.py @@ -110,19 +110,19 @@ class DependencyManager: for package in packages: try: if self._install_single_package(package, plugin_name): - logger.info(f"{log_prefix}✅ 成功安装: {package}") + logger.info(f"{log_prefix} 成功安装: {package}") else: failed_packages.append(package) - logger.error(f"{log_prefix}❌ 安装失败: {package}") + logger.error(f"{log_prefix} 安装失败: {package}") except Exception as e: failed_packages.append(package) - logger.error(f"{log_prefix}❌ 安装 {package} 时发生异常: {e!s}") + logger.error(f"{log_prefix} 安装 {package} 时发生异常: {e!s}") success = len(failed_packages) == 0 if success: - logger.info(f"{log_prefix}🎉 所有依赖安装完成") + logger.info(f"{log_prefix} 所有依赖安装完成") else: - logger.error(f"{log_prefix}⚠️ 部分依赖安装失败: {failed_packages}") + logger.error(f"{log_prefix} 部分依赖安装失败: {failed_packages}") return success, failed_packages diff --git a/src/plugins/built_in/web_search_tool/utils/api_key_manager.py b/src/plugins/built_in/web_search_tool/utils/api_key_manager.py index bff72b97e..68dd6af2c 100644 --- a/src/plugins/built_in/web_search_tool/utils/api_key_manager.py +++ b/src/plugins/built_in/web_search_tool/utils/api_key_manager.py @@ -42,7 +42,7 @@ class APIKeyManager(Generic[T]): try: self.clients = [client_factory(key) for key in valid_keys] self.client_cycle = itertools.cycle(self.clients) - logger.info(f"🔑 {service_name} 成功加载 {len(valid_keys)} 个 API 密钥") + logger.info(f" {service_name} 成功加载 {len(valid_keys)} 个 API 密钥") except Exception as e: logger.error(f"❌ 初始化 {service_name} 客户端失败: {e}") self.clients = [] @@ -61,6 +61,7 @@ class APIKeyManager(Generic[T]): if not self.is_available(): return None + assert self.client_cycle is not None return next(self.client_cycle) def get_client_count(self) -> int: diff --git a/src/utils/json_parser.py b/src/utils/json_parser.py index 33a971cfa..4d1bf0ce9 100644 --- a/src/utils/json_parser.py +++ b/src/utils/json_parser.py @@ -58,7 +58,7 @@ def extract_and_parse_json(response: str, *, strict: bool = False) -> dict[str, # 步骤 2: 尝试直接解析 try: result = orjson.loads(cleaned) - logger.debug(f"✅ JSON 直接解析成功,类型: {type(result).__name__}") + logger.debug(f" JSON 直接解析成功,类型: {type(result).__name__}") return result except Exception as direct_error: logger.debug(f"直接解析失败: {type(direct_error).__name__}: {direct_error}") @@ -70,10 +70,10 @@ def extract_and_parse_json(response: str, *, strict: bool = False) -> dict[str, # repair_json 可能返回字符串或已解析的对象 if isinstance(repaired, str): result = orjson.loads(repaired) - logger.debug(f"✅ JSON 修复后解析成功(字符串模式),类型: {type(result).__name__}") + logger.debug(f" JSON 修复后解析成功(字符串模式),类型: {type(result).__name__}") else: result = repaired - logger.debug(f"✅ JSON 修复后解析成功(对象模式),类型: {type(result).__name__}") + logger.debug(f" JSON 修复后解析成功(对象模式),类型: {type(result).__name__}") return result @@ -93,7 +93,7 @@ def extract_and_parse_json(response: str, *, strict: bool = False) -> dict[str, return {} except Exception as e: - logger.error(f"❌ JSON 解析过程出现异常: {type(e).__name__}: {e}") + logger.error(f" JSON 解析过程出现异常: {type(e).__name__}: {e}") if strict: return None return {} if not response.strip().startswith("[") else []