สำหรับการเริ่มต้นอย่างรวดเร็ว, ตัวรัน QA, ชุดทดสอบ unit/integration และโฟลว์ Docker โปรดดู การทดสอบ หน้านี้ครอบคลุมชุดทดสอบ live (ที่แตะเครือข่าย): เมทริกซ์โมเดล, แบ็กเอนด์ CLI, ACP และการทดสอบ live ของ media-provider รวมถึง การจัดการ credentialDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Live: คำสั่ง smoke สำหรับ local profile
Source~/.profile ก่อนการตรวจสอบ live แบบ ad hoc เพื่อให้คีย์ provider และพาธเครื่องมือ local
ตรงกับ shell ของคุณ:
voicecall smoke เป็น dry run เว้นแต่จะมี --yes ด้วย ใช้ --yes เฉพาะ
เมื่อคุณตั้งใจจะโทรแจ้งเตือนจริง สำหรับ Twilio, Telnyx และ
Plivo การตรวจสอบความพร้อมที่สำเร็จต้องมี public webhook URL; ทางเลือก fallback แบบ local-only
loopback/private จะถูกปฏิเสธโดยเจตนา
Live: การ sweep ความสามารถของ Android node
- การทดสอบ:
src/gateway/android-node.capabilities.live.test.ts - สคริปต์:
pnpm android:test:integration - เป้าหมาย: เรียกใช้ ทุกคำสั่งที่ประกาศอยู่ในปัจจุบัน โดย Android node ที่เชื่อมต่ออยู่ และยืนยันพฤติกรรมตาม contract ของคำสั่ง
- ขอบเขต:
- การตั้งค่าล่วงหน้า/ด้วยตนเอง (ชุดทดสอบนี้ไม่ติดตั้ง/รัน/จับคู่แอป)
- การตรวจสอบ Gateway
node.invokeทีละคำสั่งสำหรับ Android node ที่เลือก
- การตั้งค่าล่วงหน้าที่จำเป็น:
- แอป Android เชื่อมต่อและจับคู่กับ Gateway แล้ว
- ให้แอปอยู่ foreground
- อนุญาต permissions/capture consent สำหรับความสามารถที่คุณคาดว่าจะผ่าน
- การ override target แบบ optional:
OPENCLAW_ANDROID_NODE_IDหรือOPENCLAW_ANDROID_NODE_NAMEOPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD
- รายละเอียดการตั้งค่า Android แบบครบถ้วน: แอป Android
Live: model smoke (คีย์ profile)
การทดสอบ live แบ่งเป็นสองชั้นเพื่อให้เราแยก failure ได้:- “Direct model” บอกเราว่า provider/model สามารถตอบได้จริงด้วยคีย์ที่ให้มา
- “Gateway smoke” บอกเราว่า pipeline gateway+agent แบบเต็มทำงานสำหรับโมเดลนั้น (sessions, history, tools, sandbox policy ฯลฯ)
ชั้นที่ 1: Direct model completion (ไม่มี gateway)
- การทดสอบ:
src/agents/models.profiles.live.test.ts - เป้าหมาย:
- Enumerate โมเดลที่ค้นพบ
- ใช้
getApiKeyForModelเพื่อเลือกโมเดลที่คุณมี creds - รัน completion ขนาดเล็กต่อโมเดล (และ regressions แบบ targeted เมื่อจำเป็น)
- วิธีเปิดใช้:
pnpm test:live(หรือOPENCLAW_LIVE_TEST=1หากเรียก Vitest โดยตรง)
- ตั้ง
OPENCLAW_LIVE_MODELS=modern(หรือall, alias สำหรับ modern) เพื่อรันชุดทดสอบนี้จริง; มิฉะนั้นจะข้ามเพื่อให้pnpm test:liveโฟกัสที่ gateway smoke - วิธีเลือกโมเดล:
OPENCLAW_LIVE_MODELS=modernเพื่อรัน allowlist สมัยใหม่ (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4.3)OPENCLAW_LIVE_MODELS=allเป็น alias สำหรับ allowlist สมัยใหม่- หรือ
OPENCLAW_LIVE_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,..."(comma allowlist) - การ sweep แบบ Modern/all มีค่าเริ่มต้นเป็น cap ที่คัด curated high-signal ไว้; ตั้ง
OPENCLAW_LIVE_MAX_MODELS=0สำหรับการ sweep modern แบบ exhaustive หรือจำนวนบวกสำหรับ cap ที่เล็กกว่า - การ sweep แบบ exhaustive ใช้
OPENCLAW_LIVE_TEST_TIMEOUT_MSสำหรับ timeout ของ direct-model test ทั้งหมด ค่าเริ่มต้น: 60 นาที - direct-model probes รันด้วย parallelism 20 ทางโดยค่าเริ่มต้น; ตั้ง
OPENCLAW_LIVE_MODEL_CONCURRENCYเพื่อ override
- วิธีเลือก providers:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(comma allowlist)
- คีย์มาจากที่ใด:
- ค่าเริ่มต้น: profile store และ env fallbacks
- ตั้ง
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1เพื่อบังคับใช้เฉพาะ profile store
- เหตุผลที่มีสิ่งนี้:
- แยก “provider API เสีย / คีย์ไม่ถูกต้อง” ออกจาก “gateway agent pipeline เสีย”
- มี regressions ขนาดเล็กที่แยกเฉพาะส่วน (ตัวอย่าง: OpenAI Responses/Codex Responses reasoning replay + tool-call flows)
ชั้นที่ 2: Gateway + dev agent smoke (สิ่งที่ “@openclaw” ทำจริง)
- การทดสอบ:
src/gateway/gateway-models.profiles.live.test.ts - เป้าหมาย:
- เปิด gateway แบบ in-process
- สร้าง/patch session
agent:dev:*(override โมเดลต่อรอบ) - วนผ่าน models-with-keys และยืนยันว่า:
- response “มีความหมาย” (ไม่มี tools)
- การเรียก tool จริงทำงาน (read probe)
- probes ของ tool เพิ่มเติมแบบ optional (exec+read probe)
- เส้นทาง regression ของ OpenAI (tool-call-only → follow-up) ยังทำงานต่อไป
- รายละเอียด probe (เพื่อให้คุณอธิบาย failure ได้เร็ว):
readprobe: การทดสอบเขียนไฟล์ nonce ใน workspace และขอให้ agentreadไฟล์นั้น แล้ว echo nonce กลับมาexec+readprobe: การทดสอบขอให้ agent ใช้execเขียน nonce ลงใน temp file แล้วreadกลับมา- image probe: การทดสอบแนบ PNG ที่สร้างขึ้น (cat + randomized code) และคาดว่าโมเดลจะตอบกลับเป็น
cat <CODE> - อ้างอิง implementation:
src/gateway/gateway-models.profiles.live.test.tsและsrc/gateway/live-image-probe.ts
- วิธีเปิดใช้:
pnpm test:live(หรือOPENCLAW_LIVE_TEST=1หากเรียก Vitest โดยตรง)
- วิธีเลือกโมเดล:
- ค่าเริ่มต้น: allowlist สมัยใหม่ (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=allเป็น alias สำหรับ allowlist สมัยใหม่- หรือตั้ง
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(หรือ comma list) เพื่อจำกัดให้แคบลง - การ sweep gateway แบบ Modern/all มีค่าเริ่มต้นเป็น cap ที่คัด curated high-signal ไว้; ตั้ง
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0สำหรับการ sweep modern แบบ exhaustive หรือจำนวนบวกสำหรับ cap ที่เล็กกว่า
- วิธีเลือก providers (หลีกเลี่ยง “OpenRouter everything”):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(comma allowlist)
- Tool + image probes เปิดเสมอในการทดสอบ live นี้:
readprobe +exec+readprobe (tool stress)- image probe รันเมื่อโมเดลประกาศว่ารองรับ image input
- โฟลว์ (ระดับสูง):
- การทดสอบสร้าง PNG ขนาดเล็กที่มี “CAT” + random code (
src/gateway/live-image-probe.ts) - ส่งผ่าน
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Gateway parse attachments เป็น
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - embedded agent ส่ง multimodal user message ต่อไปยังโมเดล
- Assertion: reply มี
cat+ code (OCR tolerance: อนุญาตข้อผิดพลาดเล็กน้อย)
- การทดสอบสร้าง PNG ขนาดเล็กที่มี “CAT” + random code (
Live: CLI backend smoke (Claude, Codex, Gemini หรือ local CLI อื่น)
- การทดสอบ:
src/gateway/gateway-cli-backend.live.test.ts - เป้าหมาย: ตรวจสอบ pipeline Gateway + agent โดยใช้ local CLI backend โดยไม่แตะ config เริ่มต้นของคุณ
- ค่า smoke เริ่มต้นเฉพาะ backend อยู่กับ definition
cli-backend.tsของ Plugin ที่เป็นเจ้าของ - เปิดใช้:
pnpm test:live(หรือOPENCLAW_LIVE_TEST=1หากเรียก Vitest โดยตรง)OPENCLAW_LIVE_CLI_BACKEND=1
- ค่าเริ่มต้น:
- provider/model เริ่มต้น:
claude-cli/claude-sonnet-4-6 - พฤติกรรม command/args/image มาจาก metadata ของ CLI backend plugin ที่เป็นเจ้าของ
- provider/model เริ่มต้น:
- Overrides (optional):
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=1เพื่อส่ง image attachment จริง (paths ถูก inject เข้าไปใน prompt) Docker recipes ปิดค่านี้โดยค่าเริ่มต้น เว้นแต่จะร้องขออย่างชัดเจนOPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"เพื่อส่ง image file paths เป็น CLI args แทน prompt injectionOPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(หรือ"list") เพื่อควบคุมวิธีส่ง image args เมื่อตั้งIMAGE_ARGOPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1เพื่อส่ง turn ที่สองและตรวจสอบ resume flowOPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1เพื่อ opt into probe ความต่อเนื่องใน session เดียวกันจาก Claude Sonnet -> Opus เมื่อโมเดลที่เลือก support switch target Docker recipes ปิดค่านี้โดยค่าเริ่มต้นเพื่อความน่าเชื่อถือแบบ aggregateOPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1เพื่อ opt into MCP/tool loopback probe Docker recipes ปิดค่านี้โดยค่าเริ่มต้น เว้นแต่จะร้องขออย่างชัดเจน
gemini --debug mcp list เพื่อพิสูจน์ว่า
server transport: "streamable-http" ที่บันทึกไว้ถูก normalize เป็น shape HTTP MCP ของ Gemini
และเชื่อมต่อกับ local streamable-HTTP MCP server ได้
Docker recipe:
- Docker runner อยู่ที่
scripts/test-live-cli-backend-docker.sh - มันรัน live CLI-backend smoke ภายใน repo Docker image ในฐานะผู้ใช้
nodeที่ไม่ใช่ root - มัน resolve metadata ของ CLI smoke จาก extension ที่เป็นเจ้าของ แล้วติดตั้งแพ็กเกจ Linux CLI ที่ตรงกัน (
@anthropic-ai/claude-code,@openai/codexหรือ@google/gemini-cli) ลงใน prefix ที่เขียนได้และมี cache ที่OPENCLAW_DOCKER_CLI_TOOLS_DIR(ค่าเริ่มต้น:~/.cache/openclaw/docker-cli-tools) pnpm test:docker:live-cli-backend:claude-subscriptionต้องใช้ portable Claude Code subscription OAuth ผ่าน~/.claude/.credentials.jsonที่มีclaudeAiOauth.subscriptionTypeหรือCLAUDE_CODE_OAUTH_TOKENจากclaude setup-tokenก่อนอื่นมันพิสูจน์ directclaude -pใน Docker แล้วจึงรัน Gateway CLI-backend สอง turns โดยไม่ preserve env vars ของ Anthropic API-key lane subscription นี้ปิด Claude MCP/tool และ image probes โดยค่าเริ่มต้น เพราะปัจจุบัน Claude route การใช้งาน third-party app ผ่าน extra-usage billing แทนขีดจำกัดแผน subscription ปกติ- live CLI-backend smoke ตอนนี้ทดสอบโฟลว์ end-to-end เดียวกันสำหรับ Claude, Codex และ Gemini: text turn, image classification turn แล้วจึงเป็น MCP
crontool call ที่ตรวจสอบผ่าน gateway CLI - smoke เริ่มต้นของ Claude ยัง patch session จาก Sonnet เป็น Opus และตรวจสอบว่า resumed session ยังจำ note ก่อนหน้าได้
Live: ความสามารถในการเข้าถึง APNs HTTP/2 proxy
- การทดสอบ:
src/infra/push-apns-http2.live.test.ts - เป้าหมาย: tunnel ผ่าน local HTTP CONNECT proxy ไปยัง endpoint APNs sandbox ของ Apple, ส่ง APNs HTTP/2 validation request และยืนยันว่า response
403 InvalidProviderTokenจริงของ Apple กลับมาผ่าน proxy path - เปิดใช้:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- Timeout แบบ optional:
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
Live: ACP bind smoke (/acp spawn ... --bind here)
- ทดสอบ:
src/gateway/gateway-acp-bind.live.test.ts - เป้าหมาย: ตรวจสอบ flow การ bind conversation ของ ACP จริงกับ ACP agent แบบ live:
- ส่ง
/acp spawn <agent> --bind here - bind conversation ของ message-channel สังเคราะห์ไว้ที่เดิม
- ส่ง follow-up ปกติใน conversation เดียวกันนั้น
- ตรวจสอบว่า follow-up เข้าไปอยู่ใน transcript ของ ACP session ที่ bind แล้ว
- ส่ง
- เปิดใช้:
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- ค่าเริ่มต้น:
- ACP agents ใน Docker:
claude,codex,gemini - ACP agent สำหรับ
pnpm test:live ...โดยตรง:claude - Synthetic channel: context ของ conversation แบบ Slack DM
- ACP backend:
acpx
- ACP agents ใน Docker:
- Overrides:
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
- หมายเหตุ:
- lane นี้ใช้ surface
chat.sendของ Gateway พร้อมฟิลด์ originating-route สังเคราะห์แบบ admin-only เพื่อให้การทดสอบแนบ context ของ message-channel ได้โดยไม่ต้องแกล้งทำว่า deliver ออกไปภายนอก - เมื่อไม่ได้ตั้งค่า
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDการทดสอบจะใช้ agent registry ในตัวของ Pluginacpxที่ฝังมา สำหรับ ACP harness agent ที่เลือกไว้ - การสร้าง MCP สำหรับ cron ของ bound-session เป็นแบบ best-effort โดยค่าเริ่มต้น เพราะ ACP harness ภายนอกอาจยกเลิก MCP calls หลังจาก proof ของ bind/image ผ่านแล้ว ตั้งค่า
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1เพื่อให้ probe ของ cron หลัง bind นั้นเข้มงวด
- lane นี้ใช้ surface
- Docker runner อยู่ที่
scripts/test-live-acp-bind-docker.sh - โดยค่าเริ่มต้น มันรัน ACP bind smoke กับ aggregate live CLI agents ตามลำดับ:
claude,codex, แล้วgemini - ใช้
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,OPENCLAW_LIVE_ACP_BIND_AGENTS=codex,OPENCLAW_LIVE_ACP_BIND_AGENTS=droid,OPENCLAW_LIVE_ACP_BIND_AGENTS=gemini, หรือOPENCLAW_LIVE_ACP_BIND_AGENTS=opencodeเพื่อจำกัด matrix ให้แคบลง - มัน source
~/.profile, stage วัสดุ CLI auth ที่ตรงกันเข้า container จากนั้นติดตั้ง live CLI ที่ร้องขอ (@anthropic-ai/claude-code,@openai/codex, Factory Droid ผ่านhttps://app.factory.ai/cli,@google/gemini-cli, หรือopencode-ai) หากยังไม่มี ACP backend เองคือ packageacpx/runtimeที่ฝังมาจาก Pluginacpxอย่างเป็นทางการ - ตัวแปร Docker ของ Droid stage
~/.factoryสำหรับ settings, forwardFACTORY_API_KEY, และต้องใช้ API key นั้น เพราะ auth แบบ Factory OAuth/keyring ภายในเครื่องไม่สามารถพกพาเข้า container ได้ มันใช้ registry entrydroid exec --output-format acpในตัวของ ACPX - ตัวแปร Docker ของ OpenCode เป็น regression lane แบบ agent เดียวที่เข้มงวด มันเขียน default model ชั่วคราวของ
OPENCODE_CONFIG_CONTENTจากOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(ค่าเริ่มต้นopencode/kimi-k2.6) หลังจาก source~/.profileและpnpm test:docker:live-acp-bind:opencodeต้องมี bound assistant transcript แทนที่จะยอมรับ generic post-bind skip - การเรียก
acpxCLI โดยตรงเป็นเพียง path สำหรับ manual/workaround เพื่อเปรียบเทียบ behavior นอก Gateway เท่านั้น Docker ACP bind smoke ทดสอบ runtime backendacpxที่ฝังอยู่ใน OpenClaw
Live: smoke ของ Codex app-server harness
- เป้าหมาย: ตรวจสอบ Codex harness ที่ Plugin เป็นเจ้าของผ่าน Gateway ปกติ
ด้วย method
agent:- โหลด Plugin
codexที่ bundle มา - เลือก
openai/gpt-5.5ซึ่ง route agent turns ของ OpenAI ผ่าน Codex โดยค่าเริ่มต้น - ส่ง Gateway agent turn แรกไปยัง
openai/gpt-5.5โดยเลือก Codex harness - ส่ง turn ที่สองไปยัง OpenClaw session เดิม และตรวจสอบว่า thread ของ app-server resume ได้
- รัน
/codex statusและ/codex modelsผ่าน path ของ Gateway command เดียวกัน - เลือกรัน escalated shell probes สองรายการที่ Guardian-reviewed: command ที่ไม่เป็นอันตรายหนึ่งรายการซึ่งควรได้รับอนุมัติ และการอัปโหลด fake-secret หนึ่งรายการที่ควรถูก ปฏิเสธเพื่อให้ agent ถามกลับ
- โหลด Plugin
- ทดสอบ:
src/gateway/gateway-codex-harness.live.test.ts - เปิดใช้:
OPENCLAW_LIVE_CODEX_HARNESS=1 - โมเดลเริ่มต้น:
openai/gpt-5.5 - image probe แบบเลือกได้:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - MCP/tool probe แบบเลือกได้:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Guardian probe แบบเลือกได้:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - smoke บังคับ provider/model
agentRuntime.id: "codex"เพื่อให้ Codex harness ที่เสียไม่สามารถผ่านได้โดย fallback ไปที่ PI แบบเงียบๆ - Auth: auth ของ Codex app-server จากการ login subscription ของ Codex ในเครื่อง Docker
smokes ยังสามารถให้
OPENAI_API_KEYสำหรับ probes ที่ไม่ใช่ Codex เมื่อใช้ได้ พร้อมกับ~/.codex/auth.jsonและ~/.codex/config.tomlที่คัดลอกมาแบบเลือกได้
- Docker runner อยู่ที่
scripts/test-live-codex-harness-docker.sh - มัน source
~/.profileที่ mount ไว้, ส่งผ่านOPENAI_API_KEY, คัดลอกไฟล์ auth ของ Codex CLI เมื่อมีอยู่, ติดตั้ง@openai/codexลงใน npm prefix ที่เขียนได้และ mount ไว้, stage source tree จากนั้นรันเฉพาะ live test ของ Codex-harness - Docker เปิดใช้ image, MCP/tool, และ Guardian probes โดยค่าเริ่มต้น ตั้งค่า
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0หรือOPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0หรือOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0เมื่อคุณต้องการ debug run ที่แคบลง - Docker ใช้ config runtime ของ Codex ที่ชัดเจนแบบเดียวกัน ดังนั้น aliases เดิมหรือการ fallback ไปที่ PI จึงไม่สามารถซ่อน regression ของ Codex harness ได้
สูตร live ที่แนะนำ
allowlist ที่แคบและชัดเจนเร็วที่สุดและ flaky น้อยที่สุด:-
โมเดลเดียว แบบ direct (ไม่ผ่าน Gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.5" pnpm test:live src/agents/models.profiles.live.test.ts
-
โมเดลเดียว Gateway smoke:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Tool calling ข้ามหลาย providers:
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
-
โฟกัส 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):
-
Google adaptive thinking smoke:
- หาก local keys อยู่ใน shell profile:
source ~/.profile - ค่าเริ่มต้นแบบ dynamic ของ 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 แบบ dynamic ของ 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
- หาก local keys อยู่ใน shell profile:
google/...ใช้ Gemini API (API key)google-antigravity/...ใช้ Antigravity OAuth bridge (agent endpoint แบบ Cloud Code Assist)google-gemini-cli/...ใช้ Gemini CLI ในเครื่องของคุณ (auth แยกต่างหาก + tooling quirks)- Gemini API เทียบกับ Gemini CLI:
- API: OpenClaw เรียก Gemini API ที่ Google host ผ่าน HTTP (API key / profile auth); นี่คือสิ่งที่ผู้ใช้ส่วนใหญ่หมายถึงเมื่อพูดว่า “Gemini”
- CLI: OpenClaw shell out ไปยัง binary
geminiในเครื่อง; มันมี auth ของตัวเองและอาจทำงานต่างกัน (streaming/tool support/version skew)
Live: model matrix (สิ่งที่เราครอบคลุม)
ไม่มี “รายการโมเดล CI” ที่ตายตัว (live เป็น opt-in) แต่นี่คือโมเดลที่ แนะนำ ให้ครอบคลุมเป็นประจำบนเครื่อง dev ที่มี keysชุด smoke สมัยใหม่ (tool calling + image)
นี่คือ run ของ “common models” ที่เราคาดว่าจะรักษาให้ใช้งานได้:- OpenAI (ไม่ใช่ Codex):
openai/gpt-5.5 - OpenAI Codex OAuth:
openai-codex/gpt-5.5 - Anthropic:
anthropic/claude-opus-4-6(หรือanthropic/claude-sonnet-4-6) - Google (Gemini API):
google/gemini-3.1-pro-previewและgoogle/gemini-3-flash-preview(หลีกเลี่ยงโมเดล Gemini 2.x ที่เก่ากว่า) - Google (Antigravity):
google-antigravity/claude-opus-4-6-thinkingและgoogle-antigravity/gemini-3-flash - DeepSeek:
deepseek/deepseek-v4-flashและdeepseek/deepseek-v4-pro - Z.AI (GLM):
zai/glm-5.1 - MiniMax:
minimax/MiniMax-M2.7
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: tool calling (Read + Exec แบบเลือกได้)
เลือกอย่างน้อยหนึ่งรายการต่อ provider family:- OpenAI:
openai/gpt-5.5 - Anthropic:
anthropic/claude-opus-4-6(หรือanthropic/claude-sonnet-4-6) - Google:
google/gemini-3-flash-preview(หรือgoogle/gemini-3.1-pro-preview) - DeepSeek:
deepseek/deepseek-v4-flash - Z.AI (GLM):
zai/glm-5.1 - MiniMax:
minimax/MiniMax-M2.7
- xAI:
xai/grok-4.3(หรือเวอร์ชันล่าสุดที่มี) - Mistral:
mistral/… (เลือกโมเดลที่รองรับ “tools” หนึ่งรายการที่คุณเปิดใช้อยู่) - Cerebras:
cerebras/… (หากคุณมีสิทธิ์เข้าถึง) - LM Studio:
lmstudio/… (local; tool calling ขึ้นอยู่กับ API mode)
Vision: การส่ง image (attachment → multimodal message)
ใส่โมเดลที่รองรับ image อย่างน้อยหนึ่งรายการในOPENCLAW_LIVE_GATEWAY_MODELS (variants ที่รองรับ vision ของ Claude/Gemini/OpenAI ฯลฯ) เพื่อทดสอบ image probe
Aggregators / alternate gateways
หากคุณเปิดใช้ keys ไว้ เรายังรองรับการทดสอบผ่าน:- OpenRouter:
openrouter/...(โมเดลหลายร้อยรายการ; ใช้openclaw models scanเพื่อค้นหา candidates ที่รองรับ tool+image) - OpenCode:
opencode/...สำหรับ Zen และopencode-go/...สำหรับ Go (auth ผ่านOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
- ในตัว:
openai,openai-codex,anthropic,google,google-vertex,google-antigravity,google-gemini-cli,zai,openrouter,opencode,opencode-go,xai,groq,cerebras,mistral,github-copilot - ผ่าน
models.providers(custom endpoints):minimax(cloud/API), รวมถึง proxy ที่เข้ากันได้กับ OpenAI/Anthropic ใดๆ (LM Studio, vLLM, LiteLLM ฯลฯ)
Credentials (ห้าม commit)
Live tests ค้นหา credentials แบบเดียวกับที่ CLI ทำ ผลที่ตามมาในทางปฏิบัติ:- หาก CLI ทำงานได้ การทดสอบแบบใช้งานจริงควรพบคีย์เดียวกัน
-
หากการทดสอบแบบใช้งานจริงแจ้งว่า “no creds” ให้ดีบักด้วยวิธีเดียวกับที่คุณใช้ดีบัก
openclaw models list/ การเลือกโมเดล -
โปรไฟล์การยืนยันตัวตนต่อเอเจนต์:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(นี่คือความหมายของ “profile keys” ในการทดสอบแบบใช้งานจริง) -
การกำหนดค่า:
~/.openclaw/openclaw.json(หรือOPENCLAW_CONFIG_PATH) -
ไดเรกทอรีสถานะดั้งเดิม:
~/.openclaw/credentials/(จะถูกคัดลอกเข้าไปในโฮมแบบใช้งานจริงที่จัดเตรียมไว้เมื่อมีอยู่ แต่ไม่ใช่ที่เก็บคีย์โปรไฟล์หลัก) -
การรันแบบใช้งานจริงในเครื่องจะคัดลอกการกำหนดค่าที่ใช้งานอยู่, ไฟล์
auth-profiles.jsonต่อเอเจนต์,credentials/ดั้งเดิม และไดเรกทอรีการยืนยันตัวตน CLI ภายนอกที่รองรับ เข้าไปยังโฮมทดสอบชั่วคราวโดยค่าเริ่มต้น โฮมแบบใช้งานจริงที่จัดเตรียมไว้จะข้ามworkspace/และsandboxes/และการเขียนทับพาธagents.*.workspace/agentDirจะถูกตัดออกเพื่อให้การตรวจสอบไม่แตะ workspace จริงบนโฮสต์ของคุณ
~/.profile) ให้รันการทดสอบในเครื่องหลังจาก source ~/.profile หรือใช้ตัวรัน Docker ด้านล่าง (ซึ่งสามารถเมานต์ ~/.profile เข้าไปในคอนเทนเนอร์ได้)
Deepgram แบบใช้งานจริง (การถอดเสียง)
- การทดสอบ:
extensions/deepgram/audio.live.test.ts - เปิดใช้งาน:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
BytePlus coding plan แบบใช้งานจริง
- การทดสอบ:
extensions/byteplus/live.test.ts - เปิดใช้งาน:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - การเขียนทับโมเดลแบบไม่บังคับ:
BYTEPLUS_CODING_MODEL=ark-code-latest
สื่อ workflow ของ ComfyUI แบบใช้งานจริง
- การทดสอบ:
extensions/comfy/comfy.live.test.ts - เปิดใช้งาน:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - ขอบเขต:
- ทดสอบเส้นทางภาพ วิดีโอ และ
music_generateของ comfy ที่รวมมาให้ - ข้ามแต่ละความสามารถ เว้นแต่จะกำหนดค่า
plugins.entries.comfy.config.<capability>ไว้ - มีประโยชน์หลังจากเปลี่ยนการส่ง workflow ของ comfy, การ polling, การดาวน์โหลด หรือการลงทะเบียน Plugin
- ทดสอบเส้นทางภาพ วิดีโอ และ
การสร้างภาพแบบใช้งานจริง
- การทดสอบ:
test/image-generation.runtime.live.test.ts - คำสั่ง:
pnpm test:live test/image-generation.runtime.live.test.ts - ชุดทดสอบ:
pnpm test:live:media image - ขอบเขต:
- แจกแจง Plugin ผู้ให้บริการสร้างภาพที่ลงทะเบียนไว้ทั้งหมด
- โหลด env vars ของผู้ให้บริการที่ขาดหายจากเชลล์ล็อกอินของคุณ (
~/.profile) ก่อนตรวจสอบ - ใช้คีย์ API จากแบบใช้งานจริง/env ก่อนโปรไฟล์การยืนยันตัวตนที่จัดเก็บไว้โดยค่าเริ่มต้น ดังนั้นคีย์ทดสอบที่ล้าสมัยใน
auth-profiles.jsonจะไม่บดบังข้อมูลรับรองจริงจากเชลล์ - ข้ามผู้ให้บริการที่ไม่มีการยืนยันตัวตน/โปรไฟล์/โมเดลที่ใช้งานได้
- รันผู้ให้บริการที่กำหนดค่าไว้แต่ละรายผ่าน runtime การสร้างภาพที่ใช้ร่วมกัน:
<provider>:generate<provider>:editเมื่อผู้ให้บริการประกาศการรองรับการแก้ไข
- ผู้ให้บริการที่รวมมาให้ในปัจจุบันที่ครอบคลุม:
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- การจำกัดขอบเขตแบบไม่บังคับ:
OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google,openrouter,xai"OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="deepinfra"OPENCLAW_LIVE_IMAGE_GENERATION_MODELS="openai/gpt-image-2,google/gemini-3.1-flash-image-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"
- พฤติกรรมการยืนยันตัวตนแบบไม่บังคับ:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1เพื่อบังคับใช้การยืนยันตัวตนจากที่เก็บโปรไฟล์และละเว้นการเขียนทับที่มีเฉพาะ env
infer หลังจากการทดสอบแบบใช้งานจริงของผู้ให้บริการ/runtime ผ่านแล้ว:
การสร้างเพลงแบบใช้งานจริง
- การทดสอบ:
extensions/music-generation-providers.live.test.ts - เปิดใช้งาน:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - ชุดทดสอบ:
pnpm test:live:media music - ขอบเขต:
- ทดสอบเส้นทางผู้ให้บริการสร้างเพลงที่รวมมาให้และใช้ร่วมกัน
- ปัจจุบันครอบคลุม Google และ MiniMax
- โหลด env vars ของผู้ให้บริการจากเชลล์ล็อกอินของคุณ (
~/.profile) ก่อนตรวจสอบ - ใช้คีย์ API จากแบบใช้งานจริง/env ก่อนโปรไฟล์การยืนยันตัวตนที่จัดเก็บไว้โดยค่าเริ่มต้น ดังนั้นคีย์ทดสอบที่ล้าสมัยใน
auth-profiles.jsonจะไม่บดบังข้อมูลรับรองจริงจากเชลล์ - ข้ามผู้ให้บริการที่ไม่มีการยืนยันตัวตน/โปรไฟล์/โมเดลที่ใช้งานได้
- รันโหมด runtime ที่ประกาศไว้ทั้งสองโหมดเมื่อพร้อมใช้งาน:
generateพร้อมอินพุตที่มีเฉพาะ prompteditเมื่อผู้ให้บริการประกาศcapabilities.edit.enabled
- ความครอบคลุมของเลนที่ใช้ร่วมกันในปัจจุบัน:
google:generate,editminimax:generatecomfy: ไฟล์ Comfy แบบใช้งานจริงแยกต่างหาก ไม่ใช่การ sweep ที่ใช้ร่วมกันนี้
- การจำกัดขอบเขตแบบไม่บังคับ:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- พฤติกรรมการยืนยันตัวตนแบบไม่บังคับ:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1เพื่อบังคับใช้การยืนยันตัวตนจากที่เก็บโปรไฟล์และละเว้นการเขียนทับที่มีเฉพาะ env
การสร้างวิดีโอแบบใช้งานจริง
- การทดสอบ:
extensions/video-generation-providers.live.test.ts - เปิดใช้งาน:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - ชุดทดสอบ:
pnpm test:live:media video - ขอบเขต:
- ทดสอบเส้นทางผู้ให้บริการสร้างวิดีโอที่รวมมาให้และใช้ร่วมกัน
- ค่าเริ่มต้นเป็นเส้นทาง smoke ที่ปลอดภัยสำหรับ release: ผู้ให้บริการที่ไม่ใช่ FAL, คำขอ text-to-video หนึ่งรายการต่อผู้ให้บริการ, prompt กุ้งล็อบสเตอร์หนึ่งวินาที และเพดานเวลาปฏิบัติการต่อผู้ให้บริการจาก
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000โดยค่าเริ่มต้น) - ข้าม FAL โดยค่าเริ่มต้นเพราะเวลาแฝงของคิวฝั่งผู้ให้บริการอาจกินเวลา release เป็นหลัก ให้ส่ง
--video-providers falหรือOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"เพื่อรันอย่างชัดเจน - โหลด env vars ของผู้ให้บริการจากเชลล์ล็อกอินของคุณ (
~/.profile) ก่อนตรวจสอบ - ใช้คีย์ API จากแบบใช้งานจริง/env ก่อนโปรไฟล์การยืนยันตัวตนที่จัดเก็บไว้โดยค่าเริ่มต้น ดังนั้นคีย์ทดสอบที่ล้าสมัยใน
auth-profiles.jsonจะไม่บดบังข้อมูลรับรองจริงจากเชลล์ - ข้ามผู้ให้บริการที่ไม่มีการยืนยันตัวตน/โปรไฟล์/โมเดลที่ใช้งานได้
- รันเฉพาะ
generateโดยค่าเริ่มต้น - ตั้งค่า
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1เพื่อรันโหมด transform ที่ประกาศไว้ด้วยเมื่อพร้อมใช้งาน:imageToVideoเมื่อผู้ให้บริการประกาศcapabilities.imageToVideo.enabledและผู้ให้บริการ/โมเดลที่เลือกยอมรับอินพุตภาพในเครื่องที่หนุนด้วย buffer ในการ sweep ที่ใช้ร่วมกันvideoToVideoเมื่อผู้ให้บริการประกาศcapabilities.videoToVideo.enabledและผู้ให้บริการ/โมเดลที่เลือกยอมรับอินพุตวิดีโอในเครื่องที่หนุนด้วย buffer ในการ sweep ที่ใช้ร่วมกัน
- ผู้ให้บริการ
imageToVideoที่ประกาศไว้แต่ถูกข้ามในปัจจุบันในการ sweep ที่ใช้ร่วมกัน:vydraเพราะveo3ที่รวมมาให้รองรับเฉพาะข้อความ และklingที่รวมมาให้ต้องใช้ URL ภาพระยะไกล
- ความครอบคลุมเฉพาะผู้ให้บริการของ Vydra:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- ไฟล์นั้นรัน text-to-video ของ
veo3พร้อมกับเลนklingที่ใช้ fixture URL ภาพระยะไกลโดยค่าเริ่มต้น
- ความครอบคลุมแบบใช้งานจริงของ
videoToVideoในปัจจุบัน:runwayเฉพาะเมื่อโมเดลที่เลือกคือrunway/gen4_aleph
- ผู้ให้บริการ
videoToVideoที่ประกาศไว้แต่ถูกข้ามในปัจจุบันในการ sweep ที่ใช้ร่วมกัน:alibaba,qwen,xaiเพราะเส้นทางเหล่านั้นปัจจุบันต้องใช้ URL อ้างอิงhttp(s)/ MP4 ระยะไกลgoogleเพราะเลน Gemini/Veo ที่ใช้ร่วมกันในปัจจุบันใช้อินพุตในเครื่องที่หนุนด้วย buffer และเส้นทางนั้นไม่ได้รับการยอมรับในการ sweep ที่ใช้ร่วมกันopenaiเพราะเลนที่ใช้ร่วมกันในปัจจุบันยังไม่มีการรับประกันสิทธิ์เข้าถึง video inpaint/remix เฉพาะองค์กร
- การจำกัดขอบเขตแบบไม่บังคับ:
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=""เพื่อรวมผู้ให้บริการทุกแห่งในการ sweep เริ่มต้น รวมถึง FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000เพื่อลดเพดานเวลาปฏิบัติการของผู้ให้บริการแต่ละรายสำหรับการรัน smoke แบบเข้มข้น
- พฤติกรรมการยืนยันตัวตนแบบไม่บังคับ:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1เพื่อบังคับใช้การยืนยันตัวตนจากที่เก็บโปรไฟล์และละเว้นการเขียนทับที่มีเฉพาะ env
ชุดทดสอบสื่อแบบใช้งานจริง
- คำสั่ง:
pnpm test:live:media - วัตถุประสงค์:
- รันชุดทดสอบแบบใช้งานจริงของภาพ เพลง และวิดีโอที่ใช้ร่วมกันผ่าน entrypoint ภายใน repo เดียว
- โหลด env vars ของผู้ให้บริการที่ขาดหายจาก
~/.profileโดยอัตโนมัติ - จำกัดขอบเขตแต่ละชุดทดสอบโดยอัตโนมัติให้เหลือผู้ให้บริการที่ปัจจุบันมีการยืนยันตัวตนที่ใช้งานได้โดยค่าเริ่มต้น
- ใช้
scripts/test-live.mjsซ้ำ ดังนั้นพฤติกรรม Heartbeat และโหมดเงียบจึงสอดคล้องกัน
- ตัวอย่าง:
pnpm test:live:mediapnpm test:live:media image video --providers openai,google,minimaxpnpm test:live:media video --video-providers openai,runway --all-providerspnpm test:live:media music --quiet
ที่เกี่ยวข้อง
- การทดสอบ - ชุดทดสอบหน่วย, การผสานรวม, QA และ Docker