From 8a6b141017c4a3f75072c743f1375b78f8ad0dbe Mon Sep 17 00:00:00 2001 From: Windpicker-owo <3431391539@qq.com> Date: Tue, 25 Nov 2025 22:45:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BB=A3=E7=A0=81=E4=BB=A5?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20mofox=5Fwire=20=E6=9B=BF=E4=BB=A3=20mofox?= =?UTF-8?q?=5Fbus=EF=BC=8C=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=92=8C=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/message_runtime_architecture.md | 10 +++++----- docs/mofox_bus.md | 14 ++++++------- examples/mofox_bus_demo_adapter.py | 2 +- pyproject.toml | 2 +- src/chat/message_receive/chat_stream.py | 2 +- src/chat/message_receive/message_handler.py | 4 ++-- src/chat/message_receive/message_processor.py | 6 +++--- .../message_receive/uni_message_sender.py | 2 +- src/chat/replyer/default_generator.py | 2 +- src/common/core_sink_manager.py | 4 ++-- src/common/logger.py | 2 +- src/common/message/api.py | 4 ++-- src/config/official_configs.py | 2 +- src/plugin_system/apis/send_api.py | 2 +- src/plugin_system/base/base_adapter.py | 6 +++--- src/plugin_system/core/adapter_manager.py | 4 ++-- .../built_in/NEW_napcat_adapter/README.md | 20 +++++++++---------- .../built_in/NEW_napcat_adapter/plugin.py | 4 ++-- .../src/handlers/to_core/message_handler.py | 4 ++-- .../src/mmc_com_layer.py | 2 +- 20 files changed, 49 insertions(+), 49 deletions(-) diff --git a/docs/message_runtime_architecture.md b/docs/message_runtime_architecture.md index 30a7741e7..594ba5b20 100644 --- a/docs/message_runtime_architecture.md +++ b/docs/message_runtime_architecture.md @@ -1,6 +1,6 @@ # MoFox Bot 消息运行时架构 (MessageRuntime) -本文档描述了 MoFox Bot 使用 `mofox_bus.MessageRuntime` 简化消息处理链条的架构设计。 +本文档描述了 MoFox Bot 使用 `mofox_wire.MessageRuntime` 简化消息处理链条的架构设计。 ## 架构概述 @@ -54,7 +54,7 @@ await manager.send_outgoing(envelope) ### 2. MessageRuntime -`MessageRuntime` 是 mofox_bus 提供的消息路由核心,支持: +`MessageRuntime` 是 mofox_wire 提供的消息路由核心,支持: - **消息路由**:通过 `add_route()` 或 `@on_message` 装饰器按消息类型路由 - **钩子机制**:`before_hook`(前置处理)、`after_hook`(后置处理)、`error_hook`(错误处理) @@ -148,7 +148,7 @@ class MessageHandler: ```python from src.common.core_sink_manager import get_message_runtime -from mofox_bus import MessageEnvelope +from mofox_wire import MessageEnvelope runtime = get_message_runtime() @@ -216,7 +216,7 @@ async def initialize(self) -> None: ## 参考 -- `packages/mofox-bus/src/mofox_bus/runtime.py` - MessageRuntime 实现 +- `packages/mofox-wire/src/mofox_wire/runtime.py` - MessageRuntime 实现 - `src/common/core_sink_manager.py` - CoreSinkManager 实现 - `src/chat/message_receive/message_handler.py` - MessageHandler 实现 -- `docs/mofox_bus.md` - MoFox Bus 消息库说明 +- `docs/mofox_wire.md` - MoFox Bus 消息库说明 diff --git a/docs/mofox_bus.md b/docs/mofox_bus.md index febe0c401..5ed2b53db 100644 --- a/docs/mofox_bus.md +++ b/docs/mofox_bus.md @@ -2,7 +2,7 @@ MoFox Bus 是 MoFox Bot 自研的统一消息中台,替换第三方 `maim_message`,将核心与各平台适配器之间的通信抽象成可拓展、可热插拔的组件。该库完全异步、面向高吞吐,覆盖消息建模、序列化、传输层、运行时路由、适配器工具等多个层面。 -> 现在已拆分为独立 pip 包:在项目根目录执行 `pip install -e ./packages/mofox-bus` 即可安装到当前 Python 环境。 +> 现在已拆分为独立 pip 包:在项目根目录执行 `pip install -e ./packages/mofox-wire` 即可安装到当前 Python 环境。 --- @@ -16,7 +16,7 @@ MoFox Bus 是 MoFox Bot 自研的统一消息中台,替换第三方 `maim_mess --- -## 2. 包结构概览(`packages/mofox-bus/src/mofox_bus/`) +## 2. 包结构概览(`packages/mofox-wire/src/mofox_wire/`) | 模块 | 主要职责 | | --- | --- | @@ -115,15 +115,15 @@ TypedDict 更适合网络传输和依赖注入;dataclass 版 MessageBase 则 1. **配置文件**:在 `config.*.toml` 中新增 `[message_bus]` 段(参考 `template/bot_config_template.toml`),控制 host/port/token/wss 等。 2. **服务启动**:`src/common/message/api.py` 中的 `get_global_api()` 已默认实例化 `MessageServer`,并将 token 写入服务器。 -3. **适配器更新**:所有使用原 `maim_message` 的模块已改为 `from mofox_bus import ...`,无需额外适配即可继续利用 `MessageBase` / `Router` API。 +3. **适配器更新**:所有使用原 `maim_message` 的模块已改为 `from mofox_wire import ...`,无需额外适配即可继续利用 `MessageBase` / `Router` API。 --- ## 10. 快速上手示例 ```python -from mofox_bus import MessageRuntime, types -from mofox_bus.transport import HttpMessageServer +from mofox_wire import MessageRuntime, types +from mofox_wire.transport import HttpMessageServer runtime = MessageRuntime() @@ -140,7 +140,7 @@ app = server.make_app() # 交给 aiohttp/uvicorn 运行 **适配器 Skeleton:** ```python -from mofox_bus import ( +from mofox_wire import ( BaseAdapter, MessageEnvelope, WebSocketAdapterOptions, @@ -174,7 +174,7 @@ class MyAdapter(BaseAdapter): - 如果传入 `WebSocketAdapterOptions`,BaseAdapter 会自动建立连接、监听、默认封装 `{"type":"message","payload":...}` 的标准 JSON,并允许通过 `outgoing_encoder` 自定义下行格式。 - 如果传入 `HttpAdapterOptions`,BaseAdapter 会自动启动一个 aiohttp Webhook(`POST /adapter/messages`)并将收到的 JSON 批量投递给核心。 -> 完整的 WebSocket 适配器示例见 `examples/mofox_bus_demo_adapter.py`:演示了平台提供 WS 接口、适配器通过 `WebSocketAdapterOptions` 自动启动监听、接收/处理/回发的全过程,可直接运行观察日志。 +> 完整的 WebSocket 适配器示例见 `examples/mofox_wire_demo_adapter.py`:演示了平台提供 WS 接口、适配器通过 `WebSocketAdapterOptions` 自动启动监听、接收/处理/回发的全过程,可直接运行观察日志。 --- diff --git a/examples/mofox_bus_demo_adapter.py b/examples/mofox_bus_demo_adapter.py index 8ca040dc0..4a969d712 100644 --- a/examples/mofox_bus_demo_adapter.py +++ b/examples/mofox_bus_demo_adapter.py @@ -17,7 +17,7 @@ import orjson import websockets -from mofox_bus import ( +from mofox_wire import ( AdapterBase, InProcessCoreSink, MessageEnvelope, diff --git a/pyproject.toml b/pyproject.toml index f965ce1d3..051f74109 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,7 +78,7 @@ dependencies = [ "inkfox>=0.1.1", "rjieba>=0.1.13", "fastmcp>=2.13.0", - "mofox-bus", + "mofox-wire", ] [[tool.uv.index]] diff --git a/src/chat/message_receive/chat_stream.py b/src/chat/message_receive/chat_stream.py index e9b2e833a..7fab708d2 100644 --- a/src/chat/message_receive/chat_stream.py +++ b/src/chat/message_receive/chat_stream.py @@ -342,7 +342,7 @@ class ChatManager: def register_message(self, message: DatabaseMessages): """注册消息到聊天流""" # 从 DatabaseMessages 提取平台和用户/群组信息 - from mofox_bus import GroupInfo, UserInfo + from mofox_wire import GroupInfo, UserInfo user_info = UserInfo( platform=message.user_info.platform, diff --git a/src/chat/message_receive/message_handler.py b/src/chat/message_receive/message_handler.py index 6434bd1d1..ff40a51a5 100644 --- a/src/chat/message_receive/message_handler.py +++ b/src/chat/message_receive/message_handler.py @@ -1,7 +1,7 @@ """ 统一消息处理器 (Message Handler) -利用 mofox_bus.MessageRuntime 的路由功能,简化消息处理链条: +利用 mofox_wire.MessageRuntime 的路由功能,简化消息处理链条: 1. 使用 @runtime.on_message() 装饰器注册按消息类型路由的处理器 2. 使用 before_hook 进行消息预处理(ID标准化、过滤等) @@ -35,7 +35,7 @@ import traceback from functools import partial from typing import TYPE_CHECKING, Any -from mofox_bus import MessageEnvelope, MessageRuntime +from mofox_wire import MessageEnvelope, MessageRuntime from src.chat.message_manager import message_manager from src.chat.message_receive.storage import MessageStorage diff --git a/src/chat/message_receive/message_processor.py b/src/chat/message_receive/message_processor.py index e278c545a..9d4b8b232 100644 --- a/src/chat/message_receive/message_processor.py +++ b/src/chat/message_receive/message_processor.py @@ -1,14 +1,14 @@ """消息处理工具模块 将原 MessageRecv 的消息处理逻辑提取为独立函数, -基于 mofox-bus 的 TypedDict 形式构建消息数据,然后转换为 DatabaseMessages +基于 mofox-wire 的 TypedDict 形式构建消息数据,然后转换为 DatabaseMessages """ import base64 import time from typing import Any import orjson -from mofox_bus import MessageEnvelope -from mofox_bus.types import MessageInfoPayload, SegPayload, UserInfoPayload, GroupInfoPayload +from mofox_wire import MessageEnvelope +from mofox_wire.types import MessageInfoPayload, SegPayload, UserInfoPayload, GroupInfoPayload from src.chat.utils.self_voice_cache import consume_self_voice_text from src.chat.utils.utils_image import get_image_manager diff --git a/src/chat/message_receive/uni_message_sender.py b/src/chat/message_receive/uni_message_sender.py index 99f5246e6..dd2123015 100644 --- a/src/chat/message_receive/uni_message_sender.py +++ b/src/chat/message_receive/uni_message_sender.py @@ -8,7 +8,7 @@ from typing import TYPE_CHECKING from rich.traceback import install -from mofox_bus import MessageEnvelope +from mofox_wire import MessageEnvelope from src.chat.message_receive.message_processor import process_message_from_dict from src.chat.message_receive.storage import MessageStorage diff --git a/src/chat/replyer/default_generator.py b/src/chat/replyer/default_generator.py index c1334d08c..f91e9e604 100644 --- a/src/chat/replyer/default_generator.py +++ b/src/chat/replyer/default_generator.py @@ -13,7 +13,7 @@ from datetime import datetime, timedelta from typing import Any, Literal, TYPE_CHECKING from src.chat.express.expression_selector import expression_selector -from mofox_bus import MessageEnvelope +from mofox_wire import MessageEnvelope from src.chat.message_receive.message import Seg, UserInfo from src.chat.message_receive.uni_message_sender import HeartFCSender from src.chat.utils.chat_message_builder import ( diff --git a/src/common/core_sink_manager.py b/src/common/core_sink_manager.py index 2ebcfd3eb..3b04265ca 100644 --- a/src/common/core_sink_manager.py +++ b/src/common/core_sink_manager.py @@ -11,7 +11,7 @@ CoreSink 统一管理器 4. 提供统一的消息发送接口 架构说明(2025-11 重构): -- 集成 mofox_bus.MessageRuntime 作为消息路由中心 +- 集成 mofox_wire.MessageRuntime 作为消息路由中心 - 使用 @runtime.on_message() 装饰器注册消息处理器 - 利用 before_hook/after_hook/error_hook 处理前置/后置/错误逻辑 - 简化消息处理链条,提高可扩展性 @@ -24,7 +24,7 @@ import contextlib import multiprocessing as mp from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Optional -from mofox_bus import ( +from mofox_wire import ( InProcessCoreSink, MessageEnvelope, MessageRuntime, diff --git a/src/common/logger.py b/src/common/logger.py index 39bc89c3c..67f9f79aa 100644 --- a/src/common/logger.py +++ b/src/common/logger.py @@ -534,7 +534,7 @@ DEFAULT_MODULE_COLORS = { # 数据库和消息 "database_model": "#875F00", # 橙褐色 "database": "#00FF00", # 橙褐色 - "mofox_bus": "#AF87D7", # 紫褐色 + "mofox_wire": "#AF87D7", # 紫褐色 # 日志系统 "logger": "#808080", # 深灰色 "confirm": "#FFFF00", # 黄色+粗体 diff --git a/src/common/message/api.py b/src/common/message/api.py index f49474df7..34eb01fcb 100644 --- a/src/common/message/api.py +++ b/src/common/message/api.py @@ -1,6 +1,6 @@ import os -from mofox_bus import MessageServer +from mofox_wire import MessageServer from src.common.logger import get_logger from src.common.server import get_global_server @@ -45,7 +45,7 @@ def get_global_api() -> MessageServer: if bus_config.auth_token: kwargs["enable_token"] = True - kwargs["custom_logger"] = get_logger("mofox_bus") + kwargs["custom_logger"] = get_logger("mofox_wire") global_api = MessageServer(**kwargs) for token in bus_config.auth_token: diff --git a/src/config/official_configs.py b/src/config/official_configs.py index bb1716ddf..fd0fe50f6 100644 --- a/src/config/official_configs.py +++ b/src/config/official_configs.py @@ -575,7 +575,7 @@ class ExperimentalConfig(ValidatedConfigBase): class MessageBusConfig(ValidatedConfigBase): - """mofox_bus 消息服务配置""" + """mofox_wire 消息服务配置""" use_custom: bool = Field(default=False, description="是否使用自定义地址") host: str = Field(default="127.0.0.1", description="消息服务主机") diff --git a/src/plugin_system/apis/send_api.py b/src/plugin_system/apis/send_api.py index 612893c21..c8f3fc65c 100644 --- a/src/plugin_system/apis/send_api.py +++ b/src/plugin_system/apis/send_api.py @@ -92,7 +92,7 @@ import traceback import uuid from typing import TYPE_CHECKING, Any -from mofox_bus import MessageEnvelope +from mofox_wire import MessageEnvelope from src.common.data_models.database_data_model import DatabaseUserInfo if TYPE_CHECKING: from src.common.data_models.database_data_model import DatabaseMessages diff --git a/src/plugin_system/base/base_adapter.py b/src/plugin_system/base/base_adapter.py index d2566a4f2..88e65aa22 100644 --- a/src/plugin_system/base/base_adapter.py +++ b/src/plugin_system/base/base_adapter.py @@ -1,7 +1,7 @@ """ 插件系统 Adapter 基类 -提供插件化的适配器支持,包装 mofox_bus.AdapterBase, +提供插件化的适配器支持,包装 mofox_wire.AdapterBase, 添加插件生命周期、配置管理、自动启动等特性。 """ @@ -12,7 +12,7 @@ from abc import ABC, abstractmethod from pathlib import Path from typing import TYPE_CHECKING, Any, Dict, Optional -from mofox_bus import AdapterBase as MoFoxAdapterBase, CoreSink, MessageEnvelope, ProcessCoreSink +from mofox_wire import AdapterBase as MoFoxAdapterBase, CoreSink, MessageEnvelope, ProcessCoreSink if TYPE_CHECKING: from src.plugin_system.base.base_plugin import BasePlugin @@ -26,7 +26,7 @@ class BaseAdapter(MoFoxAdapterBase, ABC): """ 插件系统的 Adapter 基类 - 相比 mofox_bus.AdapterBase,增加了以下特性: + 相比 mofox_wire.AdapterBase,增加了以下特性: 1. 插件生命周期管理 (on_adapter_loaded, on_adapter_unloaded) 2. 配置管理集成 3. 自动重连与健康检查 diff --git a/src/plugin_system/core/adapter_manager.py b/src/plugin_system/core/adapter_manager.py index ae0ebec0d..ffb1359b4 100644 --- a/src/plugin_system/core/adapter_manager.py +++ b/src/plugin_system/core/adapter_manager.py @@ -19,7 +19,7 @@ from typing import TYPE_CHECKING, Dict, Optional if TYPE_CHECKING: from src.plugin_system.base.base_adapter import BaseAdapter -from mofox_bus import ProcessCoreSinkServer +from mofox_wire import ProcessCoreSinkServer from src.common.logger import get_logger logger = get_logger("adapter_manager") @@ -45,7 +45,7 @@ def _adapter_process_entry( """ import asyncio import contextlib - from mofox_bus import ProcessCoreSink + from mofox_wire import ProcessCoreSink async def _run() -> None: adapter_cls = _load_class(*adapter_path) diff --git a/src/plugins/built_in/NEW_napcat_adapter/README.md b/src/plugins/built_in/NEW_napcat_adapter/README.md index 22ded558a..b13bf78a4 100644 --- a/src/plugins/built_in/NEW_napcat_adapter/README.md +++ b/src/plugins/built_in/NEW_napcat_adapter/README.md @@ -1,13 +1,13 @@ # NEW_napcat_adapter -基于 mofox-bus v2.x 的 Napcat 适配器(使用 BaseAdapter 架构) +基于 mofox-wire v2.x 的 Napcat 适配器(使用 BaseAdapter 架构) ## 🏗️ 架构设计 -本插件采用 **BaseAdapter 继承模式** 重写,完全抛弃旧版 maim_message 库,改用 mofox-bus 的 TypedDict 数据结构。 +本插件采用 **BaseAdapter 继承模式** 重写,完全抛弃旧版 maim_message 库,改用 mofox-wire 的 TypedDict 数据结构。 ### 核心组件 -- **NapcatAdapter**: 继承自 `mofox_bus.AdapterBase`,负责 OneBot 11 协议与 MessageEnvelope 的双向转换 +- **NapcatAdapter**: 继承自 `mofox_wire.AdapterBase`,负责 OneBot 11 协议与 MessageEnvelope 的双向转换 - **WebSocketAdapterOptions**: 自动管理 WebSocket 连接,提供 incoming_parser 和 outgoing_encoder - **CoreMessageSink**: 通过 `InProcessCoreSink` 将消息递送到核心系统 - **Handlers**: 独立的消息处理器,分为 to_core(接收)和 to_napcat(发送)两个方向 @@ -56,10 +56,10 @@ NEW_napcat_adapter/ ## 🔑 核心数据结构 -### MessageEnvelope (mofox-bus v2.x) +### MessageEnvelope (mofox-wire v2.x) ```python -from mofox_bus import MessageEnvelope, SegPayload, MessageInfoPayload +from mofox_wire import MessageEnvelope, SegPayload, MessageInfoPayload # 创建消息信封 envelope: MessageEnvelope = { @@ -249,13 +249,13 @@ class NapcatAdapter(BaseAdapter): ```python # ❌ 旧版(maim_message) -from mofox_bus import Seg, MessageBase +from mofox_wire import Seg, MessageBase seg = Seg(type="text", data="hello") message = MessageBase(message_info=info, message_segment=seg) -# ✅ 新版(mofox-bus v2.x) -from mofox_bus import SegPayload, MessageEnvelope +# ✅ 新版(mofox-wire v2.x) +from mofox_wire import SegPayload, MessageEnvelope seg_payload: SegPayload = {"type": "text", "data": "hello"} envelope: MessageEnvelope = { @@ -359,8 +359,8 @@ async def from_platform_message(self, message: dict[str, Any]) -> MessageEnvelop ## 📚 参考资料 -- **mofox-bus 文档**: 查看 `mofox_bus/types.py` 了解 TypedDict 定义 -- **BaseAdapter 示例**: 参考 `docs/mofox_bus_demo_adapter.py` +- **mofox-wire 文档**: 查看 `mofox_wire/types.py` 了解 TypedDict 定义 +- **BaseAdapter 示例**: 参考 `docs/mofox_wire_demo_adapter.py` - **旧版实现**: `src/plugins/built_in/napcat_adapter_plugin/` (仅参考逻辑) - **OneBot 11 协议**: [OneBot 11 标准](https://github.com/botuniverse/onebot-11) diff --git a/src/plugins/built_in/NEW_napcat_adapter/plugin.py b/src/plugins/built_in/NEW_napcat_adapter/plugin.py index 8a539bf69..1eefc990b 100644 --- a/src/plugins/built_in/NEW_napcat_adapter/plugin.py +++ b/src/plugins/built_in/NEW_napcat_adapter/plugin.py @@ -17,7 +17,7 @@ from typing import Any, ClassVar, Dict, List, Optional import orjson import websockets -from mofox_bus import CoreSink, MessageEnvelope, WebSocketAdapterOptions +from mofox_wire import CoreSink, MessageEnvelope, WebSocketAdapterOptions from src.common.logger import get_logger from src.plugin_system import register_plugin from src.plugin_system.base import BaseAdapter, BasePlugin @@ -33,7 +33,7 @@ logger = get_logger("napcat_adapter") class NapcatAdapter(BaseAdapter): - """Napcat 适配器 - 完全基于 mofox-bus 架构""" + """Napcat 适配器 - 完全基于 mofox-wire 架构""" adapter_name = "napcat_adapter" adapter_version = "2.0.0" diff --git a/src/plugins/built_in/NEW_napcat_adapter/src/handlers/to_core/message_handler.py b/src/plugins/built_in/NEW_napcat_adapter/src/handlers/to_core/message_handler.py index 8f92f123a..0e83e39bb 100644 --- a/src/plugins/built_in/NEW_napcat_adapter/src/handlers/to_core/message_handler.py +++ b/src/plugins/built_in/NEW_napcat_adapter/src/handlers/to_core/message_handler.py @@ -5,10 +5,10 @@ from __future__ import annotations import time from typing import TYPE_CHECKING, Any, Dict, List, Optional -from mofox_bus import MessageBuilder +from mofox_wire import MessageBuilder from src.common.logger import get_logger from src.plugin_system.apis import config_api -from mofox_bus import ( +from mofox_wire import ( MessageEnvelope, SegPayload, MessageInfoPayload, diff --git a/src/plugins/built_in/napcat_adapter_plugin/src/mmc_com_layer.py b/src/plugins/built_in/napcat_adapter_plugin/src/mmc_com_layer.py index c15aba88c..77d9a3939 100644 --- a/src/plugins/built_in/napcat_adapter_plugin/src/mmc_com_layer.py +++ b/src/plugins/built_in/napcat_adapter_plugin/src/mmc_com_layer.py @@ -1,4 +1,4 @@ -from mofox_bus import RouteConfig, Router, TargetConfig +from mofox_wire import RouteConfig, Router, TargetConfig from src.common.logger import get_logger from src.common.server import get_global_server