ライブテストと実際の Gateway の違い
ライブスイートおよびアドホックなスモークテストが、すでに実際のトラフィックを 処理している Gateway(自分または別のオペレーターのもの)を妨害することは絶対に避けてください。- 専用の Gateway を使用する: プロセス内 Gateway(以下のレイヤー 2)を使用するか、
分離された状態ディレクトリ(
OPENCLAW_STATE_DIR=<scratch>)と空いているポートで 開発インスタンスを起動します。実際の Gateway がデフォルトの Gateway ポート(18789)で 稼働している間は、そのポートにバインドしないでください。 - このセッションで自分が起動していないサービスを
openclaw gateway stop/restart(またはlaunchctl/systemctl/tmux の同等操作)しないでください。それはオペレーターのライブインスタンスです。先に明示的な承認を得てください。 - 現実的なデータが必要な場合: ライブの状態/DB を開発用の状態ディレクトリにコピーし、 そのコピーに対してテストしてください。ライブ Gateway の状態をその場で移行する場合も、 明示的な承認が必要です。
ライブ: ローカルスモークコマンド
アドホックなライブチェックを行う前に、必要なプロバイダーキーをプロセス環境に エクスポートしてください。 安全なメディアスモークテスト:--yes も指定されていない限り、voicecall smoke はドライランです。実際に
通話する場合にのみ --yes を使用してください。Twilio、Telnyx、Plivo では、
準備状況チェックを成功させるには公開 Webhook URL が必要です。これらのプロバイダーから
到達できないため、ローカル/プライベートのループバック URL は拒否されます。
ライブ: Android Node 機能スイープ
- テスト:
src/gateway/android-node.capabilities.live.test.ts - スクリプト:
pnpm android:test:integration - 目的: 接続済みの Android Node が現在公開しているすべてのコマンドを呼び出し、コマンド契約の動作を検証します。
- 範囲:
- 事前条件を満たすための手動セットアップ(このスイートはアプリのインストール、実行、ペアリングを行いません)。
- 選択した Android Node に対する、コマンドごとの Gateway
node.invoke検証。
- 必要な事前セットアップ:
- Android アプリがすでに Gateway に接続され、ペアリングされていること。
- アプリをフォアグラウンドに維持すること。
- 成功を期待する機能について、権限/キャプチャの同意が付与されていること。
- 任意のターゲットオーバーライド:
OPENCLAW_ANDROID_NODE_IDまたはOPENCLAW_ANDROID_NODE_NAME。OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD。
- Android の完全なセットアップ詳細: Android アプリ
ライブ: モデルスモークテスト(プロファイルキー)
ライブモデルテストは、障害を分離できるように 2 つのレイヤーに分かれています。- 「モデルへの直接接続」では、指定したキーでプロバイダー/モデルが応答できるかどうかを確認します。
- 「Gateway スモークテスト」では、そのモデルで Gateway とエージェントのパイプライン全体(セッション、履歴、ツール、サンドボックスポリシーなど)が動作するかどうかを確認します。
src/agents/live-model-filter.ts にあり、
時間の経過とともに変更されます。このページではなく、そこにある配列を信頼できる唯一の情報源として扱ってください。
MiniMax M3 は、デフォルトのプロバイダー/モデル参照として minimax/MiniMax-M3 を使用します。
レイヤー 1: モデル補完への直接接続(Gateway なし)
- テスト:
src/agents/models.profiles.live.test.ts - 目的:
- 検出されたモデルを列挙する
getApiKeyForModelを使用して、認証情報を持つモデルを選択する- モデルごとに小規模な補完を実行する(必要に応じて対象を絞ったリグレッションテストも実行)
- 有効化方法:
pnpm test:live(Vitest を直接呼び出す場合はOPENCLAW_LIVE_TEST=1)- このスイートを実際に実行するには、
OPENCLAW_LIVE_MODELS=modern、small、またはall(modernのエイリアス)を設定します。設定しない場合はスキップされるため、pnpm test:liveだけを指定した場合は Gateway スモークテストのみに集中できます。
- モデルの選択方法:
OPENCLAW_LIVE_MODELS=modernは、厳選されたシグナル価値の高い優先リストを実行します(ライブ: モデルマトリクスを参照)OPENCLAW_LIVE_MODELS=smallは、厳選された小規模モデルの優先リストを実行しますOPENCLAW_LIVE_MODELS=allはmodernのエイリアスです- または
OPENCLAW_LIVE_MODELS="openai/gpt-5.6-luna,anthropic/claude-opus-4-6,..."(カンマ区切りの許可リスト) - ローカル Ollama の小規模モデル実行では、デフォルトで
http://127.0.0.1:11434が使用されます。LAN、カスタム、または Ollama Cloud エンドポイントの場合にのみOPENCLAW_LIVE_OLLAMA_BASE_URLを設定してください。 - 最新/全モデルおよび小規模モデルのスイープでは、デフォルトで各厳選リストの長さが上限になります。選択したプロファイルを網羅的にスイープするには
OPENCLAW_LIVE_MAX_MODELS=0を設定し、上限を小さくするには正の数を設定します。 - 網羅的なスイープでは、モデル直接接続テスト全体のタイムアウトとして
OPENCLAW_LIVE_TEST_TIMEOUT_MSを使用します。デフォルト: 60 分。 - モデル直接接続プローブは、デフォルトで 20 並列で実行されます。変更するには
OPENCLAW_LIVE_MODEL_CONCURRENCYを設定します。
- プロバイダーの選択方法:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(カンマ区切りの許可リスト)
- キーの取得元:
- デフォルト: プロファイルストアと環境変数のフォールバック
- プロファイルストアのみに限定するには
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1を設定します
- このテストが存在する理由:
- 「プロバイダー API が壊れている/キーが無効」と「Gateway エージェントパイプラインが壊れている」を切り分けます
- 小規模で分離されたリグレッションテストを含みます(例: OpenAI Responses/Codex Responses の推論リプレイとツール呼び出しフロー)
レイヤー 2: Gateway + 開発エージェントのスモークテスト(「@openclaw」が実際に行う処理)
- テスト:
src/gateway/gateway-models.profiles.live.test.ts - 目的:
- プロセス内 Gateway を起動する
agent:dev:*セッションを作成/更新する(実行ごとにモデルをオーバーライド)- キーを持つモデルを順に処理し、以下を検証する:
- 「意味のある」応答(ツールなし)
- 実際のツール呼び出しが動作すること(読み取りプローブ)
- 任意の追加ツールプローブ(実行+読み取りプローブ)
- OpenAI のリグレッションパス(ツール呼び出しのみ -> フォローアップ)が引き続き動作すること
- プローブの詳細(障害を迅速に説明できるようにするため):
readプローブ: テストはワークスペースに nonce ファイルを書き込み、エージェントにそのファイルをreadして nonce をそのまま返すよう要求します。exec+readプローブ: テストはエージェントに nonce を一時ファイルへexecで書き込み、その後readして読み返すよう要求します。- 画像プローブ: テストは生成した PNG(猫 + ランダム化されたコード)を添付し、モデルが
cat <CODE>を返すことを期待します。 - 実装リファレンス:
src/gateway/gateway-models.profiles.live.test.tsおよびtest/helpers/live-image-probe.ts。
- 有効化方法:
pnpm test:live(Vitest を直接呼び出す場合はOPENCLAW_LIVE_TEST=1)
- モデルの選択方法:
- デフォルト: 厳選されたシグナル価値の高い(
modern)優先リスト OPENCLAW_LIVE_GATEWAY_MODELS=smallは、厳選された小規模モデルのリストを Gateway とエージェントのパイプライン全体で実行しますOPENCLAW_LIVE_GATEWAY_MODELS=allはmodernのエイリアスです- または、対象を絞るために
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(またはカンマ区切りのリスト)を設定します - 最新/全モデルおよび小規模モデルの Gateway スイープでは、デフォルトで各厳選リストの長さが上限になります。選択対象を網羅的にスイープするには
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0を設定し、上限を小さくするには正の数を設定します。
- デフォルト: 厳選されたシグナル価値の高い(
- プロバイダーの選択方法(「OpenRouter の全モデル」を避ける):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(カンマ区切りの許可リスト)
- このライブテストでは、ツールと画像のプローブが常に有効です:
readプローブ +exec+readプローブ(ツール負荷テスト)- モデルが画像入力対応を公開している場合、画像プローブを実行します
- フロー(概要):
- テストが「CAT」+ ランダムコードを含む小さな PNG を生成します(
test/helpers/live-image-probe.ts) agentattachments: [{ mimeType: "image/png", content: "<base64>" }]経由で送信します- Gateway が添付ファイルを
images[]に解析します(src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - 組み込みエージェントがマルチモーダルなユーザーメッセージをモデルに転送します
- 検証: 応答に
cat+ コードが含まれること(OCR の許容範囲: 軽微な誤りは許容)
- テストが「CAT」+ ランダムコードを含む小さな PNG を生成します(
ライブ: CLI バックエンドのスモークテスト(Claude、Gemini、またはその他のローカル CLI)
- テスト:
src/gateway/gateway-cli-backend.live.test.ts - 目的: デフォルト設定に触れずに、ローカル CLI バックエンドを使用して Gateway とエージェントのパイプラインを検証します。
- バックエンド固有のスモークテストのデフォルトは、所有する Plugin の
cli-backend.ts定義にあります。 - 有効化:
pnpm test:live(Vitest を直接呼び出す場合はOPENCLAW_LIVE_TEST=1)OPENCLAW_LIVE_CLI_BACKEND=1
- デフォルト:
- デフォルトのプロバイダー/モデル:
claude-cli/claude-sonnet-4-6 - コマンド/引数/画像の動作は、所有する CLI バックエンド Plugin のメタデータから取得されます。
- デフォルトのプロバイダー/モデル:
- オーバーライド(任意):
OPENCLAW_LIVE_CLI_BACKEND_MODEL="claude-cli/claude-sonnet-4-6"OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/claude"OPENCLAW_LIVE_CLI_BACKEND_ARGS='["-p","--output-format","json"]'- 実際の画像添付を送信するには
OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1を使用します(パスはプロンプトに挿入されます)。Docker レシピではデフォルトで無効です。 - プロンプトへの挿入ではなく、画像ファイルのパスを CLI 引数として渡すには
OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"を使用します。 IMAGE_ARGが設定されている場合に画像引数を渡す方法を制御するには、OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(または"list")を使用します。- 2 ターン目を送信して再開フローを検証するには
OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1を使用します。 - 選択したモデルが切り替え先をサポートしている場合に、Claude Sonnet -> Opus の同一セッション継続性プローブを有効にするには
OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1を使用します。Docker レシピを含め、デフォルトでは無効です。 - MCP/ツールのループバックプローブを有効にするには
OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1を使用します。Docker レシピではデフォルトで無効です。
gemini --debug mcp list を実行して、保存済みの transport: "streamable-http"
サーバーが Gemini の HTTP MCP 形式に正規化され、ローカルのストリーム対応 HTTP MCP
サーバーに接続できることを検証します。
Docker レシピ:
- Docker ランナーは
scripts/test-live-cli-backend-docker.shにあります。 - リポジトリの Docker イメージ内で、非 root の
nodeユーザーとしてライブ CLI バックエンドスモークを実行します。 - 所有する Plugin から CLI スモークのメタデータを解決し、対応する Linux CLI パッケージ(
@anthropic-ai/claude-codeまたは@google/gemini-cli)をOPENCLAW_DOCKER_CLI_TOOLS_DIR(デフォルト:~/.cache/openclaw/docker-cli-tools)のキャッシュされた書き込み可能なプレフィックスにインストールします。 codex-cliはバンドルされた CLI バックエンドではなくなりました。代わりに Codex app-server ランタイムでopenai/*を使用してください(ライブ: Codex app-server ハーネススモークを参照)。pnpm test:docker:live-cli-backend:claude-subscriptionには、claudeAiOauth.subscriptionTypeを指定した~/.claude/.credentials.json、またはclaude setup-tokenのCLAUDE_CODE_OAUTH_TOKENのいずれかを介した、ポータブルな Claude Code サブスクリプション OAuth が必要です。まず Docker 内で直接claude -pを検証し、その後 Anthropic API キーの環境変数を保持せずに、Gateway CLI バックエンドのターンを 2 回実行します。このサブスクリプションレーンでは、サインイン済みサブスクリプションの使用量制限を消費し、Anthropic が OpenClaw のリリースなしに Claude Agent SDK /claude -pの請求およびレート制限の動作を変更できるため、Claude MCP/ツールおよび画像プローブはデフォルトで無効です。- Claude と Gemini は、上記のフラグを介して同じプローブセット(テキストターン、画像分類、MCP
cronツール呼び出し、モデル切り替えの継続性)をサポートしますが、これらのプローブはいずれもデフォルトでは実行されません。必要に応じてフラグごとに有効化してください。
ライブ: APNs HTTP/2 プロキシ到達性
- テスト:
src/infra/push-apns-http2.live.test.ts - 目的: ローカル HTTP CONNECT プロキシを介して Apple のサンドボックス APNs エンドポイントにトンネル接続し、APNs HTTP/2 検証リクエストを送信して、Apple の実際の
403 InvalidProviderTokenレスポンスがプロキシ経路を通って返されることを確認します。 - 有効化:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- オプションのタイムアウト:
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
ライブ: ACP バインドスモーク(/acp spawn ... --bind here)
- テスト:
src/gateway/gateway-acp-bind.live.test.ts - 目的: ライブ ACP エージェントを使用して、実際の ACP 会話バインドフローを検証します。
/acp spawn <agent> --bind hereを送信する- 合成メッセージチャネル会話をその場でバインドする
- 同じ会話で通常のフォローアップを送信する
- フォローアップがバインドされた ACP セッションのトランスクリプトに記録されることを確認する
- 有効化:
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- デフォルト:
- Docker 内の ACP エージェント:
claude,codex,gemini - 直接
pnpm test:live ...用の ACP エージェント:claude - 合成チャネル: Slack DM 形式の会話コンテキスト
- ACP バックエンド:
acpx
- Docker 内の ACP エージェント:
- オーバーライド:
OPENCLAW_LIVE_ACP_BIND_AGENT=claudeOPENCLAW_LIVE_ACP_BIND_AGENT=codexOPENCLAW_LIVE_ACP_BIND_AGENT=droidOPENCLAW_LIVE_ACP_BIND_AGENT=geminiOPENCLAW_LIVE_ACP_BIND_AGENT=opencodeOPENCLAW_LIVE_ACP_BIND_AGENTS=claude,codex,geminiOPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND='npx -y @agentclientprotocol/claude-agent-acp@<version>'OPENCLAW_LIVE_ACP_BIND_CODEX_MODEL=gpt-5.6-lunaOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL=opencode/kimi-k2.6- 画像プローブを強制的に有効化するには
OPENCLAW_LIVE_ACP_BIND_IMAGE_PROBE=1(またはon/true/yes)を使用します。それ以外の値では強制的に無効になります。opencodeを除くすべてのエージェントでデフォルト実行されます。 OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.6-luna
- 注記:
- このレーンでは、管理者専用の合成送信元ルートフィールドを備えた Gateway
chat.sendサーフェスを使用するため、テストは外部に配信したように装うことなくメッセージチャネルのコンテキストを添付できます。 OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDが未設定の場合、テストは選択された ACP ハーネスエージェントについて、組み込みのacpxPlugin に内蔵されたエージェントレジストリを使用します。- 外部 ACP ハーネスではバインド/画像検証の成功後に MCP 呼び出しがキャンセルされる場合があるため、バインド済みセッションの Cron MCP 作成はデフォルトでベストエフォートです。バインド後の Cron プローブを厳格にするには
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1を設定します。
- このレーンでは、管理者専用の合成送信元ルートフィールドを備えた Gateway
- Docker ランナーは
scripts/test-live-acp-bind-docker.shにあります。 - デフォルトでは、集約されたライブ CLI エージェントに対して ACP バインドスモークを
claude、codex、geminiの順に実行します。 - マトリックスを絞り込むには、
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude、OPENCLAW_LIVE_ACP_BIND_AGENTS=codex、OPENCLAW_LIVE_ACP_BIND_AGENTS=droid、OPENCLAW_LIVE_ACP_BIND_AGENTS=gemini、またはOPENCLAW_LIVE_ACP_BIND_AGENTS=opencodeを使用します。 - 対応する CLI 認証情報をコンテナにステージングし、要求されたライブ CLI(
@anthropic-ai/claude-code、@openai/codex、https://app.factory.ai/cliを介した Factory Droid、@google/gemini-cli、またはopencode-ai)が存在しない場合はインストールします。ACP バックエンド自体は、公式acpxPlugin の組み込みacpx/runtimeパッケージです。 - Droid Docker バリアントは設定用の
~/.factoryをステージングし、FACTORY_API_KEYを転送します。また、ローカルの Factory OAuth/キーリング認証はコンテナに移植できないため、その API キーが必要です。ACPX に内蔵されたdroid exec --output-format acpレジストリエントリを使用します。 - OpenCode Docker バリアントは、厳格な単一エージェント回帰レーンです。
OPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(デフォルトopencode/kimi-k2.6)から一時的なOPENCODE_CONFIG_CONTENTデフォルトモデルを書き込みます。 - 直接の
acpxCLI 呼び出しは、Gateway 外部の動作を比較するための手動/回避策の経路にすぎません。Docker ACP バインドスモークでは、OpenClaw の組み込みacpxランタイムバックエンドを実行します。
ライブ: Codex app-server ハーネススモーク
- 目的: 通常の Gateway
agentメソッドを介して、Plugin が所有する Codex ハーネスを検証します。- バンドルされた
codexPlugin を読み込む /model <ref> --runtime codexを介して OpenAI モデルを選択する- 要求された思考レベルで最初の Gateway エージェントターンを送信する
- 同じ OpenClaw セッションに 2 回目のターンを送信し、app-server スレッドを再開できることを確認する
- 同じ Gateway コマンド経路を介して
/codex statusと/codex modelsを実行する - オプションで、Guardian がレビューする昇格済みシェルプローブを 2 つ実行する。 承認されるべき無害なコマンドと、拒否されてエージェントがユーザーに確認を求めるべき 偽シークレットのアップロード
- バンドルされた
- テスト:
src/gateway/gateway-codex-harness.live.test.ts - 有効化:
OPENCLAW_LIVE_CODEX_HARNESS=1 - ハーネスのベースラインモデル:
openai/gpt-5.6-luna - 新規 OpenAI API キー選択のデフォルト:
openai/gpt-5.6 - デフォルトの思考レベル:
low - モデルのオーバーライド:
OPENCLAW_LIVE_CODEX_HARNESS_MODEL=openai/<model> - 思考レベルのオーバーライド:
OPENCLAW_LIVE_CODEX_HARNESS_THINKING=<level> - 非デフォルトモデルのエフォートアサーション:
OPENCLAW_LIVE_CODEX_HARNESS_EXPECTED_EFFORT=<level> - マトリックスのオーバーライド:
OPENCLAW_LIVE_CODEX_HARNESS_TARGETS=<model>=<thinking>,... - 認証モード:
OPENCLAW_LIVE_CODEX_HARNESS_AUTH=codex-auth(デフォルト)は コピーされた Codex ログインを使用します。api-keyは Codex app-server を介してOPENAI_API_KEYを使用します。 - オプションの画像プローブ:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - オプションの MCP/ツールプローブ:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - オプションの Guardian プローブ:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - オプションの再開ストレス:
OPENCLAW_LIVE_CODEX_HARNESS_RESUME_STRESS=1は 履歴ターンを 4 回追加した後、同じネイティブスレッド ID と会話履歴を 必須としながら、Gateway と Codex app-server を 3 回終了して再起動します。 制限付きの回数は、OPENCLAW_LIVE_CODEX_HARNESS_RESUME_STRESS_HISTORY_TURNS(1-20)とOPENCLAW_LIVE_CODEX_HARNESS_RESUME_STRESS_RESTARTS(1-10)でオーバーライドします。 - オプションのファンアウトストレス:
OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_PROBE=1とOPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_COUNT(1-12)を設定します。ハーネスは すべての子を同時に開始し、すべての実行が終了するまで待機して、各子の 一意な応答とネイティブスレッド ID を検証します。 - オプションの Compaction ストレス:
OPENCLAW_LIVE_CODEX_HARNESS_COMPACTION_STRESS=1は 制限付きのネイティブツール出力を生成し、自動 Compaction イベントを必須とし、 永続化された Compaction 回数と隠しマーカーの想起を検証し、 Gateway と物理 Codex app-server を再起動してから、出力と Compaction の波を繰り返します。制限付きの処理量は、OPENCLAW_LIVE_CODEX_HARNESS_COMPACTION_STRESS_TURNS(1-8)とOPENCLAW_LIVE_CODEX_HARNESS_LARGE_OUTPUT_BYTES(100000-800000)で調整します。 - 完全な直接 API コンテキスト:
OPENCLAW_LIVE_CODEX_HARNESS_FULL_CONTEXT=1は922000コンテキストと700000の合計 Compaction 制限を適用し、密度の高い制限付き ユーザーターンを送信し、波ごとに 2 つの明示的なネイティブ Compaction チェックポイントを実行して、 各チェックポイント後も後続のターンを続行します。これにはOPENCLAW_LIVE_CODEX_HARNESS_AUTH=api-keyと絶対OPENCLAW_LIVE_CODEX_HARNESS_MODEL_CATALOGパスが必要です。Codex がオーバーライドを 通常のカタログウィンドウに制限しないように、カタログは選択したモデルをmax_context_window: 922000で公開する必要があります。上記の通常のしきい値削減 ストレスでは、より厳格な自動 Compaction および隠しマーカー 保持のアサーションを維持します。 - オプションのループリレーオプトアウトプローブ:
OPENCLAW_LIVE_CODEX_HARNESS_DISABLE_LOOP_RELAY=1 - 要求された思考設定は、Codex がそのモデルについて提示する最も近いエフォートに
マッピングされる場合があります。たとえば、Luna は
minimalをlowにマッピングします。 - 既知の Codex カタログモデルでは、その正確なネイティブエフォートが自動的に導出されます。 不明なモデルのオーバーライドでは、想定されるマッピング済みエフォートを指定する必要があります。
- スモークはプロバイダー/モデル
agentRuntime.id: "codex"を強制するため、壊れた Codex ハーネスが暗黙的に OpenClaw にフォールバックして成功することはありません。 - 認証: ローカルの Codex サブスクリプションログインによる Codex app-server 認証、または
OPENCLAW_LIVE_CODEX_HARNESS_AUTH=api-keyの場合はOPENAI_API_KEY。Docker は サブスクリプション実行用に~/.codex/auth.jsonと~/.codex/config.tomlをコピーできます。
922000 入力バジェット Compaction ストレス:
ライブ: OpenAI の反復 Compaction
- 目標: 埋め込み OpenClaw
openai-responsesエージェントループで、実際の自動 Compaction を 少なくとも 2 回実行し、その後、永続的なマーカーが維持されることを検証します。 - テスト:
src/agents/sessions/agent-session.openai-compaction.live.test.ts - 有効化:
OPENCLAW_LIVE_OPENAI_COMPACTION=1 - デフォルトモデル:
gpt-5.6-luna - モデルのオーバーライド:
OPENCLAW_LIVE_OPENAI_COMPACTION_MODEL=<model> - 通常のストレスモードでは、クライアントのコンテキスト予算を減らすことで、API コストを 制限しながら、同じ実際の Compaction パスに到達します。
- フルコンテキストモードでは、クライアント予算を
922000、Compaction 予約量を222000に設定するため、自動 Compaction は700000で開始されます。また、 観測されたプロバイダー入力数が272000のロングコンテキスト料金境界を超えている必要があります。
922000 入力予算の実行手順:
OPENCLAW_LIVE_GATEWAY_MODELS を未設定のままにし、
新規オンボーディングの推論選択シームを通じてモデルを解決し、openai/gpt-5.6 をアサートした後、
解決されたモデルで実際の Gateway ターンを実行します。
GPT-5.6 埋め込み OpenClaw マトリクス:
- Docker ランナーは
scripts/test-live-codex-harness-docker.shにあります。 OPENAI_API_KEYを渡し、存在する場合は Codex CLI 認証ファイルをコピーし、 書き込み可能なマウント済み npm プレフィックスに@openai/codexをインストールし、ソースツリーをステージングした後、Codex ハーネスのライブテストのみを実行します。- Docker では、イメージ、MCP/ツール、Guardian のプローブがデフォルトで有効です。より限定的なデバッグ実行が
必要な場合は、
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0、OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0、またはOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0を設定してください。 - Docker は同じ明示的な Codex ランタイム設定を使用するため、レガシーエイリアスや OpenClaw の フォールバックによって Codex ハーネスのリグレッションが隠れることはありません。
- マトリクスのターゲットは、1 つのコンテナ内で順番に実行されます。Docker スクリプトは、 デフォルトの 35 分のタイムアウトをターゲット数に応じて拡大します。外側のシェルまたは CI のタイムアウトでも、 同じ合計時間を許容する必要があります。正規の CI では、各 GPT-5.6 ターゲットを個別のシャードに配置します。
推奨されるライブ実行手順
対象を限定した明示的な許可リストが、最も高速で不安定になりにくい方法です:-
単一モデル、直接実行(Gateway なし):
OPENCLAW_LIVE_MODELS="openai/gpt-5.6-luna" pnpm test:live src/agents/models.profiles.live.test.ts
-
小規模モデルの直接プロファイル:
OPENCLAW_LIVE_MODELS=small pnpm test:live src/agents/models.profiles.live.test.ts
-
小規模モデルの Gateway プロファイル:
OPENCLAW_LIVE_GATEWAY_MODELS=small pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Ollama Cloud API スモークテスト:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA=1 OPENCLAW_LIVE_OLLAMA_BASE_URL=https://ollama.com OPENCLAW_LIVE_OLLAMA_MODEL=glm-5.1:cloud OPENCLAW_LIVE_OLLAMA_WEB_SEARCH=0 pnpm test:live -- extensions/ollama/ollama.live.test.ts
-
単一モデルの Gateway スモークテスト:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.6-luna" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
複数のプロバイダーにわたるツール呼び出し:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.6-luna,anthropic/claude-opus-4-6,google/gemini-3.5-flash,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M3" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Z.AI Coding Plan GLM-5.2 の直接スモークテスト:
ZAI_CODING_LIVE_TEST=1 pnpm test:live src/agents/zai.live.test.ts
-
Google に重点を置いたテスト(Gemini API キー + Antigravity):
- Gemini(API キー):
OPENCLAW_LIVE_GATEWAY_MODELS="google/gemini-3.5-flash" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts - Antigravity(OAuth):
OPENCLAW_LIVE_GATEWAY_MODELS="google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-pro-high" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
- Gemini(API キー):
-
Google 適応的思考スモークテスト(プライベート QA CLI の
qa manual—OPENCLAW_ENABLE_PRIVATE_QA_CLI=1とソースチェックアウトが必要です。QA の概要を参照してください):- Gemini 3 の動的デフォルト:
OPENCLAW_ENABLE_PRIVATE_QA_CLI=1 pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-3.1-pro-preview --alt-model google/gemini-3.1-pro-preview --message '/think adaptive Reply exactly: GEMINI_ADAPTIVE_OK' --timeout-ms 180000 - Gemini 2.5 の動的予算:
OPENCLAW_ENABLE_PRIVATE_QA_CLI=1 pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-2.5-flash --alt-model google/gemini-2.5-flash --message '/think adaptive Reply exactly: GEMINI25_ADAPTIVE_OK' --timeout-ms 180000
- Gemini 3 の動的デフォルト:
google/...は Gemini API(API キー)を使用します。google-antigravity/...は Antigravity OAuth ブリッジ(Cloud Code Assist 形式のエージェントエンドポイント)を使用します。google-gemini-cli/...はマシン上のローカル Gemini CLI を使用します(認証が別で、ツールにも固有の癖があります)。- Gemini API と Gemini CLI の比較:
- API: OpenClaw は HTTP 経由で Google がホストする Gemini API を呼び出します(API キー / プロファイル認証)。ほとんどのユーザーが「Gemini」と呼ぶのはこれです。
- CLI: OpenClaw はローカルの
geminiバイナリをシェルから実行します。独自の認証を持ち、動作が異なる場合があります(ストリーミング / ツール対応 / バージョン差異)。
ライブ: モデルマトリクス(対象範囲)
ライブテストはオプトインであるため、固定の「CI モデルリスト」はありません。OPENCLAW_LIVE_MODELS=modern / OPENCLAW_LIVE_GATEWAY_MODELS=modern(およびそれらの all エイリアス)は、src/agents/live-model-filter.ts 内の HIGH_SIGNAL_LIVE_MODEL_PRIORITY から、次の優先順位で選定済みの優先リストを実行します:
SMALL_LIVE_MODEL_PRIORITY の、選定済みの小規模モデルリスト(OPENCLAW_LIVE_MODELS=small / OPENCLAW_LIVE_GATEWAY_MODELS=small):
モダンリストに関する注意事項:
codexおよびcodex-cliプロバイダーは、デフォルトのモダンスイープから除外されています(CLI バックエンド / ACP の動作を対象とし、上記で個別にテストされています)。openai/gpt-5.5自体はデフォルトで Codex app-server ハーネスを経由します。ライブ: Codex app-server ハーネスのスモークテストを参照してください。fireworks、google、openrouter、およびxaiは、モダンスイープで明示的に選定されたモデル ID のみを実行します(「このプロバイダーのすべてのモデル」への自動展開はありません)。- イメージプローブを実行するには、
OPENCLAW_LIVE_GATEWAY_MODELSに画像対応モデル(Claude/Gemini/OpenAI ファミリーのビジョンバリアントなど)を少なくとも 1 つ含めてください。
- Mistral:
mistral/... - Cerebras:
cerebras/...(アクセス権がある場合) - LM Studio:
lmstudio/...(ローカル。ツール呼び出しは API モードに依存します)
アグリゲーター / 代替 Gateway
キーを有効にしている場合は、次の経路でもテストできます:- OpenRouter:
openrouter/...(数百のモデル。ツールと画像に対応する候補を探すにはopenclaw models scanを使用してください) - OpenCode: Zen には
opencode/...、Go にはopencode-go/...(OPENCODE_API_KEY/OPENCODE_ZEN_API_KEYによる認証)
- 組み込み:
anthropic、cerebras、github-copilot、google、google-antigravity、google-gemini-cli、google-vertex、groq、mistral、openai、openrouter、opencode、opencode-go、xai、zai models.providers経由(カスタムエンドポイント):minimax(クラウド / API)に加え、OpenAI/Anthropic 互換の任意のプロキシ(LM Studio、vLLM、LiteLLM など)
認証情報(絶対にコミットしないでください)
ライブテストは CLI と同じ方法で認証情報を検出します。実際には、次のことを意味します:- CLI が動作する場合、ライブテストも同じキーを検出するはずです。
-
ライブテストで「認証情報なし」と表示された場合は、
openclaw models list/ モデル選択をデバッグする場合と同じ方法でデバッグしてください。 -
エージェントごとの認証プロファイル:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(ライブテストでいう「プロファイルキー」とはこれを指します) -
設定:
~/.openclaw/openclaw.json(またはOPENCLAW_CONFIG_PATH) -
レガシー OAuth ディレクトリ:
~/.openclaw/credentials/(存在する場合はステージング済みライブホームにコピーされますが、メインのプロファイルキーストアではありません) -
ローカルのライブ実行では、アクティブな設定(
agents.*.workspace/agentDirのオーバーライドを除去済み)と、各エージェントのauth-profiles.jsonのみが一時テストホームにコピーされます。エージェントのディレクトリ内のそれ以外の内容はコピーされないため、workspace/およびsandboxes/のデータがステージング済みホームに渡ることはありません。さらに、レガシーのcredentials/ディレクトリと、対応する外部 CLI 認証ファイル / ディレクトリ(.claude.json、.claude/.credentials.json、.claude/settings*.json、.claude/backups、.codex/auth.json、.codex/config.toml、.gemini、.minimax)もコピーされます。
OPENCLAW_PROFILE_FILE を使用してください。
Deepgram ライブ(音声文字起こし)
- テスト:
extensions/deepgram/audio.live.test.ts - 有効化:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
BytePlus コーディングプランのライブテスト
- テスト:
extensions/byteplus/live.test.ts - 有効化:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - 任意のモデルオーバーライド:
BYTEPLUS_CODING_MODEL=ark-code-latest
ComfyUI ワークフローメディアのライブテスト
- テスト:
extensions/comfy/comfy.live.test.ts - 有効化:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - 対象範囲:
- バンドルされた comfy の画像、動画、および
music_generateのパスを実行します plugins.entries.comfy.config.<capability>が設定されていない場合は、各機能をスキップします- comfy のワークフロー送信、ポーリング、ダウンロード、または Plugin 登録を変更した後に役立ちます
- バンドルされた comfy の画像、動画、および
画像生成のライブテスト
- テスト:
test/image-generation.runtime.live.test.ts - コマンド:
pnpm test:live test/image-generation.runtime.live.test.ts - ハーネス:
pnpm test:live:media image - 範囲:
- 登録済みのすべての画像生成プロバイダー Plugin を列挙
- プローブの前に、すでにエクスポートされているプロバイダー環境変数を使用
- デフォルトでは保存済み認証プロファイルよりもライブ/環境変数の API キーを優先するため、
auth-profiles.json内の古いテストキーが実際のシェル認証情報を隠すことはない - 使用可能な認証/プロファイル/モデルがないプロバイダーをスキップ
- 設定済みの各プロバイダーを共有画像生成ランタイムで実行:
<provider>:generate- プロバイダーが編集対応を宣言している場合は
<provider>:edit
- 現在対象となる同梱プロバイダー:
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- 任意の絞り込み:
OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google,openrouter,xai"OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="deepinfra"OPENCLAW_LIVE_IMAGE_GENERATION_MODELS="openai/gpt-image-2,google/gemini-3.1-flash-image,openrouter/google/gemini-3.1-flash-image-preview,xai/grok-imagine-image"OPENCLAW_LIVE_IMAGE_GENERATION_CASES="google:flash-generate,google:pro-edit,openrouter:generate,xai:default-generate,xai:default-edit"
- 任意の認証動作:
- プロファイルストア認証を強制し、環境変数のみのオーバーライドを無視するには
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1
- プロファイルストア認証を強制し、環境変数のみのオーバーライドを無視するには
infer スモークテストを追加します:
音楽生成ライブ
- テスト:
extensions/music-generation-providers.live.test.ts - 有効化:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - ハーネス:
pnpm test:live:media music - 範囲:
- 共有の同梱音楽生成プロバイダーパスを実行
- 現在は
fal、google、minimax、およびopenrouterが対象 - プローブの前に、すでにエクスポートされているプロバイダー環境変数を使用
- デフォルトでは保存済み認証プロファイルよりもライブ/環境変数の API キーを優先するため、
auth-profiles.json内の古いテストキーが実際のシェル認証情報を隠すことはない - 使用可能な認証/プロファイル/モデルがないプロバイダーをスキップ
- 利用可能な場合、宣言された両方のランタイムモードを実行:
- プロンプトのみの入力で
generate - プロバイダーが
capabilities.edit.enabledを宣言している場合はedit
- プロンプトのみの入力で
comfyには独立した専用ライブファイルがあり、この共有スイープには含まれない
- 任意の絞り込み:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- 任意の認証動作:
- プロファイルストア認証を強制し、環境変数のみのオーバーライドを無視するには
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1
- プロファイルストア認証を強制し、環境変数のみのオーバーライドを無視するには
動画生成ライブ
- テスト:
extensions/video-generation-providers.live.test.ts - 有効化:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - ハーネス:
pnpm test:live:media video - 範囲:
alibaba、byteplus、deepinfra、fal、google、minimax、openai、openrouter、pixverse、qwen、runway、together、vydra、xaiにわたって共有の同梱動画生成プロバイダーパスを実行- デフォルトではリリースに安全なスモークパスを使用: プロバイダーごとに 1 回のテキストから動画へのリクエスト、1 秒間のロブスタープロンプト、および
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MSで指定されるプロバイダーごとの操作上限(デフォルトは180000) - プロバイダー側のキュー待ち時間がリリース時間の大部分を占める可能性があるため、デフォルトでは FAL をスキップ。明示的に実行するには
OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"を渡す(またはスキップリストを空にする) - プローブの前に、すでにエクスポートされているプロバイダー環境変数を使用
- デフォルトでは保存済み認証プロファイルよりもライブ/環境変数の API キーを優先するため、
auth-profiles.json内の古いテストキーが実際のシェル認証情報を隠すことはない - 使用可能な認証/プロファイル/モデルがないプロバイダーをスキップ
- デフォルトでは
generateのみを実行 - 利用可能な場合に宣言済みの変換モードも実行するには、
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1を設定:- プロバイダーが
capabilities.imageToVideo.enabledを宣言し、選択したプロバイダー/モデルが共有スイープでバッファを基にしたローカル画像入力を受け付ける場合はimageToVideo - プロバイダーが
capabilities.videoToVideo.enabledを宣言し、選択したプロバイダー/モデルが共有スイープでバッファを基にしたローカル動画入力を受け付ける場合はvideoToVideo
- プロバイダーが
- 共有スイープで現在宣言済みだがスキップされる
imageToVideoプロバイダー:vydra(このレーンではバッファを基にしたローカル画像入力はサポートされない)
- Vydra プロバイダー固有の対象範囲:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- このファイルは、
veo3のテキストから動画への処理に加え、デフォルトでリモート画像 URL フィクスチャを使用するklingの画像から動画へのレーンも実行する(上書きするにはOPENCLAW_LIVE_VYDRA_KLING_IMAGE_URL)。
- xAI プロバイダー固有の対象範囲:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_XAI_VIDEO=1 pnpm test:live -- extensions/xai/xai.live.test.ts -t "classic Grok Imagine"- classic ケースでは、最初に正方形のローカル PNG の先頭フレームを生成し、ジオメトリを省略して 1 秒間の画像から動画へのクリップをリクエストし、完了までポーリングして、ダウンロードしたバッファを検証する。
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_XAI_VIDEO=1 pnpm test:live -- extensions/xai/xai.live.test.ts -t "Grok Imagine Video 1.5"- 1.5 ケースでは、ローカル PNG の先頭フレームを生成し、1 秒間の 1080P 画像から動画へのクリップをリクエストし、完了までポーリングして、ダウンロードしたバッファを検証する。
- 現在の
videoToVideoライブ対象範囲:- 選択したモデルが
gen4_alephに解決される場合のみrunway
- 選択したモデルが
- 共有スイープで現在宣言済みだがスキップされる
videoToVideoプロバイダー:alibaba、google、openai、qwen、xai。これらのパスでは現在、バッファを基にしたローカル入力ではなく、リモートのhttp(s)参照 URL が必要なため
- 任意の絞り込み:
OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="deepinfra,google,openai,runway"OPENCLAW_LIVE_VIDEO_GENERATION_MODELS="google/veo-3.1-fast-generate-preview,openai/sora-2,runway/gen4_aleph"- FAL を含むすべてのプロバイダーをデフォルトのスイープに含めるには
OPENCLAW_LIVE_VIDEO_GENERATION_SKIP_PROVIDERS="" - 積極的なスモーク実行のために各プロバイダーの操作上限を減らすには
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000
- 任意の認証動作:
- プロファイルストア認証を強制し、環境変数のみのオーバーライドを無視するには
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1
- プロファイルストア認証を強制し、環境変数のみのオーバーライドを無視するには
メディアライブハーネス
- コマンド:
pnpm test:live:media - エントリポイント:
test/e2e/qa-lab/media/hosted-media-provider-live.ts。選択したスイートごとにpnpm test:live -- <suite-test-file>を実行するため、Heartbeat と静音モードの動作は他のpnpm test:live実行と一貫性を保つ。 - 目的:
- 1 つのリポジトリネイティブなエントリポイントを通じて、共有の画像、音楽、動画ライブスイートを実行
~/.profileから不足しているプロバイダー環境変数を自動読み込み- デフォルトでは、現在使用可能な認証を持つプロバイダーに各スイートを自動的に絞り込み
- フラグ:
--providers <csv>はグローバルプロバイダーフィルター。--image-providers/--music-providers/--video-providersはフィルターの適用範囲を 1 つのスイートに限定--all-providersは認証に基づく自動フィルターをスキップ- フィルタリング後に実行可能なプロバイダーが残っていない場合、
--allow-emptyは0で終了 --quiet/--no-quietはtest:liveにそのまま渡される
- 例:
pnpm test:live:mediapnpm test:live:media image video --providers openai,google,minimaxpnpm test:live:media video --video-providers openai,runway --all-providerspnpm test:live:media music --quiet
関連項目
- テスト - 単体、統合、QA、Docker スイート