Testing
Pengujian: rangkaian pengujian langsung
Untuk mulai cepat, runner QA, rangkaian unit/integrasi, dan alur Docker, lihat Pengujian. Halaman ini mencakup rangkaian pengujian langsung (menyentuh jaringan): matriks model, backend CLI, ACP, dan pengujian langsung penyedia media, serta penanganan kredensial.
Langsung: perintah smoke profil lokal
Sumberkan ~/.profile sebelum pemeriksaan langsung ad hoc agar kunci penyedia dan jalur alat lokal
sesuai dengan shell Anda:
source ~/.profile
Smoke media aman:
pnpm openclaw infer tts convert --local --json \
--text "OpenClaw live smoke." \
--output /tmp/openclaw-live-smoke.mp3
Smoke kesiapan panggilan suara aman:
pnpm openclaw voicecall setup --json
pnpm openclaw voicecall smoke --to "+15555550123"
voicecall smoke adalah dry run kecuali --yes juga disertakan. Gunakan --yes hanya
ketika Anda sengaja ingin melakukan panggilan notifikasi nyata. Untuk Twilio, Telnyx, dan
Plivo, pemeriksaan kesiapan yang berhasil memerlukan URL webhook publik; fallback
loopback/pribadi yang hanya lokal ditolak sesuai desain.
Langsung: sapuan kapabilitas node Android
- Pengujian:
src/gateway/android-node.capabilities.live.test.ts - Skrip:
pnpm android:test:integration - Tujuan: memanggil setiap perintah yang saat ini diiklankan oleh node Android yang terhubung dan memastikan perilaku kontrak perintah.
- Cakupan:
- Penyiapan manual/bersyarat sebelumnya (rangkaian ini tidak menginstal/menjalankan/memasangkan aplikasi).
- Validasi
node.invokeGateway per perintah untuk node Android yang dipilih.
- Penyiapan awal yang diperlukan:
- Aplikasi Android sudah terhubung + dipasangkan ke gateway.
- Aplikasi tetap di latar depan.
- Izin/persetujuan capture diberikan untuk kapabilitas yang Anda harapkan lulus.
- Override target opsional:
OPENCLAW_ANDROID_NODE_IDatauOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- Detail penyiapan Android lengkap: Aplikasi Android
Langsung: smoke model (kunci profil)
Pengujian langsung dibagi menjadi dua lapisan agar kita dapat mengisolasi kegagalan:
- "Model langsung" memberi tahu kita bahwa penyedia/model dapat menjawab sama sekali dengan kunci yang diberikan.
- "Smoke Gateway" memberi tahu kita bahwa seluruh pipeline gateway+agen berfungsi untuk model tersebut (sesi, riwayat, alat, kebijakan sandbox, dll.).
Lapisan 1: Penyelesaian model langsung (tanpa gateway)
- Pengujian:
src/agents/models.profiles.live.test.ts - Tujuan:
- Menginventarisasi model yang ditemukan
- Menggunakan
getApiKeyForModeluntuk memilih model yang kredensialnya Anda miliki - Menjalankan penyelesaian kecil per model (dan regresi tertarget bila diperlukan)
- Cara mengaktifkan:
pnpm test:live(atauOPENCLAW_LIVE_TEST=1jika menjalankan Vitest secara langsung)
- Atur
OPENCLAW_LIVE_MODELS=modern(atauall, alias untuk modern) untuk benar-benar menjalankan rangkaian ini; jika tidak, rangkaian ini dilewati agarpnpm test:livetetap berfokus pada smoke gateway - Cara memilih model:
OPENCLAW_LIVE_MODELS=modernuntuk menjalankan allowlist modern (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4.3)OPENCLAW_LIVE_MODELS=alladalah alias untuk allowlist modern- atau
OPENCLAW_LIVE_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,..."(allowlist koma) - Sapuan modern/all secara default menggunakan batas pilihan bernilai tinggi yang dikurasi; atur
OPENCLAW_LIVE_MAX_MODELS=0untuk sapuan modern menyeluruh atau angka positif untuk batas yang lebih kecil. - Sapuan menyeluruh menggunakan
OPENCLAW_LIVE_TEST_TIMEOUT_MSuntuk timeout keseluruhan pengujian model langsung. Default: 60 menit. - Probe model langsung berjalan dengan paralelisme 20 arah secara default; atur
OPENCLAW_LIVE_MODEL_CONCURRENCYuntuk override.
- Cara memilih penyedia:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(allowlist koma)
- Asal kunci:
- Secara default: penyimpanan profil dan fallback env
- Atur
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk memberlakukan hanya penyimpanan profil
- Alasan ini ada:
- Memisahkan "API penyedia rusak / kunci tidak valid" dari "pipeline agen gateway rusak"
- Berisi regresi kecil yang terisolasi (contoh: alur replay reasoning + tool-call OpenAI Responses/Codex Responses)
Lapisan 2: Smoke Gateway + agen dev (yang sebenarnya dilakukan "@openclaw")
- Pengujian:
src/gateway/gateway-models.profiles.live.test.ts - Tujuan:
- Menjalankan gateway dalam proses
- Membuat/menambal sesi
agent:dev:*(override model per run) - Mengiterasi model-dengan-kunci dan memastikan:
- respons "bermakna" (tanpa alat)
- pemanggilan alat nyata berfungsi (probe baca)
- probe alat tambahan opsional (probe exec+baca)
- jalur regresi OpenAI (hanya tool-call → tindak lanjut) tetap berfungsi
- Detail probe (agar Anda dapat menjelaskan kegagalan dengan cepat):
- Probe
read: pengujian menulis file nonce di workspace dan meminta agen untukreadfile tersebut lalu menggemakan nonce kembali. - Probe
exec+read: pengujian meminta agen untuk menulis nonce denganexecke file temp, lalureadkembali. - Probe gambar: pengujian melampirkan PNG yang dibuat (kucing + kode acak) dan mengharapkan model mengembalikan
cat <CODE>. - Referensi implementasi:
src/gateway/gateway-models.profiles.live.test.tsdansrc/gateway/live-image-probe.ts.
- Probe
- Cara mengaktifkan:
pnpm test:live(atauOPENCLAW_LIVE_TEST=1jika menjalankan Vitest secara langsung)
- Cara memilih model:
- Default: allowlist modern (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4.3)
OPENCLAW_LIVE_GATEWAY_MODELS=alladalah alias untuk allowlist modern- Atau atur
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(atau daftar koma) untuk mempersempit - Sapuan gateway modern/all secara default menggunakan batas pilihan bernilai tinggi yang dikurasi; atur
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0untuk sapuan modern menyeluruh atau angka positif untuk batas yang lebih kecil.
- Cara memilih penyedia (hindari "semua OpenRouter"):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(allowlist koma)
- Probe alat + gambar selalu aktif dalam pengujian langsung ini:
- Probe
read+ probeexec+read(tekanan alat) - Probe gambar berjalan ketika model mengiklankan dukungan input gambar
- Alur (tingkat tinggi):
- Pengujian membuat PNG kecil dengan "CAT" + kode acak (
src/gateway/live-image-probe.ts) - Mengirimnya melalui
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Gateway mengurai lampiran menjadi
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - Agen tersemat meneruskan pesan pengguna multimodal ke model
- Asersi: balasan berisi
cat+ kode tersebut (toleransi OCR: kesalahan kecil diizinkan)
- Pengujian membuat PNG kecil dengan "CAT" + kode acak (
- Probe
Langsung: smoke backend CLI (Claude, Codex, Gemini, atau CLI lokal lain)
- Pengujian:
src/gateway/gateway-cli-backend.live.test.ts - Tujuan: memvalidasi pipeline Gateway + agen menggunakan backend CLI lokal, tanpa menyentuh konfigurasi default Anda.
- Default smoke khusus backend berada bersama definisi
cli-backend.tsmilik Plugin pemiliknya. - Aktifkan:
pnpm test:live(atauOPENCLAW_LIVE_TEST=1jika menjalankan Vitest secara langsung)OPENCLAW_LIVE_CLI_BACKEND=1
- Default:
- Penyedia/model default:
claude-cli/claude-sonnet-4-6 - Perilaku perintah/argumen/gambar berasal dari metadata Plugin backend CLI pemilik.
- Penyedia/model default:
- Override (opsional):
OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.5"OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/codex"OPENCLAW_LIVE_CLI_BACKEND_ARGS='["exec","--json","--color","never","--sandbox","read-only","--skip-git-repo-check"]'OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1untuk mengirim lampiran gambar nyata (jalur disuntikkan ke prompt). Resep Docker menonaktifkan ini secara default kecuali diminta secara eksplisit.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"untuk meneruskan jalur file gambar sebagai argumen CLI alih-alih injeksi prompt.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(atau"list") untuk mengontrol bagaimana argumen gambar diteruskan ketikaIMAGE_ARGdiatur.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1untuk mengirim giliran kedua dan memvalidasi alur lanjutkan.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1untuk ikut serta dalam probe kontinuitas sesi yang sama Claude Sonnet -> Opus ketika model yang dipilih mendukung target pengalihan. Resep Docker menonaktifkan ini secara default demi keandalan agregat.OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1untuk ikut serta dalam probe loopback MCP/alat. Resep Docker menonaktifkan ini secara default kecuali diminta secara eksplisit.
Contoh:
OPENCLAW_LIVE_CLI_BACKEND=1 \
OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.5" \
pnpm test:live src/gateway/gateway-cli-backend.live.test.ts
Smoke konfigurasi MCP Gemini murah:
OPENCLAW_LIVE_TEST=1 \
pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.ts
Ini tidak meminta Gemini untuk menghasilkan respons. Ini menulis pengaturan sistem yang sama
yang diberikan OpenClaw kepada Gemini, lalu menjalankan gemini --debug mcp list untuk membuktikan
server transport: "streamable-http" yang tersimpan dinormalisasi ke bentuk HTTP MCP Gemini
dan dapat terhubung ke server MCP streamable-HTTP lokal.
Resep Docker:
pnpm test:docker:live-cli-backend
Resep Docker satu penyedia:
pnpm test:docker:live-cli-backend:claude
pnpm test:docker:live-cli-backend:claude-subscription
pnpm test:docker:live-cli-backend:codex
pnpm test:docker:live-cli-backend:gemini
Catatan:
- Runner Docker berada di
scripts/test-live-cli-backend-docker.sh. - Ini menjalankan smoke backend CLI langsung di dalam image Docker repo sebagai pengguna non-root
node. - Ini menyelesaikan metadata smoke CLI dari ekstensi pemilik, lalu menginstal paket CLI Linux yang sesuai (
@anthropic-ai/claude-code,@openai/codex, atau@google/gemini-cli) ke prefix tertulis yang dicache diOPENCLAW_DOCKER_CLI_TOOLS_DIR(default:~/.cache/openclaw/docker-cli-tools). pnpm test:docker:live-cli-backend:claude-subscriptionmemerlukan OAuth langganan Claude Code portabel melalui~/.claude/.credentials.jsondenganclaudeAiOauth.subscriptionTypeatauCLAUDE_CODE_OAUTH_TOKENdariclaude setup-token. Ini pertama-tama membuktikanclaude -plangsung di Docker, lalu menjalankan dua giliran backend CLI Gateway tanpa mempertahankan variabel env kunci API Anthropic. Lane langganan ini menonaktifkan probe MCP/alat dan gambar Claude secara default karena Claude saat ini merutekan penggunaan aplikasi pihak ketiga melalui penagihan penggunaan tambahan alih-alih batas paket langganan normal.- Smoke backend CLI langsung sekarang menjalankan alur end-to-end yang sama untuk Claude, Codex, dan Gemini: giliran teks, giliran klasifikasi gambar, lalu panggilan alat MCP
cronyang diverifikasi melalui CLI gateway. - Smoke default Claude juga menambal sesi dari Sonnet ke Opus dan memverifikasi bahwa sesi yang dilanjutkan masih mengingat catatan sebelumnya.
Langsung: keterjangkauan proxy HTTP/2 APNs
- Pengujian:
src/infra/push-apns-http2.live.test.ts - Tujuan: membuat tunnel melalui proxy HTTP CONNECT lokal ke endpoint APNs sandbox Apple, mengirim permintaan validasi HTTP/2 APNs, dan memastikan respons nyata Apple
403 InvalidProviderTokenkembali melalui jalur proxy. - Aktifkan:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- Timeout opsional:
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
Langsung: smoke bind ACP (/acp spawn ... --bind here)
- Pengujian:
src/gateway/gateway-acp-bind.live.test.ts - Tujuan: memvalidasi alur bind percakapan ACP nyata dengan agen ACP live:
- kirim
/acp spawn <agent> --bind here - bind percakapan kanal pesan sintetis di tempat
- kirim tindak lanjut normal pada percakapan yang sama
- verifikasi tindak lanjut masuk ke transkrip sesi ACP yang sudah di-bind
- kirim
- Aktifkan:
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- Default:
- Agen ACP di Docker:
claude,codex,gemini - Agen ACP untuk
pnpm test:live ...langsung:claude - Kanal sintetis: konteks percakapan gaya DM Slack
- Backend ACP:
acpx
- Agen ACP di Docker:
- Override:
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.5OPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL=opencode/kimi-k2.6OPENCLAW_LIVE_ACP_BIND_REQUIRE_TRANSCRIPT=1OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.5
- Catatan:
- Lane ini menggunakan permukaan Gateway
chat.senddengan field rute asal sintetis khusus admin sehingga pengujian dapat melampirkan konteks kanal pesan tanpa berpura-pura mengirim secara eksternal. - Saat
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDtidak disetel, pengujian menggunakan registry agen bawaan Pluginacpxtertanam untuk agen harness ACP yang dipilih. - Pembuatan Cron MCP sesi ter-bind bersifat best-effort secara default karena harness ACP eksternal dapat membatalkan panggilan MCP setelah bukti bind/gambar lulus; setel
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1untuk membuat probe Cron pasca-bind itu ketat.
- Lane ini menggunakan permukaan Gateway
Contoh:
OPENCLAW_LIVE_ACP_BIND=1 \
OPENCLAW_LIVE_ACP_BIND_AGENT=claude \
pnpm test:live src/gateway/gateway-acp-bind.live.test.ts
Resep Docker:
pnpm test:docker:live-acp-bind
Resep Docker agen tunggal:
pnpm test:docker:live-acp-bind:claude
pnpm test:docker:live-acp-bind:codex
pnpm test:docker:live-acp-bind:droid
pnpm test:docker:live-acp-bind:gemini
pnpm test:docker:live-acp-bind:opencode
Catatan Docker:
- Runner Docker berada di
scripts/test-live-acp-bind-docker.sh. - Secara default, runner menjalankan smoke bind ACP terhadap agen CLI live agregat secara berurutan:
claude,codex, lalugemini. - Gunakan
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,OPENCLAW_LIVE_ACP_BIND_AGENTS=codex,OPENCLAW_LIVE_ACP_BIND_AGENTS=droid,OPENCLAW_LIVE_ACP_BIND_AGENTS=gemini, atauOPENCLAW_LIVE_ACP_BIND_AGENTS=opencodeuntuk mempersempit matriks. - Runner memuat
~/.profile, men-stage material auth CLI yang sesuai ke container, lalu menginstal CLI live yang diminta (@anthropic-ai/claude-code,@openai/codex, Factory Droid melaluihttps://app.factory.ai/cli,@google/gemini-cli, atauopencode-ai) jika belum ada. Backend ACP itu sendiri adalah packageacpx/runtimetertanam dari Pluginacpxresmi. - Varian Docker Droid men-stage
~/.factoryuntuk pengaturan, meneruskanFACTORY_API_KEY, dan memerlukan API key tersebut karena auth OAuth/keyring Factory lokal tidak portabel ke dalam container. Varian ini menggunakan entri registry bawaan ACPXdroid exec --output-format acp. - Varian Docker OpenCode adalah lane regresi agen tunggal yang ketat. Varian ini menulis model default sementara
OPENCODE_CONFIG_CONTENTdariOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(defaultopencode/kimi-k2.6) setelah memuat~/.profile, danpnpm test:docker:live-acp-bind:opencodememerlukan transkrip asisten ter-bind alih-alih menerima skip pasca-bind generik. - Panggilan CLI
acpxlangsung hanya merupakan jalur manual/solusi sementara untuk membandingkan perilaku di luar Gateway. Smoke bind ACP Docker menguji backend runtimeacpxtertanam milik OpenClaw.
Live: smoke harness app-server Codex
- Tujuan: memvalidasi harness Codex milik Plugin melalui metode Gateway
agentnormal:- muat Plugin
codexyang dibundel - pilih
OPENCLAW_AGENT_RUNTIME=codex - kirim giliran agen Gateway pertama ke
openai/gpt-5.5dengan harness Codex dipaksa - kirim giliran kedua ke sesi OpenClaw yang sama dan verifikasi thread app-server dapat dilanjutkan
- jalankan
/codex statusdan/codex modelsmelalui jalur perintah Gateway yang sama - secara opsional jalankan dua probe shell terekskalasi yang ditinjau Guardian: satu perintah aman yang seharusnya disetujui dan satu unggahan rahasia palsu yang seharusnya ditolak sehingga agen bertanya kembali
- muat Plugin
- Pengujian:
src/gateway/gateway-codex-harness.live.test.ts - Aktifkan:
OPENCLAW_LIVE_CODEX_HARNESS=1 - Model default:
openai/gpt-5.5 - Probe gambar opsional:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - Probe MCP/tool opsional:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Probe Guardian opsional:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - Smoke menggunakan
agentRuntime.id: "codex"sehingga harness Codex yang rusak tidak dapat lulus dengan diam-diam fallback ke PI. - Auth: auth app-server Codex dari login langganan Codex lokal. Smoke Docker
juga dapat menyediakan
OPENAI_API_KEYuntuk probe non-Codex jika berlaku, plus salinan opsional~/.codex/auth.jsondan~/.codex/config.toml.
Resep lokal:
source ~/.profile
OPENCLAW_LIVE_CODEX_HARNESS=1 \
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 \
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 \
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 \
OPENCLAW_LIVE_CODEX_HARNESS_MODEL=openai/gpt-5.5 \
pnpm test:live -- src/gateway/gateway-codex-harness.live.test.ts
Resep Docker:
source ~/.profile
pnpm test:docker:live-codex-harness
Catatan Docker:
- Runner Docker berada di
scripts/test-live-codex-harness-docker.sh. - Runner memuat
~/.profileyang di-mount, meneruskanOPENAI_API_KEY, menyalin file auth CLI Codex jika ada, menginstal@openai/codexke prefix npm ter-mount yang dapat ditulis, men-stage pohon sumber, lalu hanya menjalankan pengujian live harness Codex. - Docker mengaktifkan probe gambar, MCP/tool, dan Guardian secara default. Setel
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0atauOPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0atauOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0saat Anda membutuhkan run debug yang lebih sempit. - Docker menggunakan konfigurasi runtime Codex eksplisit yang sama, sehingga alias lama atau fallback PI tidak dapat menyembunyikan regresi harness Codex.
Resep live yang direkomendasikan
Allowlist yang sempit dan eksplisit adalah yang tercepat dan paling tidak flaky:
-
Model tunggal, langsung (tanpa Gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.5" pnpm test:live src/agents/models.profiles.live.test.ts
-
Model tunggal, smoke Gateway:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Pemanggilan tool di beberapa penyedia:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Fokus Google (Gemini API key + Antigravity):
- Gemini (API key):
OPENCLAW_LIVE_GATEWAY_MODELS="google/gemini-3-flash-preview" 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 key):
-
Smoke adaptive thinking Google:
- Jika key lokal berada di profil shell:
source ~/.profile - Default dinamis Gemini 3:
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 - Budget dinamis Gemini 2.5:
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
- Jika key lokal berada di profil shell:
Catatan:
google/...menggunakan Gemini API (API key).google-antigravity/...menggunakan bridge OAuth Antigravity (endpoint agen bergaya Cloud Code Assist).google-gemini-cli/...menggunakan CLI Gemini lokal di mesin Anda (auth terpisah + keunikan tooling).- Gemini API vs Gemini CLI:
- API: OpenClaw memanggil Gemini API yang di-host Google melalui HTTP (API key / auth profil); inilah yang dimaksud sebagian besar pengguna dengan "Gemini".
- CLI: OpenClaw menjalankan biner
geminilokal melalui shell; ini memiliki auth sendiri dan dapat berperilaku berbeda (dukungan streaming/tool/perbedaan versi).
Live: matriks model (yang kami cakup)
Tidak ada "daftar model CI" tetap (live bersifat opt-in), tetapi berikut adalah model yang direkomendasikan untuk dicakup secara rutin pada mesin pengembangan dengan key.
Set smoke modern (pemanggilan tool + gambar)
Ini adalah run "model umum" yang kami harapkan tetap berfungsi:
- OpenAI (non-Codex):
openai/gpt-5.5 - OpenAI Codex OAuth:
openai-codex/gpt-5.5 - Anthropic:
anthropic/claude-opus-4-6(atauanthropic/claude-sonnet-4-6) - Google (Gemini API):
google/gemini-3.1-pro-previewdangoogle/gemini-3-flash-preview(hindari model Gemini 2.x yang lebih lama) - Google (Antigravity):
google-antigravity/claude-opus-4-6-thinkingdangoogle-antigravity/gemini-3-flash - DeepSeek:
deepseek/deepseek-v4-flashdandeepseek/deepseek-v4-pro - Z.AI (GLM):
zai/glm-5.1 - MiniMax:
minimax/MiniMax-M2.7
Jalankan smoke Gateway dengan tool + gambar:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-flash,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
Baseline: pemanggilan tool (Read + Exec opsional)
Pilih setidaknya satu per keluarga penyedia:
- OpenAI:
openai/gpt-5.5 - Anthropic:
anthropic/claude-opus-4-6(atauanthropic/claude-sonnet-4-6) - Google:
google/gemini-3-flash-preview(ataugoogle/gemini-3.1-pro-preview) - DeepSeek:
deepseek/deepseek-v4-flash - Z.AI (GLM):
zai/glm-5.1 - MiniMax:
minimax/MiniMax-M2.7
Cakupan tambahan opsional (baik untuk dimiliki):
- xAI:
xai/grok-4.3(atau yang terbaru tersedia) - Mistral:
mistral/… (pilih satu model berkemampuan "tools" yang telah Anda aktifkan) - Cerebras:
cerebras/… (jika Anda memiliki akses) - LM Studio:
lmstudio/… (lokal; pemanggilan tool bergantung pada mode API)
Vision: pengiriman gambar (lampiran → pesan multimodal)
Sertakan setidaknya satu model berkemampuan gambar di OPENCLAW_LIVE_GATEWAY_MODELS (varian berkemampuan vision Claude/Gemini/OpenAI, dll.) untuk menguji probe gambar.
Agregator / Gateway alternatif
Jika key Anda aktif, kami juga mendukung pengujian melalui:
- OpenRouter:
openrouter/...(ratusan model; gunakanopenclaw models scanuntuk menemukan kandidat berkemampuan tool+gambar) - OpenCode:
opencode/...untuk Zen danopencode-go/...untuk Go (auth melaluiOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
Penyedia lain yang dapat Anda sertakan dalam matriks live (jika Anda memiliki kredensial/konfigurasi):
- Bawaan:
openai,openai-codex,anthropic,google,google-vertex,google-antigravity,google-gemini-cli,zai,openrouter,opencode,opencode-go,xai,groq,cerebras,mistral,github-copilot - Melalui
models.providers(endpoint kustom):minimax(cloud/API), plus proxy kompatibel OpenAI/Anthropic apa pun (LM Studio, vLLM, LiteLLM, dll.)
Kredensial (jangan pernah commit)
Pengujian live menemukan kredensial dengan cara yang sama seperti CLI. Implikasi praktis:
-
Jika CLI berfungsi, pengujian live seharusnya menemukan key yang sama.
-
Jika pengujian live mengatakan "no creds", debug dengan cara yang sama seperti Anda men-debug
openclaw models list/ pemilihan model. -
Profil auth per agen:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(inilah yang dimaksud dengan "profile keys" dalam pengujian live) -
Config:
~/.openclaw/openclaw.json(atauOPENCLAW_CONFIG_PATH) -
Direktori status legacy:
~/.openclaw/credentials/(disalin ke home live bertahap saat ada, tetapi bukan penyimpanan utama profile-key) -
Proses lokal live menyalin config aktif, file
auth-profiles.jsonper agen,credentials/legacy, dan direktori auth CLI eksternal yang didukung ke home pengujian sementara secara default; home live bertahap melewatiworkspace/dansandboxes/, dan penggantian pathagents.*.workspace/agentDirdihapus agar probe tetap tidak menyentuh workspace host asli Anda.
Jika Anda ingin mengandalkan kunci env (misalnya diekspor di ~/.profile), jalankan pengujian lokal setelah source ~/.profile, atau gunakan runner Docker di bawah ini (runner dapat me-mount ~/.profile ke dalam kontainer).
Live Deepgram (transkripsi audio)
- Pengujian:
extensions/deepgram/audio.live.test.ts - Aktifkan:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
Live rencana coding BytePlus
- Pengujian:
extensions/byteplus/live.test.ts - Aktifkan:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - Penggantian model opsional:
BYTEPLUS_CODING_MODEL=ark-code-latest
Live media workflow ComfyUI
- Pengujian:
extensions/comfy/comfy.live.test.ts - Aktifkan:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - Cakupan:
- Menguji path comfy image, video, dan
music_generateyang dibundel - Melewati tiap kapabilitas kecuali
plugins.entries.comfy.config.<capability>dikonfigurasi - Berguna setelah mengubah pengiriman workflow comfy, polling, unduhan, atau registrasi Plugin
- Menguji path comfy image, video, dan
Live pembuatan gambar
- Pengujian:
test/image-generation.runtime.live.test.ts - Perintah:
pnpm test:live test/image-generation.runtime.live.test.ts - Harness:
pnpm test:live:media image - Cakupan:
- Menginventarisasi setiap Plugin penyedia pembuatan gambar yang terdaftar
- Memuat variabel env penyedia yang hilang dari shell login Anda (
~/.profile) sebelum melakukan probe - Menggunakan kunci API live/env sebelum profil auth tersimpan secara default, sehingga kunci pengujian yang usang di
auth-profiles.jsontidak menutupi kredensial shell asli - Melewati penyedia tanpa auth/profil/model yang dapat digunakan
- Menjalankan tiap penyedia yang dikonfigurasi melalui runtime pembuatan gambar bersama:
<provider>:generate<provider>:editsaat penyedia menyatakan dukungan edit
- Penyedia bundel saat ini yang tercakup:
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- Penyempitan opsional:
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-preview,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"
- Perilaku auth opsional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk memaksa auth penyimpanan profil dan mengabaikan penggantian khusus env
Untuk path CLI yang dikirimkan, tambahkan smoke infer setelah pengujian live penyedia/runtime lulus:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_INFER_CLI_TEST=1 pnpm test:live -- test/image-generation.infer-cli.live.test.ts
openclaw infer image providers --json
openclaw infer image generate \
--model google/gemini-3.1-flash-image-preview \
--prompt "Minimal flat test image: one blue square on a white background, no text." \
--output ./openclaw-infer-image-smoke.png \
--json
Ini mencakup parsing argumen CLI, resolusi config/agen default, aktivasi Plugin bundel, runtime pembuatan gambar bersama, dan permintaan penyedia live. Dependensi Plugin diharapkan sudah ada sebelum pemuatan runtime.
Live pembuatan musik
- Pengujian:
extensions/music-generation-providers.live.test.ts - Aktifkan:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - Harness:
pnpm test:live:media music - Cakupan:
- Menguji path penyedia pembuatan musik bundel bersama
- Saat ini mencakup Google dan MiniMax
- Memuat variabel env penyedia dari shell login Anda (
~/.profile) sebelum melakukan probe - Menggunakan kunci API live/env sebelum profil auth tersimpan secara default, sehingga kunci pengujian yang usang di
auth-profiles.jsontidak menutupi kredensial shell asli - Melewati penyedia tanpa auth/profil/model yang dapat digunakan
- Menjalankan kedua mode runtime yang dinyatakan saat tersedia:
generatedengan input hanya prompteditsaat penyedia menyatakancapabilities.edit.enabled
- Cakupan lane bersama saat ini:
google:generate,editminimax:generatecomfy: file live Comfy terpisah, bukan sweep bersama ini
- Penyempitan opsional:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- Perilaku auth opsional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk memaksa auth penyimpanan profil dan mengabaikan penggantian khusus env
Live pembuatan video
- Pengujian:
extensions/video-generation-providers.live.test.ts - Aktifkan:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - Harness:
pnpm test:live:media video - Cakupan:
- Menguji path penyedia pembuatan video bundel bersama
- Default ke path smoke yang aman untuk rilis: penyedia non-FAL, satu permintaan text-to-video per penyedia, prompt lobster satu detik, dan batas operasi per penyedia dari
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000secara default) - Melewati FAL secara default karena latensi antrean sisi penyedia dapat mendominasi waktu rilis; berikan
--video-providers falatauOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"untuk menjalankannya secara eksplisit - Memuat variabel env penyedia dari shell login Anda (
~/.profile) sebelum melakukan probe - Menggunakan kunci API live/env sebelum profil auth tersimpan secara default, sehingga kunci pengujian yang usang di
auth-profiles.jsontidak menutupi kredensial shell asli - Melewati penyedia tanpa auth/profil/model yang dapat digunakan
- Menjalankan hanya
generatesecara default - Atur
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1untuk juga menjalankan mode transform yang dinyatakan saat tersedia:imageToVideosaat penyedia menyatakancapabilities.imageToVideo.enableddan penyedia/model terpilih menerima input gambar lokal berbasis buffer dalam sweep bersamavideoToVideosaat penyedia menyatakancapabilities.videoToVideo.enableddan penyedia/model terpilih menerima input video lokal berbasis buffer dalam sweep bersama
- Penyedia
imageToVideoyang saat ini dinyatakan tetapi dilewati dalam sweep bersama:vydrakarenaveo3bundel hanya teks danklingbundel memerlukan URL gambar jarak jauh
- Cakupan khusus penyedia Vydra:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- file tersebut menjalankan text-to-video
veo3plus laneklingyang menggunakan fixture URL gambar jarak jauh secara default
- Cakupan live
videoToVideosaat ini:runwayhanya saat model terpilih adalahrunway/gen4_aleph
- Penyedia
videoToVideoyang saat ini dinyatakan tetapi dilewati dalam sweep bersama:alibaba,qwen,xaikarena path tersebut saat ini memerlukan URL referensihttp(s)/ MP4 jarak jauhgooglekarena lane Gemini/Veo bersama saat ini menggunakan input lokal berbasis buffer dan path tersebut tidak diterima dalam sweep bersamaopenaikarena lane bersama saat ini tidak memiliki jaminan akses inpaint/remix video khusus org
- Penyempitan opsional:
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"OPENCLAW_LIVE_VIDEO_GENERATION_SKIP_PROVIDERS=""untuk menyertakan setiap penyedia dalam sweep default, termasuk FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000untuk mengurangi batas operasi tiap penyedia bagi proses smoke yang agresif
- Perilaku auth opsional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk memaksa auth penyimpanan profil dan mengabaikan penggantian khusus env
Harness live media
- Perintah:
pnpm test:live:media - Tujuan:
- Menjalankan suite live gambar, musik, dan video bersama melalui satu entrypoint bawaan repo
- Memuat otomatis variabel env penyedia yang hilang dari
~/.profile - Mempersempit otomatis tiap suite ke penyedia yang saat ini memiliki auth yang dapat digunakan secara default
- Menggunakan ulang
scripts/test-live.mjs, sehingga perilaku Heartbeat dan mode senyap tetap konsisten
- Contoh:
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
Terkait
- Pengujian - suite unit, integrasi, QA, dan Docker