34 KiB
| read_when | sidebarTitle | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Live tests | Pengujian live (menyentuh jaringan): matriks model, backend CLI, ACP, penyedia media, kredensial | Pengujian: rangkaian uji langsung |
|
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, ditambah penanganan kredensial.
Live: perintah smoke profil lokal
Muat ~/.profile sebelum pemeriksaan live ad hoc agar kunci penyedia dan path
alat lokal sesuai dengan shell Anda:
source ~/.profile
Smoke media yang aman:
pnpm openclaw infer tts convert --local --json \
--text "OpenClaw live smoke." \
--output /tmp/openclaw-live-smoke.mp3
Smoke kesiapan panggilan suara yang aman:
pnpm openclaw voicecall setup --json
pnpm openclaw voicecall smoke --to "+15555550123"
voicecall smoke adalah dry run kecuali --yes juga disertakan. Gunakan --yes hanya
saat Anda memang ingin melakukan panggilan notifikasi sungguhan. Untuk Twilio, Telnyx, dan
Plivo, pemeriksaan kesiapan yang berhasil memerlukan URL webhook publik; fallback
loopback lokal saja/pribadi ditolak sesuai desain.
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 memastikan perilaku kontrak perintah.
- Cakupan:
- Penyiapan prasyarat/manual (suite tidak menginstal/menjalankan/memasangkan aplikasi).
- Validasi
node.invokegateway per perintah untuk node Android yang dipilih.
- Prasyarat penyiapan yang diperlukan:
- Aplikasi Android sudah terhubung + dipasangkan ke gateway.
- Aplikasi tetap berada di latar depan.
- Izin/persetujuan tangkapan 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 bahwa penyedia/model dapat menjawab sama sekali dengan kunci yang diberikan.
- “Smoke Gateway” memberi tahu kita bahwa pipeline gateway+agent penuh 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 memanggil Vitest secara langsung)
- Setel
OPENCLAW_LIVE_MODELS=modern(atauall, alias untuk modern) untuk benar-benar menjalankan suite ini; jika tidak, suite akan 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) - Sweep modern/all secara default memakai batas terkurasi dengan sinyal tinggi; setel
OPENCLAW_LIVE_MAX_MODELS=0untuk sweep modern 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; setel
OPENCLAW_LIVE_MODEL_CONCURRENCYuntuk melakukan override.
- Cara memilih penyedia:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(allowlist koma)
- Dari mana kunci berasal:
- Secara default: penyimpanan profil dan fallback env
- Setel
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk memberlakukan penyimpanan profil saja
- Alasan ini ada:
- Memisahkan “API penyedia rusak / kunci tidak valid” dari “pipeline agent gateway rusak”
- Berisi regresi kecil yang terisolasi (contoh: alur replay reasoning OpenAI Responses/Codex Responses + tool-call)
Lapisan 2: Smoke Gateway + agent dev (yang sebenarnya dilakukan oleh "@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 ekstra 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 agent untukreadfile itu lalu menggemakan nonce kembali. - Probe
exec+read: pengujian meminta agent 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.tsdansrc/gateway/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 M2.7, Grok 4.3)
OPENCLAW_LIVE_GATEWAY_MODELS=alladalah alias untuk allowlist modern- Atau setel
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(atau daftar koma) untuk mempersempit - Sweep gateway modern/all secara default memakai batas terkurasi dengan sinyal tinggi; setel
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0untuk sweep 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 live ini:
- Probe
read+ probeexec+read(stres alat) - Probe gambar berjalan saat model mengiklankan dukungan input gambar
- Alur (tingkat tinggi):
- Pengujian menghasilkan 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) - Agent tertanam meneruskan pesan pengguna multimodal ke model
- Asersi: balasan berisi
cat+ kode (toleransi OCR: kesalahan kecil diperbolehkan)
- Pengujian menghasilkan PNG kecil dengan “CAT” + kode acak (
- Probe
openclaw models list
openclaw models list --json
Live: smoke backend CLI (Claude, Codex, Gemini, atau CLI lokal lain)
- Pengujian:
src/gateway/gateway-cli-backend.live.test.ts - Tujuan: memvalidasi pipeline Gateway + agent menggunakan backend CLI lokal, tanpa menyentuh konfigurasi default Anda.
- Default smoke khusus backend berada bersama definisi
cli-backend.tsmilik extension 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/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 (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 argumen CLI alih-alih injeksi prompt.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(atau"list") untuk mengontrol cara argumen gambar diteruskan saatIMAGE_ARGdisetel.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1untuk mengirim giliran kedua dan memvalidasi alur resume.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1untuk ikut serta dalam probe kontinuitas sesi yang sama Claude Sonnet -> Opus saat model yang dipilih mendukung target switch. 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 yang 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 bahwa server
transport: "streamable-http" yang tersimpan dinormalisasi ke bentuk MCP HTTP milik Gemini
dan dapat terhubung ke server MCP streamable-HTTP lokal.
Resep Docker:
pnpm test:docker:live-cli-backend
Resep Docker penyedia tunggal:
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. - Runner menjalankan smoke backend CLI live di dalam image Docker repo sebagai pengguna non-root
node. - Runner menyelesaikan metadata smoke CLI dari extension pemilik, lalu menginstal paket CLI Linux yang sesuai (
@anthropic-ai/claude-code,@openai/codex, atau@google/gemini-cli) ke prefix tulis 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 env vars 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 ekstra, bukan batas paket langganan normal.- Smoke backend CLI live kini 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.
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 memastikan respons nyata
403 InvalidProviderTokendari Apple 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 conversation-bind 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 telah 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 bergaya Slack DM
- 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 surface Gateway
chat.senddengan field originating-route sintetis khusus admin agar 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 Pluginacpxtersemat untuk agen harness ACP yang dipilih. - Pembuatan MCP Cron sesi ter-bind bersifat upaya terbaik 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 surface 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 ACP bind 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 dalam 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 sendiri adalah paketacpx/runtimetersemat dari Pluginacpxresmi. - Varian Docker Droid men-stage
~/.factoryuntuk pengaturan, meneruskanFACTORY_API_KEY, dan memerlukan kunci API 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 ACP bind Docker menguji backend runtimeacpxtersemat 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/alat 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 bila 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 saat 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/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 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 flakey:
-
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 alat lintas 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 (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):
-
Smoke adaptive thinking Google:
- Jika kunci 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 - 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
- Jika kunci lokal berada di profil shell:
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 (auth terpisah + kekhasan tooling).- API Gemini vs CLI Gemini:
- API: OpenClaw memanggil API Gemini ter-host Google melalui HTTP (kunci API / auth profil); inilah yang dimaksud sebagian besar pengguna dengan “Gemini”.
- CLI: OpenClaw menjalankan binary
geminilokal melalui shell; CLI ini memiliki auth sendiri dan dapat berperilaku berbeda (streaming/dukungan alat/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 berkala di mesin dev dengan kunci.
Set smoke modern (pemanggilan alat + 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 (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 - MiniMax:
minimax/MiniMax-M2.7
Jalankan smoke Gateway dengan alat + 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 alat (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 alat bergantung pada mode API)
Vision: kirim gambar (lampiran → pesan multimodal)
Sertakan setidaknya satu model berkemampuan gambar di OPENCLAW_LIVE_GATEWAY_MODELS (varian Claude/Gemini/OpenAI berkemampuan vision, dll.) untuk menguji 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 yang mampu alat+gambar) - OpenCode:
opencode/...untuk Zen danopencode-go/...untuk Go (auth melaluiOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
Lebih banyak penyedia 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 khusus):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 kunci yang sama.
-
Jika pengujian live mengatakan “no creds”, 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 yang dimaksud “profile keys” 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 utama profile-key) -
Eksekusi live lokal secara default menyalin konfigurasi aktif, file
auth-profiles.jsonper agen,credentials/lama, dan direktori autentikasi CLI eksternal yang didukung ke home pengujian sementara; home live bertahap melewatiworkspace/dansandboxes/, dan penggantian jaluragents.*.workspace/agentDirdihapus agar probe tetap tidak menyentuh workspace host asli Anda.
Jika Anda ingin mengandalkan kunci env (misalnya diekspor di ~/.profile Anda), jalankan pengujian lokal setelah source ~/.profile, atau gunakan runner Docker di bawah ini (runner tersebut dapat memasang ~/.profile ke dalam container).
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 jalur 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
- Menguji jalur 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:
- Menginventarisasi setiap plugin penyedia pembuatan gambar yang terdaftar
- Memuat env var penyedia yang hilang dari shell login Anda (
~/.profile) sebelum melakukan probe - Secara default menggunakan kunci API live/env sebelum profil autentikasi tersimpan, sehingga kunci pengujian usang di
auth-profiles.jsontidak menutupi kredensial shell asli - 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 penggantian khusus env
Untuk jalur 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 konfigurasi/default-agent, 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:
- Menguji jalur penyedia pembuatan musik bawaan bersama
- Saat ini mencakup Google dan MiniMax
- Memuat env var penyedia dari shell login Anda (
~/.profile) sebelum melakukan probe - Secara default menggunakan kunci API live/env sebelum profil autentikasi tersimpan, sehingga kunci pengujian usang di
auth-profiles.jsontidak menutupi kredensial shell asli - Melewati penyedia tanpa autentikasi/profil/model yang dapat digunakan
- Menjalankan kedua mode runtime yang dideklarasikan saat tersedia:
generatedengan input prompt sajaeditsaat 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 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 jalur penyedia pembuatan video bawaan bersama
- Secara default menggunakan jalur 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) - Secara default melewati FAL karena latensi antrean sisi penyedia dapat mendominasi waktu rilis; berikan
--video-providers falatauOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"untuk menjalankannya secara eksplisit - Memuat env var penyedia dari shell login Anda (
~/.profile) sebelum melakukan probe - Secara default menggunakan kunci API live/env sebelum profil autentikasi tersimpan, sehingga kunci pengujian usang di
auth-profiles.jsontidak menutupi kredensial shell asli - Melewati penyedia tanpa autentikasi/profil/model yang dapat digunakan
- Secara default hanya menjalankan
generate - Tetapkan
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1untuk juga menjalankan mode transform 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 saat ini dideklarasikan tetapi dilewati dalam sweep bersama:vydrakarenaveo3bawaan hanya teks danklingbawaan memerlukan URL gambar jarak jauh
- Cakupan Vydra spesifik penyedia:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- file tersebut menjalankan text-to-video
veo3ditambah laneklingyang secara default menggunakan fixture URL gambar jarak jauh
- Cakupan live
videoToVideosaat ini:runwayhanya saat model yang dipilih adalahrunway/gen4_aleph
- Penyedia
videoToVideoyang saat ini dideklarasikan tetapi dilewati dalam sweep bersama:alibaba,qwen,xaikarena jalur tersebut saat ini memerlukan URL referensihttp(s)/ MP4 jarak jauhgooglekarena lane Gemini/Veo bersama saat ini menggunakan input lokal berbasis buffer dan jalur itu 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 setiap operasi penyedia bagi eksekusi smoke yang agresif
- Perilaku autentikasi opsional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1untuk memaksa autentikasi 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 native repo
- Memuat otomatis env var penyedia yang hilang dari
~/.profile - Secara default mempersempit otomatis setiap suite ke penyedia yang saat ini memiliki autentikasi yang dapat digunakan
- 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