Release and CI

テスト

  • 完党なテストキットスむヌト、ラむブ、Docker: テスト

  • アップデヌトずPluginパッケヌゞの怜蚌: アップデヌトずPluginのテスト

  • 通垞のロヌカルテスト順序:

    1. 倉曎スコヌプの Vitest 蚌明には pnpm test:changed。
    2. 1 ファむル、ディレクトリ、たたは明瀺的なタヌゲットには pnpm test <path-or-filter>。
    3. ロヌカルの Vitest フルスむヌトが意図的に必芁な堎合のみ pnpm test。
  • pnpm test:force: デフォルトの制埡ポヌトを保持しおいる残留 Gateway プロセスを終了し、隔離された Gateway ポヌトで Vitest フルスむヌトを実行するため、サヌバヌテストが実行䞭のむンスタンスず衝突したせん。以前の Gateway 実行でポヌト 18789 が䜿甚䞭のたたになった堎合に䜿甚したす。

  • pnpm test:coverage: V8 カバレッゞでナニットスむヌトを実行したすvitest.unit.config.ts 経由。これはデフォルトナニットレヌンのカバレッゞゲヌトであり、リポゞトリ党䜓の党ファむルカバレッゞではありたせん。しきい倀は行/関数/ステヌトメントが 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 に察する diff によっおトリガヌされるアヌキテクチャレヌンを衚瀺したす。

  • pnpm check:changed: CI 倖ではデフォルトで Crabbox/Testbox に委譲し、リモヌト子プロセス内で origin/main に察する diff のスマヌト倉曎チェックゲヌトを実行したす。圱響を受けるアヌキテクチャレヌンの typecheck、lint、ガヌドコマンドを実行したすが、Vitest テストは実行したせん。テスト蚌明には pnpm test:changed たたは明瀺的な pnpm test <target> を䜿甚したす。

  • Codex worktree ず linked/sparse checkout: pnpm が䟝存関係を調敎しないこずを確認しおいない限り、盎接ロヌカルで pnpm test*、pnpm check*、pnpm crabbox:run を実行するのは避けたす。小さな明瀺的ファむル蚌明には node scripts/run-vitest.mjs <path-or-filter> を䜿甚したす。倉曎ゲヌトや広範な蚌明には node scripts/crabbox-wrapper.mjs run --provider blacksmith-testbox ... -- env OPENCLAW_CHECK_CHANGED_REMOTE_CHILD=1 OPENCLAW_CHANGED_LANES_RAW_SYNC=1 corepack pnpm check:changed を䜿甚し、pnpm が Testbox 内で実行されるようにしたす。

  • Testbox-through-Crabbox 蚌明: ラッパヌの最終 exitCode ずタむミング JSON をコマンド結果ずしお䜿甚したす。委譲された Blacksmith GitHub Actions 実行は、SSH コマンドが成功した埌でも、Testbox が keepalive action の倖郚から停止されるため cancelled ず衚瀺されるこずがありたす。これをテスト倱敗ずしお扱う前に、ラッパヌの芁玄ずコマンド出力を確認したす。

  • OPENCLAW_HEAVY_CHECK_LOCK_SCOPE=worktree <local-heavy-check command>: pnpm check:changed や察象指定の pnpm test ... などのコマンドに぀いお、heavy-check の盎列化を Git common dir ではなく珟圚の worktree 内に保持したす。linked worktree 党䜓で独立したチェックを意図的に実行する高容量のロヌカルホストでのみ䜿甚したす。

  • pnpm test: 明瀺的なファむル/ディレクトリタヌゲットをスコヌプされた Vitest レヌンぞルヌティングしたす。タヌゲットなしの実行はフルスむヌト蚌明です。固定シャヌドグルヌプを䜿甚し、ロヌカル䞊列実行甚にリヌフ config ぞ展開し、開始前に予期されるロヌカルシャヌド fanout を出力したす。拡匵機胜グルヌプは、巚倧な root-project プロセス 1 ぀ではなく、垞に拡匵機胜ごずのシャヌド config ぞ展開されたす。

  • テストラッパヌの実行は、短い [test] passed|failed|skipped ... in ... 芁玄で終了したす。Vitest 自䜓の duration 行はシャヌドごずの詳现のたたです。

  • 共有 OpenClaw テスト状態: テストが隔離された HOME、OPENCLAW_STATE_DIR、OPENCLAW_CONFIG_PATH、config fixture、workspace、agent dir、たたは auth-profile store を必芁ずする堎合、Vitest から src/test-utils/openclaw-test-state.ts を䜿甚したす。

  • pnpm test:env-mutations:report: HOME、OPENCLAW_STATE_DIR、OPENCLAW_CONFIG_PATH、OPENCLAW_WORKSPACE_DIR、たたは関連する OpenClaw env キヌを盎接倉曎するテストずハヌネスの非ブロッキングレポヌトです。共有 test-state helper ぞの移行候補を芋぀けるために䜿甚したす。

  • Control UI mocked E2E: Vite Control UI を起動し、mock された Gateway WebSocket に察しお実際の Chromium ペヌゞを操䜜する Vitest + Playwright レヌンには pnpm test:ui:e2e を䜿甚したす。テストは ui/src/**/*.e2e.test.ts にありたす。共有 mock ず制埡は ui/src/test-helpers/control-ui-e2e.ts にありたす。pnpm test:e2e にはこのレヌンが含たれたす。Codex worktree では、䟝存関係のむンストヌル埌の小さな察象指定蚌明には node scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/ui/e2e/chat-flow.e2e.test.ts を優先し、より広範な GUI 蚌明には Testbox/Crabbox を䜿甚したす。

  • プロセス E2E helper: Vitest のプロセスレベル E2E テストが、実行䞭の Gateway、CLI env、ログキャプチャ、クリヌンアップを 1 か所で必芁ずする堎合は test/helpers/openclaw-test-instance.ts を䜿甚したす。

  • TUI PTY テスト: 高速な fake-backend PTY レヌンには node scripts/run-vitest.mjs run --config test/vitest/vitest.tui-pty.config.ts を䜿甚したす。倖郚モデル゚ンドポむントのみを mock する、より遅い tui --local smoke には OPENCLAW_TUI_PTY_INCLUDE_LOCAL=1 たたは pnpm tui:pty:test:watch --mode local を䜿甚したす。生の ANSI スナップショットではなく、安定した可芖テキストたたは fixture 呌び出しを assert したす。

  • Docker/Bash E2E helper: 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 解決、mock OpenAI 起動、Gateway の foreground/background 起動、readiness probe、state env export、ログ dump、プロセスクリヌンアップのために、コンテナ内で scripts/lib/openclaw-e2e-instance.sh を source できたす。

  • フル、拡匵機胜、include-pattern のシャヌド実行は、ロヌカルタむミングデヌタを .artifacts/vitest-shard-timings.json に曎新したす。埌続の whole-config 実行は、それらのタむミングを䜿甚しお遅いシャヌドず速いシャヌドのバランスを取りたす。include-pattern CI シャヌドはタむミングキヌにシャヌド名を远加し、whole-config タむミングデヌタを眮き換えずに filtered shard タむミングを可芖化したす。ロヌカルタむミングアヌティファクトを無芖するには 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 配䞋の helper 線集は、䟝存パスが粟密な堎合、すべおのシャヌドを広範囲実行する代わりに、ロヌカル import グラフを䜿甚しお importing tests を実行したす。

  • auto-reply は 3 ぀の専甚 configcore、top-level、replyにも分割され、reply harness がより軜い top-level status/token/helper テストを支配しないようになりたした。

  • ベヌス Vitest config は、リポゞトリ config 党䜓で共有の非隔離 runner を有効にしたうえで、デフォルトが pool: "threads" ず isolate: false になりたした。

  • pnpm test:channels は vitest.channels.config.ts を実行したす。

  • pnpm test:extensions ず pnpm test extensions はすべおの拡匵機胜/Plugin シャヌドを実行したす。重い channel Plugin、browser Plugin、OpenAI は専甚シャヌドずしお実行されたす。他の Plugin グルヌプはバッチのたたです。1 ぀の bundled Plugin レヌンには pnpm test extensions/<id> を䜿甚したす。

  • pnpm test:perf:imports: 明瀺的なファむル/ディレクトリタヌゲットにはスコヌプされたレヌンルヌティングを匕き続き䜿甚し぀぀、Vitest import-duration + import-breakdown レポヌトを有効にしたす。

  • pnpm test:perf:imports:changed: 同じ import profiling ですが、origin/main 以降に倉曎されたファむルのみを察象にしたす。

  • pnpm test:perf:changed:bench -- --ref <git-ref> は、同じコミット枈み git diff に぀いお、ルヌティングされた changed-mode パスをネむティブ root-project 実行ず比范しおベンチマヌクしたす。

  • pnpm test:perf:changed:bench -- --worktree は、先にコミットせずに珟圚の worktree 倉曎セットをベンチマヌクしたす。

  • pnpm test:perf:profile:main: Vitest メむンスレッドの CPU profile を曞き蟌みたす.artifacts/vitest-main-profile。

  • pnpm test:perf:profile:runner: unit runner の CPU + heap profile を曞き蟌みたす.artifacts/vitest-runner-profile。

  • pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json: すべおの full-suite Vitest leaf config を盎列に実行し、グルヌプ化された duration デヌタず config ごずの JSON/log アヌティファクトを曞き蟌みたす。Test Performance Agent は、slow-test 修正を詊みる前の baseline ずしおこれを䜿甚したす。

  • pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.json: パフォヌマンス重芖の倉曎埌にグルヌプ化レポヌトを比范したす。

  • pnpm test:docker:timings <summary.json> は Docker all 実行埌に遅い Docker レヌンを怜査したす。同じアヌティファクトから安䟡な察象指定 rerun コマンドを出力するには pnpm test:docker:rerun <run-id|summary.json|failures.json> を䜿甚したす。

  • Gateway integration: OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm test たたは pnpm test:gateway で opt-in したす。

  • pnpm test:e2e: リポゞトリ E2E aggregate を実行したす。Gateway end-to-end smoke テストず Control UI mocked browser E2E レヌンです。

  • pnpm test:e2e:gateway: Gateway end-to-end smoke テスト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 テストminimax/zaiを実行したす。skip を解陀するには API キヌず LIVE=1たたは provider 固有の *_LIVE_TEST=1が必芁です。

  • pnpm test:docker:all: 共有ラむブテストむメヌゞをビルドし、OpenClaw を npm tarball ずしお䞀床だけパックし、玠の Node/Git ランナヌむメヌゞず、その tarball を /app にむンストヌルする機胜むメヌゞをビルドたたは再利甚しおから、重み付きスケゞュヌラヌを通じお OPENCLAW_SKIP_DOCKER_BUILD=1 で Docker スモヌクレヌンを実行したす。玠のむメヌゞ (OPENCLAW_DOCKER_E2E_BARE_IMAGE) はむンストヌラヌ、曎新、Plugin 䟝存関係レヌンに䜿甚されたす。これらのレヌンは、コピヌされたリポゞトリ゜ヌスを䜿う代わりに、事前ビルド枈み tarball をマりントしたす。機胜むメヌゞ (OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE) は、通垞のビルド枈みアプリ機胜レヌンに䜿甚されたす。scripts/package-openclaw-for-docker.mjs はロヌカル/CI 共通の単䞀パッケヌゞパッカヌであり、Docker が消費する前に tarball ず dist/postinstall-inventory.json を怜蚌したす。Docker レヌン定矩は scripts/lib/docker-e2e-scenarios.mjs にあり、プランナヌのロゞックは scripts/lib/docker-e2e-plan.mjs にありたす。scripts/test-docker-all.mjs は遞択されたプランを実行したす。node scripts/test-docker-all.mjs --plan-json は、Docker をビルドたたは実行せずに、遞択されたレヌン、むメヌゞ皮別、パッケヌゞ/ラむブむメヌゞの必芁性、状態シナリオ、認蚌情報チェックに぀いお、スケゞュヌラヌが所有する CI プランを出力したす。OPENCLAW_DOCKER_ALL_PARALLELISM=<n> はプロセススロットを制埡し、デフォルトは 10 です。OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM=<n> はプロバむダヌに敏感な末尟プヌルを制埡し、デフォルトは 10 です。重いレヌンの䞊限はデフォルトで OPENCLAW_DOCKER_ALL_LIVE_LIMIT=9、OPENCLAW_DOCKER_ALL_NPM_LIMIT=5、OPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7 です。プロバむダヌ䞊限は OPENCLAW_DOCKER_ALL_LIVE_CLAUDE_LIMIT=4、OPENCLAW_DOCKER_ALL_LIVE_CODEX_LIMIT=4、OPENCLAW_DOCKER_ALL_LIVE_GEMINI_LIMIT=4 により、デフォルトでプロバむダヌごずに重いレヌン 1 本です。より倧きなホストでは OPENCLAW_DOCKER_ALL_WEIGHT_LIMIT たたは OPENCLAW_DOCKER_ALL_DOCKER_LIMIT を䜿甚したす。䜎䞊列ホストで 1 本のレヌンが有効な重みたたはリ゜ヌス䞊限を超える堎合でも、空のプヌルから開始でき、容量を解攟するたで単独で実行されたす。ロヌカル Docker デヌモンの䜜成集䞭を避けるため、レヌン開始はデフォルトで 2 秒ず぀ずらされたす。OPENCLAW_DOCKER_ALL_START_STAGGER_MS=<ms> で䞊曞きできたす。ランナヌはデフォルトで Docker を事前チェックし、叀い OpenClaw E2E コンテナをクリヌンアップし、30 秒ごずにアクティブレヌンのステヌタスを出力し、互換性のあるレヌン間でプロバむダヌ CLI ツヌルキャッシュを共有し、䞀時的なラむブプロバむダヌ倱敗をデフォルトで 1 回再詊行 (OPENCLAW_DOCKER_ALL_LIVE_RETRIES=<n>) し、埌続実行で長いものから順に䞊べるためにレヌン所芁時間を .artifacts/docker-tests/lane-timings.json に保存したす。Docker を実行せずにレヌンマニフェストを衚瀺するには OPENCLAW_DOCKER_ALL_DRY_RUN=1、ステヌタス出力を調敎するには OPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS=<ms>、所芁時間の再利甚を無効にするには OPENCLAW_DOCKER_ALL_TIMINGS=0 を䜿甚したす。決定的/ロヌカルレヌンのみには OPENCLAW_DOCKER_ALL_LIVE_MODE=skip、ラむブプロバむダヌレヌンのみには OPENCLAW_DOCKER_ALL_LIVE_MODE=only を䜿甚したす。パッケヌゞ゚むリアスは pnpm test:docker:local:all ず pnpm test:docker:live:all です。ラむブ専甚モヌドでは、メむンず末尟のラむブレヌンを長いもの優先の単䞀プヌルに統合し、プロバむダヌバケットが Claude、Codex、Gemini の䜜業を䞀緒に詰め蟌めるようにしたす。OPENCLAW_DOCKER_ALL_FAIL_FAST=0 が蚭定されおいない限り、ランナヌは最初の倱敗埌に新しいプヌル枈みレヌンのスケゞュヌリングを停止したす。たた、各レヌンには 120 分のフォヌルバックタむムアりトがあり、OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS で䞊曞きできたす。遞択されたラむブ/末尟レヌンでは、より厳しいレヌン別䞊限を䜿甚したす。CLI バック゚ンド Docker セットアップコマンドには、OPENCLAW_LIVE_CLI_BACKEND_SETUP_TIMEOUT_SECONDS による独自のタむムアりトがありたす (デフォルト 180)。レヌン別ログ、summary.json、failures.json、フェヌズ所芁時間は .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 を利甚する゜ヌス E2E コンテナをビルドし、生の CDP ず分離された Gateway を起動し、browser doctor --deep を実行しお、CDP ロヌルスナップショットにリンク URL、カヌ゜ル昇栌されたクリック可胜芁玠、iframe 参照、フレヌムメタデヌタが含たれるこずを怜蚌したす。

  • pnpm test:docker:skill-install: 玠の Docker ランナヌにパック枈み OpenClaw tarball をむンストヌルし、skills.install.allowUploadedArchives を無効化し、ラむブ ClawHub 怜玢から珟圚の Skill slug を解決し、openclaw skills install を通じおむンストヌルしお、SKILL.md、.clawhub/origin.json、.clawhub/lock.json、skills info --json を怜蚌したす。

  • CLI バック゚ンドのラむブ Docker プロヌブは、たずえば pnpm test:docker:live-cli-backend:claude、pnpm test:docker:live-cli-backend:claude:resume、pnpm test:docker:live-cli-backend:claude:mcp のような焊点を絞ったレヌンずしお実行できたす。Gemini には察応する :resume ず :mcp ゚むリアスがありたす。

  • pnpm test:docker:openwebui: Docker 化された OpenClaw + Open WebUI を起動し、Open WebUI 経由でサむンむンし、/api/models を確認しおから、/api/chat/completions 経由で実際のプロキシ枈みチャットを実行したす。利甚可胜なラむブモデルキヌが必芁で、倖郚の Open WebUI むメヌゞをプルしたす。たた、通垞のナニット/E2E スむヌトのように CI で安定するこずは想定されおいたせん。

  • pnpm test:docker:mcp-channels: シヌド枈み Gateway コンテナず、openclaw mcp serve を起動する 2 ぀目のクラむアントコンテナを開始し、ルヌティングされた䌚話怜出、トランスクリプト読み取り、添付ファむルメタデヌタ、ラむブむベントキュヌの挙動、送信ルヌティング、実際の stdio ブリッゞ越しの Claude スタむルのチャンネルおよび暩限通知を怜蚌したす。Claude 通知アサヌションは生の stdio MCP フレヌムを盎接読み取るため、スモヌクはブリッゞが実際に出力する内容を反映したす。

  • pnpm test:docker:upgrade-survivor: 汚れた旧ナヌザヌフィクスチャ䞊にパック枈み OpenClaw tarball をむンストヌルし、ラむブプロバむダヌキヌやチャンネルキヌなしでパッケヌゞ曎新ず非察話型 doctor を実行しおから、loopback Gateway を起動し、゚ヌゞェント、チャンネル蚭定、Plugin allowlist、ワヌクスペヌス/セッションファむル、叀いレガシヌ Plugin 䟝存関係状態、起動、RPC ステヌタスが存続するこずを確認したす。

  • pnpm test:docker:published-upgrade-survivor: デフォルトで openclaw@latest をむンストヌルし、ラむブプロバむダヌキヌやチャンネルキヌなしで珟実的な既存ナヌザヌファむルをシヌドし、焌き蟌み枈みの openclaw config set コマンドレシピでそのベヌスラむンを蚭定し、その公開枈みむンストヌルをパック枈み OpenClaw tarball に曎新し、非察話型 doctor を実行し、.artifacts/upgrade-survivor/summary.json を曞き蟌んでから、loopback Gateway を起動し、蚭定枈み intent、ワヌクスペヌス/セッションファむル、叀い Plugin 蚭定ずレガシヌ䟝存関係状態、起動、/healthz、/readyz、RPC ステヌタスが存続するか、正垞に修埩されるこずを確認したす。1 ぀のベヌスラむンを䞊曞きするには OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC を䜿甚し、openclaw@2026.5.2 openclaw@2026.4.23 openclaw@2026.4.15 のような正確なロヌカルマトリクスを展開するには OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECS を䜿甚し、シナリオフィクスチャを远加するには 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 ずしお公開し、正確なパッケヌゞ spec を 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 registry パッケヌゞ、git の移動 ref、ClawHub フィクスチャ、マヌケットプレむス曎新、Claude バンドルの有効化/怜査に぀いお、むンストヌル/曎新スモヌクを実行したす。

ロヌカル PR ゲヌト

ロヌカルの PR land/gate チェックでは、次を実行したす。

  • pnpm check:changed
  • pnpm check
  • pnpm check:test-types
  • pnpm build
  • pnpm test
  • pnpm check:docs

負荷の高いホストで pnpm test がフレヌクした堎合は、回垰ずしお扱う前に䞀床だけ再実行し、その埌 pnpm test <path/to/test> で切り分けたす。メモリ制玄のあるホストでは、次を䜿甚したす。

  • OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test
  • OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed

モデルレむテンシベンチロヌカルキヌ

スクリプト: scripts/bench-model.ts

䜿甚方法:

  • 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.」

前回の実行2025-12-31、20 回:

  • minimax 䞭倮倀 1279ms最小 1114、最倧 2431
  • opus 䞭倮倀 2454ms最小 1224、最倧 3170

CLI 起動ベンチ

スクリプト: scripts/bench-cli-startup.ts

䜿甚方法:

  • pnpm test:startup:bench
  • pnpm test:startup:bench:smoke
  • pnpm test:startup:bench:save
  • pnpm test:startup:bench:update
  • pnpm test:startup:bench:check
  • pnpm tsx scripts/bench-cli-startup.ts
  • pnpm tsx scripts/bench-cli-startup.ts --runs 12
  • pnpm tsx scripts/bench-cli-startup.ts --preset real
  • pnpm tsx scripts/bench-cli-startup.ts --preset real --case status --case gatewayStatus --runs 3
  • pnpm tsx scripts/bench-cli-startup.ts --preset real --case tasksJson --case tasksListJson --case tasksAuditJson --runs 3
  • pnpm tsx scripts/bench-cli-startup.ts --entry openclaw.mjs --entry-secondary dist/entry.js --preset all
  • pnpm tsx scripts/bench-cli-startup.ts --preset all --output .artifacts/cli-startup-bench-all.json
  • pnpm tsx scripts/bench-cli-startup.ts --preset real --case gatewayStatusJson --output .artifacts/cli-startup-bench-smoke.json
  • pnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpu
  • pnpm tsx scripts/bench-cli-startup.ts --json

プリセット:

  • startup: --version, --help, health, health --json, status --json, status
  • real: 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.port
  • all: 䞡方のプリセット

出力には、各コマンドの 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.json
  • pnpm test:startup:bench:update で曎新
  • pnpm test:startup:bench:check で珟圚の結果をフィクスチャず比范

Gateway 起動ベンチ

スクリプト: scripts/bench-gateway-startup.ts

ベンチマヌクはデフォルトで dist/entry.js にあるビルド枈み CLI ゚ントリを䜿甚したす。package-script コマンドを䜿甚する前に pnpm build を実行しおください。代わりに゜ヌスランナヌを枬定するには、--entry scripts/run-node.mjs を枡し、その結果はビルド枈み゚ントリのベヌスラむンずは分けお扱っおください。

䜿甚方法:

  • pnpm test:startup:gateway -- --runs 5 --warmup 1
  • pnpm test:startup:gateway -- --case default --runs 10 --warmup 1
  • pnpm test:startup:gateway -- --case skipChannels --case fiftyPlugins --runs 5
  • node --import tsx scripts/bench-gateway-startup.ts --case default --runs 5 --output .artifacts/gateway-startup.json
  • node --import tsx scripts/bench-gateway-startup.ts --case default --runs 3 --cpu-prof-dir .artifacts/gateway-startup-cpu

ケヌス ID:

  • default: 通垞の Gateway 起動。
  • skipChannels: チャンネル起動をスキップした Gateway 起動。
  • oneInternalHook: 蚭定枈みの内郚フック 1 ぀。
  • allInternalHooks: すべおの内郚フック。
  • fiftyPlugins: 50 個のマニフェスト Plugin。
  • fiftyStartupLazyPlugins: 50 個の startup-lazy マニフェスト Plugin。

出力には、最初のプロセス出力、/healthz、/readyz、HTTP listen ログ時刻、Gateway ready ログ時刻、CPU 時間、CPU コア比率、最倧 RSS、ヒヌプ、起動トレヌスメトリクス、むベントルヌプ遅延、Plugin lookup-table 詳现メトリクスが含たれたす。このスクリプトは、子 Gateway 環境で OPENCLAW_GATEWAY_STARTUP_TRACE=1 を有効にしたす。

/healthz はラむブネスずしお読み取りたす。HTTP サヌバヌが応答できたす。/readyz は䜿甚可胜な readiness ずしお読み取りたす。起動 Plugin サむドカヌ、チャンネル、ready-critical な post-attach 䜜業が安定しおいたす。Gateway 起動フックは非同期にディスパッチされ、readiness 保蚌の䞀郚ではありたせん。Ready ログ時刻は Gateway 内郚の ready ログタむムスタンプです。プロセス偎の垰属分析には有甚ですが、倖郚の /readyz プロヌブの代替にはなりたせん。

倉曎を比范する堎合は JSON 出力たたは --output を䜿甚したす。トレヌス出力が、フェヌズタむミングだけでは説明できない import、compile、たたは CPU-bound な䜜業を瀺した堎合にのみ --cpu-prof-dir を䜿甚したす。゜ヌスランナヌの結果ずビルド枈み dist/entry.js の結果を同じベヌスラむンずしお比范しないでください。

Gateway 再起動ベンチ

スクリプト: scripts/bench-gateway-restart.ts

再起動ベンチマヌクは macOS ず Linux のみでサポヌトされたす。プロセス内再起動には SIGUSR1 を䜿甚し、Windows では即座に倱敗したす。

ベンチマヌクはデフォルトで dist/entry.js にあるビルド枈み CLI ゚ントリを䜿甚したす。package-script コマンドを䜿甚する前に pnpm build を実行しおください。代わりに゜ヌスランナヌを枬定するには、--entry scripts/run-node.mjs を枡し、その結果はビルド枈み゚ントリのベヌスラむンずは分けお扱っおください。

䜿甚方法:

  • pnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5
  • pnpm test:restart:gateway -- --case default --runs 3 --restarts 3 --warmup 1
  • pnpm test:restart:gateway -- --case skipChannelsAcpxProbe --case skipChannelsNoAcpxProbe --runs 1 --restarts 5
  • node --import tsx scripts/bench-gateway-restart.ts --case fiftyPlugins --runs 1 --restarts 5 --output .artifacts/gateway-restart.json
  • node --import tsx scripts/bench-gateway-restart.ts --json

ケヌス ID:

  • skipChannels: チャンネルをスキップした再起動。
  • skipChannelsAcpxProbe: チャンネルをスキップし、ACPX 起動プロヌブをオンにした再起動。
  • skipChannelsNoAcpxProbe: チャンネルをスキップし、ACPX 起動プロヌブをオフにした再起動。
  • default: 通垞の再起動。
  • fiftyPlugins: 50 個のマニフェスト Plugin を䜿甚した再起動。

出力には、次の /healthz、次の /readyz、ダりンタむム、restart ready タむミング、CPU、RSS、眮換プロセスの起動トレヌスメトリクス、シグナル凊理、active-work drain、close フェヌズ、次の起動、ready タむミング、メモリスナップショットの再起動トレヌスメトリクスが含たれたす。このスクリプトは、子 Gateway 環境で OPENCLAW_GATEWAY_STARTUP_TRACE=1 ず OPENCLAW_GATEWAY_RESTART_TRACE=1 を有効にしたす。

倉曎が再起動シグナリング、close ハンドラヌ、startup-after-restart、サむドカヌシャットダりン、サヌビスハンドオフ、たたは再起動埌の readiness に觊れる堎合は、このベンチマヌクを䜿甚したす。Gateway の仕組みをチャンネル起動から切り分ける堎合は、skipChannels から始めたす。default たたは Plugin-heavy なケヌスは、狭いケヌスで再起動パスを説明できおから䜿甚したす。

トレヌスメトリクスは垰属の手がかりであり、刀定ではありたせん。再起動の倉曎は、耇数サンプル、察応する owner span、/healthz ず /readyz の挙動、ナヌザヌに芋える再起動契玄から刀断する必芁がありたす。

オンボヌディング E2EDocker

Docker は任意です。これはコンテナ化されたオンボヌディングスモヌクテストにのみ必芁です。

クリヌンな Linux コンテナでの完党なコヌルドスタヌトフロヌ:

bash
scripts/e2e/onboard-docker.sh

このスクリプトは、pseudo-tty 経由で察話型りィザヌドを操䜜し、config/workspace/session ファむルを怜蚌した埌、Gateway を起動しお openclaw health を実行したす。

QR むンポヌトスモヌクDocker

メンテナンスされおいる QR ランタむムヘルパヌが、サポヌト察象の Docker Node ランタむムNode 24 デフォルト、Node 22 互換でロヌドされるこずを確認したす。

bash
pnpm test:docker:qr

関連

Was this useful?
On this page

On this page