OpenClaw プレリリースプラグインテスト は何をしますか?
ユーザーがプラグインリリースの確信度、プラグインライフサイクルの一掃、パッケージアーティファクトのプラグイン証明、または「リリース前に他に何をテストすべきか?」を尋ねた場合にこのスキルを使用します。これは openclaw-testing を補完します。最も安価で安全なランナーを選択したり、失敗したレーンをデバッグする際には、そのスキルも使用してください。
目標
ソーステストだけでなく、製品としてのプラグインシステムを証明すること:
- バンドルプラグインのライフサイクル:インストール、インスペクト、有効化、無効化、アンインストール
- クリーンな
HOMEからのパッケージアーティファクトの動作 - doctor/fix/設定の検証と冪等性
- 設定の検出と設定ラウンドトリップ
- ステータス/ログの可視性と診断
- プラグインメタデータスナップショットを使用したゲートウェイの起動/ブートストラップ
- 実際の外部プラグイン向けのパブリックSDK互換性
- 安全な認証情報が存在する場合のみの、ある程度ライブなプロバイダー/チャネルプローブ
最初のチェック
OpenClaw リポジトリルートから:
pnpm docs:list
git status --short --branch
readlink node_modules
pnpm changed:lanes --json
Codex ワークツリー (.codex/worktrees 内) では、node_modules はメインの OpenClaw チェックアウトへのシンボリックリンクである必要があります。そこで pnpm install を実行しないでください。広範囲またはパッケージが多い証明には、Blacksmith Testbox または GitHub Actions を使用してください。
ランナーの選択
以下の順序を推奨します:
- GitHub Package Acceptance:インストール可能なパッケージの製品証明用。
ci-build-artifacts-testbox.ymlTestbox:Docker/パッケージレーンにシードされたdist、dist-runtime、およびパッケージキャッシュが必要な場合。ci-check-testbox.ymlTestbox:ソースチェック、ターゲットを絞った Vitest、パッケージ境界チェック、または焦点を絞った Docker レーン用。- ローカルのターゲットコマンドのみ:小規模なフォーマット/静的/ユニットプローブ用。
古いスパースワークツリーからの長時間のパッケージ Docker 実行は避けてください。Testbox 同期が数百の変更ファイルを報告したり、パッケージ入力を削除し始めた場合は、停止して現在の main から新しいボックスを準備するか、Package Acceptance に切り替えてください。
既存のベースライン
新しいカバレッジを考案する前に、以下を実行または確認してください:
OPENCLAW_TESTBOX=1 pnpm check:changed
pnpm run test:extensions:package-boundary:canary
pnpm run test:extensions:package-boundary:compile
pnpm test:docker:plugins
OPENCLAW_PLUGINS_E2E_CLAWHUB=0 pnpm test:docker:plugins
pnpm test:docker:plugin-update
pnpm test:docker:bundled-channel-deps:fast
完全なバンドルインストール/アンインストールの証明のために、パッケージ化されたスイープをシャーディングします:
OPENCLAW_BUNDLED_PLUGIN_SWEEP_TOTAL=8 \
OPENCLAW_BUNDLED_PLUGIN_SWEEP_INDEX=<0-7> \
pnpm test:docker:bundled-plugin-install-uninstall
期待される現在のパッケージスコープ:シャード 0-7 にわたる 116 の公開バンドルプラグイン。プライベート QA プラグインは、パッケージに明示的に含まれていない限り、ソースモードのみです。
信頼性マトリクス
プレリリース承認のためにこのマトリクスを使用します。合格/不合格、実行 URL/Testbox ID、パッケージ SHA/バージョン、およびスキップされたライブの理由を記録します。
| 表面 | 証明 | 推奨ランナー |
|---|---|---|
| パッケージアーティファクト | Package Acceptance suite_profile=package またはカスタムレーン | GitHub Actions |
| バンドルライフサイクル | 8シャード test:docker:bundled-plugin-install-uninstall | Testbox またはリリース Docker |
| 外部プラグイン | test:docker:plugins および plugins-offline | Testbox/パッケージ受け入れ |
| 更新 (no-op) | test:docker:plugin-update | Testbox/パッケージ受け入れ |
| チャネルランタイム依存関係 | test:docker:bundled-channel-deps:fast および主要チャネル | Testbox/パッケージ受け入れ |
| Doctor/fix | シードされた不良設定 + doctor --fix --non-interactive | 新しい Docker/Testbox ハーネス |
| 設定ラウンドトリップ | config set/get、インスペクト、doctor、リロード、ハッシュ比較 | 新しい Docker/Testbox ハーネス |
| ゲートウェイブートストラップ | クリーンな HOME、有効/無効化されたプラグイングループ、ステータス JSON | 新しい Docker/Testbox ハーネス |
| SDK 互換性 | SDK サブパスを使用するディレクトリ、tgz、および file: 外部プラグイン | test:docker:plugins および新しいスモークテスト |
| ライブ的なもの | 存在する環境に対してのみ、編集されたプロバイダー/チャネルプローブ | Testbox ライブレーン |
パッケージ受け入れ計画
リリースブランチ、ベータ、または候補パッケージを検証する際にこれを使用します:
gh workflow run package-acceptance.yml \
--repo openclaw/openclaw \
--ref main \
-f workflow_ref=main \
-f source=ref \
-f package_ref=<branch-or-sha> \
-f suite_profile=custom \
-f docker_lanes='plugins-offline plugin-update bundled-channel-deps-compat doctor-switch update-channel-switch config-reload mcp-channels npm-onboard-channel-agent' \
-f telegram_mode=mock-openai
公開ベータ証明には source=npm -f package_spec=openclaw@beta を使用します。リリースプロセスで別段の指示がない限り、workflow_ref は信頼された現在のハーネスコードのままにします。
新しい Testbox ハーネス計画
さらに確実性が必要な場合は、1 つのパッケージ tarball とシャーディングされたプラグインリストを使用する plugin-lifecycle-matrix Docker レーンを追加または実行します。プラグインごとに:
- クリーンな
HOMEで開始します。 plugins list --jsonをキャプチャします。plugins install <id>を実行します。plugins inspect <id> --jsonを実行します。plugins disable <id>を実行し、無効化された可視性をアサートします。- 設定が必要なプラグインを除き、
plugins enable <id>を実行します(設定がない場合)。 plugins registry --refreshを実行します。doctor --non-interactiveを実行します。plugins uninstall <id> --forceを実行します。- 設定エントリ、許可/拒否の残骸、インストールレコード、管理ディレクトリ、またはバンドルされた
dist/extensions/...ロードパスが残っていないことをアサートします。 - 診断に
level: "error"が含まれておらず、出力が秘密のような値を編集していることをアサートします。
memory-lancedb は特別に扱います。設定が必要です。最初に、埋め込み設定なしではインストールが有効にならないことをアサートし、次に設定されたケースを実行します。
Doctor/Fix マトリクス
不良状態をシードし、doctor --fix --non-interactive でそれらを修復することを要求し、その後 doctor を再度実行して冪等性を要求します:
- 古い
plugins.allow - 古い
plugins.entries - 欠落しているチャネルプラグインに対する古いチャネル設定
- 無効な
plugins.entries.<id>.config plugins.load.paths内のパッケージ化されたバンドルパス- レガシー
plugins.installs - ランタイム依存関係をステージングしてはならない無効化されたチャネル/プラグイン設定
- 変更されないままにしておかなければならないルート所有のグローバルパッケージツリー
ゲートウェイブートストラップマトリクス
クリーンな状態で Docker 内のパッケージ化された OpenClaw を起動します:
- プロバイダープラグインが有効、認証情報なし:警告付きで準備完了、クラッシュなし
- チャネルプラグインが無効に設定:ランタイム依存関係がステージングされていない
- 起動時アクティブ化プラグインが有効:準備完了、ステータスに反映されている
- 無効な単一プラグイン設定:不良プラグインはスキップ/隔離され、他のプラグインはそのまま
アサート:
- ゲートウェイが準備完了に達する
openclaw status --jsonにプラグイン診断が含まれているopenclaw plugins inspect --all --jsonが解析可能である- パッケージツリーが変更されていない
- ログに生のトークンが含まれていない
設定ラウンドトリップの代表例
詳細な設定ラウンドトリップには、すべてのプラグインではなく、代表的なプラグインファミリーを使用します:
- プロバイダー:
openai、anthropic、mistral、openrouter - チャネル:
telegram、discord、slack、whatsapp - メモリ:
memory-lancedb - 機能/ランタイム:
browser、acpx、tokenjuice
各代表例について:
- 可能な場合は CLI を通じて設定を書き込みます。
config getまたは JSON で読み戻します。plugins inspectを実行します。doctor --non-interactiveを実行します。- 該当する場合はゲートウェイ設定リロードをトリガーします。
- no-op コマンドの前後で設定ハッシュを比較します。
外部 SDK スモークテスト
パッケージ Docker レーンで、小さな外部プラグインを作成し、以下からインストールします:
- ローカルディレクトリ
.tgzfile:npm スペック
CJS と ESM の形式、および焦点を絞った openclaw/plugin-sdk/* サブパスをインポートする少なくとも 1 つのプラグインをカバーします。plugins inspect がそのツール、ゲートウェイメソッド、CLI コマンド、またはサービスを認識することをアサートします。
ライブ的プローブのルール
ライブ的な作業の前に、Testbox で許可された環境をソースし、編集された可用性マトリクス(存在/不在のみ、値を決して含まない)を生成します。
存在する認証情報に対してのみプローブを実行します。ユーザーに表示されるメッセージを送信するよりも、認証/カタログ/ステータスプローブを優先します。プローブが外部ユーザー、チャネル、またはワークスペースに接触する可能性がある場合は、停止してユーザーに確認します。
レポート
次の形式でレポートします:
package/ref:
tbx ids / run urls:
matrix:
bundled lifecycle:
package acceptance:
doctor/fix:
gateway bootstrap:
config round-trip:
sdk external:
live-ish:
failures:
skips:
next highest-value gap:
失敗が製品の動作ではなく Testbox の同期/環境の損傷である場合は、それを明確に述べ、クリーンな再実行または現在の main との比較で証明します。