Skip to content

插件系统概览

N.E.K.O. 插件系统是一个基于 Python 的插件框架,建立在进程隔离异步 IPC 之上。平台只有两种包类型:产品功能使用 Plugin(插件),外部协议桥接使用 Adapter(适配器)。原 Extension(扩展) 包类型已经移除;PluginRouter 仍可在普通 Plugin 内部使用。

架构

┌────────────────────────────────────────────────────┐
│              Main Process (Host)                   │
│  ┌──────────────────────────────────────────────┐  │
│  │   Plugin Host (core/)                        │  │
│  │   - Plugin lifecycle management              │  │
│  │   - Bus system (memory, events, messages)    │  │
│  │   - ZMQ IPC transport                        │  │
│  └──────────────────────────────────────────────┘  │
│  ┌──────────────────────────────────────────────┐  │
│  │   Plugin Server (server/)                    │  │
│  │   - HTTP API endpoints (FastAPI)             │  │
│  │   - Plugin registry                          │  │
│  │   - Message queue                            │  │
│  └──────────────────────────────────────────────┘  │
└────────────────────┬───────────────────────────────┘
                     │ ZMQ IPC
      ┌──────────────┼──────────────┐
      ▼              ▼              ▼
  Plugin A       Plugin B       Adapter D
  (process)      (process)      (process)

包类型

范式导入来源使用场景运行方式
Pluginplugin.sdk.plugin独立功能(搜索、提醒等)独立进程
Adapterplugin.sdk.adapter将外部协议(MCP、NoneBot)桥接到内部插件调用独立进程,带网关管线

何时使用哪种范式?

  • "我想添加一个新的独立功能" → 使用 Plugin
  • “我想在现有功能周围增加命令” → 使用普通 Plugin;若你维护原宿主且代码很大,可在宿主内使用 PluginRouter
  • "我想接受 MCP/NoneBot/外部协议调用并将其路由到插件" → 使用 Adapter

Plugin 开始。迁移原 Extension 时,把 Router 合并进所属 Plugin,或改造成独立 Plugin。

开始开发

先阅读插件开发入门文档,了解插件的目录构成和完整制作流程;然后跟随快速开始动手,并在实现功能时查阅插件能力与 SDK 参考

快速链接