mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-29 20:05:25 +08:00
Comprehensive documentation for stateless singleton component model supporting SDK 0.7.0 and certificate v2 envelope.
37 lines
3.1 KiB
Plaintext
37 lines
3.1 KiB
Plaintext
---
|
|
title: "認証プラグインとステートレスコンポーネント"
|
|
description: "認証プラグインの共有 Worker と stateless-v1 実装規約。"
|
|
---
|
|
|
|
**認証プラグイン**は単なる安全バッジではありません。変更不能な特定の artifact に対して、テナントをまたぐ共有実行を許可する資格です。同じ artifact digest の installation は、1 つの Worker、1 つの `BasePlugin`、各種コンポーネントの単一インスタンスを共有します。installation ごとに保持するのは、軽量な設定・権限・ライフサイクルコンテキストだけです。「各コンポーネント」は EventListener、Tool、Command、KnowledgeEngine、Parser、Page、Runner の宣言済み manifest ごとに 1 インスタンスという意味です。
|
|
|
|
## 宣言
|
|
|
|
```yaml
|
|
execution:
|
|
python:
|
|
path: main.py
|
|
attr: Plugin
|
|
sharedRuntime: shared-runtime-v1
|
|
componentModel: stateless-v1
|
|
```
|
|
|
|
2 つのフィールドは必須です。宣言だけでは認証されません。ソースの補助レビュー、人による明示的な承認、正確な artifact への署名が必要です。
|
|
|
|
## ステートレス規約
|
|
|
|
- プラグインとコンポーネントの `initialize()` は Worker ごとに一度だけ実行します。
|
|
- 異なる Workspace の呼び出しが同じオブジェクト上で並行するため、コンポーネントは再入可能にします。
|
|
- `BasePlugin` では `self.get_config()`、コンポーネントでは `self.get_plugin_config()` または `self.plugin.get_config()` で現在の installation 設定を取得します。
|
|
- 設定、認証情報、Workspace/installation ID、リクエストデータをインスタンス属性やモジュールグローバルに保存しません。
|
|
- `initialize()` でテナント設定を読み取り、保持してはいけません。
|
|
- ストレージ、ファイル、認証情報、ログ、モデルなどは SDK の Host API を使います。権限は task-local invocation context から解決されます。
|
|
- 永続的なテナント状態は Host サービスに置きます。プロセス内キャッシュは artifact 共通データだけにするか、完全な installation binding をキーにし、失効時に解放できるようにします。
|
|
- `stateless-v1` ではテナントデータを持つ detached task/thread を禁止します。SDK はまだプラグイン向けの所有権・失効 API を提供していません。
|
|
|
|
この規約は将来の serverless 実行に適した意味論を保ちますが、現在は長寿命 Worker を使用しており、serverless 配備モードは提供していません。
|
|
|
|
## 旧プラグインとの互換性
|
|
|
|
既存のソースと未署名パッケージは dedicated Worker で互換性を維持します。OSS では、信頼済み `stateless-v1` v2 証明書がないパッケージはポリシーに従って dedicated になります。Cloud は証明書ポリシーを満たさないパッケージをインストール前に拒否する場合があります。manifest だけの変更では認証要件を満たしません。
|