Skip to content

ja develop plugin runtime

langbot-docs-sync[bot] edited this page Sep 4, 2026 · 4 revisions

プラグインランタイム、CLI、SDKのデバッグ

Note

プラグインランタイム、CLI、SDKはこちらでオープンソース化されています: https://github.com/langbot-app/langbot-plugin-sdk

LangBotはlangbot-plugin-sdkで定義されたエンティティに依存するため、新しいディレクトリでVS Codeを開き、LangBotとlangbot-plugin-sdk(git clone https://github.com/langbot-app/langbot-plugin-sdk)をサブディレクトリとして配置することをお勧めします。ディレクトリ構造は以下の通りです:

langbot-projects
├── LangBot
├── langbot-plugin-sdk

LangBotディレクトリに移動し、依存関係をインストールします:

cd LangBot
uv sync --dev

この時点で、uvは自動的に仮想環境(.venv)を作成します。エディターがこの仮想環境を使用するかどうかを尋ねる場合は、Yesを選択してください。

プロンプトが表示されない場合は、右下隅からPythonインタープリターのパスをvenv内のインタープリターに手動で設定してください。

次に、VS Code下部のターミナルを開きます。これにより自動的にvenvがアクティブ化されます。

または、この仮想環境を手動でアクティブ化できます:

# .venvのパスに応じてコマンドを変更してください
source .venv/bin/activate

プラグインランタイムの起動

python -m langbot_plugin.cli.__init__ rt

プラグインランタイムは以下のパラメーターを受け入れます:

  • --debug-only: data/pluginsディレクトリのプラグインを起動せず、デバッグ接続を通じたプラグインの読み込みのみを許可します。
  • --ws-debug-port: リッスンするデバッグポート、デフォルトは5401です。
  • --ws-control-port: リッスンする制御ポート(LangBotメインプログラム接続用)、デフォルトは5400です。
  • -s: stdioを使用して制御接続を受け入れます。本番環境でのみ使用してください
  • --skip-deps-check: すべてのプラグイン依存関係がインストールされていることを確認するため、ランタイムは起動時に毎回すべてのインストール済みプラグインの依存関係をチェックしてインストールします。このパラメーターを使用してこのチェックを無効にします。

LangBotでローカル修正したlangbot-plugin-sdkを使用する

メッセージエンティティやプラグインデータ定義などを変更した場合、実行時のデータ形式の互換性を確保するために、LangBot環境に更新する必要があります。

LangBotディレクトリの仮想環境(.venv)がアクティブ化されたターミナルで、langbot-plugin-sdkディレクトリに移動し、以下を実行します:

uv pip install .

これにより、修正したlangbot-plugin-sdkがLangBotの環境にインストールされます。

LangBotをこのランタイムに接続する

LangBotのdata/config.yamlplugin.runtime_ws_urlws://localhost:5400/control/wsに設定します。

plugin:
  runtime_ws_url: ws://localhost:5400/control/ws

LangBot の仮想環境を有効にしたターミナルで、Python を直接使用してメインプログラムを起動し、--standalone-runtime を追加します(例:python main.py --standalone-runtime)。現在の仮想環境の Python を直接呼び出す場合、依存関係は再同期されないため、インストールしたローカルの langbot-plugin-sdk がリモート版で上書きされることはありません。
LangBotを再起動すると、WebSocketを使用してこのランタイムに接続されます。

LANGBOT_PLUGIN_RUNTIME_CONTROL_TOKEN は既定では省略可能です。LangBot と Runtime の両方で未設定の場合、ローカル OSS の制御接続はトークンなしで確立されます。公開された 5400 ポートを保護する場合は、両側に同じ 32 文字以上の高エントロピー値を設定してください。Runtime 側に token を設定すると、同じ値を送信しない LangBot は拒否されます。LangBot 側だけに設定しても Runtime 側の認証は有効になりません。

lbp run でプラグインをデバッグする

Multi-Workspace 版では、デバッグプラグインは 5401 ポートへ到達できるだけでは Runtime に接続できません。Workspace ごとに、有効期限付きの個別デバッグキーが必要です:

  1. 上記の手順で LangBot と Plugin Runtime が起動し、接続済みであることを確認します。
  2. LangBot WebUI の「プラグイン」ページで「デバッグ情報」を開き、デバッグ URL とデバッグキーをコピーします。この操作には現在の Workspace のリソース管理権限が必要です。
  3. プラグインプロジェクトの .env に設定します:
DEBUG_RUNTIME_WS_URL=ws://localhost:5401/plugin/debug/ws
PLUGIN_DEBUG_KEY=<WebUI からコピーしたデバッグキー>
  1. プラグインプロジェクトのディレクトリで起動します:
python -m langbot_plugin.cli.__init__ run

.env に保存せず、python -m langbot_plugin.cli.__init__ run --plugin-debug-key '<デバッグキー>' を使用することもできます。キーは Workspace ごとに分離され、有効期限は 2 時間です。期限切れ、Runtime の再起動、または Workspace の切り替え後は WebUI から再取得してください。DEBUG_RUNTIME_WS_URL だけを設定したクライアントは拒否されます。

Box Runtime を standalone モードで起動する

Box Runtime の制御接続ルールは Plugin Runtime と同じです。OSS standalone 開発では token は省略可能で、両側で LANGBOT_BOX_CONTROL_TOKEN が未設定の場合も接続できます:

# ターミナル 1:langbot-plugin-sdk ディレクトリ
python -m langbot_plugin.cli.__init__ box

LangBot の data/config.yaml でローカル Box Runtime を指定します:

box:
  enabled: true
  backend: local
  runtime:
    endpoint: ws://127.0.0.1:5410
# ターミナル 2:LangBot ディレクトリ
python main.py --standalone-runtime --standalone-box

公開された 5410 ポートを保護する場合は、両方のプロセスを起動する前に、同じ 32 文字以上で空白を含まない高エントロピー値を設定してください:

export LANGBOT_BOX_CONTROL_TOKEN='<両側で完全に同じ高エントロピーシークレット>'

Box Runtime 側に token を設定すると、同じ値を送信しない LangBot は拒否されます。LangBot 側だけに設定しても Box Runtime 側の認証は有効になりません。明示的に設定した値が 32 文字未満の場合は、引き続き両側で拒否されます。実際の値を設定ファイルや Git にコミットしないでください。

langbot-plugin-sdkアーキテクチャ

このコードベースには以下が含まれています:

  • langbot_plugin.api: プラグイン関連のエンティティとAPI定義。
  • langbot_plugin.assets: プラグインテンプレート。
  • langbot_plugin.cli: プラグイン開発CLIツール。
  • langbot_plugin.entities: APIで定義されていないプラグインシステム関連のエンティティ。
  • langbot_plugin.runtime: プラグインランタイムと基礎通信(stdioおよびwebsocket)の実装。

lbp CLIツール

CLIツールは、ランタイムの起動、プラグインの初期化、プラグインコンポーネント管理、Marketplaceとのインタラクションなどの機能を提供します。

詳細なプログラムエントリポイントについては、langbot_plugin.cli.__init__を参照してください。

LangBot Documentation

Home

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

Clone this wiki locally