تقليم الجلسات
تقليم الجلسة (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% من الحد)
- خطأ سياق النموذج
العملية:
- تحديد الرسائل القديمة (> N رسالة)
- تجميع في كتل محادثة
- طلب من النموذج التلخيص
- استبدال الكتل بالملخصات
- الحفاظ على الرسائل الحديثة سليمة
احتياطي الرموز
يحجز 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)
- الكمون: يضيف الضغط تأخيرًا
- جودة الملخص: تعتمد على النموذج المستخدم
البدائل
إذا لم يكن الضغط كافيًا:
- نموذج بسياق أكبر (مثال: Claude ← 200k رمز)
- RAG (Retrieval-Augmented Generation): البحث في سجل خارجي
- جلسات متعددة: جلسة لكل موضوع/مشروع
- بنى متعددة الوكلاء: التفويض لوكلاء متخصصين