آلية العمل
- تُلخَّص أدوار المحادثة الأقدم في إدخال مضغوط.
- يُحفظ الملخص في سجل جلسة المحادثة.
- تظل الرسائل الحديثة كما هي.
toolResult المطابقة لها عند اختيار نقطة تقسيم للضغط. وإذا وقعت النقطة داخل كتلة أداة، ينقل OpenClaw الحد الفاصل بحيث يظل الزوج معًا ويُحفظ الجزء الحالي غير الملخص.
يظل سجل المحادثة الكامل محفوظًا على القرص. لا يغيّر Compaction سوى ما يراه النموذج في الدور التالي.
تستخدم الإعدادات الجديدة افتراضيًا
agents.defaults.compaction.mode بالقيمة "safeguard" (ضوابط حماية أكثر صرامة، وتدقيقات لجودة الملخص). عيّن mode: "default" صراحةً لإلغاء الاشتراك.الضغط التلقائي
يكون الضغط التلقائي مفعّلًا افتراضيًا. ويعمل عندما تقترب الجلسة من حد السياق، أو عندما يعيد النموذج خطأ تجاوز السياق (وفي هذه الحالة يضغط OpenClaw السياق ويعيد المحاولة). سترى:embedded run auto-compaction start/completeفي سجلات Gateway العادية.🧹 Auto-compaction completeفي الوضع المفصل./statusيعرض🧹 Compactions: <count>.
قبل الضغط، يذكّر OpenClaw الوكيل تلقائيًا بحفظ الملاحظات المهمة في ملفات الذاكرة. يمنع هذا فقدان السياق.
أنماط أخطاء التجاوز التي يتعرف عليها OpenClaw
أنماط أخطاء التجاوز التي يتعرف عليها OpenClaw
يطابق OpenClaw عشرات من سلاسل أخطاء التجاوز الخاصة بمزودي الخدمة (Anthropic وOpenAI وBedrock وGemini وOllama وOpenRouter وغيرهم). أمثلة شائعة:
request_too_largecontext length exceededinput exceeds the maximum number of tokensinput token count exceeds the maximum number of input tokens(Bedrock)input is too long for the modelollama error: context length exceeded
الضغط اليدوي
اكتب/compact في أي دردشة لفرض الضغط. أضف تعليمات لتوجيه الملخص:
agents.defaults.compaction.keepRecentTokens (الافتراضي: 20,000)، يلتزم الضغط اليدوي بنقطة القطع هذه ويحتفظ بالجزء الحديث في السياق المعاد بناؤه. ومن دون ميزانية احتفاظ صريحة، يتصرف الضغط اليدوي كنقطة تحقق صارمة ويتابع من الملخص الجديد وحده.
الإعداد
اضبط Compaction ضمنagents.defaults.compaction في openclaw.json الخاص بك. ترد أدناه عناصر الضبط الأكثر شيوعًا؛ وللاطلاع على المرجع الكامل، راجع التعمق في إدارة الجلسات.
استخدام نموذج مختلف
يستخدم Compaction افتراضيًا النموذج الأساسي للوكيل. عيّنagents.defaults.compaction.model لتفويض التلخيص إلى نموذج أكثر قدرة أو تخصصًا. يقبل التجاوز سلسلة provider/model-id أو اسمًا مستعارًا مجردًا جرى إعداده ضمن agents.defaults.models:
agents.defaults.compaction.model الصريح مطابقًا تمامًا ولا يرث سلسلة النماذج الاحتياطية للجلسة.
الحفاظ على المعرّفات
يحافظ تلخيص Compaction افتراضيًا على المعرّفات المبهمة (identifierPolicy: "strict"). استخدم التجاوز identifierPolicy: "off" للتعطيل، أو identifierPolicy: "custom" مع identifierInstructions لتقديم إرشادات مخصصة.
حارس بايتات سجل المحادثة النشط
عند تعيينagents.defaults.compaction.maxActiveTranscriptBytes، يشغّل OpenClaw
الضغط المحلي العادي قبل التشغيل إذا بلغ سجل المحادثة
ذلك الحجم. يفيد هذا في الجلسات طويلة التشغيل التي قد تُبقي فيها إدارة السياق
من جانب المزود سياق النموذج سليمًا بينما يستمر سجل المحادثة المحفوظ
في النمو. ولا يقسم هذا البايتات الخام؛ بل يطلب من مسار
الضغط العادي إنشاء ملخص دلالي.
سجلات المحادثة اللاحقة
عند تمكينagents.defaults.compaction.truncateAfterCompaction، لا يعيد OpenClaw كتابة سجل المحادثة الحالي في موضعه. بل ينشئ سجل محادثة لاحقًا نشطًا جديدًا من ملخص الضغط والحالة المحفوظة والجزء غير الملخص، ثم يسجل بيانات وصفية لنقطة التحقق توجّه تدفقات التفرع/الاستعادة إلى ذلك السجل اللاحق المضغوط.
وتحذف سجلات المحادثة اللاحقة أيضًا أدوار المستخدم الطويلة المتطابقة تمامًا التي تصل
ضمن نافذة إعادة محاولة قصيرة، حتى لا تنتقل عواصف إعادة المحاولة في القناة إلى
سجل المحادثة النشط التالي بعد الضغط.
لم يعد OpenClaw يكتب نسخ .checkpoint.*.jsonl منفصلة لعمليات
الضغط الجديدة. ولا يزال من الممكن استخدام ملفات نقاط التحقق القديمة ما دامت مُشارًا إليها،
وتزيلها عملية التنظيف العادية للجلسة.
إشعارات الضغط
يعمل الضغط افتراضيًا بصمت. عيّنnotifyUser لعرض رسائل حالة موجزة عند بدء الضغط واكتماله، ولإظهار إشعار بتراجع الأداء عند استنفاد تفريغ الذاكرة السابق للضغط مع استمرار الرد رغم ذلك:
تفريغ الذاكرة
قبل الضغط، يمكن لـ OpenClaw تشغيل دور صامت لتفريغ الذاكرة من أجل تخزين الملاحظات الدائمة على القرص. عيّنagents.defaults.compaction.memoryFlush.model عندما ينبغي أن يستخدم دور التدبير هذا نموذجًا محليًا بدلًا من نموذج المحادثة النشط:
مزودو Compaction القابلون للتركيب
يمكن لـ Plugins تسجيل مزود Compaction مخصص عبرregisterCompactionProvider() في API الخاص بالـ Plugin. وعندما يكون أحد المزودين مسجلًا ومعدًا، يفوّض OpenClaw التلخيص إليه بدلًا من مسار LLM المضمّن.
لاستخدام مزود مسجل، عيّن معرّفه في إعداداتك:
provider تلقائيًا إلى فرض mode: "safeguard". يتلقى المزودون تعليمات الضغط نفسها وسياسة الحفاظ على المعرّفات نفسها التي يتلقاها المسار المضمّن، ويواصل OpenClaw أيضًا الحفاظ على سياق لاحقة الأدوار الحديثة والأدوار المنقسمة بعد مخرجات المزود.
إذا فشل المزود أو أعاد نتيجة فارغة، يعود OpenClaw إلى تلخيص LLM المضمّن.
Compaction مقارنةً بالتقليم
يُعد تقليم الجلسة مكمّلًا أخف وزنًا يقتطع مخرجات الأدوات دون تلخيص.
استكشاف الأخطاء وإصلاحها
هل يحدث الضغط بوتيرة متكررة جدًا؟ قد تكون نافذة سياق النموذج صغيرة، أو قد تكون مخرجات الأدوات كبيرة. جرّب تمكين تقليم الجلسة. هل يبدو السياق قديمًا بعد الضغط؟ استخدم/compact Focus on <topic> لتوجيه الملخص، أو مكّن تفريغ الذاكرة حتى تبقى الملاحظات.
هل تحتاج إلى بداية جديدة؟ يبدأ /new جلسة جديدة دون ضغط.
للاطلاع على الإعدادات المتقدمة (الرموز المحجوزة، والحفاظ على المعرّفات، ومحركات السياق المخصصة، والضغط من جانب خادم OpenAI)، راجع التعمق في إدارة الجلسات.
ذو صلة
- الجلسة: إدارة الجلسة ودورة حياتها.
- تقليم الجلسة: اقتطاع نتائج الأدوات.
- السياق: كيفية بناء السياق لأدوار الوكيل.
- الخطافات: خطافات دورة حياة الضغط (
before_compaction،after_compaction).