كيف يتعامل Codex مع ضغط السياق؟ ملخصات مشفرة وتسليم الجلسات
تحليل معمق لآلية compaction في Claude Code و Codex، وكيف يمكن بناء نظام تسليم جلسات يحافظ على السياق دون فقدان المعلومات
ملخص سريع
تحليل معمق لآلية compaction في Claude Code و Codex، وكيف يمكن بناء نظام تسليم جلسات يحافظ على السياق دون فقدان المعلومات
استخدم Claude Code فترة كافية وستصطدم حتماً برسالة “Compacting conversation…”. بعدها مباشرة، تبدأ الإجابات تنحرف عن المطلوب وتطول أوقات الانتظار. نافذة الـ 200K token تمتلئ أسرع مما تتوقع.
كان الكلام يتردد في الأوساط التقنية بأن Codex من OpenAI يتعامل مع هذه المشكلة بطريقة أذكى، فجلست وراجعت كل تحليل متاح للعموم.
الملخصات لا تزال تعني النسيان
حين تطول المحادثات، نسيان الذكاء الاصطناعي للأجزاء الأولى منها قيد بنيوي لا مفر منه. نافذة السياق محدودة بـ 200K token، وجلسة برمجة واحدة تتجاوز هذا الحد بسهولة. حتى مع التلخيص، المحادثة الأصلية تختفي — وجودة الإجابات تتراجع بالضرورة.
عشت هذا بنفسي عشرات المرات: تسأل عن “الدالة التي ناقشناها سابقاً” بعد عملية compaction، وتحصل على إجابة خاطئة تماماً.
- نافذة الـ 200K token الافتراضية في Claude Code تُستهلك في جلسة إعادة هيكلة واحدة كبيرة
- الملخص يحل محل المحادثة الأصلية ← السياق التفصيلي يضيع ← جودة الإجابات تتدهور
- تسوية نتائج استدعاءات الأدوات في الملخصات أشد المشاكل ضرراً
compaction في Codex كانت “ملخصاً مشفراً”
قام Kangwook Lee، كبير مسؤولي الذكاء الاصطناعي في Krafton، بعكس هندسة pipeline الداخلي لـ Codex عبر حقنتين في الـ prompt، والنتائج كانت مثيرة للاهتمام.
حين يُستدعى compact() API لنموذج Codex، نموذج لغوي منفصل على الخادم يلخص المحادثة ويعيد النتيجة مشفرة بـ AES. في الدورة التالية، يُفك تشفير هذا الملف المشفر، يُضاف إليه prompt افتتاحي يقول “هذا ملخص المحادثة السابقة”، ثم يُغذّى للنموذج.
- المحتوى شبه مطابق لـ prompt الـ compaction في Codex CLI مفتوح المصدر للنماذج الأخرى
- السبب وراء التشفير لا يزال غامضاً — ربما يحتوي على بيانات استعادة استدعاءات الأدوات
- قابل للتنفيذ في 35 سطراً من Python (نشر Kangwook Lee السكريبت)
- API الرسمي من OpenAI يدعم automatic compaction من جهة الخادم عبر إعداد
compact_threshold
الفارق الحقيقي في كيفية تسليم الجلسات
الأكثر إثارة من الـ compaction نفسه هو نقل السياق بين الجلسات. أتمتة أحد المطورين كانت مبهرة — أسميها نمط “تسليم الجلسة”.
قُبيل الـ compaction مباشرة، تُحجب أدوات الكتابة ويُستخرج فقط رسائل المستخدم وكتل التفكير من سجل جلسة JSONL. هذا يقلص الحجم بنسبة 98% مقارنة بالأصل. ثم ثلاثة sub-agents يبحثون عن الثغرات في الملخص عبر مراجعة السجلات الأصلية ويجمعون كل شيء في ملف resume-prompt.md.
حين يكتشف file watcher في VS Code هذا الملف، تفتح جلسة جديدة تلقائياً وترث السياق السابق بسلاسة.
- hook ما قبل الـ compact يحجب الكتابة قبل الضغط ← يمنع تعديلات الكود في حالة غير مكتملة
- تحويل JSONL إلى MD يحتفظ فقط برسائل المستخدم + رسائل النظام + كتل التفكير
- Sub-agents تجري تحليل الفجوات وتسترجع المعلومات الناقصة من السجلات الأصلية
- تحسين مُبلَّغ عنه في كفاءة البناء بمعدل 10x
اللعبة الحقيقية في البحث عن سجلات الجلسات وـ KV Cache
بيانات الجلسة تتراكم كملفات JSONL، لذا العامل الحاسم هو مدى دقة استرجاع السياق المطلوب منها. الإجابة ليست تلخيصاً أفضل — بل بحث قائم على الاسترجاع عبر الجلسات السابقة.
مع مراعاة معدلات إصابة KV cache، يمكنك إعادة استخدام نفس بادئة الـ prompt لخفض التكلفة وزمن الاستجابة معاً. حين صممت هيكل مجلدات الجلسات الخاص بي، أرشفة مبنية على session-id كان لها أكبر أثر على سرعة البحث. دمج QMD — الذي تناولته بالأمس — للفهرسة المسبقة يبدو اتجاهاً واعداً أيضاً.
- الاحتفاظ بـ JSONL الخام يتيح بحثاً دقيقاً عند الحاجة
resume-prompt.mdيتضمن ملخص الجلسة السابقة + نتائج تحليل الفجوات + قائمة الملفات المعدّلة- تثبيت system prompt وبادئة handoff prompt يُعظّم نسبة إصابة KV cache
- أتمتة أرشفة الجلسات تحافظ على السياق عبر عشرات الجلسات المتتالية
الاختناق الحقيقي في البرمجة بالذكاء الاصطناعي هو إدارة السياق
الاختناق الحقيقي في أدوات البرمجة بالذكاء الاصطناعي ليس أداء النموذج — بل إدارة السياق. تصميم نظام يسترجع ما نُسي أهم من إتقان التلخيص.
الـ compaction يفقد معلومات حتماً. ما يهم هو بناء pipeline بحث يسترجع المعلومات الضائعة، وبنية تسليم تنقل السياق بين الجلسات دون ثغرات.
مبني على تحليل Kangwook Lee, CAIO.
انضم إلى النشرة الإخبارية
احصل على تحديثات حول أحدث مشاريعي ومقالاتي وتجاربي في الذكاء الاصطناعي وتطوير الويب.