متى تستخدم مشغّلًا
سجّل مشغّل وكيل عندما تكون لعائلة نماذج بيئة تشغيل جلسات أصلية خاصة بها، ويكون نقل موفّر OpenClaw المعتاد هو التجريد غير المناسب:- خادم أصلي لوكيل برمجة يتولى امتلاك سلاسل المحادثات وCompaction
- واجهة CLI محلية أو برنامج خفي يجب أن يبث أحداث الخطة/الاستدلال/الأدوات الأصلية
- بيئة تشغيل نموذج تحتاج إلى معرّف استئناف خاص بها بالإضافة إلى سجل جلسة OpenClaw
ما تظل النواة مسؤولة عنه
قبل تحديد مشغّل، يكون OpenClaw قد حسم بالفعل:- الموفّر والنموذج
- حالة مصادقة بيئة التشغيل، ما لم يعلن المشغّل أنه يتولى تمهيد المصادقة
- مستوى التفكير وميزانية السياق
- ملف سجل/جلسة OpenClaw
- مساحة العمل والعزل وسياسة الأدوات
- استدعاءات رد القناة واستدعاءات البث
- سياسة الرجوع إلى نموذج بديل والتبديل المباشر للنموذج
تمهيد المصادقة المملوك للمشغّل
تحسم النواة افتراضيًا بيانات اعتماد الموفّر قبل استدعاء المشغّل. يمكن لمشغّل موثوق قادر على المصادقة عبر بيئة تشغيله الأصلية أن يضبطauthBootstrap: "harness" في تسجيله الثابت AgentHarness. عندئذٍ تتخطى النواة
تمهيد بيانات اعتماد الموفّر العام وخطأ غياب بيانات الاعتماد
لكل محاولة يطالب بها ذلك المشغّل.
تظل النواة تمرّر ملف تعريف مصادقة OpenClaw متوافقًا ومحددًا صراحةً أو مرتبًا
ومتجره المحدد النطاق عند وجوده. يجب على المشغّل حسم ذلك
الملف أو بيانات اعتماده الأصلية قبل إصدار طلبات النموذج، وإبقاء الأسرار
محددة النطاق للمحاولة، وإظهار إخفاقات مصادقة قابلة للمعالجة. لا
تضبط هذه الإمكانية في مشغّل لا يتولى المصادقة إلا أحيانًا.
عناصر بيئة تشغيل الإعداد المتحقق منها
يجب على المشغّل المحلي القادر على توفير الاستدلال لإعداد التشغيل الأول أن يثبت التنفيذ الذي أكمل الاختبار. عندما تكونparams.captureRuntimeArtifact صحيحة، أعد
result.runtimeArtifact معتمًا ذا معرّف ثابت وبصمة للمحتوى. سجّل
إمكانية runtimeArtifact.validate(...) مطابقة تعيد التحقق من ذلك الربط
من دون تحميل مشغّل مختلف أو فحص إضافات غير مرتبطة.
تمرّر استئنافات OpenClaw المتحقق منها أيضًا params.expectedRuntimeArtifact.
يجب على المشغّل مقارنته بالعملية الأصلية المحددة التي حصل عليها، وأن يفشل
قبل بدء سلسلة محادثات أصلية أو استئنافها إذا اختلفا. تحذف دورات الوكيل
العادية كلا الحقلين، وبذلك يبقى حساب تجزئة المحتوى خارج المسار السريع المعتاد
للطلبات. تحتاج المشغّلات البعيدة/القائمة على WebSocket إلى عقد إثبات من الخادم قبل
أن تتمكن من المشاركة؛ فسلسلة الإصدار وحدها ليست هوية لعنصر برمجي.
تتضمن المحاولة المُعَدّة أيضًا params.runtimePlan، وهي حزمة
سياسات مملوكة لـ OpenClaw لقرارات بيئة التشغيل التي يجب أن تظل مشتركة بين OpenClaw
والمشغّلات الأصلية:
runtimePlan.tools.normalize(...)وruntimePlan.tools.logDiagnostics(...)لسياسة مخطط الأدوات المدركة للموفّرruntimePlan.transcript.resolvePolicy(...)لتنقية السجل وسياسة إصلاح استدعاءات الأدواتruntimePlan.delivery.isSilentPayload(...)لـNO_REPLYالمشترك ومنع تسليم الوسائطruntimePlan.outcome.classifyRunResult(...)لتصنيف الرجوع إلى نموذج بديلruntimePlan.observabilityللبيانات الوصفية المحسومة للموفّر/النموذج/المشغّل
عقد نقل الطلبات
يتلقىsupports(ctx) نقل النموذج المحسوم في ctx.modelProvider.
تصف حقيقتان مملوكتان للموفّر وخاليتان من الأسرار المسار المحدد:
- يسرد
runtimePolicy.compatibleIdsمعرّفات بيئات التشغيل التي يعلن الموفّر توافقها مع ذلك المسار المحدد. يعني غياب السياسة أن الموفّر لم يعلن توافقًا على مستوى المسار؛ ولا يُعد ذلك إذنًا بافتراض الدعم. - يعني
requestTransportOverrides: "none"عدم وجوب إعادة إنتاج أي تجاوز مُنشأ لطلب الموفّر/النموذج. ويعني"present"وجود ترويسات مُنشأة أو نقل مصادقة أو وكيل أو TLS أو خدمة محلية أو سلوك شبكة خاصة أو معاملات طلب. لا تكشف هذه الحقيقة تلك القيم.
{ supported: false, reason } عندما يتعذر على المشغّل إعادة إنتاج
النقل المُعَد. لا تستنتج الدعم بقراءة الإعدادات الأولية بعد الاختيار.
عندما ينتج إعداد المصادقة عدة مسارات لإعادة المحاولة، يجب أن يدعم مشغّل واحد
جميعها قبل الإرسال. يستخدم الاختيار الضمني OpenClaw إذا لم تتمكن أي إضافة
من امتلاك المجموعة كاملة؛ أما اختيار الإضافة الصريح أو المحفوظ فيفشل بصورة مغلقة.
تسجيل مشغّل
الاستيراد:openclaw/plugin-sdk/agent-harness
authBootstrap عمدًا عن هذا المثال العام. أضف
authBootstrap: "harness" فقط عندما يفي المشغّل بالعقد أعلاه.
التنفيذ المفوّض
يجوز لمالك المشغّل ضبطdelegatedExecutionPluginIds على معرّفات الإضافات
الموثوقة التي تحتاج إلى تنفيذ جلسة حالية مقفلة على نموذج، مثل نقل صوتي
يتابع محادثة مدعومة بـ Codex. هذه موافقة ثابتة من المالك،
وليست قائمة سماح من النواة. أبقها ضيقة النطاق.
لا يتلقى المفوّضون سوى قبول العمل والتنفيذ المضمّن. يتطلب OpenClaw
مفتاح الجلسة المخزن المحدد ومسار المتجر ومعرّف الجلسة؛ وmodelSelectionLocked: true؛ وقيمتي agentHarnessId وagentHarnessRuntimeOverride متطابقتين.
يصبح التشغيل بعد ذلك محدد النطاق عبر مالك المشغّل. يظل إنشاء الجلسة وتصحيحها
وإعادة ضبطها وحذفها وأرشفتها وتعديل Gateway حكرًا على المالك.
سياسة الاختيار
يختار OpenClaw مشغّلًا بعد حسم الموفّر/النموذج:- تكون الأولوية لسياسة بيئة التشغيل المحددة النطاق للنموذج.
- تأتي بعدها سياسة بيئة التشغيل المحددة النطاق للموفّر.
- يطلب
autoمن المشغّلات المسجلة تحديد ما إذا كانت تدعم المسار الفعلي المحسوم. لا تختار بادئات الموفّر/النموذج وحدها مشغّلًا أبدًا. - إذا لم يتطابق أي مشغّل مسجل، يستخدم OpenClaw بيئة تشغيله المضمّنة.
auto،
لا ينطبق الرجوع إلى البيئة المضمّنة إلا عندما لا يدعم أي مشغّل إضافة مسجل الموفّر/النموذج
المحسوم. بعد أن يطالب مشغّل إضافة بتشغيل ما، لا يعيد OpenClaw
تشغيل الدورة نفسها عبر بيئة تشغيل أخرى، لأن ذلك قد يغيّر
دلالات المصادقة/بيئة التشغيل أو يكرر الآثار الجانبية.
تظل سياسة بيئة التشغيل المضبوطة هي المرجع الحاسم لبيئة التشغيل المطلوبة. يحتفظ
agentHarnessId للجلسة المحفوظة بملكية سجلها الأصلي
بينما لا يزال إعداد المسار/المصادقة معلقًا. ولا يجعل أي منهما مسارًا غير متوافق
متوافقًا: بعد توفر الحقائق المُعَدّة، يجب أن يدعمها المشغّل
المحدد أو المثبّت، وإلا يفشل التشغيل بصورة مغلقة. يعرض /status بيئة التشغيل الفعلية
المحددة من السياسة والملكية المحفوظة ودعم المسار.
تكون حالة الإعداد صريحة: يظل runtimePolicy المفقود غير معلن
بدلًا من استنتاجه من أي حقول نقل تصادف وجودها.
عندما تترك المصادقة المملوكة للمشغّل عدة مسارات فعلية دون حسم، تكون
حقيقة الدعم المُعَدّة هي تقاطع معرّفات بيئات التشغيل المتوافقة معها،
وتبلغ عن تجاوزات الطلب إذا كان لدى أي مرشح منها تجاوزات. لذلك يؤدي وجود مرشح
واحد غير معلن إلى جعل التوافق الأصلي فارغًا؛ إن preparedAuth.source: "harness"
مالك للمصادقة، وليس إذنًا باستنتاج دعم المسار.
إذا بدا المشغّل المحدد مفاجئًا، ففعّل تسجيل التصحيح agents/harness
وافحص سجل Gateway المنظم agent harness selected: فهو
يتضمن معرّف المشغّل المحدد وسبب الاختيار وسياسة بيئة التشغيل/الرجوع،
وفي وضع auto، نتيجة دعم كل مرشح من الإضافات.
تسجّل إضافة Codex المضمّنة codex بوصفه معرّف مشغّلها. تتعامل النواة مع ذلك
كمعرّف عادي لمشغّل إضافة؛ وتنتمي الأسماء البديلة الخاصة بـ Codex إلى الإضافة
أو إعدادات المشغّل، لا إلى محدد بيئة التشغيل المشترك.
إقران الموفّر بالمشغّل
ينبغي لمعظم المشغّلات تسجيل موفّر أيضًا. يجعل الموفّر مراجع النماذج وحالة المصادقة والبيانات الوصفية للنماذج واختيار/model مرئية لبقية
OpenClaw. ثم يطالب المشغّل بذلك الموفّر في supports(...).
تتبع إضافة Codex المضمّنة هذا النمط:
- مراجع نماذج المستخدم المفضلة:
openai/gpt-5.6-sol - مراجع التوافق: تظل مراجع
codex/gpt-*القديمة مقبولة، لكن ينبغي ألا تستخدمها الإعدادات الجديدة كمراجع عادية للموفّر/النموذج - معرّف المشغّل:
codex - المصادقة: إتاحة موفّر اصطناعية، لأن مشغّل Codex يتولى تسجيل الدخول/الجلسة الأصلية لـ Codex
- طلب خادم التطبيق: يرسل OpenClaw معرّف النموذج المجرد إلى Codex ويترك للمشغّل التواصل مع بروتوكول خادم التطبيق الأصلي
auto، يجوز لـ OpenAI
اختيار Codex فقط عندما يعلن عقد المسار المملوك لموفّره توافق codex:
مسار رسمي دقيق عبر HTTPS لـ Platform Responses أو ChatGPT Responses
من دون تجاوز مُنشأ للطلب. لا تختار بادئة openai/* وحدها
Codex أبدًا. تظل نقاط النهاية المخصصة ومهايئات Completions وسلوك الطلب
المُنشأ على OpenClaw. تُرفض نقاط نهاية HTTP الرسمية غير المشفرة. تظل مراجع codex/gpt-*
الأقدم مدخلات توافق. راجع
بيئة تشغيل وكيل OpenAI الضمنية.
لإعداد المشغّل وأمثلة بادئات النماذج والإعدادات الخاصة بـ Codex، راجع
مشغّل Codex.
تفرض إضافة Codex الحد الأدنى لإصدار خادم التطبيق الموثق في
مشغّل Codex. فهي تتحقق من مصافحة التهيئة
وتحظر الخوادم الأقدم أو التي لا تحمل إصدارًا، بحيث لا يعمل OpenClaw إلا مع واجهة
البروتوكول التي اختبرها.
برمجيات نتائج الأدوات الوسيطة
يمكن للإضافات المضمّنة والإضافات المثبتة المفعّلة صراحةً ذات عقود البيانات الوصفية المطابقة إرفاق برمجيات وسيطة محايدة تجاه بيئة التشغيل لنتائج الأدوات عبرapi.registerAgentToolResultMiddleware(...) عندما تعلن بياناتها الوصفية
معرّفات بيئات التشغيل المستهدفة في contracts.agentToolResultMiddleware. هذه
واجهة موثوقة لتحويلات نتائج الأدوات غير المتزامنة التي يجب أن تعمل قبل أن يعيد OpenClaw أو
Codex تغذية مخرجات الأدوات إلى النموذج.
لا يزال بإمكان Plugins المضمّنة القديمة استخدام
api.registerCodexAppServerExtensionFactory(...) للبرمجيات الوسيطة الخاصة بخادم تطبيق Codex فقط،
لكن ينبغي لتحويلات النتائج الجديدة استخدام واجهة API المحايدة لبيئة التشغيل. وقد أزيل
خطاف api.registerEmbeddedExtensionFactory(...) الخاص بالمشغّل المضمّن فقط؛ ويجب أن تستخدم
تحويلات نتائج الأدوات المضمّنة برمجيات وسيطة محايدة لبيئة التشغيل.
تصنيف النتيجة النهائية
يمكن لأطر التشغيل الأصلية التي تدير إسقاط البروتوكول الخاص بها استخدامclassifyAgentHarnessTerminalOutcome(...) من
openclaw/plugin-sdk/agent-harness-runtime عندما لا ينتج عن دورة مكتملة أي
نص مرئي للمساعد. يعيد المساعد empty أو reasoning-only أو
planning-only لكي تتمكن سياسة الرجوع الاحتياطي في OpenClaw من تحديد ما إذا كانت ستعيد المحاولة باستخدام
نموذج مختلف. يتطلب planning-only الحقل الصريح planText
الخاص بإطار التشغيل؛ ولا يستنتجه OpenClaw من نثر المساعد. يتعمد المساعد
ترك أخطاء المطالبة والدورات قيد التنفيذ والردود الصامتة المقصودة
مثل NO_REPLY بلا تصنيف.
الآثار الجانبية عند انتهاء الوكيل
يجب على أطر التشغيل الأصلية استدعاءrunAgentEndSideEffects(...) من
openclaw/plugin-sdk/agent-harness-runtime بعد إنهاء محاولة. وهو
يشغّل خطاف agent_end القابل للنقل والتقاط الأبحاث في OpenClaw
من دون تأخير الردود التفاعلية. استخدم awaitAgentEndSideEffects(...)
لعمليات التشغيل المحلية غير التفاعلية التي يجب ألا تُحسم فيها المحاولة حتى تنتهي تلك
الآثار الجانبية. يقبل كلا المساعدين حمولة { event, ctx } نفسها التي يقبلها
runAgentHarnessAgentEndHook(...)؛ ولا تغيّر إخفاقاتهما نتيجة
المحاولة المكتملة.
إدخال المستخدم وأسطح الأدوات
ينبغي لأطر التشغيل الأصلية التي تعرض طلب إدخال مستخدم على مستوى بيئة التشغيل استخدام مساعدات إدخال المستخدم منopenclaw/plugin-sdk/agent-harness-runtime لتنسيق
المطالبة وتسليمها عبر مسار الرد الحاجب في OpenClaw وتوحيد
إجابات الاختيار/النص الحر مجددًا إلى شكل الاستجابة الأصلي لبيئة التشغيل. يحافظ
المساعد على اتساق العرض في القنوات وTUI، بينما يحتفظ كل إطار تشغيل
بتحليل البروتوكول ودورة حياة الطلبات المعلقة الخاصين به.
ينبغي لأطر التشغيل الأصلية التي تحتاج إلى توجيه أدوات مدمج شبيه بـ Pi استخدام
createAgentHarnessToolSurfaceRuntime(...) من
openclaw/plugin-sdk/agent-harness-tool-runtime. وهو يدير
اختيار عناصر التحكم في البحث عن الأدوات/وضع الشفرة، والإعدادات الافتراضية الخفيفة للنماذج المحلية،
وترشيح المخططات المتوافق مع بيئة التشغيل، وتنفيذ الكتالوج المخفي، وتهيئة
الدليل، وتنظيف الكتالوج. تظل أطر التشغيل مسؤولة عن تحويل الأدوات
الخاص بحزمة SDK الخاصة بها وعن استدعاء التنفيذ الأصلي.
وضع إطار تشغيل Codex الأصلي
إطار التشغيل المضمّنcodex هو وضع Codex الأصلي لدورات وكيل OpenClaw
المضمّنة. فعّل Plugin المضمّن codex أولًا، وأدرج codex في
plugins.allow إذا كان إعدادك يستخدم قائمة سماح مقيّدة. ينبغي لإعدادات خادم التطبيق
الأصلية استخدام openai/gpt-*؛ ولا تختار دورات وكيل OpenAI إطار تشغيل Codex
إلا عندما يعلن المسار الفعّال توافقه مع Codex. ينبغي إصلاح مراجع نماذج Codex
القديمة باستخدام openclaw doctor --fix، وتظل مراجع نماذج codex/*
القديمة أسماءً بديلة للتوافق مع إطار التشغيل الأصلي.
عند تشغيل هذا الوضع، يدير Codex معرّف سلسلة المحادثة الأصلي وسلوك الاستئناف
وCompaction وتنفيذ خادم التطبيق. ويظل OpenClaw مسؤولًا عن قناة الدردشة
ونسخة سجل المحادثة المرئية وسياسة الأدوات والموافقات وتسليم الوسائط واختيار
الجلسة. استخدم المزوّد/النموذج agentRuntime.id: "codex" عندما تحتاج إلى
إثبات أن مسار خادم تطبيق Codex وحده يمكنه تولّي عملية التشغيل. تفشل بيئات تشغيل
Plugins الصريحة بصورة مغلقة؛ ولا تُعاد محاولة إخفاقات اختيار خادم تطبيق Codex وإخفاقات بيئة التشغيل
عبر بيئة تشغيل أخرى.
صرامة بيئة التشغيل
يستخدم OpenClaw افتراضيًا سياسة بيئة تشغيل المزوّد/النموذجauto: يمكن لأطر تشغيل
Plugins المسجّلة تولّي المسارات الفعّالة المتوافقة، وتتولى بيئة التشغيل
المضمّنة الدورة عندما لا يطابقها أي منها. لا تؤدي بادئة المزوّد/النموذج وحدها مطلقًا
إلى اختيار إطار تشغيل. استخدم بيئة تشغيل Plugin صريحة للمزوّد/النموذج مثل
agentRuntime.id: "codex" عندما ينبغي أن يؤدي تعذّر اختيار إطار التشغيل إلى الفشل بدلًا
من التوجيه عبر بيئة التشغيل المضمّنة. لا يجعل الاختيار الصريح
مسارًا غير متوافق متوافقًا. وتؤدي إخفاقات أطر تشغيل Plugins المختارة دائمًا
إلى فشل قطعي. ولا يمنع ذلك المزوّد/النموذج الصريح
agentRuntime.id: "openclaw".
لعمليات التشغيل المضمّنة المخصصة لـ Codex فقط:
الجلسات الأصلية ونسخة سجل المحادثة
قد يحتفظ إطار التشغيل بمعرّف جلسة أصلي أو معرّف سلسلة محادثة أو رمز استئناف من جهة البرنامج الخدمي. حافظ على ارتباط ذلك الربط صراحةً بجلسة OpenClaw، واستمر في نسخ مخرجات المساعد/الأداة المرئية للمستخدم إلى سجل محادثة OpenClaw. يظل سجل محادثة OpenClaw طبقة التوافق من أجل:- سجل الجلسة المرئي في القناة
- البحث في سجل المحادثة وفهرسته
- العودة إلى إطار تشغيل OpenClaw المضمّن في دورة لاحقة
- السلوك العام لكل من
/newو/resetوحذف الجلسة
reset(...) لكي يتمكن OpenClaw
من مسحه عند إعادة تعيين جلسة OpenClaw المالكة.
نتائج الأدوات والوسائط
تنشئ النواة قائمة أدوات OpenClaw وتمررها إلى المحاولة المعدّة. عندما ينفّذ إطار تشغيل استدعاء أداة ديناميكيًا، فأعد نتيجة الأداة من خلال شكل نتيجة إطار التشغيل بدلًا من إرسال وسائط القناة بنفسك. يُبقي ذلك مخرجات النص والصور والفيديو والموسيقى وتحويل النص إلى كلام والموافقات وأدوات المراسلة على مسار التسليم نفسه المستخدم في عمليات التشغيل المدعومة من OpenClaw.النتائج النهائية للأدوات
AgentHarnessAttemptParams.observeToolTerminal هو مجمّع النتائج النهائية
الذي يديره المضيف. يجب على إطار التشغيل الذي ينفّذ أدوات OpenClaw الديناميكية أو الأدوات الأصلية
استدعاؤه عندما تصل كل أداة إلى نتيجة نهائية واحدة، قبل
إنهاء نتيجة المحاولة. ولا تحتاج أطر التشغيل التي لا تنفّذ أدوات إلى
استدعائه.
أبلغ عن الحقائق من حدود التنفيذ:
- مرّر معرّف استدعاء البروتوكول عند وجوده، واسم الأداة الأساسي، والوسائط التي وصلت فعليًا إلى الأداة بعد الإعداد أو إعادة الكتابة بواسطة الخطافات.
- عيّن
executionStarted: falseعندما يمنع التحقق أو الموافقة أو حاجز آخر الاستدعاء قبل بدء تنفيذ الأداة. وبمجرد احتمال حدوث الإرسال، أبلغ عنtrueبصورة متحفظة. - أبلغ عن
outcome: "success"أوoutcome: "failure". وأدرج حقول الإخفاق المنظّمة المتاحة من بيئة التشغيل بدلًا من استنتاج الإخفاق من نص العرض. - استخدم
nativeMutationفقط للأدوات الأصلية التي لا تستخدم تعريف أداة OpenClaw. وقدّم هناك حقائق التغيير وإعادة التشغيل التي يديرها البروتوكول؛ ولا تنسخ مصنّف التغيير الخاص بـ OpenClaw إلى إطار التشغيل.
lastToolError الخاص به إلى AgentHarnessAttemptResult واستخدم حقائق التنفيذ
والوسائط والآثار الجانبية الخاصة به في إسقاط إطار التشغيل بدلًا من اشتقاق
حالة موازية. يحتفظ المضيف بإخفاق تغيير غير محسوم عبر الأدوات الناجحة
غير المرتبطة، ولا يمسحه إلا بعد نجاح الإجراء المطابق.
يظل رد النداء اختياريًا للحفاظ على توافق المصدر مع أطر التشغيل التجريبية
الأقدم. ولا يعني كونه اختياريًا أنه يمكن تجاهله في إطار تشغيل ينفّذ الأدوات:
فمن دون التقارير النهائية، لا يستطيع OpenClaw الحفاظ على حقيقة إخفاق أداة التغيير
عبر استدعاءات الأدوات اللاحقة، بما في ذلك اكتمال Heartbeat بصمت.
القيود الحالية
- مسار الاستيراد العام عام، لكن بعض الأسماء البديلة لأنواع المحاولة/النتيجة لا تزال تحمل أسماء قديمة للتوافق.
- لا يزال تثبيت أطر التشغيل التابعة لجهات خارجية تجريبيًا. فضّل Plugins المزوّدين حتى تحتاج إلى بيئة تشغيل جلسة أصلية.
- يمكن التبديل بين أطر التشغيل عبر الدورات. لا تبدّل أطر التشغيل في منتصف دورة بعد بدء الأدوات الأصلية أو الموافقات أو نص المساعد أو عمليات إرسال الرسائل.