جلسة OpenClaw تحرق 21.5 مليون رمز في يوم واحد، واستراتيجيات التحسين تقلل التكاليف

iconOdaily
مشاركة
Share IconShare IconShare IconShare IconShare IconShare IconCopy
AI summary iconملخص

expand icon
أحرقت جلسة OpenClaw الأخيرة 21.5 مليون رمز في يوم واحد، وذلك بشكل رئيسي بسبب إعادة تشغيل بادئة الذخيرة بشكل متكرر وليس بسبب مخرجات المستخدم أو النموذج. جاء أكثر من 79% من استخدام الرموز من قراءات الذخيرة، مع إعادة تشغيل مخرجات وسيطة كبيرة مثل نتائج الأدوات وصور المتصفح. ويشير التقرير إلى استراتيجيات تحسين الغاز: تجنب المخرجات الكبيرة للأدوات في السياق طويل الأجل، وتكوين آليات الضغط، وتقليل النصوص الاستدلالية المستمرة. تهدف هذه الخطوات إلى خفض تكاليف الرموز من خلال تحسين إدارة السياق في أنظمة الوكلاء.

لماذا حرق جلسات OpenClaw الخاصة بي 21.5 مليون رمز في يوم واحد (وما الذي أصلحه فعليًا)

المؤلف الأصلي: MOSHIII

مُترجم الأصل: بيجي، BlockBeats

ملاحظة المحرر: في ظل الانتشار السريع لتطبيقات العامل، اكتشف العديد من الفرق ظاهرة تبدو متناقضة: فرغم أن النظام يعمل بشكل طبيعي، فإن تكلفة الرموز ترتفع باستمرار دون أن يُلاحظ ذلك. من خلال تحليل عبء عمل حقيقي لـ OpenClaw، تبين أن سبب الانفجار في التكلفة لا يعود عادةً إلى مدخلات المستخدم أو مخرجات النموذج، بل إلى إعادة تشغيل ذاكرة التخزين المؤقت للسياق (cached prefix replay) التي تُهمل غالبًا. ففي كل استدعاء، يقرأ النموذج بشكل متكرر سياقًا تاريخيًا ضخمًا، مما يؤدي إلى استهلاك هائل للرموز.

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

من خلال هذه الحالة، يقترح المؤلف مجموعة من أفكار التحسين الواضحة: من تصميم هيكل السياق، إلى إدارة مخرجات الأدوات، وحتى تكوين آلية التجميع. بالنسبة للمطورين الذين يبنون أنظمة Agent، فإن هذا ليس فقط سجلاً تقنيًا للتشخيص، بل أيضًا خطة واقعية لتوفير التكاليف.

Below is the original text:

قمت بتحليل حملة عمل حقيقية لـ OpenClaw، ووجدت نمطًا أعتقد أن العديد من مستخدمي الوكلاء سيتعرفون عليه:

استخدام الرمز يبدو نشطًا جدًا

الرد يبدو طبيعيًا أيضًا

لكن استهلاك الرموز تزايد فجأة بشكل هائل

فيما يلي تحليل الهيكل، والسبب الجذري، ومسار الإصلاح العملي لهذه التحليلات.

ملخص

أكبر عامل يدفع التكلفة ليس طول رسالة المستخدم، بل إعادة تشغيل كميات هائلة من البادئات المخزنة مؤقتًا.

من بيانات الجلسة:

إجمالي الرموز: 21,543,714

cacheRead: 17,105,970 (79.40%)

4,345,264 (20.17%)

الإخراج: 92,480 (0.43%)

بعبارة أخرى: تكاليف معظم المكالمات لا تُنفق في الواقع على معالجة نوايا المستخدمين الجدد، بل على قراءة متكررة للسياق التاريخي الضخم.

لحظة "انتظر، كيف حدث هذا؟"

اعتقدت في الأصل أن استخدام الرمز المميز العالي ناتج عن: مطالبات مستخدم طويلة جدًا، أو إنتاج كميات كبيرة من المخرجات، أو استدعاء أدوات مكلفة.

لكن النمط الحقيقي المهيمن هو:

مئات إلى آلاف الرموز

cacheRead: كل استدعاء بين 170,000 و 180,000 token

بمعنى آخر، النموذج يقرأ مرارًا وتكرارًا نفس البادئة الثابتة الضخمة في كل جولة.

نطاق البيانات

لقد قمت بتحليل بيانات من مستويين:

1. سجلات التشغيل (runtime logs)

2. سجلات الجلسة (session transcripts)

يجب التوضيح أن:

تُستخدم سجلات التشغيل بشكل أساسي لمراقبة إشارات السلوك (مثل إعادة التشغيل، الأخطاء، مشاكل التكوين)

إحصائيات دقيقة للرمز المميز مستمدة من حقل الاستخدام في ملف session JSONL

النص المستخدم:

scripts/session_token_breakdown.py

scripts/session_duplicate_waste_analysis.py

ملف التحليل المُنشأ:

tmp/session_token_stats_v2.txt

tmp/session_token_stats_v2.json

tmp/session_duplicate_waste.txt

tmp/session_duplicate_waste.json

tmp/session_duplicate_waste.png

أين يتم استهلاك الرمز فعليًا؟

1) تجميع الجلسة

هناك جلسة تستهلك أكثر بكثير من غيرها:

570587c3-dc42-47e4-9dd4-985c2a50af86: 19,204,645 رمزًا

ثم الانخفاض الحاد الواضح:

ef42abbb-d8a1-48d8-9924-2f869dea6d4a: 1,505,038

ea880b13-f97f-4d45-ba8c-a236cf6f2bb5: 649,584

2) التركيز على السلوك

تُستمد الرموز من:

toolUse:16,372,294

إيقاف: 5,171,420

المشكلة تكمن أساسًا في حلقة استدعاء الأدوات، وليس في المحادثة العادية.

3) تركيز الوقت

لا تكون قمة الرمز المميز عشوائية، بل تتركز في فترات زمنية قليلة:

2026-03-08 16:00: 4,105,105

2026-03-08 09:00: 4,036,070

2026-03-08 07:00: 2,793,648

ما الذي يوجد في مقدمة التخزين المؤقت الضخمة؟

ليس محتوى المحادثة، بل بشكل رئيسي المنتج الوسيط الكبير:

كتلة بيانات toolResult الضخمة

أطوال كبيرة من آثار التفكير / التفكير

ملف JSON كبير

List of files

استخلاص البيانات من المتصفح

سجل المحادثة للوكيل الفرعي

في أقصى جلسة، يكون عدد الأحرف تقريبًا:

366,469 حرف

assistant:thinking:331,494 حرف

53,039 حرف

بمجرد الاحتفاظ بهذه المحتويات في السياق التاريخي، قد يتم إعادة قراءتها في كل استدعاء لاحق عبر بادئة cache.

أمثلة محددة (من ملف الجلسة)

ظهرت كتل سياق ضخمة بشكل متكرر في الموقع التالي:

sessions/570587c3-dc42-47e4-9dd4-985c2a50af86.jsonl:70

سجلات JSON للبوابة الكبيرة (حوالي 37 ألف حرف)

sessions/570587c3-dc42-47e4-9dd4-985c2a50af86.jsonl:134

صورة متصفح + تغليف آمن (حوالي 29 ألف حرف)

sessions/570587c3-dc42-47e4-9dd4-985c2a50af86.jsonl:219

قائمة ملفات ضخمة (حوالي 41 ألف حرف)

sessions/570587c3-dc42-47e4-9dd4-985c2a50af86.jsonl:311

ملف حالة الجلسة + هيكل موجه كبير (حوالي 30 ألف حرف)

"هدر المحتوى المكرر" مقابل "عبء إعادة التشغيل المؤقت"

كما قمت بقياس نسبة المحتوى المتكرر داخل كل استدعاء فردي:

نسبة التكرار تقريبًا: 1.72%

Exists indeed, but it is not the main issue.

المشكلة الحقيقية هي أن حجم البادئة المؤقتة كبير جدًا

الهيكل هو: سياق تاريخي ضخم، إعادة قراءة كل مكالمة، مع إضافة كمية صغيرة فقط من المدخلات الجديدة فوقه

لذلك، فإن التركيز على التحسين ليس على إزالة التكرار، بل على تصميم هيكل السياق.

لماذا يظهر هذا المشكل بسهولة خاصة في حلقة Agent؟

ثلاثة آليات تتداخل مع بعضها البعض:

تم كتابة إخراج أدوات كبيرة إلى السياق التاريخي

2. تؤدي دورة الأدوات إلى عدد كبير من المكالمات ذات الفترات القصيرة.

3. التغيير في البادئة ضئيل جدًا → يتم إعادة قراءة الذاكرة المؤقتة في كل مرة

إذا لم يتم تفعيل تكثيف السياق بشكل مستقر، فستتصاعد المشكلة بسرعة.

أهم استراتيجيات الإصلاح (مرتبة حسب التأثير)

P0—لا تُدخل مخرجات الأدوات الضخمة في السياق الطويل الأمد

لإخراج الأدوات الفائقة الكبيرة:

  • احتفظ بالملخص + مسار الاستشهاد / ID
  • كتابة payload الأصلي إلى ملف artifact
  • لا تحتفظ بالنص الأصلي الكامل في سجل المحادثة

القيود المسبقة على هذه الفئات:

  • ملف JSON كبير
  • قائمة دليل طويلة
  • النسخة الكاملة للمتصفح
  • نسخة كاملة من العميل الفرعي

P1—تأكد من أن آلية التجميع تعمل فعليًا

في هذه البيانات، ظهرت مشاكل توافق التكوين عدة مرات: مفتاح الضغط غير صالح

سيقوم بإغلاق آلية التحسين بصمت.

الإجراء الصحيح: استخدم إعدادات متوافقة مع الإصدار فقط

ثم تحقق:

openclaw doctor --fix

وتحقق من سجل الإطلاق للتأكد من قبول التجميع.

P1—تقليل تثبيت نص الاستدلال

تجنب تكرار تشغيل نصوص الاستدلال الطويلة

في بيئة الإنتاج: احفظ الملخص المختصر، وليس التبرير الكامل

P3—تحسين تصميم تخزين مُحفوظات الأوامر

الهدف ليس تكبير cacheRead. الهدف هو استخدام الذاكرة المؤقتة على بادئات مضغوطة ومستقرة وذات قيمة عالية.

اقتراح:

  • ضع القواعد الثابتة في system prompt
  • لا تضع البيانات غير المستقرة في البادئة المستقرة
  • تجنب حقن كمية كبيرة من بيانات التصحيح في كل جولة

خطة واقعية لإيقاف الخسارة (إذا كنت سأعالجها غدًا)

1. ابحث عن الجلسة ذات أعلى نسبة cacheRead

2. نفّذ /compact على جلسة runaway

3. أضف تقليصًا + تحوّلًا إلى مخرجات الأداة

4. أعد تشغيل إحصاءات الرمز بعد كل تعديل

تتبع أربعة مؤشرات أداء رئيسية:

قراءة الذاكرة المؤقتة / إجمالي الرموز

استخدام الأداة avgTotal/الاستدعاء

عدد المكالمات >=100k رمز

أقصى نسبة جلسة

Signal of success

إذا نفّذ التحسين، يجب أن ترى:

انخفض استدعاءات الرموز المميزة بأكثر من 100 ألف بشكل واضح

انخفاض نسبة cacheRead

انخفاض وزن استدعاء toolUse

انخفاض درجة السيطرة في جلسة واحدة

إذا لم تتغير هذه المؤشرات، فهذا يعني أن استراتيجيتك السياقية لا تزال مرنة جدًا.

أوامر تجربة التكرار

python3 scripts/session_token_breakdown.py 'sessions' \

--include-deleted \

-- أعلى 20 \

--outlier-threshold 120000 \

--json-out tmp/session_token_stats_v2.json \

> tmp/session_token_stats_v2.txt

python3 scripts/session_duplicate_waste_analysis.py 'sessions' \

--include-deleted \

-- أعلى 20 \

--png-out tmp/session_duplicate_waste.png \

--json-out tmp/session_duplicate_waste.json \

> tmp/session_duplicate_waste.txt

خاتمة

إذا بدا نظام وكيلك طبيعيًا تمامًا، لكن التكاليف تستمر في الارتفاع، يمكنك أولًا التحقق من مشكلة واحدة: هل أنت تدفع مقابل استنتاجات جديدة، أم تعيد تشغيل سياقات قديمة على نطاق واسع؟

في حالي، فإن معظم التكاليف تأتي في الواقع من إعادة تشغيل السياق.

بمجرد أن تدرك هذا، فإن الحل يكون واضحًا: التحكم الصارم في البيانات المدخلة إلى السياق الطويل.

الرابط الأصلي

إخلاء المسؤولية: قد تكون المعلومات الواردة في هذه الصفحة قد حصلت عليها من أطراف ثالثة ولا تعكس بالضرورة وجهات نظر أو آراء KuCoin. يُقدّم هذا المحتوى لأغراض إعلامية عامة فقط ، دون أي تمثيل أو ضمان من أي نوع ، ولا يجوز تفسيره على أنه مشورة مالية أو استثمارية. لن تكون KuCoin مسؤولة عن أي أخطاء أو سهو ، أو عن أي نتائج ناتجة عن استخدام هذه المعلومات. يمكن أن تكون الاستثمارات في الأصول الرقمية محفوفة بالمخاطر. يرجى تقييم مخاطر المنتج بعناية وتحملك للمخاطر بناء على ظروفك المالية الخاصة. لمزيد من المعلومات، يرجى الرجوع إلى شروط الاستخدام واخلاء المسؤولية.