الجلسات والذاكرة

تقليم الجلسة

يقوم تقليم الجلسة بإزالة نتائج الأدوات القديمة من السياق المخزن في الذاكرة مباشرة قبل كل استدعاء لنموذج اللغة الكبيرة. إنه لا يعيد كتابة سجل الجلسة على القرص (*.jsonl).

متى يتم التشغيل

  • عند تمكين mode: "cache-ttl" وكان آخر استدعاء لـ Anthropic للجلسة أقدم من ttl.
  • يؤثر فقط على الرسائل المرسلة إلى النموذج لتلك الطلبية.
  • يعمل فقط مع استدعاءات واجهة برمجة تطبيقات Anthropic (ونماذج Anthropic على OpenRouter).
  • للحصول على أفضل النتائج، قم بمطابقة ttl مع سياسة cacheRetention للنموذج (short = 5 دقائق، long = 1 ساعة).
  • بعد عملية التقليم، تتم إعادة تعيين نافذة TTL بحيث تحتفظ الطلبات اللاحقة بالتخزين المؤقت حتى انتهاء صلاحية ttl مرة أخرى.

الإعدادات الافتراضية الذكية (Anthropic)

  • ملفات التعريف OAuth أو setup-token: تمكين تقليم cache-ttl وتعيين نبض القلب إلى 1h.
  • ملفات التعريف مفتاح واجهة برمجة التطبيقات: تمكين تقليم cache-ttl، وتعيين نبض القلب إلى 30m، و cacheRetention: "short" افتراضيًا على نماذج Anthropic.
  • إذا قمت بتعيين أي من هذه القيم بشكل صريح، فإن OpenClaw لا يتجاوزها.

ما الذي يتحسن (التكلفة + سلوك التخزين المؤقت)

  • لماذا التقليم: ينطبق التخزين المؤقت لمطالبات Anthropic فقط ضمن نافذة TTL. إذا أصبحت الجلسة خاملة بعد انتهاء صلاحية TTL، فإن الطلب التالي يعيد تخزين المطالبة الكاملة مؤقتًا ما لم تقوم بتقليمها أولاً.
  • ما الذي يصبح أرخص: يقلل التقليم من حجم cacheWrite لهذا الطلب الأول بعد انتهاء صلاحية TTL.
  • لماذا تعيين TTL مهم: بمجرد تشغيل التقليم، تتم إعادة تعيين نافذة التخزين المؤقت، بحيث يمكن للطلبات اللاحقة إعادة استخدام المطالبة المخزنة مؤقتًا حديثًا بدلاً من إعادة تخزين السجل الكامل مرة أخرى.
  • ما الذي لا يفعله: لا يضيف التقليم رموزًا أو "يضاعف" التكاليف؛ إنه يغير فقط ما يتم تخزينه مؤقتًا في ذلك الطلب الأول بعد TTL.

ما الذي يمكن تقليمه

  • رسائل toolResult فقط.
  • لا يتم تعديل رسائل المستخدم والمساعد أبدًا.
  • يتم حماية آخر keepLastAssistants رسائل مساعد؛ لا يتم تقليم نتائج الأدوات بعد نقطة القطع هذه.
  • إذا لم تكن هناك رسائل مساعد كافية لتحديد نقطة القطع، يتم تخطي التقليم.
  • يتم تخطي نتائج الأدوات التي تحتوي على كتل صور (لا يتم تقليمها/مسحها أبدًا).

تقدير نافذة السياق

يستخدم التقليم نافذة سياق مقدرة (أحرف ≈ رموز × 4). يتم تحديد النافذة الأساسية بهذا الترتيب:

  1. تجاوز models.providers.*.models[].contextWindow.
  2. تعريف النموذج contextWindow (من سجل النموذج).
  3. الافتراضي 200000 رمز.

إذا تم تعيين agents.defaults.contextTokens، يتم التعامل معه كحد أقصى (أدنى) على النافذة المحددة.

الوضع

cache-ttl

  • يعمل التقليم فقط إذا كان آخر استدعاء لـ Anthropic أقدم من ttl (الافتراضي 5m).
  • عندما يعمل: نفس سلوك التقليم الناعم + المسح الصارم كما كان من قبل.

التقليم الناعم مقابل الصارم

  • التقليم الناعم: فقط لنتائج الأدوات كبيرة الحجم.
    • يحتفظ بالرأس والذيل، يُدخل ...، ويُلحق ملاحظة بالحجم الأصلي.
    • يتخطى النتائج التي تحتوي على كتل صور.
  • المسح الصارم: يستبدل نتيجة الأداة الكاملة بـ hardClear.placeholder.

اختيار الأداة

  • تدعم tools.allow / tools.deny الرموز البديلة *.
  • يفوز Deny.
  • المطابقة لا تراعي حالة الأحرف.
  • القائمة الفارغة للسماح => جميع الأدوات مسموح بها.

التفاعل مع القيود الأخرى

  • تقوم الأدوات المدمجة بالفعل بتقليص مخرجاتها الخاصة؛ يعد تقليم الجلسة طبقة إضافية تمنع الدردشات طويلة الأمد من تراكم الكثير من مخرجات الأدوات في سياق النموذج.
  • الضغط منفصل: يلخص الضغط ويستمر، بينما التقليم مؤقت لكل طلب. انظر /concepts/compaction.

الإعدادات الافتراضية (عند التمكين)

  • ttl: "5m"
  • keepLastAssistants: 3
  • softTrimRatio: 0.3
  • hardClearRatio: 0.5
  • minPrunableToolChars: 50000
  • softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 }
  • hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" }

أمثلة

الافتراضي (معطل):

{
  agents: { defaults: { contextPruning: { mode: "off" } } },
}

تمكين التقليم الواعي بـ TTL:

{
  agents: { defaults: { contextPruning: { mode: "cache-ttl", ttl: "5m" } } },
}

تقييد التقليم على أدوات محددة:

{
  agents: {
    defaults: {
      contextPruning: {
        mode: "cache-ttl",
        tools: { allow: ["exec", "read"], deny: ["*image*"] },
      },
    },
  },
}

انظر مرجع التكوين: تكوين البوابة

إدارة الجلسةأدوات الجلسة