Skip to content

プラグインシステムの概要

N.E.K.O. のプラグインシステムは、プロセス隔離非同期 IPC に基づく Python プラグインフレームワークです。package type は、製品機能向けの Plugin と外部プロトコルブリッジ向けの Adapter の 2 種類です。旧 Extension package type は削除され、PluginRouter は通常 Plugin 内部でのみ利用できます。

アーキテクチャ

┌────────────────────────────────────────────────────┐
│              Main Process (Host)                   │
│  ┌──────────────────────────────────────────────┐  │
│  │   Plugin Host (core/)                        │  │
│  │   - プラグインライフサイクル管理              │  │
│  │   - バスシステム(メモリ、イベント、メッセージ)│  │
│  │   - ZMQ IPC トランスポート                   │  │
│  └──────────────────────────────────────────────┘  │
│  ┌──────────────────────────────────────────────┐  │
│  │   Plugin Server (server/)                    │  │
│  │   - HTTP API エンドポイント (FastAPI)         │  │
│  │   - プラグインレジストリ                      │  │
│  │   - メッセージキュー                          │  │
│  └──────────────────────────────────────────────┘  │
└────────────────────┬───────────────────────────────┘
                     │ ZMQ IPC
      ┌──────────────┼──────────────┐
      ▼              ▼              ▼
  Plugin A       Plugin B       Adapter D
  (プロセス)     (プロセス)      (プロセス)

パッケージ種別

パラダイムインポート元ユースケース実行方法
Pluginplugin.sdk.plugin独立した機能(検索、リマインダーなど)別プロセス
Adapterplugin.sdk.adapter外部プロトコル(MCP、NoneBot)を内部プラグイン呼び出しにブリッジゲートウェイパイプライン付き別プロセス

どれを使うべきか?

  • 「新しいスタンドアロン機能を追加したい」Plugin を使用
  • 「既存機能の周辺にコマンドを追加したい」 → 通常の Plugin を使う。host を所有しコードが大きい場合は host 内で PluginRouter を使う
  • 「MCP/NoneBot/外部プロトコルの呼び出しを受け付けてプラグインにルーティングしたい」Adapter を使用

Plugin から始めてください。旧 Extension は Router を所有する Plugin に統合するか、独立した Plugin に変換します。

開発を始める

まずプラグイン開発入門ガイドでディレクトリ構成と制作の流れを確認してください。その後、クイックスタートに沿って作成し、実装中はプラグイン機能と SDK リファレンスを参照します。

クイックリンク