الانتقال إلى المحتوى الرئيسي

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.

لكل نموذج نافذة سياق: الحد الأقصى لعدد الرموز التي يمكنه معالجتها. عندما تقترب محادثة من ذلك الحد، ينفّذ OpenClaw Compaction للرسائل الأقدم في ملخص حتى تتمكن الدردشة من المتابعة.

كيف يعمل

  1. تُلخَّص أدوار المحادثة الأقدم في إدخال مضغوط.
  2. يُحفَظ الملخص في سجل الجلسة.
  3. تُبقى الرسائل الحديثة كما هي.
عندما يقسّم OpenClaw السجل إلى أجزاء Compaction، فإنه يُبقي استدعاءات أدوات المساعد مقترنة بإدخالات 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_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

Compaction اليدوي

اكتب /compact في أي دردشة لفرض Compaction. أضف تعليمات لتوجيه الملخص:
/compact Focus on the API design decisions
عند ضبط 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": "openrouter/anthropic/claude-sonnet-4-6"
      }
    }
  }
}
يعمل هذا أيضًا مع النماذج المحلية، مثل نموذج Ollama ثانٍ مخصص للتلخيص:
{
  "agents": {
    "defaults": {
      "compaction": {
        "model": "ollama/llama3.1:8b"
      }
    }
  }
}
عند عدم ضبطه، يبدأ Compaction بنموذج الجلسة النشط. إذا فشل التلخيص بسبب خطأ مزوّد مؤهل للرجوع الاحتياطي إلى نموذج آخر، يعيد OpenClaw محاولة عملية Compaction تلك عبر سلسلة الرجوع الاحتياطي الحالية لنموذج الجلسة. يكون اختيار الرجوع الاحتياطي مؤقتًا ولا يُكتب مرة أخرى إلى حالة الجلسة. يظل تجاوز agents.defaults.compaction.model الصريح دقيقًا ولا يرث سلسلة الرجوع الاحتياطي للجلسة.

الحفاظ على المعرّفات

يحافظ تلخيص Compaction على المعرّفات المعتمة افتراضيًا (identifierPolicy: "strict"). تجاوز ذلك باستخدام identifierPolicy: "off" للتعطيل، أو identifierPolicy: "custom" مع identifierInstructions للحصول على إرشادات مخصصة.

حارس بايتات السجل النشط

عند ضبط agents.defaults.compaction.maxActiveTranscriptBytes، يشغّل OpenClaw عملية Compaction محلية عادية قبل التشغيل إذا بلغ ملف JSONL النشط ذلك الحجم. هذا مفيد للجلسات طويلة التشغيل التي قد تحافظ فيها إدارة السياق من جهة المزوّد على سلامة سياق النموذج بينما يستمر السجل المحلي في النمو. لا يقسم بايتات JSONL الخام؛ بل يطلب من مسار Compaction العادي إنشاء ملخص دلالي.
يتطلب حارس البايتات truncateAfterCompaction: true. من دون تدوير السجل، لن يتقلص الملف النشط ويبقى الحارس غير نشط.

السجلات اللاحقة

عند تمكين agents.defaults.compaction.truncateAfterCompaction، لا يعيد OpenClaw كتابة السجل الحالي في مكانه. ينشئ سجلًا لاحقًا نشطًا جديدًا من ملخص Compaction والحالة المحفوظة والذيل غير الملخّص، ثم يُبقي ملف JSONL السابق كمصدر مؤرشف لنقطة التحقق. تُسقط السجلات اللاحقة أيضًا أدوار المستخدم الطويلة المكررة تطابقًا تامًا التي تصل داخل نافذة إعادة محاولة قصيرة، بحيث لا تُحمَل عواصف إعادة محاولة القنوات إلى السجل النشط التالي بعد Compaction. لا تُحتفظ بنقاط التحقق السابقة لـ Compaction إلا ما دامت دون حد حجم نقاط التحقق في OpenClaw؛ تظل السجلات النشطة الضخمة تُضغط، لكن OpenClaw يتجاوز لقطة التصحيح الكبيرة بدلًا من مضاعفة استخدام القرص.

إشعارات Compaction

افتراضيًا، يعمل Compaction بصمت. اضبط notifyUser لإظهار رسائل حالة موجزة عند بدء Compaction واكتماله:
{
  agents: {
    defaults: {
      compaction: {
        notifyUser: true,
      },
    },
  },
}

تفريغ الذاكرة

قبل Compaction، يمكن لـ OpenClaw تشغيل دور تفريغ ذاكرة صامت لتخزين ملاحظات دائمة على القرص. اضبط agents.defaults.compaction.memoryFlush.model عندما ينبغي أن يستخدم دور الصيانة هذا نموذجًا محليًا بدلًا من نموذج المحادثة النشط:
{
  "agents": {
    "defaults": {
      "compaction": {
        "memoryFlush": {
          "model": "ollama/qwen3:8b"
        }
      }
    }
  }
}
تجاوز نموذج تفريغ الذاكرة دقيق ولا يرث سلسلة الرجوع الاحتياطي للجلسة النشطة. راجع الذاكرة للتفاصيل والتهيئة.

مزوّدو Compaction القابلون للتوصيل

يمكن لـ Plugins تسجيل مزوّد Compaction مخصص عبر registerCompactionProvider() في واجهة برمجة تطبيقات Plugin. عند تسجيل مزوّد وتهيئته، يفوّض OpenClaw التلخيص إليه بدلًا من مسار LLM المضمّن. لاستخدام مزوّد مسجّل، اضبط معرّفه في التهيئة لديك:
{
  "agents": {
    "defaults": {
      "compaction": {
        "provider": "my-provider"
      }
    }
  }
}
يؤدي ضبط provider تلقائيًا إلى فرض mode: "safeguard". يتلقى المزوّدون تعليمات Compaction نفسها وسياسة الحفاظ على المعرّفات نفسها التي يستخدمها المسار المضمّن، ويظل OpenClaw يحافظ على سياق لاحقة الأدوار الحديثة والأدوار المقسّمة بعد إخراج المزوّد.
إذا فشل المزوّد أو أعاد نتيجة فارغة، يرجع OpenClaw إلى تلخيص LLM المضمّن.

Compaction مقابل التقليم

Compactionالتقليم
ما الذي يفعلهيلخص المحادثة الأقدميقتطع نتائج الأدوات القديمة
محفوظ؟نعم (في سجل الجلسة)لا (في الذاكرة فقط، لكل طلب)
النطاقالمحادثة بأكملهانتائج الأدوات فقط
تقليم الجلسة مكمل أخف وزنًا يقتطع إخراج الأدوات من دون تلخيص.

استكشاف الأخطاء وإصلاحها

هل يحدث Compaction كثيرًا؟ قد تكون نافذة سياق النموذج صغيرة، أو قد تكون مخرجات الأدوات كبيرة. جرّب تمكين تقليم الجلسة. هل يبدو السياق قديمًا بعد Compaction؟ استخدم /compact Focus on <topic> لتوجيه الملخص، أو فعّل تفريغ الذاكرة حتى تبقى الملاحظات. هل تحتاج إلى صفحة جديدة؟ يبدأ /new جلسة جديدة من دون تنفيذ Compaction. لتهيئة متقدمة (الرموز الاحتياطية، الحفاظ على المعرّفات، محركات السياق المخصصة، Compaction من جهة خادم OpenAI)، راجع التعمق في إدارة الجلسات.

ذات صلة