3.0 KiB
3.0 KiB
插件加载路径说明
概述
MaiBot-Core 现在支持从多个路径加载插件,为插件开发者提供更大的灵活性。
支持的插件路径
系统会按以下优先级顺序搜索和加载插件:
1. 项目根目录插件路径:/plugins
- 路径: 项目根目录下的
plugins/文件夹 - 优先级: 最高
- 用途: 用户自定义插件、第三方插件
- 特点:
- 与项目源码分离
- 便于版本控制管理
- 适合用户添加个人插件
2. 源码目录插件路径:/src/plugins
- 路径: src目录下的
plugins/文件夹 - 优先级: 次高
- 用途: 系统内置插件、官方插件
- 特点:
- 与项目源码集成
- 适合系统级功能插件
插件结构支持
两个路径都支持相同的插件结构:
传统结构(推荐用于复杂插件)
plugins/my_plugin/
├── __init__.py
├── actions/
│ ├── __init__.py
│ └── my_action.py
├── commands/
│ ├── __init__.py
│ └── my_command.py
└── config.toml
简化结构(推荐用于简单插件)
plugins/my_plugin/
├── __init__.py
├── my_action.py
├── my_command.py
└── config.toml
文件命名约定
动作文件
*_action.py*_actions.py- 包含
action字样的文件名
命令文件
*_command.py*_commands.py- 包含
command字样的文件名
加载行为
- 顺序加载: 先加载
/plugins,再加载/src/plugins - 重名处理: 如果两个路径中有同名插件,优先加载
/plugins中的版本 - 错误隔离: 单个插件加载失败不会影响其他插件的加载
- 详细日志: 系统会记录每个插件的来源路径和加载状态
最佳实践
用户插件开发
- 将自定义插件放在
/plugins目录 - 使用清晰的插件命名
- 包含必要的
__init__.py文件
系统插件开发
- 将系统集成插件放在
/src/plugins目录 - 遵循项目代码规范
- 完善的错误处理
版本控制
- 将
/plugins目录添加到.gitignore(如果是用户自定义插件) - 或者为插件创建独立的git仓库
示例插件
参考 /plugins/example_root_plugin/ 中的示例插件,了解如何在根目录创建插件。
故障排除
常见问题
-
插件未被加载
- 检查插件目录是否有
__init__.py文件 - 确认文件命名符合约定
- 查看启动日志中的加载信息
- 检查插件目录是否有
-
导入错误
- 确保插件依赖的模块已安装
- 检查导入路径是否正确
-
重复注册
- 检查是否有同名的动作或命令
- 避免在不同路径放置相同功能的插件
调试日志
启动时查看日志输出:
[INFO] 正在从 plugins 加载插件...
[INFO] 正在从 src/plugins 加载插件...
[SUCCESS] 插件加载完成: 总计 X 个动作, Y 个命令
[INFO] 插件加载详情:
[INFO] example_plugin (来源: plugins): 1 动作, 1 命令