Skip to content

框架项目结构与目录拓扑 ​

想要在 Eridanus 大展身手、开发属于你自己的独门插件?那必须先摸清我们家的藏宝阁地图咯!

Eridanus 采用模块化、插件化、解耦分层的工程架构。整体分为底层协议与 SDK 驱动(developTools)、框架级公共服务(framework_common)、业务插件生态(run)、运行期数据(data)以及网页交互层(web)。

核心目录树 ​

text
Eridanus/
├── main.py                  # 框架主入口:初始化配置、双 Bot 路由、插件动态扫描与主循环
├── developTools/            # 框架 SDK 核心层 (轻量独立 OneBot v11 驱动库)
│   ├── adapters/            # 协议适配器 (WebSocketBot, HttpBot, TelegramBot)
│   ├── event/               # 事件体系 (EventBase, EventBus, EventFactory, 强类型模型)
│   ├── interface/           # 发送消息接口实现 (websocket_sendMes, http_sendMes)
│   ├── message/             # 消息链与组件 (MessageChain, MessageComponent, CQ码解析)
│   └── utils/               # SDK 内部日志与工具函数
│
├── framework_common/        # 框架级通用服务与底层工具库 (面向插件开发者)
│   ├── framework_util/      # 核心运行基座
│   │   ├── yamlLoader.py    # YAMLManager 动态配置加载器与 Watchdog 防抖热重载
│   │   ├── websocket_fix.py # ExtendBot 核心:黑白名单拦截、权限过滤与消息分发
│   │   ├── DualBotManager.py# 双 Bot 管理器:主 Bot 与内部副 Bot 消息路由协调
│   │   └── PluginAwareExtendBot.py # 插件管理器 PluginManager 与内存感知加载策略
│   ├── database_util/       # 数据库与缓存
│   │   ├── User.py          # SQLite 用户表模型与资产操作
│   │   ├── Group.py         # 群组配置与黑白名单表
│   │   └── RedisCacheManager.py # Redis 键值与对象缓存管理器
│   ├── manshuo_draw/        # 模块化渲染画板 (图层、文本、头像与长图生成引擎)
│   ├── schedule_service/    # 跨时区动态调度引擎核心
│   ├── ToolKits/            # 系统、网络、图像、文本通用工具箱
│   └── utils/               # 系统统一日志 (system_logger)、依赖热装 (install_and_import) 等
│
├── run/                     # 插件与业务功能生态目录 (每个子文件夹为一个独立插件)
│   ├── common_config/       # 框架核心配置 (basic_config.yaml, black_and_white_list.yaml)
│   ├── basic_plugin/        # 基础系统功能 (天气、搜图、每日天文、运势、系统指令)
│   ├── system_plugin/       # 用户资产体系 (个人信息、金币签到、权限授权、戳一戳反击)
│   ├── AI_reply/            # AI 对话中枢 (MaiReply、classic_llm、工具调用分发)
│   ├── ai_generated_art/    # AI 绘图与生成工坊 (SD、NAI、Qwen、Suno、Sightengine)
│   ├── acg_infromation/     # ACG 资讯与二次元功能 (Bangumi、Galgame、Steam、雀魂)
│   ├── anime_game_service/  # 游戏助手 (米游社全家桶、森空岛明日方舟、绝区零、Epic)
│   ├── group_fun/           # 群娱乐互动 (娶群友、表情制作、轮盘赌、井字棋、戒鹿)
│   ├── resource_collector/  # 资源收集器 (ASMR、Z-Library、JMComic、Iwara、TG贴纸)
│   ├── streaming_media/     # 流媒体与解析 (B站动态监听、YouTube/短视频解析、网易云)
│   └── scheduled_tasks/     # 跨时区定时提醒与订阅管理
│
├── data/                    # 运行时动态数据持久化仓库 (已做 .gitignore 隔离)
│   ├── db/                  # SQLite 数据库文件 (用户数据、历史记录、发言统计)
│   ├── pictures/            # 图片缓存、表情包模板库、本子暂存路径
│   ├── voice/               # TTS 合成音频缓存与切片
│   └── system/              # 角色预设与系统 Prompt (如 chara/yucca.txt)
│
└── web/                     # WebUI 控制台后台服务与静态前端资源

插件加载与生命周期拓扑 ​

在 main.py 启动阶段:

  1. 实例化配置管理器:config = YAMLManager("run") 自动遍历 run/ 下所有目录的 config.yaml 并建立树形访问结构。
  2. 构建增强型机器人:初始化 bot1 = ExtendBot(...),加载黑白名单和事件耗时监控。
  3. 拉起内部副 Bot:如果开启了 WebUI,拉起内部副 Bot 并通过 DualBotManager 将虚拟会话与物理群聊对齐。
  4. 插件装载与依赖注入:PluginManager 遍历 run/ 下的所有子包,寻找包含 main(bot, config) 签名的入口文件执行依赖注入。
  5. 广播生命周期事件:通过 LifecycleMetaEvent 通知各插件初始化常驻协程和定时巡检。

掌握了这张大地图,接下来无论是扩展现有功能还是从零手搓新插件,都会得心应手啦~!