الدرس 06 · ذاكرة

السياق ممتلئ، تعلم القطع

"يمكن للوكيل أن ينسى بشكل استراتيجي ويستمر في العمل إلى الأبد." النسيان الاستراتيجي = القدرات الهندسية.

⏱ ~12 د · 📝 3 مكونات تفاعلية · 🧑‍💻 مبني على shareAI-lab · s06_context_compact.py

لماذا المدمجة؟

إذا تم تشغيل الوكيل لفترة طويلة، فسوف تتوسع messages[]: سيُرجع كل read_file آلاف الرموز المميزة، وسيُرجع كل bash المئات، وستعيد كل جولة من الحوار أيضًا نص تفكير النموذج. بعد 50 جولة، يمكن حشو السياق إلى 100 ألف+. نتيجتان:

  • مواجهة الحد الأعلى للنموذج: ينهار عند الوصول إلى حجم النافذة، أو يزيد السعر خطيًا مع كل استدعاء لواجهة برمجة التطبيقات.
  • تخفيف الانتباه: الآن بعد أن أصبحت المهمة قيد التنفيذ غارقة في نتائج أدوات غير ذات صلة منذ 30 جولة، يبدأ النموذج في فقدان التركيز.

فكرة s06: السماح للوكيل بتجاهل المحتوى غير المهم بشكل فعال مع الاحتفاظ بالحالات الأساسية. آلية ثلاثية الطبقات، من الخفيف إلى الثقيل.

الطبقة 1 · micro_compact (تعمل بصمت في كل جولة)

الطبقة الأرخص. قم بتشغيله قبل كل استدعاء LLM واستبدل أكثر من 3 نتائج أدوات قديمة بعناصر نائبة:

# بعد الجولة العاشرة، تصبح معظم نتائج الأدوات:
{
  "type": "tool_result"،
  "tool_use_id": "tolu_01A",
  "content": "[السابق: يستخدم bash]" # تم التخفيض من آلاف الأحرف إلى العشرات

هناك حالة خاصة: نتيجة read_file غير مضغوطة. لماذا؟ نظرًا لأن إخراج القراءة هو مادة مرجعية، إذا ضغطت على النموذج، فسيتعين عليك قراءته مرة أخرى، وهو أمر أكثر تكلفة.

PRESERVE_RESULT_TOOLS = {"read_file"} # عدم الضغط مطلقًا

انظر إلى micro_compact واضغط على زر التشغيل لتناول النتائج القديمة

تحاكي الخطوات التالية 10 جولات من التفاعل، وتسمح بتشغيل micro_compact مرة واحدة قبل كل جولة. لاحظ أن نتيجة الأداة القديمة في الرسائل[] تصبح [السابق: ...]، ولكن تظل الثلاثة الأخيرة كما هي.

الطبقة الثانية · الضغط التلقائي (يتم تشغيله عند تجاوز العتبة)

حتى لو استمر تشغيل الميكرو، فسوف ينفجر عندما يصل إلى حجم معين. يعين s06 عتبة (50000 رمز مميز افتراضي):

  1. قم بتقدير عدد الرموز المميزة len(str(messages)) // 4 (تقريبية ولكنها مفيدة).
  2. يتجاوز الحد → اكتب النص الكامل إلى .transcripts/transcript_TIMESTAMP.jsonl (اترك الجزء السفلي).
  3. اطلب من LLM كتابة ملخص للمحادثة بأكملها.
  4. استبدل الرسائل بأكملها بـ "ملخص[مضغوط]...".

التكلفة واضحة - يتم فقدان مخرجات الأداة المحددة ونغمة المحادثة، ولا يتبقى سوى المخطط التفصيلي. لكن يمكن للوكيل الاستمرار في العمل، وهي الميزة الأساسية.

الطبقة 3 · قم بضبط النموذج بنفسك بأداة مدمجة

يتم تشغيل الضغط التلقائي تلقائيًا بواسطة الحزام وهو غير معروف للنموذج. تفعل الطبقة الثالثة العكس: امنح النموذج أداة مدمجة ودعه يطلب الضغط بشكل نشط - على سبيل المثال، إذا شعر أن الاستكشاف السابق عديم الفائدة وأن هناك حاجة لبدء مرحلة جديدة.

استدعاء النموذج:

tool_use("compact", focus="الاحتفاظ بقرارات تصميم واجهة برمجة التطبيقات")

التشغيل هو نفس التشغيل التلقائي، ولكن يمكن أن يأخذ معلمة focus لمعرفة ما يجب التركيز عليه عند التلخيص. إنه عملي جدًا في القتال الفعلي - يعرف النموذج أي "المهام الصغيرة المنتهية" هي، وهو أكثر دقة من أداة التسخير الإرشادية.

أي طبقة مناسبة؟ سؤال صحيح أو خطأ

تحدد السيناريوهات التالية أي مشغل دقيق / تلقائي / يدوي هو الأكثر معقولية.

تفاعلي

Widget 1 · Micro Compact · راجع tool_result اضغط على Turn Aging

خطوة بخطوة ولاحظ كيف تم استبدال أداة_النتيجة القديمة بـ [السابق: يستخدم X]، بينما تظل الثلاثة الأخيرة سليمة. read_file لا يتم ضغطه أبدًا (مظلل باللون الأخضر).

Turn: 0 · Tokens: ~0
تفاعلي

Widget 2 · محاكي العتبة · ما هي الطبقة التي يتم تشغيلها بعد ارتفاع الرمز المميز؟

اسحب شريط التمرير لتغيير عدد الرموز المميزة لمعرفة أي الطبقات الثلاث نشطة.

3000
تفاعلي

Widget 3 · أي طبقة مناسبة · 6 أسئلة لحكم المشهد

اختر ميكرو/تلقائي/يدويًا لكل مشهد، وتحدث عن الوقت المناسب للتشغيل.

答对 0 / 6