السياق ممتلئ، تعلم القطع
"يمكن للوكيل أن ينسى بشكل استراتيجي ويستمر في العمل إلى الأبد." النسيان الاستراتيجي = القدرات الهندسية.
لماذا المدمجة؟
إذا تم تشغيل الوكيل لفترة طويلة، فسوف تتوسع 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 رمز مميز افتراضي):
- قم بتقدير عدد الرموز المميزة
len(str(messages)) // 4(تقريبية ولكنها مفيدة). لي> - يتجاوز الحد → اكتب النص الكامل إلى
.transcripts/transcript_TIMESTAMP.jsonl(اترك الجزء السفلي). لي> - اطلب من LLM كتابة ملخص للمحادثة بأكملها. لي>
- استبدل
الرسائلبأكملها بـ"ملخص[مضغوط]...". لي>
التكلفة واضحة - يتم فقدان مخرجات الأداة المحددة ونغمة المحادثة، ولا يتبقى سوى المخطط التفصيلي. لكن يمكن للوكيل الاستمرار في العمل، وهي الميزة الأساسية. ص>
الطبقة 3 · قم بضبط النموذج بنفسك بأداة مدمجة
يتم تشغيل الضغط التلقائي تلقائيًا بواسطة الحزام وهو غير معروف للنموذج. تفعل الطبقة الثالثة العكس: امنح النموذج أداة مدمجة ودعه يطلب الضغط بشكل نشط - على سبيل المثال، إذا شعر أن الاستكشاف السابق عديم الفائدة وأن هناك حاجة لبدء مرحلة جديدة. ص>
استدعاء النموذج:
tool_use("compact", focus="الاحتفاظ بقرارات تصميم واجهة برمجة التطبيقات")
التشغيل هو نفس التشغيل التلقائي، ولكن يمكن أن يأخذ معلمة focus لمعرفة ما يجب التركيز عليه عند التلخيص. إنه عملي جدًا في القتال الفعلي - يعرف النموذج أي "المهام الصغيرة المنتهية" هي، وهو أكثر دقة من أداة التسخير الإرشادية. ص>
أي طبقة مناسبة؟ سؤال صحيح أو خطأ
تحدد السيناريوهات التالية أي مشغل دقيق / تلقائي / يدوي هو الأكثر معقولية. ص>