تقليم الجلسات

تقليم الجلسة (pruning) هو عملية تقليل سجل الجلسة للبقاء ضمن حدود الرموز (tokens) للنموذج.

لماذا التقليم؟

النماذج لديها حدود للسياق:

  • Claude Sonnet 4: 200k رمز
  • GPT-4: 128k رمز
  • GPT-3.5: 16k رمز

مع مرور الوقت، ينمو السجل:

  • رسائل المستخدم
  • ردود المساعد
  • نتائج الأدوات
  • ملفات السياق

بدون تقليم ← تجاوز الحد ← خطأ

استراتيجيات التقليم

1. الضغط (Compaction)

تلخيص المحادثات القديمة:

[10 رسائل قديمة] → [ملخص واحد]

يحتفظ بـ:

  • النقاط الرئيسية
  • القرارات المهمة
  • السياق الضروري

2. الاقتطاع (Truncation)

حذف الرسائل الأقدم:

[رسالة 1] [رسالة 2] ... [رسالة 100]
              ↓
                 [رسالة 50] ... [رسالة 100]

بسيط لكن يفقد السياق

3. الاختيار الذكي

الاحتفاظ بـ:

  • الرسائل الحديثة (دائمًا)
  • الرسائل ذات الأدوات المهمة
  • القرارات الرئيسية
  • الأخطاء/الحلول

حذف:

  • الدردشة العادية
  • نتائج الأدوات المطولة
  • الرسائل المكررة

تطبيق OpenClaw

الضغط التلقائي

يتم تشغيله عندما:

  • الرموز > العتبة (مثال: 80% من الحد)
  • خطأ سياق النموذج

العملية:

  1. تحديد الرسائل القديمة (> N رسالة)
  2. تجميع في كتل محادثة
  3. طلب من النموذج التلخيص
  4. استبدال الكتل بالملخصات
  5. الحفاظ على الرسائل الحديثة سليمة

احتياطي الرموز

يحجز OpenClaw:

  • نص النظام: 20-40k رمز
  • مخزن الضغط: 10-20k رمز
  • الباقي: سجل الجلسة

الإعدادات

agents:
  defaults:
    compaction:
      enabled: true
      threshold: 0.8  # 80% من الحد
      keepRecent: 20  # الاحتفاظ بآخر 20 رسالة
      reserveTokens: 20000

خطافات الضغط

اعتراض العملية:

// before_compaction
export function onBeforeCompaction(ctx) {
  console.log('Compaction about to start');
  console.log('Current tokens:', ctx.tokens);
  console.log('Messages:', ctx.messages.length);
}

// after_compaction
export function onAfterCompaction(ctx) {
  console.log('Compaction complete');
  console.log('Tokens saved:', ctx.tokensSaved);
  console.log('Messages after:', ctx.messages.length);
}

أفضل الممارسات

1. الذاكرة الخارجية

بدلاً من الاحتفاظ بكل شيء في الجلسة:

# memory/2026-02-06.md

## قرارات مهمة
- اختيار React للمشروع الجديد
- خادم الإنتاج: server-prod-01

## الإجراءات
- نشر v2.1.0
- إصلاح خطأ #123

يمكن للوكيل إعادة القراءة عند الحاجة

2. ملخصات يدوية

بشكل دوري، اطلب من الوكيل:

"لخص محادثتنا خلال آخر ساعتين واكتب في memory/today.md"

3. جلسات قصيرة

  • إنشاء جلسة جديدة لمواضيع جديدة
  • /new للبدء من جديد
  • أرشفة الجلسات القديمة

4. سياق خارجي

بدلاً من تحميل كل شيء في السياق:

  • ملفات المستندات في مساحة العمل
  • قاعدة معرفة خارجية
  • البحث على الويب عند الحاجة

المراقبة

التحقق من استخدام الرموز:

# رؤية إحصائيات الجلسة
openclaw sessions ls

# تفاصيل جلسة
openclaw sessions show <session-id>

متى تفرض الضغط

# ضغط يدوي
openclaw agent --compact --session <session-id>

# إعادة تعيين الجلسة (يفقد السجل)
openclaw sessions reset <session-id>

مثال على السجلات

[Compaction] Session tokens: 185k / 200k (92%)
[Compaction] Threshold reached (80%), starting compaction
[Compaction] Compacting 45 messages (age > 1h)
[Compaction] Created 3 summary blocks
[Compaction] Tokens after: 125k (-60k saved)
[Compaction] Messages after: 25 (-20)

القيود والاعتبارات

  • فقدان السياق: قد يفقد الضغط الفروق الدقيقة
  • التكلفة: التلخيص يكلف رموزًا (استدعاء API)
  • الكمون: يضيف الضغط تأخيرًا
  • جودة الملخص: تعتمد على النموذج المستخدم

البدائل

إذا لم يكن الضغط كافيًا:

  1. نموذج بسياق أكبر (مثال: Claude ← 200k رمز)
  2. RAG (Retrieval-Augmented Generation): البحث في سجل خارجي
  3. جلسات متعددة: جلسة لكل موضوع/مشروع
  4. بنى متعددة الوكلاء: التفويض لوكلاء متخصصين

راجع السياق و الجلسة لمزيد من التفاصيل.