Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- 完全なテストキット(スイート、ライブ、Docker): テスト
- 更新とPluginパッケージの検証: 更新とPluginのテスト
-
pnpm test:force: デフォルトの制御ポートを保持している残存 Gateway プロセスを終了し、サーバーテストが実行中インスタンスと衝突しないよう、隔離された Gateway ポートで Vitest スイート全体を実行します。以前の Gateway 実行でポート 18789 が使用中のままになった場合に使用します。 -
pnpm test:coverage:vitest.unit.config.ts経由で V8 カバレッジ付きのユニットスイートを実行します。これはデフォルトユニットレーンのカバレッジゲートであり、リポジトリ全体の全ファイルカバレッジではありません。しきい値は行/関数/ステートメントが 70%、分岐が 55% です。coverage.allが false であり、デフォルトレーンのカバレッジ対象が兄弟ソースファイルを持つ非高速ユニットテストに絞られるため、このゲートは偶然ロードしたすべての推移的 import ではなく、このレーンが所有するソースを測定します。 -
pnpm test:coverage:changed:origin/main以降に変更されたファイルのみを対象にユニットカバレッジを実行します。 -
pnpm test:changed: 低コストのスマート変更テスト実行です。直接編集されたテスト、兄弟*.test.tsファイル、明示的なソースマッピング、ローカル import グラフから精密なターゲットを実行します。広範な/config/package 変更は、精密なテストにマップされない限りスキップされます。 -
OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed: 明示的な広範囲変更テスト実行です。テストハーネス/config/package の編集で Vitest のより広い変更テスト動作へフォールバックすべき場合に使用します。 -
pnpm changed:lanes:origin/mainとの差分によってトリガーされるアーキテクチャレーンを表示します。 -
pnpm check:changed:origin/mainとの差分に対してスマート変更チェックゲートを実行します。影響を受けるアーキテクチャレーンの typecheck、lint、ガードコマンドを実行しますが、Vitest テストは実行しません。テスト証明にはpnpm test:changedまたは明示的なpnpm test <target>を使用します。 -
pnpm test: 明示的なファイル/ディレクトリターゲットをスコープ付き Vitest レーンへルーティングします。ターゲットなしの実行では固定シャードグループを使い、ローカル並列実行のためにリーフ config へ展開します。拡張グループは常に、巨大な単一 root-project プロセスではなく、拡張ごとのシャード config へ展開されます。 -
テストラッパーの実行は、短い
[test] passed|failed|skipped ... in ...サマリーで終了します。Vitest 自身の所要時間行はシャードごとの詳細として残ります。 -
共有 OpenClaw テスト状態: テストが隔離された
HOME、OPENCLAW_STATE_DIR、OPENCLAW_CONFIG_PATH、config fixture、workspace、agent dir、または auth-profile store を必要とする場合は、Vitest からsrc/test-utils/openclaw-test-state.tsを使用します。 -
プロセス E2E ヘルパー: Vitest のプロセスレベル E2E テストが、実行中の Gateway、CLI env、ログキャプチャ、cleanup を一か所で必要とする場合は、
test/helpers/openclaw-test-instance.tsを使用します。 -
Docker/Bash E2E ヘルパー:
scripts/lib/docker-e2e-image.shを source するレーンは、docker_e2e_test_state_shell_b64 <label> <scenario>をコンテナへ渡し、scripts/lib/openclaw-e2e-instance.shでデコードできます。multi-home スクリプトはdocker_e2e_test_state_function_b64を渡し、各フローでopenclaw_test_state_create <label> <scenario>を呼び出せます。低レベルの呼び出し元は、コンテナ内シェルスニペットとしてscripts/lib/openclaw-test-state.mjs shell --label <name> --scenario <name>を使用するか、source 可能なホスト env ファイルとしてnode scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --jsonを使用できます。createの前の--は、新しい Node ランタイムが--env-fileを Node フラグとして扱わないようにするためのものです。Gateway を起動する Docker/Bash レーンは、entrypoint 解決、モック OpenAI 起動、Gateway のフォアグラウンド/バックグラウンド起動、readiness probe、state env export、ログダンプ、プロセス cleanup のために、コンテナ内でscripts/lib/openclaw-e2e-instance.shを source できます。 -
full、extension、include-pattern のシャード実行は、ローカル timing データを
.artifacts/vitest-shard-timings.jsonに更新します。以降の whole-config 実行では、その timing を使って遅いシャードと速いシャードを均衡させます。include-pattern CI シャードは timing key にシャード名を追加するため、whole-config timing データを置き換えずに filtered shard timing を可視化できます。ローカル timing artifact を無視するにはOPENCLAW_TEST_PROJECTS_TIMINGS=0を設定します。 -
選択された
plugin-sdkとcommandsのテストファイルは、現在、test/setup.tsのみを保持する専用の軽量レーンを経由します。runtime-heavy なケースは既存のレーンに残ります。 -
兄弟テストを持つソースファイルは、より広いディレクトリ glob にフォールバックする前に、その兄弟テストへマップされます。
src/channels/plugins/contracts/test-helpers、src/plugin-sdk/test-helpers、src/plugins/contracts配下のヘルパー編集では、依存パスが精密な場合に、すべてのシャードを広範実行するのではなく、ローカル import グラフを使って import しているテストを実行します。 -
auto-replyは、reply ハーネスがより軽量な top-level status/token/helper テストを支配しないよう、3 つの専用 config(core、top-level、reply)にも分割されるようになりました。 -
ベース Vitest config は現在、
pool: "threads"とisolate: falseをデフォルトにし、共有の非隔離 runner がリポジトリ config 全体で有効になっています。 -
pnpm test:channelsはvitest.channels.config.tsを実行します。 -
pnpm test:extensionsとpnpm test extensionsは、すべての拡張/Plugin シャードを実行します。重いチャンネル Plugin、ブラウザー Plugin、OpenAI は専用シャードとして実行されます。他の Plugin グループはバッチのままです。バンドル済み Plugin 1 つのレーンにはpnpm test extensions/<id>を使用します。 -
pnpm test:perf:imports: 明示的なファイル/ディレクトリターゲットにはスコープ付きレーンルーティングを使い続けながら、Vitest の import-duration と import-breakdown のレポートを有効にします。 -
pnpm test:perf:imports:changed: 同じ import プロファイリングを、origin/main以降に変更されたファイルのみで実行します。 -
pnpm test:perf:changed:bench -- --ref <git-ref>は、同じコミット済み git 差分に対して、ルーティングされた changed-mode パスをネイティブ root-project 実行と比較してベンチマークします。 -
pnpm test:perf:changed:bench -- --worktreeは、現在の worktree の変更セットを、先にコミットせずにベンチマークします。 -
pnpm test:perf:profile:main: Vitest メインスレッドの CPU プロファイルを書き込みます(.artifacts/vitest-main-profile)。 -
pnpm test:perf:profile:runner: ユニット runner の CPU + heap プロファイルを書き込みます(.artifacts/vitest-runner-profile)。 -
pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json: すべての full-suite Vitest リーフ config を直列に実行し、グループ化された所要時間データと config ごとの JSON/log artifact を書き込みます。Test Performance Agent は、低速テスト修正を試みる前のベースラインとしてこれを使用します。 -
pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.json: パフォーマンス重視の変更後に、グループ化されたレポートを比較します。 -
Gateway 統合:
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testまたはpnpm test:gatewayで opt-in します。 -
pnpm test:e2e: Gateway のエンドツーエンド smoke test(multi-instance WS/HTTP/node pairing)を実行します。vitest.e2e.config.tsでは adaptive workers 付きのthreads+isolate: falseがデフォルトです。OPENCLAW_E2E_WORKERS=<n>で調整し、詳細ログにはOPENCLAW_E2E_VERBOSE=1を設定します。 -
pnpm test:live: provider live test(minimax/zai)を実行します。スキップ解除には API キーとLIVE=1(または provider 固有の*_LIVE_TEST=1)が必要です。 -
pnpm test:docker:all: 共有 live-test image をビルドし、OpenClaw を npm tarball として一度 pack し、bare Node/Git runner image と、その tarball を/appにインストールする functional image をビルド/再利用し、その後 weighted scheduler を通じてOPENCLAW_SKIP_DOCKER_BUILD=1で Docker smoke レーンを実行します。bare image(OPENCLAW_DOCKER_E2E_BARE_IMAGE)は installer/update/plugin-dependency レーンに使用されます。これらのレーンは、コピーされたリポジトリソースではなく、事前ビルド済み tarball をマウントします。functional image(OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE)は通常の built-app functionality レーンに使用されます。scripts/package-openclaw-for-docker.mjsは唯一の local/CI package packer であり、Docker が消費する前に tarball とdist/postinstall-inventory.jsonを検証します。Docker レーン定義はscripts/lib/docker-e2e-scenarios.mjsにあり、planner ロジックはscripts/lib/docker-e2e-plan.mjsにあり、scripts/test-docker-all.mjsが選択された plan を実行します。node scripts/test-docker-all.mjs --plan-jsonは、ビルドや Docker 実行を行わず、選択されたレーン、image kinds、package/live-image needs、state scenarios、credential checks について、scheduler が所有する CI plan を出力します。OPENCLAW_DOCKER_ALL_PARALLELISM=<n>はプロセス slot を制御し、デフォルトは 10 です。OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM=<n>は provider-sensitive tail pool を制御し、デフォルトは 10 です。重いレーンの上限はデフォルトでOPENCLAW_DOCKER_ALL_LIVE_LIMIT=9、OPENCLAW_DOCKER_ALL_NPM_LIMIT=10、OPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7です。provider 上限はOPENCLAW_DOCKER_ALL_LIVE_CLAUDE_LIMIT=4、OPENCLAW_DOCKER_ALL_LIVE_CODEX_LIMIT=4、OPENCLAW_DOCKER_ALL_LIVE_GEMINI_LIMIT=4により、provider ごとに重いレーン 1 つがデフォルトです。より大きいホストではOPENCLAW_DOCKER_ALL_WEIGHT_LIMITまたはOPENCLAW_DOCKER_ALL_DOCKER_LIMITを使用します。低並列度ホストで 1 つのレーンが有効な weight または resource cap を超える場合でも、空の pool から開始でき、容量を解放するまで単独で実行されます。ローカル Docker daemon の create storm を避けるため、レーン開始はデフォルトで 2 秒ずつずらされます。OPENCLAW_DOCKER_ALL_START_STAGGER_MS=<ms>で上書きできます。runner はデフォルトで Docker を preflight し、古い OpenClaw E2E コンテナを cleanup し、30 秒ごとに active-lane status を出力し、互換性のあるレーン間で provider CLI tool cache を共有し、一時的な live-provider failure をデフォルトで 1 回 retry し(OPENCLAW_DOCKER_ALL_LIVE_RETRIES=<n>)、以降の実行で longest-first ordering を行うためにレーン timing を.artifacts/docker-tests/lane-timings.jsonに保存します。Docker を実行せずにレーン manifest を出力するにはOPENCLAW_DOCKER_ALL_DRY_RUN=1を使用し、status 出力を調整するにはOPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS=<ms>を使用し、timing の再利用を無効にするにはOPENCLAW_DOCKER_ALL_TIMINGS=0を使用します。決定的/local レーンのみにはOPENCLAW_DOCKER_ALL_LIVE_MODE=skipを使用し、live-provider レーンのみにはOPENCLAW_DOCKER_ALL_LIVE_MODE=onlyを使用します。package alias はpnpm test:docker:local:allとpnpm test:docker:live:allです。live-only mode は main と tail の live レーンを 1 つの longest-first pool に統合し、provider bucket が Claude、Codex、Gemini の作業を一緒に詰め込めるようにします。OPENCLAW_DOCKER_ALL_FAIL_FAST=0が設定されていない限り、runner は最初の failure 後に新しい pooled lane の scheduling を停止します。各レーンには 120 分の fallback timeout があり、OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MSで上書きできます。選択された live/tail レーンは、より厳しい per-lane cap を使用します。CLI backend Docker setup コマンドには、OPENCLAW_LIVE_CLI_BACKEND_SETUP_TIMEOUT_SECONDS(デフォルト 180)による独自の timeout があります。レーンごとのログ、summary.json、failures.json、phase timing は.artifacts/docker-tests/<run-id>/配下に書き込まれます。遅いレーンを調査するにはpnpm test:docker:timings <summary.json>を使用し、低コストのターゲット付き再実行コマンドを出力するにはpnpm test:docker:rerun <run-id|summary.json|failures.json>を使用します。 -
pnpm test:docker:browser-cdp-snapshot: Chromium-backed source E2E コンテナをビルドし、raw CDP と隔離された Gateway を起動し、browser doctor --deepを実行し、CDP role snapshot に link URL、cursor-promoted clickables、iframe refs、frame metadata が含まれていることを検証します。 -
pnpm test:docker:skill-install: packed OpenClaw tarball を bare Docker runner にインストールし、skills.install.allowUploadedArchivesを無効化し、live ClawHub search から現在の skill slug を解決し、openclaw skills install経由でインストールし、SKILL.md、.clawhub/origin.json、.clawhub/lock.json、skills info --jsonを検証します。 -
CLI backend live Docker probe は、たとえば
pnpm test:docker:live-cli-backend:codex、pnpm test:docker:live-cli-backend:codex:resume、pnpm test:docker:live-cli-backend:codex:mcpのように、focus されたレーンとして実行できます。Claude と Gemini には対応する:resumeと:mcpalias があります。 -
pnpm test:docker:openwebui: Docker 化された OpenClaw + Open WebUI を起動し、Open WebUI 経由でサインインし、/api/modelsを確認してから、/api/chat/completions経由で実際の proxied chat を実行します。利用可能な live model key(たとえば~/.profileの OpenAI)が必要で、外部 Open WebUI image を pull します。通常の unit/e2e スイートのように CI-stable であることは期待されません。 -
pnpm test:docker:mcp-channels: シード済みの Gateway コンテナと、openclaw mcp serveを起動する 2 つ目のクライアントコンテナを開始し、その後、ルーティングされた会話の検出、トランスクリプトの読み取り、添付ファイルのメタデータ、ライブイベントキューの挙動、送信ルーティング、実際の stdio ブリッジ経由での Claude 形式のチャンネル + 権限通知を検証します。Claude 通知のアサーションは raw stdio MCP フレームを直接読み取るため、このスモークはブリッジが実際に発行する内容を反映します。 -
pnpm test:docker:upgrade-survivor: 汚れた旧ユーザーフィクスチャの上にパック済み OpenClaw tarball をインストールし、ライブプロバイダーやチャンネルキーなしでパッケージ更新と非対話型 doctor を実行し、その後 local loopback Gateway を開始して、エージェント、チャンネル設定、Plugin 許可リスト、ワークスペース/セッションファイル、古いレガシー Plugin 依存関係の状態、起動、RPC ステータスが維持されることを確認します。 -
pnpm test:docker:published-upgrade-survivor: デフォルトでopenclaw@latestをインストールし、ライブプロバイダーやチャンネルキーなしで現実的な既存ユーザーファイルをシードし、焼き込み済みのopenclaw config setコマンドレシピでそのベースラインを設定し、公開済みインストールをパック済み OpenClaw tarball に更新し、非対話型 doctor を実行し、.artifacts/upgrade-survivor/summary.jsonを書き込み、その後 local loopback Gateway を開始して、設定済み intent、ワークスペース/セッションファイル、古い Plugin 設定とレガシー依存関係の状態、起動、/healthz、/readyz、RPC ステータスが維持される、またはきれいに修復されることを確認します。OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECで 1 つのベースラインを上書きし、OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECSでopenclaw@2026.5.2 openclaw@2026.4.23 openclaw@2026.4.15のような正確なローカルマトリクスを展開するか、OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issuesでシナリオフィクスチャを追加します。reported-issues セットには、設定済みの外部 OpenClaw Plugin がアップグレード中に自動インストールされることを検証するconfigured-plugin-installsと、ソース専用 Plugin シャドウが起動を壊さないようにするstale-source-plugin-shadowが含まれます。Package Acceptance はそれらをpublished_upgrade_survivor_baseline、published_upgrade_survivor_baselines、published_upgrade_survivor_scenariosとして公開し、Docker レーンに正確なパッケージ仕様を渡す前に、last-stable-4やall-since-2026.4.23のようなメタベースライントークンを解決します。 -
pnpm test:docker:update-migration: クリーンアップが多いplugin-deps-cleanupシナリオで公開済みアップグレード survivor ハーネスを実行し、デフォルトではopenclaw@2026.4.23から開始します。別個のUpdate Migrationワークフローは、このレーンをbaselines=all-since-2026.4.23で展開し、.23以降のすべての安定版公開済みパッケージが候補版へ更新されることを確認し、Full Release CI の外で設定済み Plugin 依存関係のクリーンアップを証明します。 -
pnpm test:docker:plugins: ローカルパス、file:、ホイストされた依存関係を持つ npm レジストリパッケージ、git moving refs、ClawHub フィクスチャ、マーケットプレイス更新、Claude バンドルの有効化/検査について、インストール/更新スモークを実行します。
ローカル PR ゲート
ローカルで PR の land/gate チェックを行うには、次を実行します。pnpm check:changedpnpm checkpnpm check:test-typespnpm buildpnpm testpnpm check:docs
pnpm test が不安定に失敗する場合は、リグレッションとして扱う前に一度再実行し、その後 pnpm test <path/to/test> で切り分けます。メモリ制約のあるホストでは、次を使用します。
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
モデルレイテンシベンチ(ローカルキー)
スクリプト:scripts/bench-model.ts
使用方法:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- 任意の env:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - 既定のプロンプト: 「Reply with a single word: ok. No punctuation or extra text.」
- minimax 中央値 1279ms(最小 1114、最大 2431)
- opus 中央値 2454ms(最小 1224、最大 3170)
CLI 起動ベンチ
スクリプト:scripts/bench-cli-startup.ts
使用方法:
pnpm test:startup:benchpnpm test:startup:bench:smokepnpm test:startup:bench:savepnpm test:startup:bench:updatepnpm test:startup:bench:checkpnpm tsx scripts/bench-cli-startup.tspnpm tsx scripts/bench-cli-startup.ts --runs 12pnpm tsx scripts/bench-cli-startup.ts --preset realpnpm tsx scripts/bench-cli-startup.ts --preset real --case status --case gatewayStatus --runs 3pnpm tsx scripts/bench-cli-startup.ts --preset real --case tasksJson --case tasksListJson --case tasksAuditJson --runs 3pnpm tsx scripts/bench-cli-startup.ts --entry openclaw.mjs --entry-secondary dist/entry.js --preset allpnpm tsx scripts/bench-cli-startup.ts --preset all --output .artifacts/cli-startup-bench-all.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --case gatewayStatusJson --output .artifacts/cli-startup-bench-smoke.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpupnpm tsx scripts/bench-cli-startup.ts --json
startup:--version,--help,health,health --json,status --json,statusreal:health,status,status --json,sessions,sessions --json,tasks --json,tasks list --json,tasks audit --json,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: 両方のプリセット
sampleCount、平均、p50、p95、最小/最大、終了コード/シグナルの分布、最大 RSS サマリーが含まれます。任意の --cpu-prof-dir / --heap-prof-dir は、実行ごとに V8 プロファイルを書き込むため、タイミング計測とプロファイル取得で同じハーネスを使用します。
保存される出力の規則:
pnpm test:startup:bench:smokeは、対象のスモーク成果物を.artifacts/cli-startup-bench-smoke.jsonに書き込みますpnpm test:startup:bench:saveは、runs=5とwarmup=1を使用して、フルスイートの成果物を.artifacts/cli-startup-bench-all.jsonに書き込みますpnpm test:startup:bench:updateは、runs=5とwarmup=1を使用して、チェックイン済みのベースラインフィクスチャをtest/fixtures/cli-startup-bench.jsonで更新します
test/fixtures/cli-startup-bench.jsonpnpm test:startup:bench:updateで更新しますpnpm test:startup:bench:checkで現在の結果をフィクスチャと比較します
オンボーディング E2E(Docker)
Docker は任意です。これはコンテナ化されたオンボーディングのスモークテストにのみ必要です。 クリーンな Linux コンテナでの完全なコールドスタートフロー:openclaw health を実行します。