Testing
การทดสอบ: ชุดทดสอบแบบใช้งานจริง
สำหรับการเริ่มต้นอย่างรวดเร็ว, ตัวรัน QA, ชุดทดสอบ unit/integration และโฟลว์ Docker โปรดดู การทดสอบ หน้านี้ครอบคลุมชุดทดสอบ แบบสด (ที่แตะเครือข่าย): model matrix, แบ็กเอนด์ CLI, ACP และการทดสอบสดของผู้ให้บริการสื่อ รวมถึง การจัดการข้อมูลรับรอง
แบบสด: คำสั่ง smoke สำหรับโปรไฟล์ภายในเครื่อง
source ~/.profile ก่อนตรวจสอบแบบสดเฉพาะกิจ เพื่อให้คีย์ของผู้ให้บริการและพาธเครื่องมือภายในเครื่อง
ตรงกับ shell ของคุณ:
source ~/.profile
smoke สื่อที่ปลอดภัย:
pnpm openclaw infer tts convert --local --json \
--text "OpenClaw live smoke." \
--output /tmp/openclaw-live-smoke.mp3
smoke ความพร้อมสำหรับการโทรเสียงที่ปลอดภัย:
pnpm openclaw voicecall setup --json
pnpm openclaw voicecall smoke --to "+15555550123"
voicecall smoke เป็นการ dry run เว้นแต่จะมี --yes ด้วย ใช้ --yes เฉพาะ
เมื่อคุณตั้งใจจะวางสายแจ้งเตือนจริง สำหรับ Twilio, Telnyx และ
Plivo การตรวจสอบความพร้อมที่สำเร็จต้องใช้ URL Webhook สาธารณะ; ทางเลือกสำรองแบบ
loopback เฉพาะภายในเครื่อง/ส่วนตัวจะถูกปฏิเสธโดยตั้งใจ
แบบสด: การ sweep ความสามารถของ Android Node
- การทดสอบ:
src/gateway/android-node.capabilities.live.test.ts - สคริปต์:
pnpm android:test:integration - เป้าหมาย: เรียกใช้ ทุกคำสั่งที่กำลังประกาศอยู่ในปัจจุบัน โดย Android Node ที่เชื่อมต่ออยู่ และยืนยันพฤติกรรมตามสัญญาของคำสั่ง
- ขอบเขต:
- การตั้งค่าล่วงหน้า/แบบแมนนวล (ชุดทดสอบนี้ไม่ได้ติดตั้ง/รัน/จับคู่แอป)
- การตรวจสอบ Gateway
node.invokeแบบทีละคำสั่งสำหรับ Android Node ที่เลือก
- การตั้งค่าล่วงหน้าที่จำเป็น:
- แอป Android เชื่อมต่อและจับคู่กับ Gateway แล้ว
- คงแอปไว้ใน foreground
- ให้สิทธิ์/ความยินยอมในการจับภาพสำหรับความสามารถที่คุณคาดว่าจะผ่าน
- การ override เป้าหมายแบบเลือกได้:
OPENCLAW_ANDROID_NODE_IDหรือOPENCLAW_ANDROID_NODE_NAMEOPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD
- รายละเอียดการตั้งค่า Android ฉบับเต็ม: แอป Android
แบบสด: model smoke (คีย์โปรไฟล์)
การทดสอบสดแบ่งเป็นสองชั้น เพื่อให้เราแยกความล้มเหลวได้:
- "Direct model" บอกเราว่าผู้ให้บริการ/model สามารถตอบได้จริงด้วยคีย์ที่ให้มา
- "Gateway smoke" บอกเราว่า pipeline gateway+agent เต็มรูปแบบทำงานกับ model นั้นได้ (sessions, history, tools, sandbox policy ฯลฯ)
ชั้นที่ 1: Direct model completion (ไม่มี Gateway)
- การทดสอบ:
src/agents/models.profiles.live.test.ts - เป้าหมาย:
- แจกแจง models ที่ค้นพบ
- ใช้
getApiKeyForModelเพื่อเลือก models ที่คุณมี credentials - รัน completion ขนาดเล็กต่อ model (และ regression แบบเจาะจงเมื่อจำเป็น)
- วิธีเปิดใช้:
pnpm test:live(หรือOPENCLAW_LIVE_TEST=1หากเรียก Vitest โดยตรง)
- ตั้งค่า
OPENCLAW_LIVE_MODELS=modern(หรือallซึ่งเป็น alias สำหรับ modern) เพื่อรันชุดทดสอบนี้จริง; ไม่เช่นนั้นจะข้ามเพื่อให้pnpm test:liveโฟกัสที่ gateway smoke - วิธีเลือก models:
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 มีค่าเริ่มต้นเป็นขีดจำกัดที่คัดสรรให้สัญญาณสูง; ตั้งค่า
OPENCLAW_LIVE_MAX_MODELS=0สำหรับการ sweep สมัยใหม่แบบครบถ้วน หรือตัวเลขบวกสำหรับขีดจำกัดที่เล็กลง - การ sweep แบบครบถ้วนใช้
OPENCLAW_LIVE_TEST_TIMEOUT_MSสำหรับ timeout ของการทดสอบ direct-model ทั้งหมด ค่าเริ่มต้น: 60 นาที - โพรบ direct-model รันด้วย parallelism 20 ทางโดยค่าเริ่มต้น; ตั้งค่า
OPENCLAW_LIVE_MODEL_CONCURRENCYเพื่อ override
- วิธีเลือกผู้ให้บริการ:
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 เสีย"
- รวม regression ขนาดเล็กที่แยกขาด (ตัวอย่าง: OpenAI Responses/Codex Responses reasoning replay + โฟลว์ tool-call)
ชั้นที่ 2: Gateway + dev agent smoke (สิ่งที่ "@openclaw" ทำจริง)
- การทดสอบ:
src/gateway/gateway-models.profiles.live.test.ts - เป้าหมาย:
- เริ่ม Gateway แบบ in-process
- สร้าง/patch session
agent:dev:*(override model ต่อการรัน) - ไล่ตรวจ models-with-keys และยืนยันว่า:
- การตอบกลับ "มีความหมาย" (ไม่มี tools)
- การเรียกใช้ tool จริงทำงานได้ (read probe)
- โพรบ tool เพิ่มเติมแบบเลือกได้ (exec+read probe)
- เส้นทาง regression ของ OpenAI (tool-call-only → follow-up) ยังคงทำงาน
- รายละเอียดโพรบ (เพื่อให้คุณอธิบายความล้มเหลวได้เร็ว):
- โพรบ
read: การทดสอบเขียนไฟล์ nonce ใน workspace แล้วขอให้ agentreadและ echo nonce กลับมา - โพรบ
exec+read: การทดสอบขอให้ agent ใช้execเขียน nonce ลงในไฟล์ temp แล้วreadกลับมา - โพรบ image: การทดสอบแนบ PNG ที่สร้างขึ้น (cat + โค้ดแบบสุ่ม) และคาดว่า model จะส่งคืน
cat <CODE> - อ้างอิงการใช้งาน:
src/gateway/gateway-models.profiles.live.test.tsและsrc/gateway/live-image-probe.ts
- โพรบ
- วิธีเปิดใช้:
pnpm test:live(หรือOPENCLAW_LIVE_TEST=1หากเรียก Vitest โดยตรง)
- วิธีเลือก models:
- ค่าเริ่มต้น: 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"(หรือรายการคั่นด้วยจุลภาค) เพื่อจำกัดขอบเขต - การ sweep gateway แบบ modern/all มีค่าเริ่มต้นเป็นขีดจำกัดที่คัดสรรให้สัญญาณสูง; ตั้งค่า
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0สำหรับการ sweep สมัยใหม่แบบครบถ้วน หรือตัวเลขบวกสำหรับขีดจำกัดที่เล็กลง
- วิธีเลือกผู้ให้บริการ (หลีกเลี่ยง "OpenRouter ทุกอย่าง"):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(comma allowlist)
- โพรบ tool + image เปิดอยู่เสมอในการทดสอบสดนี้:
- โพรบ
read+ โพรบexec+read(ความเครียดของ tool) - โพรบ image รันเมื่อ model ประกาศว่ารองรับ image input
- โฟลว์ (ระดับสูง):
- การทดสอบสร้าง PNG ขนาดเล็กที่มี "CAT" + โค้ดสุ่ม (
src/gateway/live-image-probe.ts) - ส่งผ่าน
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Gateway แยกวิเคราะห์ attachments เป็น
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - Embedded agent ส่งต่อข้อความผู้ใช้แบบ multimodal ไปยัง model
- การยืนยัน: คำตอบมี
cat+ โค้ด (ความทนทาน OCR: อนุญาตให้มีข้อผิดพลาดเล็กน้อย)
- การทดสอบสร้าง PNG ขนาดเล็กที่มี "CAT" + โค้ดสุ่ม (
- โพรบ
แบบสด: smoke แบ็กเอนด์ CLI (Claude, Codex, Gemini หรือ CLI ภายในเครื่องอื่น)
- การทดสอบ:
src/gateway/gateway-cli-backend.live.test.ts - เป้าหมาย: ตรวจสอบ pipeline Gateway + agent โดยใช้แบ็กเอนด์ CLI ภายในเครื่อง โดยไม่แตะ config เริ่มต้นของคุณ
- ค่าเริ่มต้น smoke เฉพาะแบ็กเอนด์อยู่กับคำนิยาม
cli-backend.tsของ extension เจ้าของ - เปิดใช้:
pnpm test:live(หรือOPENCLAW_LIVE_TEST=1หากเรียก Vitest โดยตรง)OPENCLAW_LIVE_CLI_BACKEND=1
- ค่าเริ่มต้น:
- ผู้ให้บริการ/model เริ่มต้น:
claude-cli/claude-sonnet-4-6 - พฤติกรรม command/args/image มาจาก metadata ของ Plugin แบ็กเอนด์ CLI เจ้าของ
- ผู้ให้บริการ/model เริ่มต้น:
- Overrides (เลือกได้):
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 จริง (พาธจะถูก inject ลงใน prompt) สูตร Docker ปิดค่านี้โดยค่าเริ่มต้น เว้นแต่จะร้องขอโดยชัดแจ้งOPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"เพื่อส่งพาธไฟล์รูปภาพเป็น CLI args แทนการ inject ใน promptOPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(หรือ"list") เพื่อควบคุมวิธีส่ง image args เมื่อตั้งค่าIMAGE_ARGOPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1เพื่อส่ง turn ที่สองและตรวจสอบโฟลว์ resumeOPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1เพื่อเลือกใช้โพรบความต่อเนื่องใน session เดียวกัน Claude Sonnet -> Opus เมื่อ model ที่เลือกสนับสนุน switch target สูตร Docker ปิดค่านี้โดยค่าเริ่มต้นเพื่อความน่าเชื่อถือโดยรวมOPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1เพื่อเลือกใช้โพรบ loopback ของ MCP/tool สูตร Docker ปิดค่านี้โดยค่าเริ่มต้น เว้นแต่จะร้องขอโดยชัดแจ้ง
ตัวอย่าง:
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 config Gemini MCP ราคาถูก:
OPENCLAW_LIVE_TEST=1 \
pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.ts
สิ่งนี้ไม่ได้ขอให้ Gemini สร้างการตอบกลับ มันเขียนการตั้งค่า system แบบเดียวกับที่
OpenClaw ให้ Gemini แล้วรัน gemini --debug mcp list เพื่อพิสูจน์ว่า
เซิร์ฟเวอร์ transport: "streamable-http" ที่บันทึกไว้ถูก normalize เป็นรูปแบบ HTTP MCP ของ Gemini
และสามารถเชื่อมต่อกับเซิร์ฟเวอร์ MCP streamable-HTTP ภายในเครื่องได้
สูตร Docker:
pnpm test:docker:live-cli-backend
สูตร Docker สำหรับผู้ให้บริการรายเดียว:
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
หมายเหตุ:
- ตัวรัน Docker อยู่ที่
scripts/test-live-cli-backend-docker.sh - มันรัน smoke แบ็กเอนด์ CLI สดภายในอิมเมจ Docker ของ repo ในฐานะผู้ใช้
nodeที่ไม่ใช่ root - มัน resolve metadata smoke ของ CLI จาก 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ต้องใช้ Claude Code subscription OAuth แบบพกพา ผ่าน~/.claude/.credentials.jsonที่มีclaudeAiOauth.subscriptionTypeหรือCLAUDE_CODE_OAUTH_TOKENจากclaude setup-tokenโดยจะพิสูจน์claude -pโดยตรงใน Docker ก่อน จากนั้นรัน Gateway CLI-backend สอง turn โดยไม่เก็บรักษา env vars ของ Anthropic API-key lane subscription นี้ปิดโพรบ MCP/tool และ image ของ Claude โดยค่าเริ่มต้น เพราะตอนนี้ Claude route การใช้งานแอปของบุคคลที่สามผ่านการคิดค่าบริการ extra-usage แทนขีดจำกัดของแผน subscription ปกติ- ตอนนี้ smoke แบ็กเอนด์ CLI สดฝึกโฟลว์ end-to-end เดียวกันสำหรับ Claude, Codex และ Gemini: turn ข้อความ, turn การจำแนกรูปภาพ แล้วตามด้วยการเรียก tool MCP
cronที่ตรวจสอบผ่าน gateway CLI - smoke เริ่มต้นของ Claude ยัง patch session จาก Sonnet เป็น Opus และตรวจสอบว่า session ที่ resume แล้วยังจำบันทึกก่อนหน้าได้
แบบสด: ความสามารถในการเข้าถึง proxy APNs HTTP/2
- การทดสอบ:
src/infra/push-apns-http2.live.test.ts - เป้าหมาย: tunnel ผ่าน HTTP CONNECT proxy ภายในเครื่องไปยัง endpoint APNs sandbox ของ Apple, ส่งคำขอตรวจสอบ APNs HTTP/2 และยืนยันว่าการตอบกลับจริง
403 InvalidProviderTokenของ Apple กลับมาผ่านเส้นทาง proxy - เปิดใช้:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- timeout แบบเลือกได้:
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
แบบสด: ACP bind smoke (/acp spawn ... --bind here)
- การทดสอบ:
src/gateway/gateway-acp-bind.live.test.ts - เป้าหมาย: ตรวจสอบโฟลว์การผูกการสนทนา ACP จริงกับเอเจนต์ ACP แบบไลฟ์:
- ส่ง
/acp spawn <agent> --bind here - ผูกการสนทนาช่องทางข้อความสังเคราะห์ไว้ ณ จุดเดิม
- ส่งข้อความติดตามผลตามปกติในการสนทนาเดียวกันนั้น
- ตรวจสอบว่าข้อความติดตามผลไปถึงทรานสคริปต์ของเซสชัน ACP ที่ถูกผูกไว้
- ส่ง
- เปิดใช้:
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- ค่าเริ่มต้น:
- เอเจนต์ ACP ใน Docker:
claude,codex,gemini - เอเจนต์ ACP สำหรับ
pnpm test:live ...โดยตรง:claude - ช่องทางสังเคราะห์: บริบทการสนทนาแบบ Slack DM
- แบ็กเอนด์ ACP:
acpx
- เอเจนต์ ACP ใน Docker:
- การแทนที่:
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
- หมายเหตุ:
- เลนนี้ใช้พื้นผิว
chat.sendของ Gateway พร้อมฟิลด์เส้นทางต้นทางสังเคราะห์สำหรับผู้ดูแลระบบเท่านั้น เพื่อให้การทดสอบแนบบริบทช่องทางข้อความได้โดยไม่แสร้งว่าส่งออกไปภายนอก - เมื่อไม่ได้ตั้งค่า
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDการทดสอบจะใช้รีจิสทรีเอเจนต์ในตัวของ Pluginacpxที่ฝังไว้สำหรับเอเจนต์ฮาร์เนส ACP ที่เลือก - การสร้าง MCP ของ Cron สำหรับเซสชันที่ถูกผูกไว้เป็นแบบพยายามอย่างดีที่สุดโดยค่าเริ่มต้น เพราะฮาร์เนส ACP ภายนอกอาจยกเลิกการเรียก MCP หลังจากหลักฐานการผูก/รูปภาพผ่านแล้ว ตั้งค่า
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1เพื่อให้โพรบ Cron หลังการผูกเข้มงวด
- เลนนี้ใช้พื้นผิว
ตัวอย่าง:
OPENCLAW_LIVE_ACP_BIND=1 \
OPENCLAW_LIVE_ACP_BIND_AGENT=claude \
pnpm test:live src/gateway/gateway-acp-bind.live.test.ts
สูตร Docker:
pnpm test:docker:live-acp-bind
สูตร Docker สำหรับเอเจนต์เดียว:
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
หมายเหตุ Docker:
- ตัวรัน Docker อยู่ที่
scripts/test-live-acp-bind-docker.sh - โดยค่าเริ่มต้น จะรันสโมกการผูก ACP กับเอเจนต์ CLI ไลฟ์แบบรวมตามลำดับ:
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เพื่อจำกัดเมทริกซ์ - ระบบจะโหลดค่า
~/.profile, เตรียมวัสดุการยืนยันตัวตนของ CLI ที่ตรงกันเข้าไปในคอนเทนเนอร์ แล้วติดตั้ง CLI ไลฟ์ที่ร้องขอ (@anthropic-ai/claude-code,@openai/codex, Factory Droid ผ่านhttps://app.factory.ai/cli,@google/gemini-cliหรือopencode-ai) หากยังไม่มี แบ็กเอนด์ ACP เองคือแพ็กเกจacpx/runtimeที่ฝังมาจาก Pluginacpxอย่างเป็นทางการ - ตัวแปร Docker ของ Droid จะเตรียม
~/.factoryสำหรับการตั้งค่า ส่งต่อFACTORY_API_KEYและต้องใช้คีย์ API นั้น เพราะการยืนยันตัวตน Factory OAuth/keyring ภายในเครื่องไม่สามารถย้ายเข้าไปในคอนเทนเนอร์ได้ ระบบใช้รายการรีจิสทรีในตัวของ ACPX คือdroid exec --output-format acp - ตัวแปร Docker ของ OpenCode เป็นเลนรีเกรสชันเอเจนต์เดียวแบบเข้มงวด โดยเขียนโมเดลเริ่มต้น
OPENCODE_CONFIG_CONTENTชั่วคราวจากOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(ค่าเริ่มต้นopencode/kimi-k2.6) หลังจากโหลด~/.profileและpnpm test:docker:live-acp-bind:opencodeต้องมีทรานสคริปต์ผู้ช่วยที่ถูกผูกไว้ แทนที่จะยอมรับการข้ามหลังการผูกแบบทั่วไป - การเรียก CLI
acpxโดยตรงเป็นเพียงเส้นทางแบบแมนนวล/ทางเลี่ยงสำหรับเปรียบเทียบพฤติกรรมนอก Gateway เท่านั้น สโมกการผูก ACP ของ Docker ทดสอบแบ็กเอนด์รันไทม์acpxที่ฝังไว้ของ OpenClaw
ไลฟ์: สโมกฮาร์เนส Codex app-server
- เป้าหมาย: ตรวจสอบฮาร์เนส Codex ที่ Plugin เป็นเจ้าของผ่านเมธอด
agentของ Gateway ตามปกติ:- โหลด Plugin
codexที่บันเดิลมา - เลือก
OPENCLAW_AGENT_RUNTIME=codex - ส่งเทิร์นเอเจนต์ Gateway แรกไปยัง
openai/gpt-5.5โดยบังคับใช้ฮาร์เนส Codex - ส่งเทิร์นที่สองไปยังเซสชัน OpenClaw เดียวกัน และตรวจสอบว่าเธรด app-server สามารถทำงานต่อได้
- รัน
/codex statusและ/codex modelsผ่านเส้นทางคำสั่ง Gateway เดียวกัน - เลือกรันโพรบเชลล์ที่ยกระดับสิทธิ์และผ่านการตรวจของ Guardian สองรายการ: คำสั่งที่ไม่เป็นอันตรายซึ่งควรได้รับอนุมัติ และการอัปโหลดความลับปลอมซึ่งควรถูกปฏิเสธเพื่อให้เอเจนต์ถามกลับ
- โหลด Plugin
- การทดสอบ:
src/gateway/gateway-codex-harness.live.test.ts - เปิดใช้:
OPENCLAW_LIVE_CODEX_HARNESS=1 - โมเดลเริ่มต้น:
openai/gpt-5.5 - โพรบรูปภาพแบบเลือกได้:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - โพรบ MCP/เครื่องมือแบบเลือกได้:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - โพรบ Guardian แบบเลือกได้:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - สโมกใช้
agentRuntime.id: "codex"ดังนั้นฮาร์เนส Codex ที่เสียจะไม่สามารถผ่านได้ด้วยการถอยกลับไปใช้ PI อย่างเงียบ ๆ - การยืนยันตัวตน: การยืนยันตัวตน app-server ของ Codex จากการเข้าสู่ระบบการสมัครสมาชิก Codex ในเครื่อง สโมก Docker ยังสามารถระบุ
OPENAI_API_KEYสำหรับโพรบที่ไม่ใช่ Codex เมื่อเกี่ยวข้อง รวมถึงคัดลอก~/.codex/auth.jsonและ~/.codex/config.tomlแบบเลือกได้
สูตรภายในเครื่อง:
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
สูตร Docker:
source ~/.profile
pnpm test:docker:live-codex-harness
หมายเหตุ Docker:
- ตัวรัน Docker อยู่ที่
scripts/test-live-codex-harness-docker.sh - ระบบโหลด
~/.profileที่เมานต์ไว้ ส่งผ่านOPENAI_API_KEY, คัดลอกไฟล์ยืนยันตัวตนของ Codex CLI เมื่อมีอยู่, ติดตั้ง@openai/codexลงใน prefix npm ที่เมานต์แบบเขียนได้, เตรียมซอร์สทรี แล้วรันเฉพาะการทดสอบไลฟ์ของฮาร์เนส Codex - Docker เปิดใช้โพรบรูปภาพ, MCP/เครื่องมือ และ Guardian โดยค่าเริ่มต้น ตั้งค่า
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0หรือOPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0หรือOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0เมื่อต้องการรันดีบักที่แคบลง - Docker ใช้การกำหนดค่ารันไทม์ Codex แบบระบุชัดเจนเดียวกัน ดังนั้นนามแฝงเดิมหรือการถอยกลับไปใช้ PI จะไม่สามารถซ่อนรีเกรสชันของฮาร์เนส Codex ได้
สูตรไลฟ์ที่แนะนำ
รายการอนุญาตที่แคบและระบุชัดเจนเร็วที่สุดและเกิดความไม่เสถียรน้อยที่สุด:
-
โมเดลเดียว แบบตรง (ไม่ผ่าน Gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.5" pnpm test:live src/agents/models.profiles.live.test.ts
-
โมเดลเดียว สโมก Gateway:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
การเรียกเครื่องมือข้ามผู้ให้บริการหลายราย:
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 + Antigravity):
- Gemini (คีย์ 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 (คีย์ API):
-
สโมกการคิดแบบปรับตัวของ Google:
- หากคีย์ในเครื่องอยู่ในโปรไฟล์เชลล์:
source ~/.profile - ค่าเริ่มต้นแบบไดนามิกของ 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 - งบประมาณแบบไดนามิกของ 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
- หากคีย์ในเครื่องอยู่ในโปรไฟล์เชลล์:
หมายเหตุ:
google/...ใช้ Gemini API (คีย์ API)google-antigravity/...ใช้บริดจ์ Antigravity OAuth (เอนด์พอยต์เอเจนต์แบบ Cloud Code Assist)google-gemini-cli/...ใช้ Gemini CLI ภายในเครื่องของคุณ (การยืนยันตัวตนแยกต่างหาก + รายละเอียดเฉพาะของเครื่องมือ)- Gemini API เทียบกับ Gemini CLI:
- API: OpenClaw เรียก Gemini API ที่ Google โฮสต์ผ่าน HTTP (คีย์ API / การยืนยันตัวตนของโปรไฟล์); นี่คือสิ่งที่ผู้ใช้ส่วนใหญ่หมายถึงเมื่อพูดว่า "Gemini"
- CLI: OpenClaw เรียกไบนารี
geminiภายในเครื่องผ่านเชลล์; มีการยืนยันตัวตนของตัวเองและอาจมีพฤติกรรมต่างกัน (การสตรีม/การรองรับเครื่องมือ/ความเหลื่อมของเวอร์ชัน)
ไลฟ์: เมทริกซ์โมเดล (สิ่งที่เราครอบคลุม)
ไม่มี "รายการโมเดล CI" แบบตายตัว (ไลฟ์เป็นแบบเลือกเปิดใช้) แต่ต่อไปนี้คือโมเดลที่ แนะนำ ให้ครอบคลุมเป็นประจำบนเครื่องพัฒนาที่มีคีย์
ชุดสโมกสมัยใหม่ (การเรียกเครื่องมือ + รูปภาพ)
นี่คือการรัน "โมเดลทั่วไป" ที่เราคาดว่าจะทำงานต่อไปได้:
- 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
รันสโมก Gateway พร้อมเครื่องมือ + รูปภาพ:
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
พื้นฐาน: การเรียกเครื่องมือ (Read + Exec แบบเลือกได้)
เลือกอย่างน้อยหนึ่งรายการต่อกลุ่มผู้ให้บริการ:
- 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/… (ภายในเครื่อง; การเรียกเครื่องมือขึ้นอยู่กับโหมด API)
วิชัน: การส่งรูปภาพ (ไฟล์แนบ → ข้อความมัลติโมดัล)
รวมโมเดลที่รองรับรูปภาพอย่างน้อยหนึ่งรายการใน OPENCLAW_LIVE_GATEWAY_MODELS (ตัวแปร Claude/Gemini/OpenAI ที่รองรับวิชัน เป็นต้น) เพื่อทดสอบโพรบรูปภาพ
ตัวรวบรวม / Gateway ทางเลือก
หากคุณเปิดใช้คีย์ไว้ เรายังรองรับการทดสอบผ่าน:
- OpenRouter:
openrouter/...(มีหลายร้อยโมเดล; ใช้openclaw models scanเพื่อค้นหาตัวเลือกที่รองรับเครื่องมือ+รูปภาพ) - OpenCode:
opencode/...สำหรับ Zen และopencode-go/...สำหรับ Go (ยืนยันตัวตนผ่าน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(เอนด์พอยต์กำหนดเอง):minimax(คลาวด์/API) รวมถึงพร็อกซีที่เข้ากันได้กับ OpenAI/Anthropic ใด ๆ (LM Studio, vLLM, LiteLLM เป็นต้น)
ข้อมูลลับ (ห้ามคอมมิต)
การทดสอบไลฟ์ค้นหาข้อมูลลับด้วยวิธีเดียวกับที่ 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ออก เพื่อให้โพรบไม่แตะเวิร์กสเปซจริงบนโฮสต์ของคุณ
หากคุณต้องการพึ่งพาคีย์จากสภาพแวดล้อม (เช่น ส่งออกไว้ใน ~/.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 แบบใช้งานจริง
- การทดสอบ:
extensions/byteplus/live.test.ts - เปิดใช้:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - การแทนที่โมเดลแบบไม่บังคับ:
BYTEPLUS_CODING_MODEL=ark-code-latest
สื่อเวิร์กโฟลว์ ComfyUI แบบใช้งานจริง
- การทดสอบ:
extensions/comfy/comfy.live.test.ts - เปิดใช้:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - ขอบเขต:
- ทดสอบพาธภาพ วิดีโอ และ
music_generateของ comfy ที่บันเดิลมา - ข้ามแต่ละความสามารถ เว้นแต่มีการกำหนดค่า
plugins.entries.comfy.config.<capability> - มีประโยชน์หลังจากเปลี่ยนการส่งเวิร์กโฟลว์ comfy, การโพล, การดาวน์โหลด หรือการลงทะเบียน Plugin
- ทดสอบพาธภาพ วิดีโอ และ
การสร้างภาพแบบใช้งานจริง
- การทดสอบ:
test/image-generation.runtime.live.test.ts - คำสั่ง:
pnpm test:live test/image-generation.runtime.live.test.ts - ชุดทดสอบ:
pnpm test:live:media image - ขอบเขต:
- แจกแจง Plugin ผู้ให้บริการสร้างภาพที่ลงทะเบียนไว้ทุกตัว
- โหลดตัวแปรสภาพแวดล้อมของผู้ให้บริการที่ขาดหายจากเชลล์ล็อกอินของคุณ (
~/.profile) ก่อนโพรบ - ใช้คีย์ API แบบใช้งานจริง/จากสภาพแวดล้อมก่อนโปรไฟล์การยืนยันตัวตนที่เก็บไว้โดยค่าเริ่มต้น ดังนั้นคีย์ทดสอบเก่าใน
auth-profiles.jsonจะไม่บดบังข้อมูลประจำตัวจริงในเชลล์ - ข้ามผู้ให้บริการที่ไม่มีการยืนยันตัวตน/โปรไฟล์/โมเดลที่ใช้งานได้
- รันผู้ให้บริการแต่ละรายที่กำหนดค่าไว้ผ่านรันไทม์การสร้างภาพที่ใช้ร่วมกัน:
<provider>:generate<provider>:editเมื่อผู้ให้บริการประกาศว่ารองรับการแก้ไข
- ผู้ให้บริการที่บันเดิลมาปัจจุบันซึ่งครอบคลุม:
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- การจำกัดขอบเขตแบบไม่บังคับ:
OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google,openrouter,xai"OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="deepinfra"OPENCLAW_LIVE_IMAGE_GENERATION_MODELS="openai/gpt-image-2,google/gemini-3.1-flash-image-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เพื่อบังคับใช้การยืนยันตัวตนจากที่เก็บโปรไฟล์และละเว้นการแทนที่ที่มาจากสภาพแวดล้อมเท่านั้น
สำหรับพาธ CLI ที่จัดส่ง ให้เพิ่มการทดสอบควัน infer หลังจากการทดสอบจริงของผู้ให้บริการ/รันไทม์ผ่านแล้ว:
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
ส่วนนี้ครอบคลุมการแยกวิเคราะห์อาร์กิวเมนต์ของ CLI, การแปลงค่าการกำหนดค่า/เอเจนต์เริ่มต้น, การเปิดใช้งาน Plugin ที่บันเดิลมา, รันไทม์การสร้างภาพที่ใช้ร่วมกัน และคำขอจริงไปยังผู้ให้บริการ คาดว่าการพึ่งพาของ Plugin จะมีอยู่ก่อนโหลดรันไทม์
การสร้างเพลงแบบใช้งานจริง
- การทดสอบ:
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
- โหลดตัวแปรสภาพแวดล้อมของผู้ให้บริการจากเชลล์ล็อกอินของคุณ (
~/.profile) ก่อนโพรบ - ใช้คีย์ API แบบใช้งานจริง/จากสภาพแวดล้อมก่อนโปรไฟล์การยืนยันตัวตนที่เก็บไว้โดยค่าเริ่มต้น ดังนั้นคีย์ทดสอบเก่าใน
auth-profiles.jsonจะไม่บดบังข้อมูลประจำตัวจริงในเชลล์ - ข้ามผู้ให้บริการที่ไม่มีการยืนยันตัวตน/โปรไฟล์/โมเดลที่ใช้งานได้
- รันโหมดรันไทม์ที่ประกาศไว้ทั้งสองโหมดเมื่อพร้อมใช้งาน:
generateด้วยอินพุตที่มีเฉพาะพรอมต์editเมื่อผู้ให้บริการประกาศcapabilities.edit.enabled
- ความครอบคลุมของเลนที่ใช้ร่วมกันปัจจุบัน:
google:generate,editminimax:generatecomfy: ไฟล์ Comfy แบบใช้งานจริงแยกต่างหาก ไม่ใช่การกวาดแบบใช้ร่วมกันนี้
- การจำกัดขอบเขตแบบไม่บังคับ:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- พฤติกรรมการยืนยันตัวตนแบบไม่บังคับ:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1เพื่อบังคับใช้การยืนยันตัวตนจากที่เก็บโปรไฟล์และละเว้นการแทนที่ที่มาจากสภาพแวดล้อมเท่านั้น
การสร้างวิดีโอแบบใช้งานจริง
- การทดสอบ:
extensions/video-generation-providers.live.test.ts - เปิดใช้:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - ชุดทดสอบ:
pnpm test:live:media video - ขอบเขต:
- ทดสอบพาธผู้ให้บริการสร้างวิดีโอที่บันเดิลมาและใช้ร่วมกัน
- ค่าเริ่มต้นคือพาธทดสอบควันที่ปลอดภัยสำหรับรีลีส: ผู้ให้บริการที่ไม่ใช่ FAL, คำขอ text-to-video หนึ่งรายการต่อผู้ให้บริการ, พรอมต์กุ้งล็อบสเตอร์หนึ่งวินาที และขีดจำกัดการดำเนินการต่อผู้ให้บริการจาก
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000โดยค่าเริ่มต้น) - ข้าม FAL โดยค่าเริ่มต้นเพราะเวลาแฝงของคิวฝั่งผู้ให้บริการอาจครอบงำเวลารีลีส; ส่ง
--video-providers falหรือOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"เพื่อรันอย่างชัดเจน - โหลดตัวแปรสภาพแวดล้อมของผู้ให้บริการจากเชลล์ล็อกอินของคุณ (
~/.profile) ก่อนโพรบ - ใช้คีย์ API แบบใช้งานจริง/จากสภาพแวดล้อมก่อนโปรไฟล์การยืนยันตัวตนที่เก็บไว้โดยค่าเริ่มต้น ดังนั้นคีย์ทดสอบเก่าใน
auth-profiles.jsonจะไม่บดบังข้อมูลประจำตัวจริงในเชลล์ - ข้ามผู้ให้บริการที่ไม่มีการยืนยันตัวตน/โปรไฟล์/โมเดลที่ใช้งานได้
- รันเฉพาะ
generateโดยค่าเริ่มต้น - ตั้งค่า
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1เพื่อรันโหมดแปลงที่ประกาศไว้ด้วยเมื่อพร้อมใช้งาน:imageToVideoเมื่อผู้ให้บริการประกาศcapabilities.imageToVideo.enabledและผู้ให้บริการ/โมเดลที่เลือกยอมรับอินพุตภาพในเครื่องที่หนุนด้วยบัฟเฟอร์ในการกวาดแบบใช้ร่วมกันvideoToVideoเมื่อผู้ให้บริการประกาศcapabilities.videoToVideo.enabledและผู้ให้บริการ/โมเดลที่เลือกยอมรับอินพุตวิดีโอในเครื่องที่หนุนด้วยบัฟเฟอร์ในการกวาดแบบใช้ร่วมกัน
- ผู้ให้บริการ
imageToVideoที่ประกาศไว้แต่ถูกข้ามในปัจจุบันในการกวาดแบบใช้ร่วมกัน: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ที่ใช้ฟิกซ์เจอร์ URL ภาพระยะไกลโดยค่าเริ่มต้น
- ความครอบคลุม
videoToVideoแบบใช้งานจริงปัจจุบัน:runwayเฉพาะเมื่อโมเดลที่เลือกคือrunway/gen4_aleph
- ผู้ให้บริการ
videoToVideoที่ประกาศไว้แต่ถูกข้ามในปัจจุบันในการกวาดแบบใช้ร่วมกัน:alibaba,qwen,xaiเพราะพาธเหล่านั้นปัจจุบันต้องใช้ URL อ้างอิงhttp(s)/ MP4 ระยะไกลgoogleเพราะเลน Gemini/Veo ที่ใช้ร่วมกันปัจจุบันใช้อินพุตที่หนุนด้วยบัฟเฟอร์ในเครื่อง และพาธนั้นไม่ได้รับการยอมรับในการกวาดแบบใช้ร่วมกันopenaiเพราะเลนที่ใช้ร่วมกันปัจจุบันไม่มีการรับประกันการเข้าถึงวิดีโอ 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=""เพื่อรวมผู้ให้บริการทุกตัวในการกวาดเริ่มต้น รวมถึง FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000เพื่อลดขีดจำกัดการดำเนินการของแต่ละผู้ให้บริการสำหรับการรันทดสอบควันแบบเข้มงวด
- พฤติกรรมการยืนยันตัวตนแบบไม่บังคับ:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1เพื่อบังคับใช้การยืนยันตัวตนจากที่เก็บโปรไฟล์และละเว้นการแทนที่ที่มาจากสภาพแวดล้อมเท่านั้น
ชุดทดสอบสื่อแบบใช้งานจริง
- คำสั่ง:
pnpm test:live:media - วัตถุประสงค์:
- รันชุดทดสอบจริงของภาพ เพลง และวิดีโอที่ใช้ร่วมกันผ่านจุดเข้าใช้งานแบบเนทีฟของรีโปเพียงจุดเดียว
- โหลดตัวแปรสภาพแวดล้อมของผู้ให้บริการที่ขาดหายจาก
~/.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