الضغط
لكل نموذج نافذة سياق — وهي الحد الأقصى لعدد الرموز التي يمكنه معالجتها. عندما تقترب المحادثة من هذا الحد، يقوم OpenClaw بضغط الرسائل الأقدم في ملخص حتى تتمكن الدردشة من الاستمرار.كيف يعمل
- تُلخَّص أدوار المحادثة الأقدم في إدخال مضغوط.
- يُحفَظ الملخص في نص الجلسة.
- تُحفَظ الرسائل الحديثة كما هي.
toolResult المطابقة لها. إذا وقعت نقطة التقسيم
داخل كتلة أداة، ينقل OpenClaw الحد الفاصل بحيث يبقى الزوج معًا
ويُحفَظ الذيل الحالي غير المُلخَّص.
يبقى سجل المحادثة الكامل محفوظًا على القرص. يغيّر الضغط فقط ما
يراه النموذج في الدورة التالية.
الضغط التلقائي
الضغط التلقائي مفعّل افتراضيًا. يعمل عندما تقترب الجلسة من حد السياق، أو عندما يعيد النموذج خطأ تجاوز السياق (وفي هذه الحالة يقوم OpenClaw بالضغط ثم يعيد المحاولة). تتضمن تواقيع التجاوز الشائعةrequest_too_large وcontext length exceeded وinput exceeds the maximum number of tokens وinput token count exceeds the maximum number of input tokens وinput is too long for the model وollama error: context length exceeded.
قبل الضغط، يذكّر OpenClaw الوكيل تلقائيًا بحفظ الملاحظات المهمة
في ملفات memory. هذا يمنع فقدان السياق.
agents.defaults.compaction في ملف openclaw.json لتكوين سلوك الضغط (الوضع، والرموز المستهدفة، وغير ذلك).
يحافظ تلخيص الضغط افتراضيًا على المعرّفات المعتمة (identifierPolicy: "strict"). يمكنك تجاوز ذلك باستخدام identifierPolicy: "off" أو توفير نص مخصص باستخدام identifierPolicy: "custom" وidentifierInstructions.
يمكنك اختياريًا تحديد نموذج مختلف لتلخيص الضغط عبر agents.defaults.compaction.model. يكون هذا مفيدًا عندما يكون نموذجك الأساسي نموذجًا محليًا أو صغيرًا وتريد أن تُنتَج ملخصات الضغط بواسطة نموذج أكثر قدرة. يقبل هذا التجاوز أي سلسلة provider/model-id:
موفرو الضغط القابلون للتوصيل
يمكن للمكونات الإضافية تسجيل موفر ضغط مخصص عبرregisterCompactionProvider() على واجهة API الخاصة بالمكون الإضافي. عند تسجيل موفر وتكوينه، يفوض OpenClaw التلخيص إليه بدلًا من مسار LLM المدمج.
لاستخدام موفر مسجل، عيّن معرّف الموفر في إعداداتك:
provider تلقائيًا إلى فرض mode: "safeguard". تتلقى الموفرات تعليمات الضغط نفسها وسياسة الحفاظ على المعرّفات نفسها المستخدمة في المسار المدمج، ويستمر OpenClaw أيضًا في الحفاظ على سياق لاحقة الأدوار الحديثة والأدوار المقسومة بعد مخرجات الموفر. إذا فشل الموفر أو أعاد نتيجة فارغة، يعود OpenClaw إلى تلخيص LLM المدمج.
الضغط التلقائي (مفعّل افتراضيًا)
عندما تقترب الجلسة من نافذة سياق النموذج أو تتجاوزها، يشغّل OpenClaw الضغط التلقائي وقد يعيد محاولة الطلب الأصلي باستخدام السياق المضغوط. سترى:🧹 Auto-compaction completeفي الوضع المفصل- يعرض
/statusالقيمة🧹 Compactions: <count>
الضغط اليدوي
اكتب/compact في أي دردشة لفرض الضغط. أضف تعليمات لتوجيه
الملخص:
استخدام نموذج مختلف
افتراضيًا، يستخدم الضغط النموذج الأساسي لوكيلك. يمكنك استخدام نموذج أكثر قدرة للحصول على ملخصات أفضل:إشعار بدء الضغط
افتراضيًا، يعمل الضغط بصمت. لإظهار إشعار موجز عند بدء الضغط، فعّلnotifyUser:
الضغط مقابل التقليص
| الضغط | التقليص | |
|---|---|---|
| ما الذي يفعله | يلخص المحادثة الأقدم | يقتطع نتائج الأدوات القديمة |
| هل يُحفَظ؟ | نعم (في نص الجلسة) | لا (في الذاكرة فقط، لكل طلب) |
| النطاق | المحادثة بالكامل | نتائج الأدوات فقط |
استكشاف الأخطاء وإصلاحها
هل يحدث الضغط كثيرًا جدًا؟ قد تكون نافذة سياق النموذج صغيرة، أو قد تكون مخرجات الأدوات كبيرة. جرّب تفعيل تقليص الجلسة. هل يبدو السياق قديمًا بعد الضغط؟ استخدم/compact Focus on <topic> من أجل
توجيه الملخص، أو فعّل تفريغ الذاكرة حتى تبقى
الملاحظات محفوظة.
هل تحتاج إلى بداية نظيفة؟ يبدأ /new جلسة جديدة دون ضغط.
للحصول على إعدادات متقدمة (الرموز المحجوزة، والحفاظ على المعرّفات، ومحركات
السياق المخصصة، والضغط من جهة الخادم في OpenAI)، راجع
التعمق في إدارة الجلسات.
ذو صلة
- الجلسة — إدارة الجلسات ودورة حياتها
- تقليص الجلسة — اقتطاع نتائج الأدوات
- السياق — كيفية بناء السياق لأدوار الوكيل
- Hooks — خطافات دورة حياة الضغط (
before_compaction,after_compaction)