Files
LangBot/ja/plugin/certified-plugins.mdx
T
RockChinQ f6b6a635c2 docs: stateless certified plugins
Comprehensive documentation for stateless singleton component model supporting SDK 0.7.0 and certificate v2 envelope.
2026-09-28 13:25:36 +08:00

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 だけの変更では認証要件を満たしません。