حي: مسح قدرات Android node
- الاختبار:
src/gateway/android-node.capabilities.live.test.ts - السكربت:
pnpm android:test:integration - الهدف: استدعاء كل أمر مُعلن عنه حاليًا من Android node متصلة، والتحقق من سلوك عقد الأمر.
- النطاق:
- إعداد مسبق/يدوي (المجموعة لا تثبّت التطبيق ولا تشغّله ولا تقترنه).
- تحقق
node.invokeفي gateway لكل أمر على Android node المحددة.
- الإعداد المسبق المطلوب:
- أن يكون تطبيق Android متصلًا بالفعل ومقترنًا مع gateway.
- إبقاء التطبيق في المقدمة.
- منح الأذونات/موافقات الالتقاط للقدرات التي تتوقع نجاحها.
- تجاوزات الهدف الاختيارية:
OPENCLAW_ANDROID_NODE_IDأوOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- تفاصيل إعداد Android الكاملة: تطبيق Android
حي: smoke للنموذج (مفاتيح الملفات الشخصية)
تنقسم الاختبارات الحية إلى طبقتين حتى نتمكن من عزل الإخفاقات:- يوضح “النموذج المباشر” ما إذا كان المزوّد/النموذج يستطيع الرد أصلًا بالمفتاح المعطى.
- يوضح “Gateway smoke” ما إذا كان خط أنابيب gateway+agent الكامل يعمل لهذا النموذج (الجلسات، والسجل، والأدوات، وسياسة sandbox، وما إلى ذلك).
الطبقة 1: إكمال النموذج المباشر (من دون 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 smoke - كيفية اختيار النماذج:
OPENCLAW_LIVE_MODELS=modernلتشغيل قائمة السماح الحديثة (Opus/Sonnet 4.6+، وGPT-5.2 + Codex، وGemini 3، وGLM 4.7، وMiniMax M2.7، وGrok 4)OPENCLAW_LIVE_MODELS=allهو اسم بديل لقائمة السماح الحديثة- أو
OPENCLAW_LIVE_MODELS="openai/gpt-5.2,openai-codex/gpt-5.2,anthropic/claude-opus-4-6,..."(قائمة سماح مفصولة بفواصل) - تستخدم عمليات المسح modern/all افتراضيًا حدًا عالي الإشارة ومنتقى بعناية؛ اضبط
OPENCLAW_LIVE_MAX_MODELS=0لإجراء مسح حديث شامل أو قيمة موجبة لحد أصغر. - تستخدم عمليات المسح الشاملة
OPENCLAW_LIVE_TEST_TIMEOUT_MSكمهلة للمجموعة الكاملة لاختبار النموذج المباشر. الافتراضي: 60 دقيقة. - تعمل عمليات probe الخاصة بالنموذج المباشر بتوازٍ قدره 20 مسارًا افتراضيًا؛ استخدم
OPENCLAW_LIVE_MODEL_CONCURRENCYللتجاوز.
- كيفية اختيار المزوّدين:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(قائمة سماح مفصولة بفواصل)
- من أين تأتي المفاتيح:
- افتراضيًا: مخزن الملفات الشخصية والبدائل الاحتياطية من env
- اضبط
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1لفرض مخزن الملفات الشخصية فقط
- لماذا يوجد هذا:
- يفصل بين “واجهة API الخاصة بالمزوّد معطلة / المفتاح غير صالح” و“خط أنابيب وكيل gateway معطل”
- يحتوي على انحدارات صغيرة ومعزولة (مثال: تدفقات إعادة تشغيل reasoning في OpenAI Responses/Codex Responses + استدعاءات الأدوات)
الطبقة 2: Gateway + smoke لوكيل التطوير (ما يفعله “@openclaw” فعليًا)
- الاختبار:
src/gateway/gateway-models.profiles.live.test.ts - الهدف:
- تشغيل gateway داخل العملية
- إنشاء/ترقيع جلسة
agent:dev:*(مع تجاوز للنموذج في كل تشغيل) - التكرار على النماذج التي لها مفاتيح والتحقق من:
- استجابة “ذات معنى” (من دون أدوات)
- أن استدعاء أداة حقيقي يعمل (probe للقراءة)
- probes أدوات إضافية اختيارية (probe لـ exec+read)
- استمرار عمل مسارات الانحدار الخاصة بـ OpenAI (استدعاء أداة فقط → متابعة)
- تفاصيل الـ probe (حتى تتمكن من شرح الإخفاقات بسرعة):
readprobe: يكتب الاختبار ملف nonce داخل مساحة العمل ويطلب من الوكيلreadله وإرجاع nonce.exec+readprobe: يطلب الاختبار من الوكيل كتابة nonce عبرexecفي ملف مؤقت، ثمreadله مرة أخرى.- image probe: يرفق الاختبار ملف PNG مولّدًا (قط + رمز عشوائي) ويتوقع من النموذج إرجاع
cat <CODE>. - مرجع التنفيذ:
src/gateway/gateway-models.profiles.live.test.tsوsrc/gateway/live-image-probe.ts.
- كيفية التفعيل:
pnpm test:live(أوOPENCLAW_LIVE_TEST=1إذا كنت تستدعي Vitest مباشرة)
- كيفية اختيار النماذج:
- الافتراضي: قائمة السماح الحديثة (Opus/Sonnet 4.6+، وGPT-5.2 + Codex، وGemini 3، وGLM 4.7، وMiniMax M2.7، وGrok 4)
OPENCLAW_LIVE_GATEWAY_MODELS=allهو اسم بديل لقائمة السماح الحديثة- أو اضبط
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(أو قائمة مفصولة بفواصل) للتضييق - تستخدم عمليات المسح الحديثة/الكلية للـ gateway افتراضيًا حدًا عالي الإشارة ومنتقى بعناية؛ اضبط
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0لإجراء مسح حديث شامل أو قيمة موجبة لحد أصغر.
- كيفية اختيار المزوّدين (لتجنب “OpenRouter لكل شيء”):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(قائمة سماح مفصولة بفواصل)
- تكون probes الأدوات + الصور مفعّلة دائمًا في هذا الاختبار الحي:
readprobe +exec+readprobe (ضغط على الأدوات)- يعمل image probe عندما يعلن النموذج دعم إدخال الصور
- التدفق (نظرة عامة):
- يولّد الاختبار ملف PNG صغيرًا يحتوي على “CAT” + رمز عشوائي (
src/gateway/live-image-probe.ts) - يرسله عبر
agentباستخدامattachments: [{ mimeType: "image/png", content: "<base64>" }] - تقوم Gateway بتحليل المرفقات إلى
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - يمرر الوكيل المضمّن رسالة مستخدم متعددة الوسائط إلى النموذج
- التحقق: يحتوي الرد على
cat+ الرمز (يُسمح بأخطاء طفيفة في OCR)
- يولّد الاختبار ملف PNG صغيرًا يحتوي على “CAT” + رمز عشوائي (
provider/model الدقيقة)، شغّل:
حي: smoke لواجهة CLI الخلفية (Claude، أو Codex، أو Gemini، أو واجهات CLI محلية أخرى)
- الاختبار:
src/gateway/gateway-cli-backend.live.test.ts - الهدف: التحقق من خط أنابيب Gateway + agent باستخدام واجهة CLI خلفية محلية، من دون لمس الإعداد الافتراضي لديك.
- تعيش القيم الافتراضية الخاصة بـ smoke لكل واجهة خلفية مع تعريف
cli-backend.tsالخاص بالامتداد المالك. - التفعيل:
pnpm test:live(أوOPENCLAW_LIVE_TEST=1إذا كنت تستدعي Vitest مباشرة)OPENCLAW_LIVE_CLI_BACKEND=1
- القيم الافتراضية:
- المزوّد/النموذج الافتراضي:
claude-cli/claude-sonnet-4-6 - يأتي السلوك الخاص بالأمر/الوسائط/الصور من بيانات Plugin الخاصة بواجهة CLI الخلفية المالكة.
- المزوّد/النموذج الافتراضي:
- التجاوزات (اختيارية):
OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.2"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لإرسال مرفق صورة حقيقي (تُحقن المسارات في المطالبة).OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"لتمرير مسارات ملفات الصور كوسائط CLI بدلًا من حقنها في المطالبة.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(أو"list") للتحكم في كيفية تمرير وسائط الصور عندما يكونIMAGE_ARGمضبوطًا.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1لإرسال دور ثانٍ والتحقق من تدفق الاستئناف.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=0لتعطيل probe الافتراضي لاستمرارية الجلسة نفسها من Claude Sonnet إلى Opus (اضبطه على1لفرض تفعيله عندما يدعم النموذج المحدد هدف تبديل).
- يوجد Docker runner في
scripts/test-live-cli-backend-docker.sh. - يشغّل smoke الخاص بواجهة CLI الخلفية الحية داخل صورة Docker الخاصة بالمستودع كمستخدم
nodeغير الجذر. - يحل بيانات smoke الخاصة بواجهة CLI من الامتداد المالك، ثم يثبّت حزمة CLI المناسبة لنظام Linux (
@anthropic-ai/claude-codeأو@openai/codexأو@google/gemini-cli) ضمن بادئة قابلة للكتابة ومخزنة مؤقتًا في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، ثم يشغّل دورين لواجهة Gateway CLI الخلفية من دون الحفاظ على متغيرات env الخاصة بمفتاح Anthropic API. ويعطّل هذا المسار الخاص بالاشتراك probes الخاصة بـ Claude MCP/tool والصور افتراضيًا لأن Claude يوجّه حاليًا استخدام تطبيقات الجهات الثالثة عبر فوترة استخدام إضافي بدل حدود خطة الاشتراك العادية. - أصبح smoke الخاص بواجهة CLI الخلفية الحية الآن يمارس التدفق الكامل نفسه من البداية إلى النهاية لكل من Claude وCodex وGemini: دور نصي، ثم دور تصنيف صورة، ثم استدعاء أداة MCP
cronيتم التحقق منه عبر gateway CLI. - كما يقوم smoke الافتراضي لـ Claude بترقيع الجلسة من Sonnet إلى Opus ويتحقق من أن الجلسة المستأنفة ما تزال تتذكر ملاحظة سابقة.
حي: smoke لربط ACP (/acp spawn ... --bind here)
- الاختبار:
src/gateway/gateway-acp-bind.live.test.ts - الهدف: التحقق من تدفق ربط المحادثة الحقيقي في ACP مع وكيل ACP حي:
- إرسال
/acp spawn <agent> --bind here - ربط محادثة اصطناعية لقناة رسائل في مكانها
- إرسال متابعة عادية على المحادثة نفسها
- التحقق من أن المتابعة تصل إلى transcript الجلسة المرتبطة بـ 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=geminiOPENCLAW_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.2OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.2
- ملاحظات:
- يستخدم هذا المسار سطح
chat.sendفي gateway مع حقول originating-route اصطناعية مخصصة للمشرف فقط حتى تتمكن الاختبارات من إرفاق سياق قناة الرسائل من دون ادعاء التسليم خارجيًا. - عندما لا تكون
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDمضبوطة، يستخدم الاختبار سجل الوكلاء المضمّن في Pluginacpxلوكيل ACP harness المحدد.
- يستخدم هذا المسار سطح
- يوجد Docker runner في
scripts/test-live-acp-bind-docker.sh. - افتراضيًا، يشغّل smoke ربط ACP على جميع وكلاء CLI الحية المدعومة بالتتابع:
claude، ثمcodex، ثمgemini. - استخدم
OPENCLAW_LIVE_ACP_BIND_AGENTS=claudeأوOPENCLAW_LIVE_ACP_BIND_AGENTS=codexأوOPENCLAW_LIVE_ACP_BIND_AGENTS=geminiلتضييق المصفوفة. - يقوم بتحميل
~/.profile، وتجهيز مواد المصادقة الخاصة بواجهة CLI المطابقة داخل الحاوية، وتثبيتacpxضمن بادئة npm قابلة للكتابة، ثم يثبّت واجهة CLI الحية المطلوبة (@anthropic-ai/claude-codeأو@openai/codexأو@google/gemini-cli) إذا كانت مفقودة. - داخل Docker، يضبط runner القيمة
OPENCLAW_LIVE_ACP_BIND_ACPX_COMMAND=$HOME/.npm-global/bin/acpxبحيث يحتفظ acpx بمتغيرات env الخاصة بالمزوّد والمحمّلة من profile متاحة لواجهة harness CLI الفرعية.
حي: smoke لحزمة Codex app-server
- الهدف: التحقق من Codex harness المملوك للـ Plugin عبر المسار العادي
للطريقة
agentفي gateway:- تحميل Plugin
codexالمضمّن - اختيار
OPENCLAW_AGENT_RUNTIME=codex - إرسال أول دور وكيل في gateway إلى
openai/gpt-5.2مع فرض Codex harness - إرسال دور ثانٍ إلى جلسة OpenClaw نفسها والتحقق من أن خيط app-server يمكنه الاستئناف
- تشغيل
/codex statusو/codex modelsعبر مسار أوامر gateway نفسه - اختياريًا تشغيل اثنين من probes الصدفية المرتفعة الصلاحيات والمراجعة بواسطة Guardian: أحدهما أمر غير ضار يجب الموافقة عليه، والآخر رفع زائف لسر يجب رفضه حتى يطلب الوكيل الرجوع
- تحميل Plugin
- الاختبار:
src/gateway/gateway-codex-harness.live.test.ts - التفعيل:
OPENCLAW_LIVE_CODEX_HARNESS=1 - النموذج الافتراضي:
openai/gpt-5.2 - probe الصورة الاختياري:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - probe MCP/tool الاختياري:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - probe Guardian الاختياري:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - يضبط smoke القيمة
OPENCLAW_AGENT_HARNESS_FALLBACK=noneحتى لا يتمكن Codex harness المعطل من النجاح عبر الرجوع بصمت إلى PI. - المصادقة: مصادقة Codex app-server من تسجيل الدخول المحلي لاشتراك Codex. ويمكن لاختبارات
smoke في Docker أيضًا توفير
OPENAI_API_KEYلعمليات probe غير Codex عند الحاجة، بالإضافة إلى نسخ اختيارية من~/.codex/auth.jsonو~/.codex/config.toml.
- يوجد Docker runner في
scripts/test-live-codex-harness-docker.sh. - يقوم بتحميل
~/.profileالمركبة، ويمررOPENAI_API_KEY، وينسخ ملفات مصادقة Codex CLI عند وجودها، ويثبّت@openai/codexضمن بادئة npm مركبة قابلة للكتابة، ويجهّز شجرة المصدر، ثم يشغّل فقط الاختبار الحي لـ Codex-harness. - يفعّل Docker probes الخاصة بالصور وMCP/tool وGuardian افتراضيًا. اضبط
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0أوOPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0أوOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0عندما تحتاج إلى تشغيل أضيق لأغراض التصحيح. - يصدّر Docker أيضًا
OPENCLAW_AGENT_HARNESS_FALLBACK=none، بما يطابق إعداد الاختبار الحي بحيث لا تستطيع الأسماء البديلة القديمة أو الرجوع إلى PI إخفاء انحدار Codex harness.
وصفات حية موصى بها
قوائم السماح الضيقة والصريحة هي الأسرع والأقل عرضة للتذبذب:-
نموذج واحد، مباشر (من دون gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.2" pnpm test:live src/agents/models.profiles.live.test.ts
-
نموذج واحد، Gateway smoke:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
استدعاء الأدوات عبر عدة مزوّدين:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2,openai-codex/gpt-5.2,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,zai/glm-4.7,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/...واجهة 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” ثابتة (فالاختبارات الحية اختيارية)، لكن هذه هي النماذج الموصى بها للتغطية المنتظمة على جهاز تطوير يملك مفاتيح.مجموعة smoke الحديثة (استدعاء الأدوات + الصور)
هذا هو تشغيل “النماذج الشائعة” الذي نتوقع أن يبقى عاملًا:- OpenAI (غير Codex):
openai/gpt-5.2 - OpenAI Codex OAuth:
openai-codex/gpt-5.2 - 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 - Z.AI (GLM):
zai/glm-4.7 - MiniMax:
minimax/MiniMax-M2.7
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2,openai-codex/gpt-5.2,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,zai/glm-4.7,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
خط الأساس: استدعاء الأدوات (Read + Exec اختياري)
اختر على الأقل نموذجًا واحدًا من كل عائلة مزوّد:- OpenAI:
openai/gpt-5.2 - Anthropic:
anthropic/claude-opus-4-6(أوanthropic/claude-sonnet-4-6) - Google:
google/gemini-3-flash-preview(أوgoogle/gemini-3.1-pro-preview) - Z.AI (GLM):
zai/glm-4.7 - MiniMax:
minimax/MiniMax-M2.7
- xAI:
xai/grok-4(أو أحدث ما هو متاح) - Mistral:
mistral/… (اختر نموذجًا واحدًا يدعم “tools” ويكون مفعّلًا لديك) - Cerebras:
cerebras/… (إذا كان لديك وصول) - LM Studio:
lmstudio/… (محلي؛ يعتمد استدعاء الأدوات على وضع API)
الرؤية: إرسال صورة (مرفق → رسالة متعددة الوسائط)
ضمّن نموذجًا واحدًا على الأقل قادرًا على الصور فيOPENCLAW_LIVE_GATEWAY_MODELS (Claude/Gemini/OpenAI القادرة على الرؤية، إلخ) لتشغيل image probe.
المجمعات / البوابات البديلة
إذا كانت لديك مفاتيح مفعّلة، فنحن ندعم أيضًا الاختبار عبر:- 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)، بالإضافة إلى أي proxy متوافق مع OpenAI/Anthropic (LM Studio، وvLLM، وLiteLLM، وما إلى ذلك)
discoverModels(...) على جهازك + أي مفاتيح متاحة.
بيانات الاعتماد (لا تلتزم بها أبدًا)
تكتشف الاختبارات الحية بيانات الاعتماد بالطريقة نفسها التي يفعلها CLI. والنتائج العملية:- إذا كان CLI يعمل، فيجب أن تجد الاختبارات الحية المفاتيح نفسها.
-
إذا أخبرك اختبار حي بأنه “لا توجد بيانات اعتماد”، فصحح الأمر بالطريقة نفسها التي تصحح بها
openclaw models list/ اختيار النموذج. -
ملفات تعريف المصادقة لكل وكيل:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(هذا هو المقصود بـ “profile keys” في الاختبارات الحية) -
الإعداد:
~/.openclaw/openclaw.json(أوOPENCLAW_CONFIG_PATH) -
دليل الحالة القديم:
~/.openclaw/credentials/(يُنسخ إلى home الاختبار المرحلي عند وجوده، لكنه ليس مخزن مفاتيح الملف الشخصي الرئيسي) -
تقوم التشغيلات الحية المحلية افتراضيًا بنسخ الإعداد النشط، وملفات
auth-profiles.jsonالخاصة بكل وكيل، وcredentials/القديمة، وأدلة مصادقة CLI الخارجية المدعومة إلى home اختبار مؤقت؛ بينما تتخطى البيئات الحية المرحليةworkspace/وsandboxes/، وتتم إزالة تجاوزات المسار الخاصة بـagents.*.workspace/agentDirحتى تبقى probes بعيدة عن مساحة العمل الحقيقية على المضيف.
~/.profile)، فشغّل الاختبارات المحلية بعد source ~/.profile، أو استخدم Docker runners أدناه (فهي تستطيع تركيب ~/.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
ComfyUI workflow media حي
- الاختبار:
extensions/comfy/comfy.live.test.ts - التفعيل:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - النطاق:
- يمارس مسارات comfy المضمّنة الخاصة بالصور والفيديو و
music_generate - يتخطى كل قدرة ما لم يكن
models.providers.comfy.<capability>مضبوطًا - مفيد بعد تغيير إرسال workflow الخاصة بـ comfy، أو polling، أو التنزيلات، أو تسجيل Plugin
- يمارس مسارات comfy المضمّنة الخاصة بالصور والفيديو و
توليد الصور حي
- الاختبار:
test/image-generation.runtime.live.test.ts - الأمر:
pnpm test:live test/image-generation.runtime.live.test.ts - الحزام:
pnpm test:live:media image - النطاق:
- يعدّد كل Plugin مسجل لتوليد الصور
- يحمّل متغيرات env الناقصة الخاصة بالمزوّد من shell تسجيل الدخول لديك (
~/.profile) قبل الفحص - يستخدم مفاتيح API الحية/من env قبل ملفات تعريف المصادقة المخزنة افتراضيًا، بحيث لا تحجب مفاتيح الاختبار القديمة الموجودة في
auth-profiles.jsonبيانات اعتماد shell الحقيقية - يتخطى المزوّدين الذين لا يملكون مصادقة/ملف تعريف/نموذجًا صالحًا
- يشغّل متغيرات توليد الصور القياسية عبر قدرة وقت التشغيل المشتركة:
google:flash-generategoogle:pro-generategoogle:pro-editopenai:default-generate
- المزوّدون المضمّنون المغطَّون حاليًا:
falgoogleminimaxopenaiopenroutervydraxai
- التضييق الاختياري:
OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google,openrouter,xai"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 فقط
توليد الموسيقى حي
- الاختبار:
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 الخاصة بالمزوّد من shell تسجيل الدخول لديك (
~/.profile) قبل الفحص - يستخدم مفاتيح API الحية/من env قبل ملفات تعريف المصادقة المخزنة افتراضيًا، بحيث لا تحجب مفاتيح الاختبار القديمة الموجودة في
auth-profiles.jsonبيانات اعتماد shell الحقيقية - يتخطى المزوّدين الذين لا يملكون مصادقة/ملف تعريف/نموذجًا صالحًا
- يشغّل كلا وضعي وقت التشغيل المعلنين عندما يكونان متاحين:
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.5+"
- سلوك المصادقة الاختياري:
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 الآمن للإصدار: مزوّدون غير FAL، وطلب واحد لتحويل النص إلى فيديو لكل مزوّد، ومطالبة lobster مدتها ثانية واحدة، وحدًا أقصى للعملية لكل مزوّد من
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000افتراضيًا) - يتخطى FAL افتراضيًا لأن زمن انتظار الطابور على جانب المزوّد قد يهيمن على زمن الإصدار؛ مرّر
--video-providers falأوOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"لتشغيله صراحةً - يحمّل متغيرات env الخاصة بالمزوّد من shell تسجيل الدخول لديك (
~/.profile) قبل الفحص - يستخدم مفاتيح API الحية/من env قبل ملفات تعريف المصادقة المخزنة افتراضيًا، بحيث لا تحجب مفاتيح الاختبار القديمة الموجودة في
auth-profiles.jsonبيانات اعتماد shell الحقيقية - يتخطى المزوّدين الذين لا يملكون مصادقة/ملف تعريف/نموذجًا صالحًا
- يشغّل
generateفقط افتراضيًا - اضبط
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1لتشغيل أوضاع التحويل المعلنة أيضًا عند توفرها:imageToVideoعندما يعلن المزوّدcapabilities.imageToVideo.enabledويقبل المزوّد/النموذج المحدد إدخال الصور المحلية المعتمدة على buffer في المسح المشتركvideoToVideoعندما يعلن المزوّدcapabilities.videoToVideo.enabledويقبل المزوّد/النموذج المحدد إدخال الفيديو المحلي المعتمد على buffer في المسح المشترك
- المزوّدون الحاليون المعلنون لكن المتخطَّون في
imageToVideoضمن المسح المشترك:vydraلأنveo3المضمّن نصي فقط وklingالمضمّن يتطلب عنوان URL بعيدًا للصورة
- التغطية الخاصة بمزوّد 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
- المزوّدون الحاليون المعلنون لكن المتخطَّون في
videoToVideoضمن المسح المشترك:alibabaوqwenوxaiلأن هذه المسارات تتطلب حاليًا عناوين URL مرجعية بعيدة من نوعhttp(s)/ MP4googleلأن مسار Gemini/Veo المشترك الحالي يستخدم إدخالًا محليًا معتمدًا على buffer، وهذا المسار غير مقبول في المسح المشتركopenaiلأن المسار المشترك الحالي يفتقر إلى ضمانات الوصول الخاصة بالمؤسسة لعمليات inpaint/remix الخاصة بالفيديو
- التضييق الاختياري:
OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="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لتقليل الحد الأقصى للعملية لكل مزوّد من أجل تشغيل smoke أكثر شدة
- سلوك المصادقة الاختياري:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1لفرض مصادقة مخزن الملفات الشخصية وتجاهل التجاوزات المعتمدة على env فقط
حزام الوسائط الحي
- الأمر:
pnpm test:live:media - الغرض:
- يشغّل مجموعات الصور والموسيقى والفيديو الحية المشتركة عبر نقطة دخول أصلية واحدة للمستودع
- يحمّل تلقائيًا متغيرات env الناقصة الخاصة بالمزوّد من
~/.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
ذو صلة
- الاختبار — مجموعات unit وintegration وQA وDocker