legacy مدمج ويستخدمه افتراضيًا. لا تثبّت محرك Plugin وتحدده إلا عندما تريد سلوكًا مختلفًا في التجميع أو Compaction أو الاستدعاء عبر الجلسات.
البدء السريع
1
تحقق من المحرك النشط
2
ثبّت محرك Plugin
تُثبَّت Plugins محرك السياق مثل أي Plugin آخر في OpenClaw.
- من npm
- من مسار محلي
3
فعّل المحرك وحدده
4
عُد إلى المحرك القديم (اختياري)
اضبط
contextEngine على "legacy" (أو احذف المفتاح تمامًا، إذ إن "legacy" هو الإعداد الافتراضي).آلية العمل
في كل مرة يشغّل فيها OpenClaw مطالبة نموذج، يشارك محرك السياق عند أربع نقاط في دورة الحياة:1. الاستيعاب
1. الاستيعاب
يُستدعى عند إضافة رسالة جديدة إلى الجلسة. يمكن للمحرك تخزين الرسالة أو فهرستها في مخزن بياناته.
2. التجميع
2. التجميع
يُستدعى قبل كل تشغيل للنموذج. يعيد المحرك مجموعة مرتبة من الرسائل (و
systemPromptAddition اختياريًا) ضمن ميزانية الرموز.3. Compaction
3. Compaction
يُستدعى عند امتلاء نافذة السياق، أو عندما يشغّل المستخدم
/compact. يلخّص المحرك السجل الأقدم لإخلاء مساحة.4. بعد الدور
4. بعد الدور
يُستدعى بعد اكتمال التشغيل. يمكن للمحرك حفظ الحالة، أو تشغيل Compaction في الخلفية، أو تحديث الفهارس.
maintain() لصيانة النص المنسوخ (إعادة كتابة آمنة عبر runtimeContext.rewriteTranscriptEntries()) بعد التمهيد، أو دور ناجح، أو Compaction. اضبط info.turnMaintenanceMode: "background" لتشغيله كعمل مؤجل بدلًا من حظر الرد.
بالنسبة إلى عُدّة Codex المضمّنة غير التابعة لـ ACP، يطبّق OpenClaw دورة الحياة نفسها من خلال إسقاط السياق المجمّع في تعليمات مطوّر Codex ومطالبة الدور الحالي. يظل Codex مسؤولًا عن سجل سلسلة المحادثة الأصلي وأداة Compaction الأصلية الخاصة به.
دورة حياة الوكيل الفرعي (اختيارية)
يستدعي OpenClaw خطافي دورة حياة اختياريين للوكلاء الفرعيين:method
يُعِد حالة السياق المشتركة قبل بدء تشغيل فرعي. يتلقى الخطاف مفاتيح جلسة الأصل/الفرع، و
contextMode (isolated أو fork) ومعرّفات/ملفات النصوص المنسوخة المتاحة ومدة TTL اختيارية. إذا أعاد مقبض تراجع، يستدعيه OpenClaw عندما يفشل إنشاء الفرع بعد نجاح الإعداد. تتخطى عمدًا عمليات إنشاء الوكلاء الفرعيين الأصلية التي تطلب lightContext وتُحل إلى contextMode="isolated" هذا الخطاف، لكي يبدأ الفرع من سياق التمهيد الخفيف من دون حالة مُدارة بواسطة محرك السياق قبل الإنشاء.method
ينظّف الموارد عند اكتمال جلسة وكيل فرعي أو إزالتها.
إضافة مطالبة النظام
يمكن للتابعassemble إعادة سلسلة systemPromptAddition. يضيف OpenClaw هذه السلسلة إلى بداية مطالبة النظام الخاصة بالتشغيل. يتيح ذلك للمحركات إدخال إرشادات استدعاء ديناميكية، أو تعليمات استرجاع، أو تلميحات مدركة للسياق من دون الحاجة إلى ملفات ثابتة في مساحة العمل.
المحرك القديم
يحافظ محركlegacy المدمج على سلوك OpenClaw الأصلي:
- الاستيعاب: لا ينفّذ أي إجراء (يتولى مدير الجلسة حفظ الرسائل مباشرةً).
- التجميع: تمرير مباشر (يتولى المسار الحالي للتنقية ← التحقق ← التقييد في بيئة التشغيل تجميع السياق).
- Compaction: يفوّض إلى Compaction التلخيصي المدمج، الذي ينشئ ملخصًا واحدًا للرسائل الأقدم ويُبقي الرسائل الحديثة كما هي.
- بعد الدور: لا ينفّذ أي إجراء.
systemPromptAddition.
عندما لا يكون plugins.slots.contextEngine مضبوطًا (أو يكون مضبوطًا على "legacy") يُستخدم هذا المحرك تلقائيًا.
محركات Plugins
يمكن لـ Plugin تسجيل محرك سياق باستخدام واجهة برمجة تطبيقات Plugin:ctx قيمًا اختيارية هي config وagentDir وworkspaceDir
بحيث يمكن لـ Plugins تهيئة الحالة لكل وكيل أو لكل مساحة عمل قبل تشغيل
أول خطاف لدورة الحياة.
ثم فعّله في الإعدادات:
واجهة ContextEngine
الأعضاء المطلوبة:
يعيد
assemble كائن AssembleResult يحتوي على:
Message[]
مطلوب
الرسائل المرتبة التي ستُرسل إلى النموذج.
number
مطلوب
تقدير المحرك لإجمالي الرموز في السياق المجمّع. يستخدم OpenClaw هذا لاتخاذ قرارات عتبة Compaction وإعداد التقارير التشخيصية.
string
يُضاف إلى بداية مطالبة النظام.
"assembled" | "preassembly_may_overflow"
يتحكم في تقدير الرموز الذي يستخدمه المشغّل لإجراء فحوصات استباقية
لتجاوز السعة. القيمة الافتراضية هي
"assembled"، ما يعني أنه لا يُفحص سوى
تقدير المطالبة المجمّعة للمحركات غير المسؤولة عن Compaction.
تدير المحركات التي تضبط ownsCompaction: true قبول مطالباتها بنفسها،
لذلك يتخطى OpenClaw افتراضيًا الفحص العام السابق للمطالبة. اضبط
"preassembly_may_overflow" فقط عندما تكون رؤيتك المجمّعة قادرة على إخفاء خطر
تجاوز السعة في النص المنسوخ الأساسي؛ وعندها يُبقي المشغّل الفحص العام
نشطًا ويأخذ القيمة القصوى بين التقدير المجمّع وتقدير سجل الجلسة
السابق للتجميع (غير المقيّد بنافذة) عند تقرير ما إذا كان ينبغي إجراء
Compaction استباقيًا. في كلتا الحالتين، تظل الرسائل التي تعيدها هي ما يراه
النموذج؛ لا يؤثر promptAuthority إلا في الفحص المسبق.ContextEngineProjection
دورة حياة إسقاط اختيارية للمضيفين ذوي سلاسل المحادثة الدائمة في الخلفية (مثل خادم تطبيق Codex). يطلب
mode: "thread_bootstrap" مع epoch ثابت من المضيف إدخال السياق المجمّع مرة واحدة لكل حقبة وإعادة استخدام سلسلة المحادثة الخلفية حتى تتغير الحقبة، بدلًا من إعادة الإسقاط في كل دور. احذف هذا الحقل للإسقاط المعتاد لكل دور.compact كائن CompactResult. عندما تغيّر Compaction هوية الجلسة النشطة،
يحدّد result.sessionTarget (وهو ContextEngineSessionTarget ذو نوع محدد يحمل
هوية الجلسة ونطاق التخزين) الجلسة اللاحقة التي يجب أن تستخدمها
إعادة المحاولة أو الدور التالي؛ ويطابق result.sessionId معرّف الجلسة اللاحقة.
الأعضاء الاختيارية:
إعدادات بيئة التشغيل
تتلقى خطافات دورة الحياة التي تعمل داخل OpenClaw كائنruntimeSettings اختياريًا. وهو سطح واجهة برمجة تطبيقات داخلية
لمنتج/مستهلك، محدد الإصدار وللقراءة فقط: ينتجه OpenClaw لمحرك السياق
المحدد، ويستهلكه محرك السياق داخل خطافات دورة الحياة. ولا يُعرض
مباشرةً للمستخدمين ولا ينشئ سطحًا مخصصًا لإعداد التقارير.
schemaVersion: حاليًا1runtime: مضيف OpenClaw، ووضع وقت التشغيل (normal، أوfallback، أوdegraded)، ومعرّفات إطار الاختبار/وقت التشغيل الاختياريةcontextEngineSelection: معرّف محرك السياق المحدد ومصدر التحديدexecutionHost: معرّف المضيف وتسميته للسطح الذي يستدعي الخطافmodel: النموذج المطلوب، والنموذج المحسوم، والموفّر، وعائلة النموذج الاختياريةlimits: ميزانية رموز المطالبة والحد الأقصى لرموز الإخراج عندما يكونان معروفينdiagnostics: رموز أسباب الرجوع الاحتياطي المغلق والتشغيل المتدهور عندما تكون معروفة
null؛ أما حقول التمييز مثل
وضع وقت التشغيل ومصدر التحديد فتظل غير قابلة للقيمة الخالية. وتظل المحركات الأقدم
متوافقة: إذا رفض محرك قديم صارم الخاصية runtimeSettings بوصفها
خاصية غير معروفة، يعيد OpenClaw محاولة استدعاء دورة الحياة من دونها بدلًا من عزل
المحرك.
متطلبات المضيف
يمكن لمحركات السياق إعلان متطلبات قدرات المضيف فيinfo.hostRequirements.
يتحقق OpenClaw من هذه المتطلبات قبل بدء العملية، ويفشل في وضع مغلق
مع خطأ وصفي عندما يتعذر على وقت التشغيل المحدد استيفاؤها.
بالنسبة إلى عمليات تشغيل الوكيل، أعلِن assemble-before-prompt عندما يجب أن يتحكم المحرك في
مطالبة النموذج الفعلية من خلال assemble():
assemble-before-prompt.
أما واجهات CLI الخلفية العامة فلا تستوفيه، ولذلك تُرفض المحركات التي تتطلبه قبل بدء
عملية CLI.
عزل حالات الفشل
يعزل OpenClaw محرك Plugin المحدد عن مسار الرد الأساسي. إذا كان محرك غير قديم مفقودًا، أو فشل في التحقق من العقد، أو طرح استثناءً أثناء إنشاء المصنع، أو طرح استثناءً من إحدى طرق دورة الحياة، فإن OpenClaw يعزل ذلك المحرك لعملية Gateway الحالية ويخفض مهام محرك السياق إلى المحرك المضمّنlegacy. ويُسجَّل الخطأ مع العملية الفاشلة لكي يتمكن
المشغّل من إصلاح Plugin أو تحديثه أو تعطيله من دون أن يتوقف الوكيل
عن الرد.
تختلف حالات فشل متطلبات المضيف: فعندما يعلن محرك أن وقت التشغيل
يفتقر إلى قدرة مطلوبة، يفشل OpenClaw في وضع مغلق قبل بدء التشغيل. ويحمي ذلك
المحركات التي قد تفسد الحالة إذا عملت في مضيف غير مدعوم.
ownsCompaction
يتحكمownsCompaction في بقاء الضغط التلقائي المضمّن ضمن المحاولة في وقت تشغيل OpenClaw مفعّلًا لعملية التشغيل:
ownsCompaction: true
ownsCompaction: true
يمتلك المحرك سلوك الضغط. يعطّل OpenClaw الضغط التلقائي المضمّن في وقت تشغيل OpenClaw والفحص التمهيدي العام لتجاوز السعة قبل المطالبة في عملية التشغيل تلك، ويكون تنفيذ المحرك لـ
compact() مسؤولًا عن /compact، وضغط الاسترداد من تجاوز سعة الموفّر، وأي ضغط استباقي يريد تنفيذه في afterTurn(). يظل OpenClaw يشغّل إجراء الحماية من تجاوز السعة قبل المطالبة عندما يعيد المحرك promptAuthority: "preassembly_may_overflow" من assemble().ownsCompaction: false or unset
ownsCompaction: false or unset
قد يستمر تشغيل الضغط التلقائي المضمّن في وقت تشغيل OpenClaw أثناء تنفيذ المطالبة، لكن تظل طريقة
compact() في المحرك النشط تُستدعى من أجل /compact والاسترداد من تجاوز السعة.- وضع الامتلاك
- وضع التفويض
نفّذ خوارزمية الضغط الخاصة بك واضبط
ownsCompaction: true.compact() الذي لا ينفذ أي إجراء غير آمن لمحرك نشط لا يمتلك الضغط، لأنه يعطّل مسار الضغط العادي لـ /compact ومسار ضغط الاسترداد من تجاوز السعة لخانة ذلك المحرك.
مرجع الإعداد
الخانة حصرية في وقت التشغيل - لا يُحسم سوى محرك سياق مسجّل واحد لعملية تشغيل أو ضغط معينة. لا يزال بإمكان Plugins
kind: "context-engine" المفعّلة الأخرى التحميل وتشغيل شيفرة تسجيلها؛ لا يحدد plugins.slots.contextEngine سوى معرّف المحرك المسجّل الذي يحسمه OpenClaw عندما يحتاج إلى محرك سياق.إلغاء تثبيت Plugin: عند إلغاء تثبيت Plugin المحدد حاليًا بوصفه
plugins.slots.contextEngine، يعيد OpenClaw الخانة إلى القيمة الافتراضية (legacy). وينطبق سلوك إعادة الضبط نفسه على plugins.slots.memory. لا يلزم تعديل الإعداد يدويًا.العلاقة بالضغط والذاكرة
Compaction
Compaction
يُعد الضغط إحدى مسؤوليات محرك السياق. يفوّض المحرك القديم عملية التلخيص المضمّنة في OpenClaw. ويمكن لمحركات Plugin تنفيذ أي استراتيجية ضغط (ملخصات DAG، والاسترجاع المتجهي، وما إلى ذلك).
Plugins الذاكرة
Plugins الذاكرة
تكون Plugins الذاكرة (
plugins.slots.memory) منفصلة عن محركات السياق. توفر Plugins الذاكرة البحث/الاسترجاع؛ بينما تتحكم محركات السياق فيما يراه النموذج. ويمكنهما العمل معًا - فقد يستخدم محرك السياق بيانات Plugin الذاكرة أثناء التجميع. ينبغي لمحركات Plugin التي تريد مسار مطالبة الذاكرة النشط تفضيل buildMemorySystemPromptAddition(...) من openclaw/plugin-sdk/core، الذي يحوّل أقسام مطالبة الذاكرة النشطة إلى systemPromptAddition جاهز للإضافة في البداية. وإذا احتاج محرك إلى تحكم منخفض المستوى، فلا يزال بإمكانه جلب الأسطر الأولية من openclaw/plugin-sdk/memory-host-core عبر buildActiveMemoryPromptSection(...).تنقيح الجلسة
تنقيح الجلسة
يستمر اقتطاع نتائج الأدوات القديمة في الذاكرة بغض النظر عن محرك السياق النشط.
نصائح
- استخدم
openclaw doctorللتحقق من تحميل محركك بصورة صحيحة. - عند تبديل المحركات، تستمر الجلسات الحالية بسجلها الحالي. ويتولى المحرك الجديد عمليات التشغيل المستقبلية.
- تُسجَّل أخطاء المحرك ويُعزل محرك Plugin المحدد لعملية Gateway الحالية. يرجع OpenClaw إلى
legacyلأدوار المستخدم لكي تستمر الردود، ولكن يظل عليك إصلاح Plugin المعطّل أو تحديثه أو تعطيله أو إلغاء تثبيته. - للتطوير، استخدم
openclaw plugins install -l ./my-engineلربط دليل Plugin محلي من دون نسخه.
ذو صلة
- Compaction - تلخيص المحادثات الطويلة
- السياق - كيفية بناء السياق لأدوار الوكيل
- بنية Plugin - تسجيل Plugins محرك السياق
- بيان Plugin - حقول بيان Plugin
- Plugins - نظرة عامة على Plugins