محركات السياق في OpenClaw
نقاط دورة حياة التجميع الأربع، والمحرك الافتراضي legacy، وكتابة محرك كمكوّن إضافي باستخدام commitTurn ودلالات سجل المحادثة، ومعاملات المضيف المقبولة، ومتطلبات قدرات المضيف، وعزل الأعطال، والمعنى الحقيقي لـ ownsCompaction
كل ما يراه النموذج يجمّعه شيء ما. وفي OpenClaw هذا الشيء هو محرك السياق، وهو قابل للاستبدال. يحافظ المحرك المدمج على السلوك الأصلي، لكن الواجهة التي تحته هي المكان الذي تُوصل فيه الاستراتيجيات القائمة بكثافة على الاسترجاع أو التلخيص. إليك نقاط دورة الحياة، والعقد الذي يجب أن يلتزم به المكوّن الإضافي، وسلوكَي الفشل اللذين يمنعان محركًا سيئًا من إسكات الوكيل.
أربع نقاط في دورة الحياة
- يُستدعى ingest عندما تنضم رسالة جديدة إلى الجلسة حتى يتمكن المحرك من تخزينها أو فهرستها؛ ويُستدعى assemble قبل كل تشغيل للنموذج ويعيد مجموعة مرتبة من الرسائل مع إضافة اختيارية لموجّه النظام تتسع لها ميزانية الرموز (tokens)؛ ويُستدعى compact عندما تمتلئ النافذة أو عندما يطلبه المستخدم؛ ويتيح خطاف ما بعد الدورة للمحرك حفظ الحالة، أو بدء ضغط في الخلفية، أو تحديث الفهارس.
- تنفذ الدالة الاختيارية maintain صيانة سجل المحادثة بعد bootstrap أو دورة ناجحة أو ضغط، مستخدمةً أداة مساعدة لإعادة الكتابة الآمنة، ويمكن الإعلان عنها كعمل في الخلفية حتى لا تعطّل الرد؛ والضغط المدرج في قائمة الانتظار بسبب الميزانية الذي يقبل الصيانة في الخلفية يبقي محرك التشغيل المعدّ حيًا طوال الصيانة وإعادات التشغيل والتخلص منه، لذا فإن القبول لا يعني أن التنظيف انتهى.
- يجهّز خطافان اختياريان للوكلاء الفرعيين الحالة المشتركة قبل بدء تشغيل فرعي، وينظّفانها عند انتهائه؛ ويتلقى خطاف الإعداد مفاتيح جلستي الأب والابن، ووضع السياق، ومعرّفات سجل المحادثة المتاحة، ومدة حياة اختيارية، ويمكنه إرجاع مقبض تراجع يستدعيه OpenClaw إذا فشل الإطلاق لاحقًا.
- المحرك المدمج legacy خفيف عن قصد: ingest لا يفعل شيئًا لأن مدير الجلسات يحفظ الرسائل، وassemble يمرر إلى مسار المعالجة الحالي للتنقية والتحقق والتقييد، وcompact يفوّض إلى التلخيص المدمج، وخطاف ما بعد الدورة لا يفعل شيئًا؛ ولا يسجّل أي أدوات ولا يضيف شيئًا إلى موجّه النظام.
القيمة ownsCompaction: false لا تعني أن OpenClaw يعود تلقائيًا إلى مسار الضغط الخاص بالمحرك legacy.
كتابة محرك
يسجّل المكوّن الإضافي محركًا بمعرّف واسم، وبيان ما إذا كان يملك الضغط، ومعاملات المضيف التي يقبلها؛ ويقاطع OpenClaw هذا الإعلان مع الحقول المتاحة لكل دالة من دوال دورة الحياة، فلا تُحقن أبدًا مفاتيح غير معلنة أو غير معروفة، أما المحرك الذي يغفل الإعلان فيتلقى كل حقول المضيف الحالية. وللدورات المقبولة الدائمة، يعلن المحرك دلالتَي سجل المحادثة كلتيهما وينفّذ دالة commit ككتابة واحدة ذرية وثابتة الأثر عند التكرار (idempotent) مفهرسة بمفتاح تقدّم، تعيد الحالة committed عند الكتابة الأولى والحالة duplicate عندما تقدّم إعادة محاولة من المضيف المفتاح نفسه؛ ولا تغطي الحمولة إلا النطاق الممتد من إدخال المستخدم المقبول حتى الإدخال الطرفي المقبول، ويُقرأ السجل الأقدم عبر مؤشر سجل المحادثة. ومن دون الإعلان الكامل والدالة، يستخدم OpenClaw مسار legacy لتلك الدورة المنطقية بأكملها بما فيها إعادات المحاولة، ويترك الخانة المهيأة دون تغيير، ويجرب المحرك مجددًا في الدورة التالية. وتحمل نتيجة assemble الرسائل، وعددًا تقديريًا للرموز، وإضافة اختيارية لموجّه النظام، وعلامة سلطة الموجّه التي تحدد أي تقدير يستخدمه الفحص المسبق للتجاوز، ودورة حياة اختيارية للإسقاط (projection) للمضيفات ذات سلاسل الواجهة الخلفية الدائمة.
المتطلبات والفشل
- يمكن للمحرك أن يعلن متطلبات لقدرات المضيف، مثل أن عليه التحكم في الموجّه الفعلي عبر assemble؛ وعمليات تشغيل الوكيل الأصيلة والمضمّنة تلبي هذه القدرة بينما لا تلبيها الواجهات الخلفية العامة لسطر الأوامر، لذا يُرفض المحرك الذي يتطلبها قبل أن تبدأ العملية، فيفشل بشكل مغلق (fail closed) مع رسالة وصفية.
- إذا كان محرك غير legacy مفقودًا، أو فشل في التحقق من العقد، أو رمى استثناءً أثناء الإنشاء أو من إحدى دوال دورة الحياة، يعزله OpenClaw طوال عمر عملية gateway الحالية، ويخفّض عمل السياق إلى legacy حتى تستمر الردود، ويسجّل الخطأ مع العملية الفاشلة حتى يتمكن المشغّل من إصلاح المكوّن الإضافي أو تحديثه أو تعطيله.
- امتلاك الضغط يعطّل الضغط التلقائي المدمج أثناء المحاولة والفحص المسبق العام للتجاوز قبل الموجّه لذلك التشغيل، فيصبح المحرك مسؤولًا عن الضغط اليدوي والتعافي من التجاوز وأي عمل استباقي؛ وعدم امتلاكه يبقي الضغط التلقائي المدمج متاحًا لكنه يظل يوجّه الضغط اليدوي والتعافي من التجاوز إلى المحرك، ولهذا فإن دالة compact التي لا تفعل شيئًا غير آمنة.
تشرح صفحة الضغط في OpenClaw السلوك الذي يفوّض إليه المحرك legacy، ويتناول دليل السياق في OpenClaw الشيء الذي يجري تجميعه.
الاختيار وإلغاء الاختيار
الخانة حصرية وقت التشغيل: لا يقع الاختيار إلا على محرك مسجّل واحد لتشغيل أو ضغط معيّن، رغم أن مكونات المحركات الإضافية المفعّلة الأخرى تظل تُحمّل وتشغّل شيفرة التسجيل الخاصة بها. وإلغاء تثبيت المكوّن الإضافي المختار حاليًا في الخانة يعيدها إلى القيمة الافتراضية، وتنطبق إعادة التعيين نفسها على خانة الذاكرة، لذا لا يلزم أي تعديل يدوي للإعدادات. ولا يعيد تبديل المحركات كتابة الجلسات الموجودة؛ بل تستمر بسجلها الحالي بينما يتولى المحرك الجديد عمليات التشغيل المستقبلية. ومكونات الذاكرة الإضافية خانة منفصلة توفر البحث والاسترجاع، ويمكن للمحرك الاستفادة منها أثناء التجميع عبر الأداة المساعدة الموثّقة بدلًا من التدخل في بنيتها الداخلية. تغطي صفحة المكونات الإضافية في OpenClaw نظام المكونات الإضافية، وتغطي صفحة بحث الذاكرة في OpenClaw جانب الاسترجاع.
على Diali
على Diali، تُولّد إعدادات التشغيل من لوحة التحكم وتُستبدل مع كل إصدار، لذا فإن اختيار محرك السياق جزء من تلك الإعدادات المولّدة لا ملف يعدّله العملاء يدويًا. تصف صفحة OpenClaw المستضاف على Diali المساعد المستضاف، وتصف صفحة الأمان في Diali الحدود المحيطة بكل بيئة تشغيل.
- الاستيعاب، والتجميع، والضغط، وما بعد الدورة: أربع نقاط، وعقد واحد.
- المحرك المعطوب يوضع في العزل؛ ويحافظ legacy على استجابة الوكيل.
- أعلن دلالات سجل المحادثة، وإلا فستستخدم الدورة legacy بصمت.
كفاك قراءة، ابنِ وكيلك الخاص
جهز وكيلًا، واختر قناة، واجعله يعمل داخل التطبيق المفتوح لديك دائمًا.
