لكل نموذج نافذة سياق: الحد الأقصى لعدد الرموز التي يمكنه معالجتها. عندما تقترب محادثة من ذلك الحد، ينفّذ OpenClaw Compaction للرسائل الأقدم في ملخص حتى تتمكن الدردشة من المتابعة.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
كيف يعمل
- تُلخَّص أدوار المحادثة الأقدم في إدخال مضغوط.
- يُحفَظ الملخص في سجل الجلسة.
- تُبقى الرسائل الحديثة كما هي.
toolResult المطابقة لها. إذا وقع موضع التقسيم داخل كتلة أداة، ينقل OpenClaw الحد بحيث يبقى الزوج معًا ويُحفَظ الذيل الحالي غير الملخّص.
يبقى سجل المحادثة الكامل على القرص. يغيّر Compaction فقط ما يراه النموذج في الدور التالي.
Compaction التلقائي
يكون Compaction التلقائي مفعّلًا افتراضيًا. يعمل عندما تقترب الجلسة من حد السياق، أو عندما يعيد النموذج خطأ تجاوز السياق (وفي هذه الحالة ينفّذ OpenClaw عملية Compaction ثم يعيد المحاولة). سترى:embedded run auto-compaction start/completeفي سجلات Gateway العادية.🧹 Auto-compaction completeفي الوضع المطوّل.- يعرض
/statusالقيمة🧹 Compactions: <count>.
قبل تنفيذ Compaction، يذكّر OpenClaw الوكيل تلقائيًا بحفظ الملاحظات المهمة في ملفات الذاكرة. يمنع ذلك فقدان السياق.
توقيعات التجاوز المعروفة
توقيعات التجاوز المعروفة
يكتشف OpenClaw تجاوز السياق من أنماط أخطاء المزوّدين هذه:
request_too_largecontext length exceededinput exceeds the maximum number of tokensinput token count exceeds the maximum number of input tokensinput is too long for the modelollama error: context length exceeded
Compaction اليدوي
اكتب/compact في أي دردشة لفرض Compaction. أضف تعليمات لتوجيه الملخص:
agents.defaults.compaction.keepRecentTokens، يحترم Compaction اليدوي نقطة قطع Pi تلك ويبقي الذيل الحديث في السياق المعاد بناؤه. من دون ميزانية إبقاء صريحة، يتصرف Compaction اليدوي كنقطة تحقق صارمة ويتابع من الملخص الجديد وحده.
التهيئة
هيّئ Compaction ضمنagents.defaults.compaction في ملف openclaw.json لديك. المقابض الأكثر شيوعًا مذكورة أدناه؛ وللمرجع الكامل، راجع التعمق في إدارة الجلسات.
استخدام نموذج مختلف
افتراضيًا، يستخدم Compaction النموذج الأساسي للوكيل. اضبطagents.defaults.compaction.model لتفويض التلخيص إلى نموذج أكثر قدرة أو أكثر تخصصًا. يقبل التجاوز أي سلسلة provider/model-id:
agents.defaults.compaction.model الصريح دقيقًا ولا يرث سلسلة الرجوع الاحتياطي للجلسة.
الحفاظ على المعرّفات
يحافظ تلخيص Compaction على المعرّفات المعتمة افتراضيًا (identifierPolicy: "strict"). تجاوز ذلك باستخدام identifierPolicy: "off" للتعطيل، أو identifierPolicy: "custom" مع identifierInstructions للحصول على إرشادات مخصصة.
حارس بايتات السجل النشط
عند ضبطagents.defaults.compaction.maxActiveTranscriptBytes، يشغّل OpenClaw عملية Compaction محلية عادية قبل التشغيل إذا بلغ ملف JSONL النشط ذلك الحجم. هذا مفيد للجلسات طويلة التشغيل التي قد تحافظ فيها إدارة السياق من جهة المزوّد على سلامة سياق النموذج بينما يستمر السجل المحلي في النمو. لا يقسم بايتات JSONL الخام؛ بل يطلب من مسار Compaction العادي إنشاء ملخص دلالي.
السجلات اللاحقة
عند تمكينagents.defaults.compaction.truncateAfterCompaction، لا يعيد OpenClaw كتابة السجل الحالي في مكانه. ينشئ سجلًا لاحقًا نشطًا جديدًا من ملخص Compaction والحالة المحفوظة والذيل غير الملخّص، ثم يُبقي ملف JSONL السابق كمصدر مؤرشف لنقطة التحقق.
تُسقط السجلات اللاحقة أيضًا أدوار المستخدم الطويلة المكررة تطابقًا تامًا التي تصل
داخل نافذة إعادة محاولة قصيرة، بحيث لا تُحمَل عواصف إعادة محاولة القنوات إلى
السجل النشط التالي بعد Compaction.
لا تُحتفظ بنقاط التحقق السابقة لـ Compaction إلا ما دامت دون حد حجم نقاط التحقق في OpenClaw؛
تظل السجلات النشطة الضخمة تُضغط، لكن OpenClaw
يتجاوز لقطة التصحيح الكبيرة بدلًا من مضاعفة استخدام القرص.
إشعارات Compaction
افتراضيًا، يعمل Compaction بصمت. اضبطnotifyUser لإظهار رسائل حالة موجزة عند بدء Compaction واكتماله:
تفريغ الذاكرة
قبل Compaction، يمكن لـ OpenClaw تشغيل دور تفريغ ذاكرة صامت لتخزين ملاحظات دائمة على القرص. اضبطagents.defaults.compaction.memoryFlush.model عندما ينبغي أن يستخدم دور الصيانة هذا نموذجًا محليًا بدلًا من نموذج المحادثة النشط:
مزوّدو Compaction القابلون للتوصيل
يمكن لـ Plugins تسجيل مزوّد Compaction مخصص عبرregisterCompactionProvider() في واجهة برمجة تطبيقات Plugin. عند تسجيل مزوّد وتهيئته، يفوّض OpenClaw التلخيص إليه بدلًا من مسار LLM المضمّن.
لاستخدام مزوّد مسجّل، اضبط معرّفه في التهيئة لديك:
provider تلقائيًا إلى فرض mode: "safeguard". يتلقى المزوّدون تعليمات Compaction نفسها وسياسة الحفاظ على المعرّفات نفسها التي يستخدمها المسار المضمّن، ويظل OpenClaw يحافظ على سياق لاحقة الأدوار الحديثة والأدوار المقسّمة بعد إخراج المزوّد.
إذا فشل المزوّد أو أعاد نتيجة فارغة، يرجع OpenClaw إلى تلخيص LLM المضمّن.
Compaction مقابل التقليم
| Compaction | التقليم | |
|---|---|---|
| ما الذي يفعله | يلخص المحادثة الأقدم | يقتطع نتائج الأدوات القديمة |
| محفوظ؟ | نعم (في سجل الجلسة) | لا (في الذاكرة فقط، لكل طلب) |
| النطاق | المحادثة بأكملها | نتائج الأدوات فقط |
استكشاف الأخطاء وإصلاحها
هل يحدث Compaction كثيرًا؟ قد تكون نافذة سياق النموذج صغيرة، أو قد تكون مخرجات الأدوات كبيرة. جرّب تمكين تقليم الجلسة. هل يبدو السياق قديمًا بعد Compaction؟ استخدم/compact Focus on <topic> لتوجيه الملخص، أو فعّل تفريغ الذاكرة حتى تبقى الملاحظات.
هل تحتاج إلى صفحة جديدة؟ يبدأ /new جلسة جديدة من دون تنفيذ Compaction.
لتهيئة متقدمة (الرموز الاحتياطية، الحفاظ على المعرّفات، محركات السياق المخصصة، Compaction من جهة خادم OpenAI)، راجع التعمق في إدارة الجلسات.
ذات صلة
- الجلسة: إدارة الجلسة ودورة حياتها.
- تقليم الجلسة: اقتطاع نتائج الأدوات.
- السياق: كيفية بناء السياق لأدوار الوكيل.
- الخطافات: خطافات دورة حياة Compaction (
before_compaction,after_compaction).