diff --git a/astrbot/core/__init__.py b/astrbot/core/__init__.py index 9749dee24..20ec6167f 100644 --- a/astrbot/core/__init__.py +++ b/astrbot/core/__init__.py @@ -8,6 +8,7 @@ from astrbot.core.db.sqlite import SQLiteDatabase from astrbot.core.config.default import DB_PATH from astrbot.core.config import AstrBotConfig +# 初始化数据存储文件夹 os.makedirs("data", exist_ok=True) astrbot_config = AstrBotConfig() diff --git a/astrbot/core/core_lifecycle.py b/astrbot/core/core_lifecycle.py index fe257d078..7a0293116 100644 --- a/astrbot/core/core_lifecycle.py +++ b/astrbot/core/core_lifecycle.py @@ -1,3 +1,14 @@ +""" +Astrbot 核心生命周期管理类, 负责管理 AstrBot 的启动、停止、重启等操作。 +该类负责初始化各个组件, 包括 ProviderManager、PlatformManager、KnowledgeDBManager、ConversationManager、PluginManager、PipelineScheduler、EventBus等。 +该类还负责加载和执行插件, 以及处理事件总线的分发。 + +工作流程: +1. 初始化所有组件 +2. 启动事件总线和任务, 所有任务都在这里运行 +3. 执行启动完成事件钩子 +""" + import traceback import asyncio import time @@ -121,7 +132,7 @@ class AstrBotCoreLifecycle: self.event_bus.dispatch(), name="event_bus" ) - # 把插件中注册的所有协程函数注册到事件总线中 + # 把插件中注册的所有协程函数注册到事件总线中并执行 extra_tasks = [] for task in self.star_context._register_tasks: extra_tasks.append(asyncio.create_task(task, name=task.__name__)) diff --git a/astrbot/core/event_bus.py b/astrbot/core/event_bus.py index 91e6e46b0..d4caa2910 100644 --- a/astrbot/core/event_bus.py +++ b/astrbot/core/event_bus.py @@ -1,6 +1,14 @@ """ 事件总线, 用于处理事件的分发和处理 -事件总线是一个异步队列, 用于接收各种消息事件, 并将其分发到相应的处理器进行处理 +事件总线是一个异步队列, 用于接收各种消息事件, 并将其发送到Scheduler调度器进行处理 +其中包含了一个无限循环的调度函数, 用于从事件队列中获取新的事件, 并创建一个新的异步任务来执行管道调度器的处理逻辑 + +class: + EventBus: 事件总线, 用于处理事件的分发和处理 + +工作流程: +1. 维护一个异步队列, 来接受各种消息事件 +2. 无限循环的调度函数, 从事件队列中获取新的事件, 打印日志并创建一个新的异步任务来执行管道调度器的处理逻辑 """ import asyncio diff --git a/astrbot/core/initial_loader.py b/astrbot/core/initial_loader.py index f91a71da3..bea1224f3 100644 --- a/astrbot/core/initial_loader.py +++ b/astrbot/core/initial_loader.py @@ -1,3 +1,11 @@ +""" +AstrBot 启动器,负责初始化和启动核心组件和仪表板服务器。 + +工作流程: +1. 初始化核心生命周期, 传递数据库和日志代理实例到核心生命周期 +2. 运行核心生命周期任务和仪表板服务器 +""" + import asyncio import traceback from astrbot.core import logger @@ -8,6 +16,8 @@ from astrbot.dashboard.server import AstrBotDashboard class InitialLoader: + """AstrBot 启动器,负责初始化和启动核心组件和仪表板服务器。""" + def __init__(self, db: BaseDatabase, log_broker: LogBroker): self.db = db self.logger = logger @@ -27,10 +37,12 @@ class InitialLoader: self.dashboard_server = AstrBotDashboard( core_lifecycle, self.db, core_lifecycle.dashboard_shutdown_event ) - task = asyncio.gather(core_task, self.dashboard_server.run()) + task = asyncio.gather( + core_task, self.dashboard_server.run() + ) # 启动核心任务和仪表板服务器 try: - await task + await task # 整个AstrBot在这里运行 except asyncio.CancelledError: logger.info("🌈 正在关闭 AstrBot...") await core_lifecycle.stop()