Testing
آزمون: مجموعههای زنده
برای شروع سریع، اجراکنندههای QA، مجموعههای واحد/یکپارچهسازی، و جریانهای Docker، آزمون را ببینید. این صفحه مجموعههای آزمون زنده (دارای تماس شبکهای) را پوشش میدهد: ماتریس مدل، Backendهای CLI، ACP، و آزمونهای زنده ارائهدهنده رسانه، بههمراه مدیریت اعتبارنامهها.
زنده: دستورهای سلامت سریع پروفایل محلی
قبل از بررسیهای زنده موردی، ~/.profile را source کنید تا کلیدهای ارائهدهنده و مسیرهای ابزار محلی با shell شما هماهنگ باشند:
source ~/.profile
سلامت سریع رسانه امن:
pnpm openclaw infer tts convert --local --json \
--text "OpenClaw live smoke." \
--output /tmp/openclaw-live-smoke.mp3
سلامت سریع آمادگی تماس صوتی امن:
pnpm openclaw voicecall setup --json
pnpm openclaw voicecall smoke --to "+15555550123"
voicecall smoke یک اجرای آزمایشی خشک است، مگر اینکه --yes نیز وجود داشته باشد. فقط وقتی --yes را استفاده کنید که عمدا میخواهید یک تماس اعلان واقعی برقرار کنید. برای Twilio، Telnyx، و Plivo، بررسی آمادگی موفق به یک URL عمومی Webhook نیاز دارد؛ جایگزینهای local loopback یا خصوصی فقط-محلی عمدا رد میشوند.
زنده: پیمایش قابلیتهای Node اندروید
- آزمون:
src/gateway/android-node.capabilities.live.test.ts - اسکریپت:
pnpm android:test:integration - هدف: فراخوانی هر دستوری که در حال حاضر توسط یک Node اندروید متصل اعلام شده و بررسی رفتار قرارداد دستور.
- دامنه:
- راهاندازی دستی/دارای پیششرط (این مجموعه برنامه را نصب/اجرا/pair نمیکند).
- اعتبارسنجی دستوربهدستور
node.invokeدر Gateway برای Node اندروید انتخابشده.
- پیشراهاندازی لازم:
- برنامه اندروید از قبل به Gateway متصل و pair شده باشد.
- برنامه در foreground نگه داشته شود.
- مجوزها/رضایت capture برای قابلیتهایی که انتظار دارید قبول شوند، اعطا شده باشد.
- بازنویسیهای اختیاری هدف:
OPENCLAW_ANDROID_NODE_IDیاOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- جزئیات کامل راهاندازی اندروید: برنامه اندروید
زنده: سلامت سریع مدل (کلیدهای پروفایل)
آزمونهای زنده به دو لایه تقسیم شدهاند تا بتوانیم خرابیها را ایزوله کنیم:
- «مدل مستقیم» به ما میگوید ارائهدهنده/مدل اساسا با کلید دادهشده میتواند پاسخ دهد.
- «سلامت سریع Gateway» به ما میگوید کل pipeline کامل Gateway+عامل برای آن مدل کار میکند (نشستها، تاریخچه، ابزارها، سیاست sandbox، و غیره).
لایه ۱: تکمیل مستقیم مدل (بدون Gateway)
- آزمون:
src/agents/models.profiles.live.test.ts - هدف:
- فهرستکردن مدلهای کشفشده
- استفاده از
getApiKeyForModelبرای انتخاب مدلهایی که برایشان اعتبارنامه دارید - اجرای یک تکمیل کوچک برای هر مدل (و رگرسیونهای هدفمند در صورت نیاز)
- روش فعالسازی:
pnpm test:live(یاOPENCLAW_LIVE_TEST=1اگر Vitest را مستقیم فراخوانی میکنید)
- برای اجرای واقعی این مجموعه،
OPENCLAW_LIVE_MODELS=modern(یاall، نام مستعار modern) را تنظیم کنید؛ در غیر این صورت، برای اینکهpnpm test:liveروی سلامت سریع Gateway متمرکز بماند، skip میشود - روش انتخاب مدلها:
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نام مستعار allowlist مدرن است- یا
OPENCLAW_LIVE_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,..."(allowlist جداشده با ویرگول) - پیمایشهای modern/all بهصورت پیشفرض از یک سقف گزینشی با سیگنال بالا استفاده میکنند؛ برای پیمایش مدرن کامل
OPENCLAW_LIVE_MAX_MODELS=0یا برای سقف کوچکتر یک عدد مثبت تنظیم کنید. - پیمایشهای کامل از
OPENCLAW_LIVE_TEST_TIMEOUT_MSبرای timeout کل آزمون مدل مستقیم استفاده میکنند. پیشفرض: ۶۰ دقیقه. - probeهای مدل مستقیم بهصورت پیشفرض با موازیسازی ۲۰تایی اجرا میشوند؛ برای بازنویسی،
OPENCLAW_LIVE_MODEL_CONCURRENCYرا تنظیم کنید.
- روش انتخاب ارائهدهندهها:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(allowlist جداشده با ویرگول)
- کلیدها از کجا میآیند:
- بهصورت پیشفرض: ذخیرهگاه پروفایل و fallbackهای env
- برای الزام فقط به ذخیرهگاه پروفایل،
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1را تنظیم کنید
- دلیل وجود این مورد:
- «API ارائهدهنده خراب است / کلید نامعتبر است» را از «pipeline عامل Gateway خراب است» جدا میکند
- رگرسیونهای کوچک و ایزوله را در خود دارد (مثال: بازپخش reasoning در OpenAI Responses/Codex Responses + جریانهای tool-call)
لایه ۲: سلامت سریع Gateway + عامل توسعه (کاری که "@openclaw" واقعا انجام میدهد)
- آزمون:
src/gateway/gateway-models.profiles.live.test.ts - هدف:
- بالا آوردن یک Gateway درونپردازشی
- ایجاد/patch کردن یک نشست
agent:dev:*(بازنویسی مدل در هر اجرا) - پیمایش مدلهای دارای کلید و بررسی:
- پاسخ «معنادار» (بدون ابزار)
- یک فراخوانی ابزار واقعی کار میکند (probe خواندن)
- probeهای ابزار اضافی اختیاری (probe اجرا+خواندن)
- مسیرهای رگرسیون OpenAI (فقط-tool-call → پیگیری) همچنان کار میکنند
- جزئیات probe (تا بتوانید خرابیها را سریع توضیح دهید):
- probe
read: آزمون یک فایل nonce در workspace مینویسد و از عامل میخواهد آن راreadکند و nonce را echo کند. - probe
exec+read: آزمون از عامل میخواهد باexecیک nonce را در فایل موقت بنویسد، سپس آن راreadکند. - probe تصویر: آزمون یک PNG تولیدشده (cat + کد تصادفی) را attach میکند و انتظار دارد مدل
cat <CODE>را برگرداند. - مرجع پیادهسازی:
src/gateway/gateway-models.profiles.live.test.tsوsrc/gateway/live-image-probe.ts.
- probe
- روش فعالسازی:
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نام مستعار allowlist مدرن است- یا برای محدودکردن،
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(یا فهرست جداشده با ویرگول) را تنظیم کنید - پیمایشهای Gateway در حالت modern/all بهصورت پیشفرض از یک سقف گزینشی با سیگنال بالا استفاده میکنند؛ برای پیمایش مدرن کامل
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0یا برای سقف کوچکتر یک عدد مثبت تنظیم کنید.
- روش انتخاب ارائهدهندهها (برای اجتناب از «همهچیز OpenRouter»):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(allowlist جداشده با ویرگول)
- probeهای ابزار + تصویر در این آزمون زنده همیشه روشناند:
- probe
read+ probeexec+read(فشار ابزار) - وقتی مدل پشتیبانی از ورودی تصویر را اعلام کند، probe تصویر اجرا میشود
- جریان (در سطح بالا):
- آزمون یک PNG کوچک با "CAT" + کد تصادفی تولید میکند (
src/gateway/live-image-probe.ts) - آن را از طریق
agentوattachments: [{ mimeType: "image/png", content: "<base64>" }]میفرستد - Gateway پیوستها را به
images[]parse میکند (src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - عامل embedded یک پیام کاربر چندوجهی را به مدل forward میکند
- assertion: پاسخ شامل
cat+ کد باشد (تحمل OCR: خطاهای جزئی مجازند)
- آزمون یک PNG کوچک با "CAT" + کد تصادفی تولید میکند (
- probe
زنده: سلامت سریع Backend CLI (Claude، Codex، Gemini، یا CLIهای محلی دیگر)
- آزمون:
src/gateway/gateway-cli-backend.live.test.ts - هدف: اعتبارسنجی pipeline Gateway + عامل با استفاده از یک Backend CLI محلی، بدون دستزدن به پیکربندی پیشفرض شما.
- پیشفرضهای سلامت سریع مخصوص Backend در تعریف
cli-backend.tsمتعلق به Plugin مالک قرار دارند. - فعالسازی:
pnpm test:live(یاOPENCLAW_LIVE_TEST=1اگر Vitest را مستقیم فراخوانی میکنید)OPENCLAW_LIVE_CLI_BACKEND=1
- پیشفرضها:
- ارائهدهنده/مدل پیشفرض:
claude-cli/claude-sonnet-4-6 - رفتار دستور/args/تصویر از metadata متعلق به Plugin Backend CLI مالک میآید.
- ارائهدهنده/مدل پیشفرض:
- بازنویسیها (اختیاری):
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برای ارسال یک پیوست تصویر واقعی (مسیرها داخل prompt تزریق میشوند). recipeهای Docker بهصورت پیشفرض این را خاموش میگذارند مگر اینکه صریحا درخواست شود.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"برای پاسدادن مسیرهای فایل تصویر بهعنوان args در CLI بهجای تزریق prompt.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(یا"list") برای کنترل نحوه پاسدادن args تصویر وقتیIMAGE_ARGتنظیم شده است.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1برای ارسال نوبت دوم و اعتبارسنجی جریان resume.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1برای ورود اختیاری به probe تداوم همان نشست Claude Sonnet -> Opus وقتی مدل انتخابشده از هدف switch پشتیبانی میکند. recipeهای Docker برای قابلیت اتکای تجمعی بهصورت پیشفرض این را خاموش میگذارند.OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1برای ورود اختیاری به probe MCP/tool loopback. recipeهای 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
سلامت سریع ارزان پیکربندی MCP در Gemini:
OPENCLAW_LIVE_TEST=1 \
pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.ts
این از Gemini نمیخواهد پاسخی تولید کند. همان تنظیمات سیستمی را که OpenClaw به Gemini میدهد مینویسد، سپس gemini --debug mcp list را اجرا میکند تا ثابت کند یک سرور ذخیرهشده با transport: "streamable-http" به شکل HTTP MCP در Gemini نرمالسازی میشود و میتواند به یک سرور محلی streamable-HTTP MCP متصل شود.
recipe Docker:
pnpm test:docker:live-cli-backend
recipeهای 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قرار دارد. - سلامت سریع Backend CLI زنده را داخل image Docker مخزن بهعنوان کاربر غیر-root با نام
nodeاجرا میکند. - metadata سلامت سریع CLI را از extension مالک resolve میکند، سپس package 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به OAuth قابلحمل اشتراک Claude Code نیاز دارد، یا از طریق~/.claude/.credentials.jsonباclaudeAiOauth.subscriptionTypeیاCLAUDE_CODE_OAUTH_TOKENازclaude setup-token. ابتدا اجرای مستقیمclaude -pدر Docker را ثابت میکند، سپس دو نوبت Backend CLI در Gateway را بدون حفظ env vars کلید API Anthropic اجرا میکند. این lane اشتراک، probeهای MCP/tool و تصویر Claude را بهصورت پیشفرض غیرفعال میکند، چون Claude در حال حاضر استفاده از برنامههای شخص ثالث را بهجای محدودیتهای معمول طرح اشتراک، از مسیر صورتحساب extra-usage عبور میدهد.- سلامت سریع Backend CLI زنده اکنون همان جریان end-to-end را برای Claude، Codex، و Gemini اجرا میکند: نوبت متن، نوبت طبقهبندی تصویر، سپس فراخوانی ابزار MCP
cronکه از طریق Gateway CLI تأیید میشود. - سلامت سریع پیشفرض Claude همچنین نشست را از Sonnet به Opus patch میکند و تأیید میکند نشست resumeشده هنوز یک یادداشت قبلی را به خاطر دارد.
زنده: دسترسیپذیری proxy HTTP/2 برای APNs
- آزمون:
src/infra/push-apns-http2.live.test.ts - هدف: تونلزدن از طریق یک proxy محلی HTTP CONNECT به endpoint sandbox APNs اپل، ارسال درخواست اعتبارسنجی HTTP/2 در APNs، و بررسی اینکه پاسخ واقعی
403 InvalidProviderTokenاپل از مسیر 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
زنده: سلامت سریع bind در ACP (/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
- پشتانه 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
- یادداشتها:
- این مسیر از سطح Gateway به نام
chat.sendبا فیلدهای مسیر مبدأ ساختگیِ فقط ویژه مدیر استفاده میکند تا آزمونها بتوانند زمینه کانال پیام را بدون وانمود کردن به تحویل بیرونی پیوست کنند. - وقتی
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDتنظیم نشده باشد، آزمون از رجیستری داخلی عامل در Plugin تعبیهشدهacpxبرای عامل هارنس ACP انتخابشده استفاده میکند. - ایجاد MCP مربوط به Cron نشست متصلشده بهطور پیشفرض با بهترین تلاش انجام میشود، چون هارنسهای ACP بیرونی میتوانند پس از گذشتن اثبات اتصال/تصویر، فراخوانیهای MCP را لغو کنند؛ برای سختگیرانه کردن آن وارسی Cron پس از اتصال،
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1را تنظیم کنید.
- این مسیر از سطح Gateway به نام
نمونه:
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را source میکند، مواد احراز هویت CLI متناظر را داخل کانتینر آماده میکند، سپس در صورت نبود، CLI زنده درخواستشده (@anthropic-ai/claude-code،@openai/codex، Factory Droid از طریقhttps://app.factory.ai/cli،@google/gemini-cli، یاopencode-ai) را نصب میکند. خود پشتانه ACP بسته تعبیهشدهacpx/runtimeاز Plugin رسمیacpxاست. - گونه Docker مربوط به Droid،
~/.factoryرا برای تنظیمات آماده میکند،FACTORY_API_KEYرا عبور میدهد، و به آن کلید API نیاز دارد چون احراز هویت OAuth/keyring محلی Factory به کانتینر قابل حمل نیست. این گونه از ورودی رجیستری داخلی ACPX یعنیdroid exec --output-format acpاستفاده میکند. - گونه Docker مربوط به OpenCode یک مسیر رگرسیون سختگیرانه تکعاملی است. پس از source کردن
~/.profile، یک مدل پیشفرض موقتOPENCODE_CONFIG_CONTENTرا ازOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODELمینویسد (پیشفرضopencode/kimi-k2.6) وpnpm test:docker:live-acp-bind:opencodeبهجای پذیرش پرش عمومی پس از اتصال، به رونوشت دستیار متصلشده نیاز دارد. - فراخوانیهای مستقیم CLI مربوط به
acpxفقط مسیر دستی/راهحل جایگزین برای مقایسه رفتار بیرون از Gateway هستند. دودآزمون اتصال ACP در Docker پشتانه زماناجرای تعبیهشدهacpxدر OpenClaw را تمرین میدهد.
زنده: دودآزمون هارنس سرور برنامه Codex
- هدف: اعتبارسنجی هارنس Codex تحت مالکیت Plugin از طریق متد معمول Gateway
agent:- بارگذاری Plugin همراه
codex - انتخاب
OPENCLAW_AGENT_RUNTIME=codex - ارسال نخستین نوبت عامل Gateway به
openai/gpt-5.5با اجبار هارنس Codex - ارسال نوبت دوم به همان نشست OpenClaw و بررسی اینکه نخ سرور برنامه میتواند ادامه پیدا کند
- اجرای
/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 نتواند با بازگشت بیصدای fallback به PI قبول شود. - احراز هویت: احراز هویت سرور برنامه 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نصبشده را source میکند،OPENAI_API_KEYرا عبور میدهد، فایلهای احراز هویت CLI مربوط به Codex را در صورت وجود کپی میکند،@openai/codexرا در یک پیشوند 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 استفاده میکند، بنابراین نامهای مستعار قدیمی یا fallback به 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 (کلید API Gemini + 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/...از API مربوط به Gemini استفاده میکند (کلید API).google-antigravity/...از پل OAuth مربوط به Antigravity استفاده میکند (نقطه پایانی عامل به سبک Cloud Code Assist).google-gemini-cli/...از CLI محلی Gemini روی دستگاه شما استفاده میکند (احراز هویت جداگانه + ظرایف ابزاردهی).- Gemini API در برابر Gemini CLI:
- API: OpenClaw، API میزبانیشده Gemini متعلق به Google را از طریق HTTP فراخوانی میکند (کلید API / احراز هویت پروفایل)؛ این همان چیزی است که بیشتر کاربران از "Gemini" منظور دارند.
- CLI: OpenClaw به یک باینری محلی
geminishell out میکند؛ این باینری احراز هویت خودش را دارد و میتواند متفاوت رفتار کند (پشتیبانی streaming/ابزار/ناهمگونی نسخه).
زنده: ماتریس مدل (آنچه پوشش میدهیم)
هیچ «فهرست مدل 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/… (یک مدل توانمند در «ابزارها» که فعال کردهاید انتخاب کنید) - 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(cloud/API)، بهعلاوه هر پراکسی سازگار با OpenAI/Anthropic (LM Studio، vLLM، LiteLLM، و غیره)
اعتبارنامهها (هرگز commit نکنید)
آزمونهای زنده اعتبارنامهها را همانطور کشف میکنند که CLI کشف میکند. پیامدهای عملی:
-
اگر CLI کار میکند، آزمونهای زنده باید همان کلیدها را پیدا کنند.
-
اگر یک آزمون زنده میگوید «اعتبارنامهای نیست»، همانطور اشکالزدایی کنید که
openclaw models list/ انتخاب مدل را اشکالزدایی میکنید. -
پروفایلهای احراز هویت هر عامل:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(در آزمونهای زنده منظور از «کلیدهای پروفایل» همین است) -
پیکربندی:
~/.openclaw/openclaw.json(یاOPENCLAW_CONFIG_PATH) -
پوشهٔ وضعیت قدیمی:
~/.openclaw/credentials/(در صورت وجود، به خانهٔ زندهٔ مرحلهبندیشده کپی میشود، اما مخزن اصلی کلیدهای پروفایل نیست) -
اجراهای زندهٔ محلی بهطور پیشفرض پیکربندی فعال، فایلهای
auth-profiles.jsonهر عامل،credentials/قدیمی، و پوشههای احراز هویت CLI خارجی پشتیبانیشده را در یک خانهٔ آزمون موقت کپی میکنند؛ خانههای زندهٔ مرحلهبندیشده ازworkspace/وsandboxes/صرفنظر میکنند، و بازنویسیهای مسیرagents.*.workspace/agentDirحذف میشوند تا probeها از فضای کاری واقعی میزبان شما دور بمانند.
اگر میخواهید به کلیدهای env تکیه کنید (برای مثال export شده در ~/.profile)، آزمونهای محلی را پس از source ~/.profile اجرا کنید، یا از اجراکنندههای Docker زیر استفاده کنید (آنها میتوانند ~/.profile را داخل کانتینر mount کنند).
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، 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های provider ثبتشدهٔ تولید تصویر را فهرست میکند
- پیش از probe، متغیرهای env مفقود provider را از shell ورود شما (
~/.profile) بارگذاری میکند - بهطور پیشفرض کلیدهای API زنده/env را مقدم بر پروفایلهای احراز هویت ذخیرهشده استفاده میکند، بنابراین کلیدهای آزمون قدیمی در
auth-profiles.jsonاعتبارنامههای واقعی shell را پنهان نمیکنند - providerهایی را که احراز هویت/پروفایل/مدل قابل استفاده ندارند رد میکند
- هر provider پیکربندیشده را از مسیر runtime مشترک تولید تصویر اجرا میکند:
<provider>:generate<provider>:editوقتی provider پشتیبانی از ویرایش را اعلام کند
- providerهای همراه فعلی تحت پوشش:
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
برای مسیر CLI منتشرشده، پس از موفق شدن آزمون زندهٔ provider/runtime، یک smoke از نوع 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
این مورد parsing آرگومانهای CLI، حل پیکربندی/عامل پیشفرض، فعالسازی Plugin همراه، runtime مشترک تولید تصویر، و درخواست زندهٔ provider را پوشش میدهد. انتظار میرود وابستگیهای Plugin پیش از بارگذاری 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 - دامنه:
- مسیر provider مشترک همراه تولید موسیقی را اجرا میکند
- در حال حاضر Google و MiniMax را پوشش میدهد
- پیش از probe، متغیرهای env مربوط به provider را از shell ورود شما (
~/.profile) بارگذاری میکند - بهطور پیشفرض کلیدهای API زنده/env را مقدم بر پروفایلهای احراز هویت ذخیرهشده استفاده میکند، بنابراین کلیدهای آزمون قدیمی در
auth-profiles.jsonاعتبارنامههای واقعی shell را پنهان نمیکنند - providerهایی را که احراز هویت/پروفایل/مدل قابل استفاده ندارند رد میکند
- هر دو حالت runtime اعلامشده را در صورت موجود بودن اجرا میکند:
generateبا ورودی فقط prompteditوقتی provider مقدار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 - دامنه:
- مسیر provider مشترک همراه تولید ویدیو را اجرا میکند
- بهطور پیشفرض از مسیر smoke مناسب انتشار استفاده میکند: providerهای غیر FAL، یک درخواست متنبهویدیو برای هر provider، prompt یکثانیهای lobster، و سقف عملیات برای هر provider از
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000بهطور پیشفرض) - FAL را بهطور پیشفرض رد میکند چون latency صف سمت provider میتواند زمان انتشار را غالب کند؛ برای اجرای صریح آن
--video-providers falیاOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"را ارسال کنید - پیش از probe، متغیرهای env مربوط به provider را از shell ورود شما (
~/.profile) بارگذاری میکند - بهطور پیشفرض کلیدهای API زنده/env را مقدم بر پروفایلهای احراز هویت ذخیرهشده استفاده میکند، بنابراین کلیدهای آزمون قدیمی در
auth-profiles.jsonاعتبارنامههای واقعی shell را پنهان نمیکنند - providerهایی را که احراز هویت/پروفایل/مدل قابل استفاده ندارند رد میکند
- بهطور پیشفرض فقط
generateرا اجرا میکند - برای اجرای حالتهای transform اعلامشده در صورت موجود بودن،
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1را تنظیم کنید:imageToVideoوقتی provider مقدارcapabilities.imageToVideo.enabledرا اعلام کند و provider/مدل انتخابشده در sweep مشترک ورودی تصویر محلی مبتنی بر buffer را بپذیردvideoToVideoوقتی provider مقدارcapabilities.videoToVideo.enabledرا اعلام کند و provider/مدل انتخابشده در sweep مشترک ورودی ویدیوی محلی مبتنی بر buffer را بپذیرد
- providerهای
imageToVideoاعلامشده اما ردشدهٔ فعلی در sweep مشترک:vydraچونveo3همراه فقط متنمحور است وklingهمراه به URL تصویر راهدور نیاز دارد
- پوشش مختص provider برای Vydra:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- آن فایل بهطور پیشفرض
veo3متنبهویدیو بهعلاوهٔ یک مسیرklingرا اجرا میکند که از fixture با URL تصویر راهدور استفاده میکند
- پوشش زندهٔ فعلی
videoToVideo:runwayفقط وقتی مدل انتخابشدهrunway/gen4_alephباشد
- providerهای
videoToVideoاعلامشده اما ردشدهٔ فعلی در sweep مشترک:alibaba،qwen،xaiچون این مسیرها در حال حاضر به URLهای مرجع راهدورhttp(s)/ MP4 نیاز دارندgoogleچون مسیر مشترک فعلی Gemini/Veo از ورودی محلی مبتنی بر buffer استفاده میکند و آن مسیر در sweep مشترک پذیرفته نمیشود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=""برای شامل کردن همهٔ providerها در sweep پیشفرض، از جمله FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000برای کاهش سقف هر عملیات provider جهت اجرای smoke تهاجمی
- رفتار احراز هویت اختیاری:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1برای اجباری کردن احراز هویت از مخزن پروفایل و نادیده گرفتن بازنویسیهای فقط env
ابزار آزمون رسانهٔ زنده
- دستور:
pnpm test:live:media - هدف:
- suiteهای زندهٔ مشترک تصویر، موسیقی، و ویدیو را از طریق یک entrypoint بومی repo اجرا میکند
- متغیرهای env مفقود provider را بهطور خودکار از
~/.profileبارگذاری میکند - بهطور پیشفرض هر suite را به providerهایی که در حال حاضر احراز هویت قابل استفاده دارند محدود میکند
- از
scripts/test-live.mjsدوباره استفاده میکند، بنابراین رفتار Heartbeat و حالت quiet سازگار میماند
- مثالها:
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
مرتبط
- آزمون - suiteهای واحد، یکپارچهسازی، QA، و Docker