Testing
Pengujian: suite live
Untuk mulai cepat, runner QA, suite unit/integrasi, dan alur Docker, lihat Pengujian. Halaman ini membahas suite pengujian live (menyentuh jaringan): matriks model, backend CLI, ACP, dan pengujian live penyedia media, plus penanganan kredensial.
Live: perintah smoke lokal
Ekspor kunci penyedia yang diperlukan di lingkungan proses sebelum pemeriksaan live ad hoc.
Smoke media aman:
pnpm openclaw infer tts convert --local --json \ --text "OpenClaw live smoke." \ --output /tmp/openclaw-live-smoke.mp3Smoke kesiapan panggilan suara aman:
pnpm openclaw voicecall setup --jsonpnpm openclaw voicecall smoke --to "+15555550123"voicecall smoke adalah dry run kecuali --yes juga disertakan. Gunakan --yes hanya
ketika Anda memang ingin melakukan panggilan notifikasi nyata. Untuk Twilio, Telnyx, dan
Plivo, pemeriksaan kesiapan yang berhasil memerlukan URL webhook publik; fallback
loopback lokal saja/privat ditolak secara sengaja.
Live: sweep 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 menegaskan perilaku kontrak perintah.
- Cakupan:
- Penyiapan prasyarat/manual (suite tidak menginstal/menjalankan/memasangkan aplikasi).
- Validasi
node.invokeGateway per perintah untuk node Android yang dipilih.
- Pra-penyiapan yang diperlukan:
- Aplikasi Android sudah terhubung + dipasangkan ke gateway.
- Aplikasi tetap di latar depan.
- Izin/persetujuan penangkapan diberikan untuk kapabilitas yang Anda harapkan lolos.
- Override target opsional:
OPENCLAW_ANDROID_NODE_IDatauOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- Detail lengkap penyiapan Android: Aplikasi Android
Live: smoke model (kunci profil)
Pengujian live dibagi menjadi dua lapisan agar kita dapat mengisolasi kegagalan:
- "Model langsung" memberi tahu kita apakah penyedia/model bisa menjawab sama sekali dengan kunci yang diberikan.
- "Smoke Gateway" memberi tahu kita apakah pipeline gateway+agen lengkap 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 Anda miliki kredensialnya - Menjalankan penyelesaian kecil per model (dan regresi bertarget bila diperlukan)
- Cara mengaktifkan:
pnpm test:live(atauOPENCLAW_LIVE_TEST=1jika memanggil Vitest secara langsung)
- Tetapkan
OPENCLAW_LIVE_MODELS=modern,small, atauall(alias untuk modern) untuk benar-benar menjalankan suite ini; jika tidak, suite dilewati agarpnpm test:livetetap fokus 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 5.1, MiniMax M3, Grok 4.3)OPENCLAW_LIVE_MODELS=smalluntuk menjalankan allowlist model kecil terbatas (rute Qwen 8B/9B yang kompatibel lokal, Ollama Gemma, OpenRouter Qwen/GLM, dan Z.AI GLM)OPENCLAW_LIVE_MODELS=alladalah alias untuk allowlist modern- atau
OPENCLAW_LIVE_MODELS="openai/gpt-5.5,anthropic/claude-opus-4-6,..."(allowlist dipisahkan koma) - Run model kecil Ollama lokal default ke
http://127.0.0.1:11434; tetapkanOPENCLAW_LIVE_OLLAMA_BASE_URLhanya untuk endpoint LAN, kustom, atau Ollama Cloud. - Sweep modern/all dan kecil default ke batas yang dikurasi; tetapkan
OPENCLAW_LIVE_MAX_MODELS=0untuk sweep profil terpilih yang menyeluruh atau angka positif untuk batas yang lebih kecil. - Sweep menyeluruh menggunakan
OPENCLAW_LIVE_TEST_TIMEOUT_MSuntuk timeout seluruh pengujian model langsung. Default: 60 menit. - Probe model langsung berjalan dengan paralelisme 20 arah secara default; tetapkan
OPENCLAW_LIVE_MODEL_CONCURRENCYuntuk override.
- Cara memilih penyedia:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(allowlist dipisahkan koma)
- Dari mana kunci berasal:
- Secara default: penyimpanan profil dan fallback env
- Tetapkan
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk mewajibkan penyimpanan profil saja
- Mengapa ini ada:
- Memisahkan "API penyedia rusak / kunci tidak valid" dari "pipeline agen gateway rusak"
- Berisi regresi kecil yang terisolasi (contoh: alur replay penalaran Responses/Codex Responses OpenAI + tool-call)
Lapisan 2: Smoke Gateway + agen dev (yang sebenarnya dilakukan "@openclaw")
- Pengujian:
src/gateway/gateway-models.profiles.live.test.ts - Tujuan:
- Memulai gateway dalam proses
- Membuat/menambal sesi
agent:dev:*(override model per run) - Mengiterasi model-dengan-kunci dan menegaskan:
- respons yang "bermakna" (tanpa alat)
- pemanggilan alat nyata berfungsi (probe baca)
- probe alat ekstra opsional (probe exec+baca)
- jalur regresi OpenAI (tool-call-only → 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 itu serta menggemakan nonce kembali. - Probe
exec+read: pengujian meminta agen untuk menulis nonce denganexecke file temp, lalureadkembali. - Probe gambar: pengujian melampirkan PNG yang dihasilkan (cat + kode acak) dan mengharapkan model mengembalikan
cat <CODE>. - Referensi implementasi:
src/gateway/gateway-models.profiles.live.test.tsdantest/helpers/live-image-probe.ts.
- Probe
- Cara mengaktifkan:
pnpm test:live(atauOPENCLAW_LIVE_TEST=1jika memanggil 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 M3, Grok 4.3)
OPENCLAW_LIVE_GATEWAY_MODELS=smalluntuk menjalankan allowlist model kecil terbatas yang sama melalui pipeline gateway+agen lengkapOPENCLAW_LIVE_GATEWAY_MODELS=alladalah alias untuk allowlist modern- Atau tetapkan
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(atau daftar dipisahkan koma) untuk mempersempit - Sweep gateway modern/all dan kecil default ke batas yang dikurasi; tetapkan
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0untuk sweep terpilih yang 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 dipisahkan koma)
- Probe alat + gambar selalu aktif dalam pengujian live ini:
- Probe
read+ probeexec+read(stress alat) - Probe gambar berjalan ketika model mengiklankan dukungan input gambar
- Alur (tingkat tinggi):
- Pengujian menghasilkan PNG kecil dengan "CAT" + kode acak (
test/helpers/live-image-probe.ts) - Mengirimkannya melalui
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Gateway mengurai lampiran menjadi
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - Agen tertanam meneruskan pesan pengguna multimodal ke model
- Asersi: balasan berisi
cat+ kode tersebut (toleransi OCR: kesalahan kecil diperbolehkan)
- Pengujian menghasilkan PNG kecil dengan "CAT" + kode acak (
- Probe
Live: smoke backend CLI (Claude, 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 ekstensi pemilik. - Aktifkan:
pnpm test:live(atauOPENCLAW_LIVE_TEST=1jika memanggil Vitest secara langsung)OPENCLAW_LIVE_CLI_BACKEND=1
- Default:
- Penyedia/model default:
claude-cli/claude-sonnet-4-6 - Perilaku perintah/args/gambar berasal dari metadata plugin backend CLI pemilik.
- Penyedia/model default:
- Override (opsional):
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=1untuk mengirim lampiran gambar nyata (path disuntikkan ke prompt). Resep Docker menonaktifkan ini secara default kecuali diminta secara eksplisit.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"untuk meneruskan path file gambar sebagai arg CLI alih-alih injeksi prompt.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(atau"list") untuk mengontrol bagaimana arg gambar diteruskan ketikaIMAGE_ARGditetapkan.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 peralihan. 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="claude-cli/claude-sonnet-4-6" \ pnpm test:live src/gateway/gateway-cli-backend.live.test.tsSmoke konfigurasi MCP Gemini murah:
OPENCLAW_LIVE_TEST=1 \ pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.tsIni tidak meminta Gemini 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-backendResep Docker penyedia tunggal:
pnpm test:docker:live-cli-backend:claudepnpm test:docker:live-cli-backend:claude-subscriptionpnpm test:docker:live-cli-backend:geminiCatatan:
- Runner Docker berada di
scripts/test-live-cli-backend-docker.sh. - Ini menjalankan smoke backend CLI live di dalam image Docker repo sebagai pengguna non-root
node. - Ini menyelesaikan metadata smoke CLI dari ekstensi pemilik, lalu menginstal paket CLI Linux yang cocok (
@anthropic-ai/claude-codeatau@google/gemini-cli) ke prefiks dapat ditulis yang di-cache 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 var env kunci API Anthropic. Lane langganan ini menonaktifkan probe MCP/alat dan gambar Claude secara default karena mengonsumsi batas penggunaan langganan yang sudah login dan Anthropic dapat mengubah perilaku penagihan dan batas laju Claude Agent SDK /claude -ptanpa rilis OpenClaw.- Smoke backend CLI live sekarang menjalankan alur end-to-end yang sama untuk Claude 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 sesi yang dilanjutkan masih mengingat catatan sebelumnya.
Live: keterjangkauan proxy HTTP/2 APNs
- Pengujian:
src/infra/push-apns-http2.live.test.ts - Tujuan: melakukan tunnel melalui proxy HTTP CONNECT lokal ke endpoint APNs sandbox Apple, mengirim permintaan validasi HTTP/2 APNs, dan menegaskan respons nyata
403 InvalidProviderTokenApple kembali 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
Live: 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 terikat
- 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 bergaya 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:
- Jalur ini menggunakan permukaan gateway
chat.senddengan kolom 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 registri agen bawaan Pluginacpxtertanam untuk agen harness ACP yang dipilih. - Pembuatan MCP Cron sesi terikat secara default bersifat upaya terbaik karena harness ACP eksternal dapat membatalkan panggilan MCP setelah bukti bind/gambar lolos; setel
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1agar probe Cron pasca-bind tersebut ketat.
- Jalur 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.tsResep Docker:
pnpm test:docker:live-acp-bindResep Docker agen tunggal:
pnpm test:docker:live-acp-bind:claudepnpm test:docker:live-acp-bind:codexpnpm test:docker:live-acp-bind:droidpnpm test:docker:live-acp-bind:geminipnpm test:docker:live-acp-bind:opencodeCatatan Docker:
- Runner Docker berada di
scripts/test-live-acp-bind-docker.sh. - Secara default, runner menjalankan uji dasar 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 menyiapkan material autentikasi CLI yang sesuai ke dalam kontainer, lalu memasang 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 paketacpx/runtimetertanam dari Plugin resmiacpx. - Varian Docker Droid menyiapkan
~/.factoryuntuk pengaturan, meneruskanFACTORY_API_KEY, dan memerlukan kunci API tersebut karena autentikasi OAuth/keyring Factory lokal tidak portabel ke dalam kontainer. Varian ini menggunakan entri registri bawaan ACPXdroid exec --output-format acp. - Varian Docker OpenCode adalah jalur regresi agen tunggal yang ketat. Varian ini menulis model default
OPENCODE_CONFIG_CONTENTsementara dariOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(defaultopencode/kimi-k2.6), danpnpm test:docker:live-acp-bind:opencodememerlukan transkrip asisten terikat alih-alih menerima lewati pasca-bind generik. - Panggilan CLI
acpxlangsung hanya merupakan jalur manual/solusi sementara untuk membandingkan perilaku di luar Gateway. Uji dasar bind ACP Docker melatih backend runtimeacpxtertanam milik OpenClaw.
Langsung: uji dasar harness server aplikasi Codex
- Tujuan: memvalidasi harness Codex milik Plugin melalui metode
agentgateway normal:- muat Plugin
codexyang dibundel - pilih
openai/gpt-5.5, yang merutekan giliran agen OpenAI melalui Codex secara default - kirim giliran agen gateway pertama ke
openai/gpt-5.5dengan harness Codex dipilih - kirim giliran kedua ke sesi OpenClaw yang sama dan verifikasi thread server aplikasi dapat dilanjutkan
- jalankan
/codex statusdan/codex modelsmelalui jalur perintah gateway yang sama - secara opsional jalankan dua probe shell terelevasi yang ditinjau Guardian: satu perintah jinak 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/alat opsional:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Probe Guardian opsional:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - Uji dasar memaksa provider/model
agentRuntime.id: "codex"sehingga harness Codex yang rusak tidak dapat lolos dengan diam-diam fallback ke OpenClaw. - Autentikasi: autentikasi server aplikasi Codex dari login langganan Codex lokal. Uji dasar Docker
juga dapat menyediakan
OPENAI_API_KEYuntuk probe non-Codex bila berlaku, ditambah salinan opsional~/.codex/auth.jsondan~/.codex/config.toml.
Resep lokal:
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.tsResep Docker:
pnpm test:docker:live-codex-harnessCatatan Docker:
- Runner Docker berada di
scripts/test-live-codex-harness-docker.sh. - Runner meneruskan
OPENAI_API_KEY, menyalin file autentikasi CLI Codex saat ada, memasang@openai/codexke prefix npm terpasang yang dapat ditulis, menyiapkan pohon sumber, lalu hanya menjalankan pengujian live harness Codex. - Docker mengaktifkan probe gambar, MCP/alat, 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 memerlukan proses debug yang lebih sempit. - Docker menggunakan konfigurasi runtime Codex eksplisit yang sama, sehingga alias lama atau fallback OpenClaw tidak dapat menyembunyikan regresi harness Codex.
Resep live yang direkomendasikan
Allowlist yang sempit dan eksplisit adalah yang paling cepat dan paling sedikit flake:
-
Model tunggal, langsung (tanpa gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.5" pnpm test:live src/agents/models.profiles.live.test.ts
-
Profil langsung model kecil:
OPENCLAW_LIVE_MODELS=small pnpm test:live src/agents/models.profiles.live.test.ts
-
Profil gateway model kecil:
OPENCLAW_LIVE_GATEWAY_MODELS=small pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Uji dasar API Ollama Cloud:
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
-
Model tunggal, uji dasar gateway:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Pemanggilan alat lintas beberapa provider:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M3" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Uji dasar langsung Z.AI Coding Plan GLM-5.2:
ZAI_CODING_LIVE_TEST=1 pnpm test:live src/agents/zai.live.test.ts
-
Fokus Google (kunci API Gemini + Antigravity):
- Gemini (kunci API):
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 (kunci API):
-
Uji dasar pemikiran adaptif Google:
- 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 - Anggaran 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
- Default dinamis Gemini 3:
Catatan:
google/...menggunakan API Gemini (kunci API).google-antigravity/...menggunakan bridge OAuth Antigravity (endpoint agen bergaya Cloud Code Assist).google-gemini-cli/...menggunakan CLI Gemini lokal di mesin Anda (autentikasi terpisah + kekhasan tooling).- API Gemini vs CLI Gemini:
- API: OpenClaw memanggil API Gemini yang dihosting Google melalui HTTP (kunci API / autentikasi profil); inilah yang dimaksud sebagian besar pengguna dengan "Gemini".
- CLI: OpenClaw menjalankan biner
geminilokal melalui shell; CLI ini memiliki autentikasinya sendiri dan dapat berperilaku berbeda (dukungan streaming/alat/ketidakselarasan versi).
Langsung: matriks model (yang kami cakup)
Tidak ada "daftar model CI" tetap (live bersifat opt-in), tetapi ini adalah model yang direkomendasikan untuk dicakup secara rutin di mesin pengembangan dengan kunci.
Set uji dasar modern (pemanggilan alat + gambar)
Ini adalah proses "model umum" yang kami harapkan tetap berfungsi:
- OpenAI (non-Codex):
openai/gpt-5.5 - OpenAI ChatGPT/Codex OAuth:
openai/gpt-5.5 - Anthropic:
anthropic/claude-opus-4-6(atauanthropic/claude-sonnet-4-6) - Google (API Gemini):
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(API umum) atauzai/glm-5.2(Coding Plan) - MiniMax:
minimax/MiniMax-M3
Jalankan uji dasar gateway dengan alat + gambar:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/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-M3" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
Baseline: pemanggilan alat (Read + Exec opsional)
Pilih setidaknya satu per keluarga provider:
- 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(API umum) atauzai/glm-5.2(Coding Plan) - MiniMax:
minimax/MiniMax-M3
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 alat bergantung pada mode API)
Vision: pengiriman gambar (lampiran → pesan multimodal)
Sertakan setidaknya satu model berkemampuan gambar di OPENCLAW_LIVE_GATEWAY_MODELS (varian Claude/Gemini/OpenAI yang mendukung vision, dll.) untuk melatih probe gambar.
Agregator / gateway alternatif
Jika Anda memiliki kunci yang diaktifkan, kami juga mendukung pengujian melalui:
- OpenRouter:
openrouter/...(ratusan model; gunakanopenclaw models scanuntuk menemukan kandidat berkemampuan alat+gambar) - OpenCode:
opencode/...untuk Zen danopencode-go/...untuk Go (autentikasi melaluiOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
Provider lain yang dapat Anda sertakan dalam matriks live (jika Anda memiliki kredensial/konfigurasi):
- Bawaan:
openai,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(awan/API), ditambah proxy apa pun yang kompatibel dengan OpenAI/Anthropic (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 kunci yang sama.
-
Jika pengujian live mengatakan "tidak ada kredensial", debug dengan cara yang sama seperti Anda men-debug
openclaw models list/ pemilihan model. -
Profil autentikasi per agen:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(inilah arti "kunci profil" dalam pengujian live) -
Konfigurasi:
~/.openclaw/openclaw.json(atauOPENCLAW_CONFIG_PATH) -
Direktori status lama:
~/.openclaw/credentials/(disalin ke home live bertahap saat ada, tetapi bukan penyimpanan kunci profil utama) -
Eksekusi lokal live menyalin konfigurasi aktif, file
auth-profiles.jsonper agen,credentials/lama, dan direktori autentikasi CLI eksternal yang didukung ke home pengujian sementara secara default; home live bertahap melewatiworkspace/dansandboxes/, dan override pathagents.*.workspace/agentDirdihapus agar probe tetap tidak menyentuh workspace host asli Anda.
Jika Anda ingin mengandalkan kunci env, ekspor kunci tersebut sebelum pengujian lokal atau gunakan
runner Docker di bawah dengan OPENCLAW_PROFILE_FILE eksplisit.
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 - Override 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:
- Menjalankan path gambar, video, dan
music_generatecomfy bawaan - Melewati setiap kapabilitas kecuali
plugins.entries.comfy.config.<capability>dikonfigurasi - Berguna setelah mengubah pengiriman workflow comfy, polling, unduhan, atau pendaftaran Plugin
- Menjalankan path gambar, 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:
- Mengenumerasi setiap Plugin penyedia pembuatan gambar yang terdaftar
- Menggunakan variabel env penyedia yang sudah diekspor sebelum melakukan probe
- Menggunakan kunci API live/env sebelum profil autentikasi tersimpan secara default, sehingga kunci pengujian usang di
auth-profiles.jsontidak menutupi kredensial shell yang sebenarnya - Melewati penyedia tanpa autentikasi/profil/model yang dapat digunakan
- Menjalankan setiap penyedia yang dikonfigurasi melalui runtime pembuatan gambar bersama:
<provider>:generate<provider>:editsaat penyedia mendeklarasikan dukungan edit
- Penyedia bawaan saat ini yang dicakup:
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 autentikasi opsional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk memaksa autentikasi penyimpanan profil dan mengabaikan override hanya 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.tsopenclaw infer image providers --jsonopenclaw 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 \ --jsonIni mencakup parsing argumen CLI, resolusi konfigurasi/agen default, aktivasi Plugin bawaan, 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:
- Menjalankan path penyedia pembuatan musik bawaan bersama
- Saat ini mencakup Google dan MiniMax
- Menggunakan variabel env penyedia yang sudah diekspor sebelum melakukan probe
- Menggunakan kunci API live/env sebelum profil autentikasi tersimpan secara default, sehingga kunci pengujian usang di
auth-profiles.jsontidak menutupi kredensial shell yang sebenarnya - Melewati penyedia tanpa autentikasi/profil/model yang dapat digunakan
- Menjalankan kedua mode runtime yang dideklarasikan saat tersedia:
generatedengan input hanya prompteditsaat penyedia mendeklarasikancapabilities.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 autentikasi opsional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk memaksa autentikasi penyimpanan profil dan mengabaikan override hanya 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:
- Menjalankan path penyedia pembuatan video bawaan bersama
- Secara default menggunakan path smoke yang aman untuk rilis: penyedia non-FAL, satu permintaan teks-ke-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 di sisi penyedia dapat mendominasi waktu rilis; berikan
--video-providers falatauOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"untuk menjalankannya secara eksplisit - Menggunakan variabel env penyedia yang sudah diekspor sebelum melakukan probe
- Menggunakan kunci API live/env sebelum profil autentikasi tersimpan secara default, sehingga kunci pengujian usang di
auth-profiles.jsontidak menutupi kredensial shell yang sebenarnya - Melewati penyedia tanpa autentikasi/profil/model yang dapat digunakan
- Hanya menjalankan
generatesecara default - Atur
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1untuk juga menjalankan mode transformasi yang dideklarasikan saat tersedia:imageToVideosaat penyedia mendeklarasikancapabilities.imageToVideo.enableddan penyedia/model yang dipilih menerima input gambar lokal berbasis buffer dalam sweep bersamavideoToVideosaat penyedia mendeklarasikancapabilities.videoToVideo.enableddan penyedia/model yang dipilih menerima input video lokal berbasis buffer dalam sweep bersama
- Penyedia
imageToVideoyang dideklarasikan tetapi dilewati saat ini dalam sweep bersama:vydrakarenaveo3bawaan hanya teks danklingbawaan memerlukan URL gambar jarak jauh
- Cakupan Vydra khusus penyedia:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- file tersebut menjalankan teks-ke-video
veo3ditambah laneklingyang menggunakan fixture URL gambar jarak jauh secara default
- Cakupan live
videoToVideosaat ini:runwayhanya saat model yang dipilih adalahrunway/gen4_aleph
- Penyedia
videoToVideoyang dideklarasikan tetapi dilewati saat ini 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 edit 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 setiap operasi penyedia bagi eksekusi smoke yang agresif
- Perilaku autentikasi opsional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk memaksa autentikasi penyimpanan profil dan mengabaikan override hanya env
Harness live media
- Perintah:
pnpm test:live:media - Tujuan:
- Menjalankan suite live gambar, musik, dan video bersama melalui satu entrypoint native repo
- Menggunakan variabel env penyedia yang sudah diekspor
- Secara otomatis mempersempit setiap suite ke penyedia yang saat ini memiliki autentikasi 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