fix: 修复代码质量和隐形问题 - 移除未使用导入、修复asyncio任务引用、修复类型注解

Co-authored-by: Windpicker-owo <221029311+Windpicker-owo@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-11-26 14:43:44 +00:00
parent 1c5028e719
commit 1ca3aa6a07
5 changed files with 114 additions and 118 deletions

View File

@@ -10,13 +10,10 @@ from __future__ import annotations
import asyncio import asyncio
import time import time
import uuid import uuid
from pathlib import Path from typing import Any
from typing import Any, Dict, Optional
import orjson import orjson
import websockets import websockets
from mofox_wire import ( from mofox_wire import (
AdapterBase, AdapterBase,
InProcessCoreSink, InProcessCoreSink,
@@ -25,7 +22,6 @@ from mofox_wire import (
WebSocketAdapterOptions, WebSocketAdapterOptions,
) )
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# 1. 模拟一个提供 WebSocket 接口的平台 # 1. 模拟一个提供 WebSocket 接口的平台
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
@@ -93,7 +89,7 @@ class DemoWsAdapter(AdapterBase): # 继承AdapterBase
# 实现 from_platform_message 方法,将平台消息转换为 MessageEnvelope # 实现 from_platform_message 方法,将平台消息转换为 MessageEnvelope
# 该方法必须被实现以便 AdapterBase 正确处理消息转换 # 该方法必须被实现以便 AdapterBase 正确处理消息转换
# 该方法会在adapter接收到平台消息后被调用 # 该方法会在adapter接收到平台消息后被调用
def from_platform_message(self, raw: Dict[str, Any]) -> MessageEnvelope: def from_platform_message(self, raw: dict[str, Any]) -> MessageEnvelope:
return { return {
"id": raw["message_id"], "id": raw["message_id"],
"direction": "incoming", "direction": "incoming",
@@ -151,7 +147,7 @@ async def handle_incoming(env: MessageEnvelope) -> MessageEnvelope:
} }
adapter: Optional[DemoWsAdapter] = None adapter: DemoWsAdapter | None = None
async def core_entry(message: MessageEnvelope) -> None: async def core_entry(message: MessageEnvelope) -> None:

View File

@@ -25,7 +25,7 @@ sys.path.insert(0, str(Path(__file__).parent.parent))
async def generate_missing_embeddings( async def generate_missing_embeddings(
target_node_types: list[str] = None, target_node_types: list[str] | None = None,
batch_size: int = 50, batch_size: int = 50,
): ):
""" """

View File

@@ -307,8 +307,8 @@ async def extract_information(paragraphs_dict, model_set):
now = datetime.datetime.now() now = datetime.datetime.now()
filename = now.strftime("%Y-%m-%d-%H-%M-%S-openie.json") filename = now.strftime("%Y-%m-%d-%H-%M-%S-openie.json")
output_path = os.path.join(OPENIE_OUTPUT_DIR, filename) output_path = os.path.join(OPENIE_OUTPUT_DIR, filename)
with open(output_path, "wb") as f: async with aiofiles.open(output_path, "wb") as f:
f.write(orjson.dumps(openie_obj._to_dict())) await f.write(orjson.dumps(openie_obj._to_dict()))
logger.info(f"信息提取结果已保存到: {output_path}") logger.info(f"信息提取结果已保存到: {output_path}")
logger.info(f"成功提取 {len(open_ie_docs)} 个段落的信息") logger.info(f"成功提取 {len(open_ie_docs)} 个段落的信息")

View File

@@ -27,21 +27,17 @@
from __future__ import annotations from __future__ import annotations
import asyncio
import os import os
import re import re
import time
import traceback import traceback
from functools import partial
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING, Any
from mofox_wire import MessageEnvelope, MessageRuntime from mofox_wire import MessageEnvelope, MessageRuntime
from src.chat.message_manager import message_manager from src.chat.message_manager import message_manager
from src.chat.message_receive.storage import MessageStorage from src.chat.message_receive.storage import MessageStorage
from src.chat.utils.prompt import global_prompt_manager
from src.chat.utils.utils import is_mentioned_bot_in_message from src.chat.utils.utils import is_mentioned_bot_in_message
from src.common.data_models.database_data_model import DatabaseMessages, DatabaseUserInfo, DatabaseGroupInfo from src.common.data_models.database_data_model import DatabaseGroupInfo, DatabaseMessages, DatabaseUserInfo
from src.common.logger import get_logger from src.common.logger import get_logger
from src.config.config import global_config from src.config.config import global_config
from src.mood.mood_manager import mood_manager from src.mood.mood_manager import mood_manager
@@ -49,8 +45,8 @@ from src.plugin_system.base import BaseCommand, EventType
from src.plugin_system.core import component_registry, event_manager, global_announcement_manager from src.plugin_system.core import component_registry, event_manager, global_announcement_manager
if TYPE_CHECKING: if TYPE_CHECKING:
from src.common.core_sink_manager import CoreSinkManager
from src.chat.message_receive.chat_stream import ChatStream from src.chat.message_receive.chat_stream import ChatStream
from src.common.core_sink_manager import CoreSinkManager
logger = get_logger("message_handler") logger = get_logger("message_handler")

View File

@@ -20,9 +20,9 @@ CoreSink 统一管理器
from __future__ import annotations from __future__ import annotations
import asyncio import asyncio
import contextlib
import multiprocessing as mp import multiprocessing as mp
from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Optional from collections.abc import Awaitable, Callable
from typing import Any
from mofox_wire import ( from mofox_wire import (
InProcessCoreSink, InProcessCoreSink,
@@ -33,9 +33,6 @@ from mofox_wire import (
from src.common.logger import get_logger from src.common.logger import get_logger
if TYPE_CHECKING:
from chat.message_receive.message_handler import MessageHandler
logger = get_logger("core_sink_manager") logger = get_logger("core_sink_manager")
@@ -76,7 +73,7 @@ class CoreSinkManager:
# 子进程通信管理 # 子进程通信管理
# key: adapter_name, value: (ProcessCoreSinkServer, incoming_queue, outgoing_queue) # key: adapter_name, value: (ProcessCoreSinkServer, incoming_queue, outgoing_queue)
self._process_sinks: Dict[str, tuple[ProcessCoreSinkServer, mp.Queue, mp.Queue]] = {} self._process_sinks: dict[str, tuple[ProcessCoreSinkServer, mp.Queue, mp.Queue]] = {}
# multiprocessing context # multiprocessing context
self._mp_ctx = mp.get_context("spawn") self._mp_ctx = mp.get_context("spawn")
@@ -85,6 +82,9 @@ class CoreSinkManager:
self._running = False self._running = False
self._initialized = False self._initialized = False
# 后台任务集合(防止任务被垃圾回收)
self._background_tasks: set[asyncio.Task] = set()
@property @property
def runtime(self) -> MessageRuntime: def runtime(self) -> MessageRuntime:
""" """
@@ -196,7 +196,9 @@ class CoreSinkManager:
logger.warning(f"适配器 {adapter_name} 的队列已存在,将被覆盖") logger.warning(f"适配器 {adapter_name} 的队列已存在,将被覆盖")
# 先关闭旧的 # 先关闭旧的
old_server, _, _ = self._process_sinks[adapter_name] old_server, _, _ = self._process_sinks[adapter_name]
asyncio.create_task(old_server.close()) task = asyncio.create_task(old_server.close())
self._background_tasks.add(task)
task.add_done_callback(self._background_tasks.discard)
# 创建通信队列 # 创建通信队列
incoming_queue = self._mp_ctx.Queue() # 子进程 → 核心 incoming_queue = self._mp_ctx.Queue() # 子进程 → 核心
@@ -232,7 +234,9 @@ class CoreSinkManager:
return return
server, _, _ = self._process_sinks.pop(adapter_name) server, _, _ = self._process_sinks.pop(adapter_name)
asyncio.create_task(server.close()) task = asyncio.create_task(server.close())
self._background_tasks.add(task)
task.add_done_callback(self._background_tasks.discard)
logger.info(f"已移除适配器 {adapter_name} 的 ProcessCoreSink 通信队列") logger.info(f"已移除适配器 {adapter_name} 的 ProcessCoreSink 通信队列")
async def send_outgoing( async def send_outgoing(
@@ -390,12 +394,12 @@ async def push_outgoing(envelope: MessageEnvelope) -> None:
__all__ = [ __all__ = [
"CoreSinkManager", "CoreSinkManager",
# 向后兼容
"get_core_sink",
"get_core_sink_manager", "get_core_sink_manager",
"get_message_runtime", "get_message_runtime",
"initialize_core_sink_manager", "initialize_core_sink_manager",
"shutdown_core_sink_manager",
# 向后兼容
"get_core_sink",
"set_core_sink",
"push_outgoing", "push_outgoing",
"set_core_sink",
"shutdown_core_sink_manager",
] ]