كيف يعمل
- تُلخّص أدوار المحادثة الأقدم في إدخال مضغوط.
- يُحفظ الملخص في نسخة الجلسة النصية.
- تُبقى الرسائل الحديثة كما هي.
toolResult المطابقة لها. إذا وقع موضع التقسيم داخل كتلة أداة، ينقل OpenClaw الحد بحيث يبقى الزوج معًا ويُحفظ الذيل الحالي غير الملخص.
يبقى سجل المحادثة الكامل على القرص. يغيّر Compaction فقط ما يراه النموذج في الدور التالي.
Compaction التلقائي
يكون Compaction التلقائي مفعّلًا افتراضيًا. يعمل عندما تقترب الجلسة من حد السياق، أو عندما يعيد النموذج خطأ في تجاوز السياق (وفي هذه الحالة يقوم OpenClaw بعمل Compaction ثم يعيد المحاولة). سترى:embedded run auto-compaction start/completeفي سجلات Gateway العادية.🧹 Auto-compaction completeفي الوضع المفصل./statusيعرض🧹 Compactions: <count>.
قبل عمل Compaction، يذكّر OpenClaw الوكيل تلقائيًا بحفظ الملاحظات المهمة في ملفات الذاكرة. يمنع هذا فقدان السياق.
Recognized overflow signatures
Recognized overflow signatures
يكتشف 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 اليدوي نقطة القطع الخاصة بـ OpenClaw ويبقي الذيل الحديث في السياق المعاد بناؤه. من دون ميزانية احتفاظ صريحة، يتصرف Compaction اليدوي كنقطة تحقق صارمة ويتابع من الملخص الجديد وحده.
الإعداد
اضبط 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 Compaction المحلي العادي قبل التشغيل إذا وصل ملف JSONL النشط إلى ذلك الحجم. يفيد هذا في الجلسات طويلة التشغيل حيث قد تحافظ إدارة السياق من جهة المزوّد على سلامة سياق النموذج بينما تستمر النسخة النصية المحلية في النمو. لا يقسم بايتات JSONL الخام؛ بل يطلب من مسار Compaction العادي إنشاء ملخص دلالي.
النسخ النصية اللاحقة
عند تفعيلagents.defaults.compaction.truncateAfterCompaction، لا يعيد OpenClaw كتابة النسخة النصية الحالية في مكانها. ينشئ نسخة نصية لاحقة نشطة جديدة من ملخص Compaction والحالة المحفوظة والذيل غير الملخص، ثم يسجل بيانات تعريف نقطة التحقق التي توجه تدفقات التفريع/الاستعادة إلى تلك النسخة اللاحقة المضغوطة.
تُسقط النسخ النصية اللاحقة أيضًا أدوار المستخدم الطويلة المكررة تمامًا التي تصل
داخل نافذة إعادة محاولة قصيرة، بحيث لا تُنقل عواصف إعادة محاولة القنوات إلى
النسخة النصية النشطة التالية بعد Compaction.
لم يعد OpenClaw يكتب نسخًا منفصلة بصيغة .checkpoint.*.jsonl لعمليات
Compaction الجديدة. لا يزال يمكن استخدام ملفات نقاط التحقق القديمة الموجودة أثناء الإشارة إليها
وتُزال بواسطة تنظيف الجلسة العادي.
إشعارات 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).