框架项目结构与目录拓扑
想要在 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 启动阶段:
- 实例化配置管理器:
config = YAMLManager("run")自动遍历run/下所有目录的config.yaml并建立树形访问结构。 - 构建增强型机器人:初始化
bot1 = ExtendBot(...),加载黑白名单和事件耗时监控。 - 拉起内部副 Bot:如果开启了 WebUI,拉起内部副 Bot 并通过
DualBotManager将虚拟会话与物理群聊对齐。 - 插件装载与依赖注入:
PluginManager遍历run/下的所有子包,寻找包含main(bot, config)签名的入口文件执行依赖注入。 - 广播生命周期事件:通过
LifecycleMetaEvent通知各插件初始化常驻协程和定时巡检。
掌握了这张大地图,接下来无论是扩展现有功能还是从零手搓新插件,都会得心应手啦~!