Providers
يستنتج
inferrs يتيح النماذج المحلية خلف واجهة /v1 متوافقة مع OpenAI. يتواصل OpenClaw معه عبر المحوّل العام openai-completions.
| الخاصية | القيمة |
|---|---|
| معرّف المزوّد | inferrs (مخصّص؛ اضبطه ضمن models.providers.inferrs) |
| Plugin | لا يوجد — ليس Plugin مزوّدًا مضمنًا في OpenClaw |
| متغير بيئة المصادقة | غير مطلوب؛ تصلح أي قيمة إذا كان خادم inferrs لديك لا يستخدم المصادقة |
| API | متوافقة مع OpenAI (openai-completions) |
| عنوان URL الأساسي المقترح | http://127.0.0.1:8080/v1 (أو أي مكان يستمع فيه خادم inferrs لديك) |
بدء الاستخدام
شغّل inferrs باستخدام نموذج
inferrs serve google/gemma-4-E2B-it \ --host 127.0.0.1 \ --port 8080 \ --device metalتحقّق من إمكانية الوصول إلى الخادم
curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/modelsأضف إدخال مزوّد إلى OpenClaw
أضف إدخال مزوّد صريحًا ووجّه نموذجك الافتراضي إليه. راجع مثال الإعداد أدناه.
مثال كامل للإعداد
Gemma 4 على خادم inferrs محلي:
{ agents: { defaults: { model: { primary: "inferrs/google/gemma-4-E2B-it" }, models: { "inferrs/google/gemma-4-E2B-it": { alias: "Gemma 4 (inferrs)", }, }, }, }, models: { mode: "merge", providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true, }, }, ], }, }, },}التشغيل عند الطلب
يمكن لـ OpenClaw تشغيل inferrs بنفسه فقط عند تحديد نموذج inferrs/.... أضف localService إلى إدخال المزوّد نفسه:
{ models: { providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", timeoutSeconds: 300, localService: { command: "/opt/homebrew/bin/inferrs", args: [ "serve", "google/gemma-4-E2B-it", "--host", "127.0.0.1", "--port", "8080", "--device", "metal", ], healthUrl: "http://127.0.0.1:8080/v1/models", readyTimeoutMs: 180000, idleStopMs: 0, }, models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true, }, }, ], }, }, },}يجب أن يكون command مسارًا مطلقًا. شغّل which inferrs على مضيف Gateway واستخدم ذلك المسار. مرجع الحقول الكامل: خدمات النماذج المحلية.
الإعداد المتقدم
أهمية requiresStringContent
لا تقبل بعض مسارات إكمالات المحادثة في inferrs سوى قيمة نصية في messages[].content، وليس مصفوفات منظّمة من أجزاء المحتوى.
تنبيه بشأن Gemma ومخطط الأدوات
تقبل بعض تركيبات inferrs مع Gemma طلبات /v1/chat/completions المباشرة الصغيرة، لكنها تفشل في دورات وقت تشغيل وكيل OpenClaw الكاملة. جرّب أولًا تعطيل سطح مخطط الأدوات:
compat: { requiresStringContent: true, supportsTools: false}يقلّل ذلك ضغط الموجّه على الخلفيات المحلية الأكثر صرامة. إذا استمرت الطلبات المباشرة الصغيرة في العمل، لكن ظلت دورات وكيل OpenClaw العادية تتعطل داخل inferrs، فتعامل مع ذلك باعتباره قيدًا في النموذج أو الخادم الأساسي، وليس مشكلة في نقل OpenClaw.
اختبار تحقق يدوي
اختبر كلتا الطبقتين بعد الإعداد:
curl http://127.0.0.1:8080/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"google/gemma-4-E2B-it","messages":[{"role":"user","content":"What is 2 + 2?"}],"stream":false}'openclaw infer model run \ --model inferrs/google/gemma-4-E2B-it \ --prompt "What is 2 + 2? Reply with one short sentence." \ --jsonإذا نجح الأمر الأول وفشل الثاني، فراجع استكشاف الأخطاء وإصلاحها أدناه.
السلوك الشبيه بالوكيل
نظرًا إلى أن inferrs يستخدم المحوّل العام openai-completions (وليس openai-responses)، فلا تُطبّق أبدًا صياغة الطلبات الخاصة بـ OpenAI الأصلي: لا يُرسل service_tier، ولا store الخاص بـ Responses، ولا تلميحات ذاكرة التخزين المؤقت للموجّه، ولا صياغة حمولة توافق الاستدلال الخاصة بـ OpenAI.
استكشاف الأخطاء وإصلاحها
فشل curl /v1/models
إما أن inferrs لا يعمل، أو لا يمكن الوصول إليه، أو أنه غير مرتبط بالمضيف أو المنفذ اللذين ضبطتهما. تأكد من تشغيل الخادم واستماعه على ذلك العنوان.
توقّع messages[].content سلسلة نصية
اضبط compat.requiresStringContent: true في إدخال النموذج (راجع أعلاه).
نجاح استدعاءات /v1/chat/completions المباشرة وفشل openclaw infer model run
اضبط compat.supportsTools: false لتعطيل سطح مخطط الأدوات (راجع تنبيه Gemma أعلاه).
استمرار تعطل inferrs في دورات الوكيل الأكبر
إذا اختفت أخطاء المخطط، لكن استمر تعطل inferrs في دورات الوكيل الأكبر، فتعامل مع ذلك باعتباره قيدًا في inferrs أو النموذج الأساسي. قلّل ضغط الموجّه أو بدّل الخلفية أو النموذج.
ذو صلة
تشغيل OpenClaw مع خوادم النماذج المحلية.
تشغيل خوادم النماذج المحلية عند الطلب للمزوّدين المضبوطين.
تصحيح أخطاء الخلفيات المحلية المتوافقة مع OpenAI التي تجتاز الاختبارات الأولية، لكن تفشل في عمليات تشغيل الوكيل.
نظرة عامة على جميع المزوّدين ومراجع النماذج وسلوك تجاوز الفشل.