Skip to content

ja plugin dev tutor

langbot-wiki-sync[bot] edited this page Aug 4, 2026 · 2 revisions

プラグイン開発チュートリアル

アーキテクチャの基礎

バージョン4.0では、高セキュリティで柔軟性の高い本番環境グレードのプラグインシステムを導入し、開発者に豊富なAPIと使いやすいサポートツールを提供しています。

Plugin Runtimeは、プラグインのライフサイクルを管理し、LangBotとプラグイン間の相互作用を調整するために使用されます。stdiowebsocketの2つの動作モードがあります。LangBotがユーザーによって直接起動される場合(コンテナ内で実行されていない場合)、stdioモードを使用します。これは個人ユーザーや軽量環境で一般的です。LangBotがコンテナ内で実行される場合、websocketモードを使用します。これは本番環境専用に設計されています。

Plugin Runtimeは、インストールされた各プラグインを自動的に起動し、stdioを通じて相互作用します。プラグイン開発シナリオでは、開発者はlbpコマンドラインツールを使用してプラグインを起動し、WebSocketを介して実行中のRuntimeに接続してデバッグできます。

プラグイン構造

プラグインのディレクトリ構造は次のようになります:

➜  HelloPlugin > tree
.
├── assets
│   └── icon.svg  # プラグインアイコン、プラグインマーケットプレイスページに表示
├── components  # プラグインコンポーネントディレクトリ、さまざまなコンポーネントコードとマニフェストファイルを保存
│   ├── __init__.py
│   ├── commands
│   │   ├── __init__.py
│   │   ├── info.py
│   │   └── info.yaml
│   ├── event_listener
│   │   ├── __init__.py
│   │   ├── default.py
│   │   └── default.yaml
│   └── tools
│       ├── __init__.py
│       ├── get_weather_alerts.py
│       └── get_weather_alerts.yaml
├── main.py  # プラグインメインプログラム、プラグインライフサイクルをリッスン
├── manifest.yaml  # プラグインマニフェストファイル、プラグインメタデータを記述
├── README.md  # プラグインドキュメントファイル、プラグイン機能と使用方法を記述、プラグインマーケットプレイスページに表示
├── readme
│   └── README_zh_Hans.md  # 簡体字中国語ドキュメント、多言語ドキュメント用
├── requirements.txt  # プラグイン依存関係ファイル
└── .github
    └── workflows
        └── release.yml  # GitHub Actions ワークフロー、バージョン変更をプッシュすると自動的にビルドして Release を公開

main.pyのプラグインクラスは各プラグインの共通コードで、プラグイン起動時に初期化され、コンテキスト情報(設定など)が渡されます。ここでプラグインの初期化とシャットダウンロジックを実装できます。プラグインクラスはlangbot_plugin.api.definition.plugin.BasePluginを継承し、LangBotグローバルAPIを提供します。

各コンポーネントはプラグインのコア機能モジュールであり、必要に応じて追加および削除できます。異なるコンポーネントは異なる状況で呼び出され、後でプラグイン機能を簡単に拡張できます。各コンポーネントはlangbot_plugin.api.definition.componentsパッケージ下のさまざまなコンポーネント基底クラスから直接継承し、plugin: BasePluginオブジェクトを含み、プラグインのAPIを直接呼び出すことができます。

Note

このチュートリアルを続けて読んで、プラグイン開発プロセスを理解してください。

AI 支援開発

  • skills-LangBotplugin - コミュニティメンバー @TyperBody が提供する Skills、AI を使ってプラグインを迅速に開発できます、ぜひお試しください
    • langbotplugin このSkillはプラグインの自動生成ツールを提供します
    • langbotplugindebug このSkillはプラグインのデバッグツールを提供します

CLIのインストール

Python 3.10以上がインストールされており、uvパッケージマネージャーがインストールされていることを確認してください。

任意の空のディレクトリで次のコマンドを実行して、LangBot CLIとSDKをインストールします:

pip install -U langbot_plugin

プラグインディレクトリの初期化

プラグイン名がHelloPluginであると仮定して、任意のディレクトリにHelloPluginディレクトリを作成し、そのディレクトリに入り、コマンドを実行してプラグインを初期化します:

lbp init

プロンプトに従ってAuthorDescriptionなどの情報を入力します。

Note

lbp init HelloPluginコマンドを使用して、サブディレクトリHelloPluginでプラグインを初期化することもできます。

この操作により、プラグインの初期ファイルが生成されます。お気に入りのエディターでHelloPluginディレクトリを開き、プラグインコードの記述を開始できます。

Note

lbpコマンドで「command not found」エラーが発生した場合、PATH環境変数が適切に設定されていない可能性があります。 lbpコマンドの代わりにpython -m langbot_plugin.cli.__init__を使用できます。

例えば:

python -m langbot_plugin.cli.__init__ init HelloPlugin
cd HelloPlugin

デバッグモードの開始

まずLangBotをデプロイして起動し、Plugin Runtimeが実行されてポート5401をリッスンしていることを確認する必要があります。

Note

Runtimeには2つの起動モードがあります:

  • Stdioモード: 起動パラメータ--standalone-runtimeなしでソースコードを使用してLangBotを起動すると、LangBotは自動的にPlugin Runtimeをサブプロセスとして起動し、stdio(標準入出力ストリーム)を通じてPlugin Runtimeと通信します。この場合、RuntimeはLangBotルートディレクトリのdata/pluginsディレクトリからプラグインをロードし、LangBotホストのポート5401をデバッグポートとしてリッスンします。

  • WebSocketモード:

    • 本番環境: 公式のdocker-compose.yamlを使用してLangBotを起動すると、Plugin Runtimeは別のコンテナで実行され、起動パラメータ--standalone-runtimeのためにLangBotはWebSocketモードでPlugin Runtimeと通信します。Runtimeコンテナの5401ポートはデフォルトでホストの5401ポートにマッピングされます。
    • 開発環境: 起動パラメータ--standalone-runtimeを使用してソースコードでLangBotを起動すると、LangBotはdata/config.yamlで設定されたplugin.runtime_ws_urlアドレス(ポートは通常5400)に従って既に起動されているPlugin Runtimeに接続します。スタンドアロンのPlugin Runtimeを自分で起動する必要があります。Plugin Runtimeの開発を参照してください。

stdioまたはwebsocketモードのいずれの場合でも、Plugin Runtimeはそのホストのポート5401をプラグインデバッグ接続のデバッグポートとしてリッスンします。

プラグインを開発する際は、開発設定方法に従ってLangBotを起動することをお勧めします。これによりPlugin RuntimeがStdioモードで起動され、プラグイン開発が容易になります。

.env.example.env にコピーします。LangBot WebUI の 拡張機能 → デバッグ情報 を開き、現在の Workspace のデバッグ URL とデバッグキーを DEBUG_RUNTIME_WS_URLPLUGIN_DEBUG_KEY に設定します。キーは Workspace ごとに異なり、2 時間ごとにローテーションするため、期限切れ後は再度コピーしてください。

cp .env.example .env

プラグインデバッグを開始すると、プラグインの出力が表示されます:

lbp run

そして、LangBotのWebUIでこのプラグインがロードされたことを確認できます。

次のステップ

このチュートリアルでは、プラグイン機能を段階的に完成させる方法を案内します。

  • プラグイン情報の変更: プラグインは基本的なプラグイン情報で作成されました。プラグイン情報を完成させてください。
  • コンポーネントの追加: プラグインコンポーネントはプラグインのコア機能ユニットです。必要に応じてコンポーネントを追加できます。

LangBot Documentation

Home

简体中文
指南
开发者
文章
API 参考
Other pages
English
Guides
Developers
Articles
API Reference
Other pages
日本語
ガイド
開発者
記事
API リファレンス
Other pages

Clone this wiki locally