تشذيب الجلسات¶
يقوم تشذيب الجلسات بتقليم نتائج الأدوات القديمة من السياق الموجود في الذاكرة مباشرة قبل كل استدعاء لـ LLM. وهو لا يعيد كتابة سجل الجلسة المحفوظ على القرص (*.jsonl).
متى يعمل¶
- عندما يكون
mode: "cache-ttl"مفعّلًا وكان آخر استدعاء لـ Anthropic للجلسة أقدم منttl. - يؤثّر فقط على الرسائل المُرسلة إلى النموذج لذلك الطلب.
- نشِط فقط لاستدعاءات واجهة Anthropic البرمجية (ونماذج Anthropic عبر OpenRouter).
- للحصول على أفضل النتائج، طابِق
ttlمعcacheControlTtlالخاص بنموذجك. - بعد تنفيذ التشذيب، تُعاد تهيئة نافذة TTL بحيث تحتفظ الطلبات اللاحقة بالتخزين المؤقت إلى أن تنتهي صلاحية
ttlمرة أخرى.
الإعدادات الافتراضية الذكية (Anthropic)¶
- ملفات OAuth أو setup-token: تفعيل تشذيب
cache-ttlوضبط نبض القلب على1h. - ملفات API key: تفعيل تشذيب
cache-ttl، ضبط نبض القلب على30m، وتعيينcacheControlTtlافتراضيًا إلى1hعلى نماذج Anthropic. - إذا قمت بتعيين أي من هذه القيم صراحةً، فلن يقوم OpenClaw بتجاوزها.
ما الذي يُحسِّنه هذا (التكلفة + سلوك التخزين المؤقت)¶
- لماذا التشذيب: ينطبق التخزين المؤقت لمطالبة Anthropic فقط ضمن فترة TTL. إذا ظلت الجلسة خاملة بعد TTL، فسيُعاد تخزين المطالبة كاملة في الطلب التالي ما لم تُقلِّمها أولًا.
- ما الذي يصبح أقل تكلفة: يقلّل التشذيب حجم cacheWrite لذلك الطلب الأول بعد انتهاء TTL.
- أهمية إعادة ضبط TTL: بمجرد تنفيذ التشذيب، تُعاد نافذة التخزين المؤقت، بحيث يمكن للطلبات اللاحقة إعادة استخدام المطالبة المُخزّنة حديثًا بدلًا من إعادة تخزين السجل الكامل مرة أخرى.
- ما الذي لا يفعله: لا يضيف التشذيب رموزًا (tokens) ولا «يُضاعف» التكاليف؛ بل يغيّر فقط ما يتم تخزينه مؤقتًا في ذلك الطلب الأول بعد TTL.
ما الذي يمكن تشذيبه¶
- فقط رسائل
toolResult. - رسائل المستخدم والمساعد لا يتم تعديلها أبدًا.
- آخر
keepLastAssistantsرسائل للمساعد محمية؛ ولا يتم تشذيب نتائج الأدوات بعد حدّ القطع هذا. - إذا لم يكن هناك عدد كافٍ من رسائل المساعد لتحديد حدّ القطع، يتم تجاوز التشذيب.
- نتائج الأدوات التي تحتوي على كتل صور يتم تجاوزها (لا تُقلَّم/تُزال أبدًا).
تقدير نافذة السياق¶
يستخدم التشذيب تقديرًا لنافذة السياق (الأحرف ≈ الرموز × 4). ويتم حلّ النافذة الأساسية بهذا الترتيب:
- تجاوز
models.providers.*.models[].contextWindow. - تعريف النموذج
contextWindow(من سجل النماذج). - القيمة الافتراضية
200000من الرموز.
إذا تم تعيين agents.defaults.contextTokens، فسيُعامل كسقف (الحد الأدنى) على النافذة المُحَلّة.
النمط¶
cache-ttl¶
- لا يعمل التشذيب إلا إذا كان آخر استدعاء لـ Anthropic أقدم من
ttl(الافتراضي5m). - عند التنفيذ: نفس سلوك التقليم اللطيف + الإزالة الصارمة كما في السابق.
ناعمة ضد تشويش قاس¶
- التقليم اللطيف: فقط لنتائج الأدوات كبيرة الحجم.
- يحتفظ بالمقدمة + الخاتمة، ويدرِج
...، ويُلحق ملاحظة بالحجم الأصلي. - يتجاوز النتائج التي تحتوي على كتل صور.
- الإزالة الصارمة: تستبدل نتيجة الأداة بالكامل بـ
hardClear.placeholder.
اختيار الأدوات¶
- يدعم
tools.allow/tools.denyمحارف*الشاملة. - إنكار الفوز.
- المطابقة غير حسّاسة لحالة الأحرف.
- قائمة السماح الفارغة => جميع الأدوات مسموح بها.
التفاعل مع حدود أخرى¶
- تقوم الأدوات المدمجة أصلًا باقتطاع مخرجاتها؛ ويُعدّ تشذيب الجلسات طبقة إضافية تمنع الدردشات طويلة الأمد من تراكم قدر كبير من مخرجات الأدوات في سياق النموذج.
- الضغط (Compaction) منفصل: الضغط يُلخِّص ويُثبّت، بينما التشذيب مؤقّت لكل طلب. انظر /concepts/compaction.
القيم الافتراضية (عند التفعيل)¶
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[Old tool result content cleared]" }
أمثلة¶
الافتراضي (متوقف):
{
agent: {
contextPruning: { mode: "off" },
},
}
تمكين تشذيب واعٍ بـ TTL:
{
agent: {
contextPruning: { mode: "cache-ttl", ttl: "5m" },
},
}
تقييد التشذيب على أدوات محددة:
{
agent: {
contextPruning: {
mode: "cache-ttl",
tools: { allow: ["exec", "read"], deny: ["*image*"] },
},
},
}
انظر مرجع التهيئة: Gateway Configuration