استهلاك التوكنات في Claude Code، مشروحًا
ما الذي يستهلك التوكنات فعليًا في Claude Code: إعادة إرسال المحادثة في كل جولة، تفكير محتسب رغم إخفائه، حساب التخزين المؤقت، والروافع التي تخفض التكلفة.
لماذا تكلّفك جلسة البرمجة ما تكلّفه
كل فاتورة Claude — سواء فاتورة API أو حد اشتراك — تختزل إلى عدّاد واحد: توكنات تدخل، وتوكنات تخرج. تجعل صفحة التسعير الأمر يبدو بسيطًا: كذا دولار لكل مليون توكن إدخال، وكذا لكل مليون توكن إخراج. لكنها لا تخبرك أن جانب الإدخال من العدّاد يسخن، في جلسة برمجة وكيلية (agentic)، بمعدل أعلى بكثير مما يوحي به الحدس، لأن المحادثة بأكملها تُعاد إرسالها في كل جولة. بعت بنية تحتية تُفوتَر بالعدّاد طوال خمسة عشر عامًا، والتوكنات (tokens) أول عدّاد أرى فيه أن معظم العملاء عاجزون فعلًا عن قول ما الذي يديره. هذا درس قراءة العدّاد: ما هو التوكن، وما الذي يُحتسب إدخالًا وإخراجًا في جلسة وكيلية، ولماذا يعيد التخزين المؤقت للموجّه (prompt) كتابة الحساب، وأي الروافع تحرّك الرقم فعلًا.
ما هو التوكن، ولماذا يكلّف الكود أكثر من النثر
التوكن هو الوحدة التي يقرؤها النموذج ويكتبها — جزء من نص، عادة ما يكون جزءًا من كلمة. يقدّر مسرد Anthropic نفسه التوكن الواحد في Claude بنحو 3.5 حرفًا إنجليزيًا، وهو ما يعني أكثر من توكن واحد لكل كلمة بمجرد احتساب المسافات وعلامات الترقيم — فألف كلمة من النثر تتجاوز بسهولة 1,300 توكن. أما الكود فأثقل لكل سطر: الأقواس والمعاملات والشرطات السفلية والمسافات البادئة تتقطّع إلى توكنات أكثر لكل حرف مقارنة بالإنجليزية، وملف مصدري من بضع مئات الأسطر يزن عادة عدة آلاف من التوكنات. ملف من 2,000 سطر يقرر الوكيل قراءته هو عملية شراء توكنات بخمسة أرقام قبل أن يكتب أحد سطرًا واحدًا من كود جديد.
هناك أمران بشأن أدوات التقطيع إلى توكنات (tokenizers) يوقعان الناس في الخطأ. أولًا، هي خاصة بكل نموذج على حدة — واعتبارًا من يوليو 2026، تستخدم Opus 4.7 وما بعدها، وSonnet 5، وFable 5 أداة تقطيع أحدث تنتج توكنات أكثر بنحو 30% للنص نفسه مقارنة بنماذج Claude الأقدم (والزيادة الدقيقة تختلف باختلاف المحتوى)، ما يزحزح أي شيء تضع له ميزانية بالتوكنات حتى وإن لم ترتفع أسعار التوكن الواحد معه. ثانيًا، tiktoken — المكتبة التي تلجأ إليها كل تدوينة — هي أداة تقطيع OpenAI، وتُقلّل من عدد توكنات Claude بنحو 15 إلى 20% في النص العادي، وأكثر من ذلك في الكود. العدّ الوحيد الموثوق هو نقطة النهاية count_tokens، الآتي ذكرها لاحقًا.
كل شيء إدخال: ما الذي يحتسبه العدّاد فعليًا
يفترض الناس أنهم يدفعون ثمن الكود الذي يكتبه Claude. في جلسة وكيلية، هذا هو البند الصغير في الفاتورة. أما توكنات الإدخال — بالسعر الأرخص، لكن بحجم أكبر بكثير — فتشمل:
- موجّه النظام (system prompt). تعليمات Claude Code الداخلية الخاصة به، إضافة إلى ملف
CLAUDE.mdالخاص بك وملفات الذاكرة، تُحمَّل عند بدء الجلسة وتبقى حاضرة في كل طلب بعد ذلك. - تعريفات الأدوات. كل مخطط أداة (tool schema) يمكن للوكيل استدعاءه. كل خادم MCP تصله يضيف إلى هذا العبء الثابت — رغم أن Claude Code يؤجل الآن افتراضيًا تعريفات أدوات MCP الكاملة، فلا يبقى في السياق إلا أسماء الأدوات إلى أن تُستخدم أداة ما لأول مرة، وهو ما يخفف التكلفة دون أن يلغيها.
- كل ملف يقرؤه الوكيل. عملية
Readعلى ملف مصدري تضع الملف كله في السياق، ويبقى فيه. - كل نتيجة أداة. عمليات تشغيل الاختبارات، ومخرجات grep، وفيض الطرفية، وسجلّات البناء — كل ذلك يعود عليك بوصفه توكنات إدخال. مجموعة اختبارات فاشلة تطبع 8,000 سطر تكون قد فوترتك للتو ثمن كتاب صغير.
- كامل المحادثة حتى الآن، تُعاد إرسالها في كل جولة. هذه تستحق قسمًا خاصًا بها.
إعادة الإرسال التي لا يحتسبها أحد
واجهة Claude API عديمة الحالة (stateless). فهي لا تتذكر جلستك بين طلب وآخر — لا شيء يتذكرها. لذا في الجولة 2، يرسل العميل الجولة 1 مع ردّها مع رسالتك الجديدة. وفي الجولة 50، يعيد إرسال الجولات من 1 إلى 49 — كل ملف قُرئ، وكل نتيجة أداة، وكل diff — إضافة إلى الجولة 50. يعيد النموذج قراءة النص الكامل في كل مرة، وكل توكن من تلك التوكنات المُعادة قراءتها يُفوتَر بوصفه إدخالًا.
والنتيجة: تكلفة الجولة تنمو بشكل شبه خطي مع طول الجلسة، وتكلفة الجلسة الإجمالية تنمو بشكل شبه تربيعي. رسالة كلّفت نصف سنت في الجولة 3 قد تكلّف عشرين ضعف ذلك في الجولة 60، مقابل السؤال نفسه من سطر واحد، لأنها تحمل شحنة ستين جولة. هذه هي الحقيقة الوحيدة التي تفسّر معظم تذاكر «لماذا كانت فاتورتي مرتفعة إلى هذا الحد»، وليست خصيصة غريبة في Claude — فكل منتج LLM يبدو محتفظًا بالحالة هو في جوهره واجهة API عديمة الحالة تحتها حلقة إعادة إرسال.
الإخراج: ما تراه، بالإضافة إلى التفكير الذي لا تراه
توكنات الإخراج هي الأغلى — بخمسة أضعاف سعر الإدخال في كامل التشكيلة الحالية ($5/$25 على Opus 4.8، و$3/$15 السعر المعلن على Sonnet 5، و$1/$5 على Haiku 4.5، اعتبارًا من يوليو 2026). يشمل الإخراج النص والكود الذي يولّده Claude، وكذلك توكنات التفكير: التفكير الداخلي الذي يجريه النموذج قبل أن يجيب. هناك حقيقتان مهمتان هنا. التفكير يُفوتَر بسعر الإخراج ويُحتسب ضمن max_tokens — واستجابة API تتوقف بـ stop_reason: "max_tokens" مع إجابة مبتورة غالبًا ما تعني أن التفكير استهلك الميزانية قبل أن تصل الإجابة إليها. وعلى النماذج الحالية قد لا يُعرَض ملخّص التفكير أصلًا — فـ Opus 4.8 وSonnet 5 وFable 5 تحذفه افتراضيًا — لكن التفكير وقع فعلًا وما زال يُفوتَر. ما لا يُرى ليس مجانيًا.
يفعّل Claude Code التفكير الممتد (extended thinking) افتراضيًا لأنه يحسّن قياسيًا العمل متعدد الخطوات، وقد تصل الميزانية الافتراضية إلى عشرات الآلاف من التوكنات لكل طلب. وفي المهام الأبسط يمكنك خفضها: اخفض مستوى الجهد عبر /effort أو داخل /model، أو عدّل إعدادات التفكير في /config. هذه رافعة تكلفة حقيقية، لا خرافة.
التخزين المؤقت للموجّه يعيد كتابة الحساب
التخزين المؤقت للموجّه هو سبب أن حلقة إعادة الإرسال لا تفلس الجميع. تستطيع الواجهة تخزين بادئة ثابتة من موجّهك مؤقتًا — موجّه النظام، وتعريفات الأدوات، وتاريخ المحادثة — وفي الطلب التالي تقدّمها بجزء يسير من السعر. اعتبارًا من يوليو 2026 المضاعفات هي: كتابة في التخزين المؤقت تكلّف 1.25× سعر الإدخال الأساسي (2× للنسخة ذات الساعة الواحدة)، وقراءة من التخزين المؤقت تكلّف 0.1×. الكتابة علاوة إضافية؛ والقراءة خصم بنسبة 90%. قراءة واحدة فقط تسترد بالفعل، وبفارق كبير، علاوة الكتابة التي مدتها خمس دقائق.
يدير Claude Code التخزين المؤقت نيابة عنك، وفي جلسة سليمة تُقدَّم كل تلك الإعادة الإرسال الضخمة تقريبًا من التخزين المؤقت. لكن التخزين المؤقت الافتراضي يعيش خمس دقائق فقط من آخر استخدام. ابتعد لتناول قهوة طالت مدتها، ثم عد وأرسل رسالة — يكون التخزين المؤقت قد انتهت صلاحيته، فتُعاد كتابة كامل البادئة المتراكمة بسعر 1.25× بدلًا من قراءتها بسعر 0.1×. في جلسة من 150 ألف توكن، تلك الجولة الباردة الواحدة تكلّف أكثر من اثنتي عشرة جولة دافئة. هذه هي النتيجة غير البديهية التي تستحق أن تستوعبها: إيقاع من الخمول ثم الاستئناف قد يكلّف أكثر من العمل المتواصل، لأن كل فجوة خمول تتجاوز مدة الصلاحية (TTL) تحوّل جولتك التالية من قراءة رخيصة إلى إعادة كتابة باهظة. اعمل على شكل فترات متواصلة؛ ولا تُغذِّ جلسة ضخمة برسالة واحدة كل عشر دقائق.
إذا كنت تستدعي الواجهة من تطبيقك الخاص على خادم VPS، فلن تحصل على أي من هذا مجانًا — والجرح الذاتي الكلاسيكي هو طابع زمني أو معرّف طلب يُدرَج داخل موجّه النظام، فيغيّر بايتات البادئة في كل طلب ويعطّل التخزين المؤقت بصمت. والعلامة الدالة على ذلك هي بقاء usage.cache_read_input_tokens عند الصفر عبر استدعاءات تبدو متطابقة.
الصيغة الحسابية، مع مثال محلول
تجاهل أي شخص يذكر رقمًا ثابتًا من نوع «الجلسة تكلّف كذا دولارًا». فالجلسات تتفاوت بمقدار رتبتين من حيث الحجم. ما يظل صحيحًا هو الصيغة التالية:
turn cost = (uncached input x base input price)
+ (cache writes x 1.25 x base input price)
+ (cache reads x 0.10 x base input price)
+ (output incl. thinking x output price)
session cost = sum over all turnsمثال محلول على Claude Opus 4.8، الذي يكلّف اعتبارًا من يوليو 2026 $5 لكل مليون توكن إدخال و$25 لكل مليون توكن إخراج. جولة في منتصف الجلسة تحمل 80,000 توكن من السياق المتراكم: 75,000 مقروءة من التخزين المؤقت، و3,000 مكتوبة حديثًا، و2,000 إدخال جديد غير مخزَّن مؤقتًا، و1,500 توكن إخراج بما فيها التفكير.
- قراءات التخزين المؤقت: 75,000 × $0.50/M = $0.0375
- كتابات التخزين المؤقت: 3,000 × $6.25/M = $0.019
- الإدخال غير المخزَّن مؤقتًا: 2,000 × $5/M = $0.010
- الإخراج: 1,500 × $25/M = $0.0375
نحو $0.10 لهذه الجولة؛ وخمسون جولة من هذا النوع تبلغ نحو $5. أما الجولة نفسها بعد انتهاء صلاحية التخزين المؤقت: فإعادة كتابة كامل الـ80,000 توكن بسعر $6.25/M تبلغ $0.50 قبل الإخراج — أي نحو خمسة أضعاف الجولة الدافئة كلها، لعمل مطابق تمامًا. تلك الفجوة هي كل قصة التخزين المؤقت في رقم واحد.
للمعايرة لا للتنبؤ: تشير الأرقام المنشورة من Anthropic لعمليات نشر Claude Code في بيئات الشركات، اعتبارًا من يوليو 2026، إلى متوسط نحو $13 لكل مطوّر في اليوم النشط الواحد — أي $150–250 شهريًا — مع بقاء 90% من المستخدمين دون $30 في اليوم. والنتيجة لديك دالة في اختيار النموذج، ونظافة الجلسة، وحجم قاعدة الكود، وهذا بالضبط سبب أهمية الروافع أدناه.
الاطّلاع على استخدامك الخاص
في Claude Code، الأمر هو /usage (وما زال /cost يعمل — فهو اسم بديل له). تعرض كتلة Session في الأعلى إحصاءات التوكنات وتقديرًا محليًا للتكلفة للجلسة الحالية؛ وفي خطط الاشتراك تعرض الشاشة نفسها أشرطة حدود خطتك وتفصيلًا ينسب الاستخدام الأخير إلى skills وsubagents والإضافات (plugins) وخوادم MCP كلًّا على حدة. أما بالنسبة للفوترة الرسمية على حسابات API، فصفحة الاستخدام في Claude Console هي المرجع الموثوق — ورقم CLI مجرد تقدير. /context يرسم شبكة ملونة لما يشغل نافذة السياق — موجّه النظام، والأدوات، وتعريفات MCP، والملفات، والتاريخ — وهو أسرع طريقة لاكتشاف ملف CLAUDE.md منتفخ أو خادم MCP كثير الكلام؛ مرّر all لعرض التفصيل الكامل عنصرًا عنصرًا.
من جهة الواجهة، كل استجابة تخبرك بالضبط بما حدث:
response = client.messages.create(model="claude-sonnet-5", max_tokens=2048,
messages=messages)
u = response.usage
total_prompt = u.input_tokens + u.cache_creation_input_tokens + u.cache_read_input_tokens
print(f"uncached={u.input_tokens} written={u.cache_creation_input_tokens} "
f"read={u.cache_read_input_tokens} output={u.output_tokens}")لاحظ أن input_tokens هو فقط الباقي غير المخزَّن مؤقتًا — أما الحجم الحقيقي للموجّه فهو مجموع حقول الإدخال الثلاثة كلها. وكيل عمل لمدة ساعة ويعرض input_tokens: 4000 ليس رخيصًا؛ فالتوكنات الـ200,000 الأخرى قُدِّمت من التخزين المؤقت. وللتقدير قبل الإرسال، استخدم نقطة نهاية عدّ التوكنات — استدعاؤها مجاني، ولها حد معدل خاص بها، وتعدّ باستخدام أداة التقطيع الخاصة بأي نموذج تسمّيه (عامل النتيجة على أنها تقدير قريب؛ فالفوترة تعكس الطلب الفعلي):
count = client.messages.count_tokens(model="claude-sonnet-5",
messages=[{"role": "user", "content": big_file}])
print(count.input_tokens)لا تستخدم tiktoken أبدًا، للسبب المذكور أعلاه.
خطط الاشتراك مقابل الدفع حسب الاستخدام
الآليات في هذا الدليل واحدة في كل مكان؛ ما يختلف هو طريقة التسوية فقط. مع مفتاح API، تفوترك Anthropic بالدفع حسب الاستخدام، لكل توكن، بالأسعار المعلنة — وكل رقم مذكور أعلاه هو مال حقيقي. أما على اشتراك Claude (Pro أو Max أو Team أو Enterprise)، فاستخدام Claude Code يُخصَم بدلًا من ذلك من مخصصات خطتك المُتضمَّنة: اعتبارًا من يوليو 2026 هذه نافذة جلسة متجددة مدتها خمس ساعات إضافة إلى نافذة أسبوعية، مشتركة بين النماذج ومع محادثة claude.ai، ورقم الدولار في /usage معلوماتي لا فاتورة فعلية. وإذا استنفدت نافذة ما فسترى "You've hit your session limit" أو "You've hit your weekly limit" مع وقت لإعادة الضبط — وتبديل النموذج عبر /model لن يعيد الوصول، لأن النوافذ مشتركة بين النماذج. يمكن للخطط أن تفعّل اختياريًا أرصدة استخدام (usage credits)، تُدار عبر /usage-credits، لشراء استخدام إضافي يتجاوز السقف. أتعمّد عدم ذكر حصص الخطط بالأرقام: فهي أكثر الأرقام تقلبًا في هذا الموضوع برمّته، لذا راجع بدلًا من ذلك claude.com/pricing وأشرطة /usage الخاصة بك. آليات التوكنات ما زالت مهمة على الاشتراك أيضًا — فالجلسة المُبذِّرة تستهلك نافذتك تمامًا كما كانت ستستهلك دولاراتك. للاطّلاع على جانب الاشتراك، راجع أي خطة Claude تناسب استخدامك.
الروافع التي تنجح فعلًا
- حدّد نطاق ما يقرؤه الوكيل. طلب «أصلح خطأ التحقق في
auth.py» يقرأ ملفًا واحدًا؛ وطلب «حسّن قاعدة الكود هذه» يقرأ أربعين ملفًا. أبقِCLAUDE.mdرشيقًا — فهو يُحمَّل في كل جلسة، لذا اقتصر فيه على الأساسيات — وانقل التعليمات الخاصة بسير عمل معيّن إلى skills تُحمَّل عند الطلب. - امسح وضغّط. استخدم
/clearبين المهام غير المترابطة — فالسياق القديم يُعاد إرساله، وتُعاد فوترته، مع كل رسالة لاحقة. وضمن مهمة طويلة واحدة، يلخّص أمر/compact Focus on the failing tests and the diffالتاريخ ويُبقيك بمنأى عن المنحنى التربيعي. - اختر الحجم المناسب للنموذج. يتولى Sonnet معظم أعمال البرمجة بسعر تمهيدي قدره $2/$10 لكل مليون توكن اعتبارًا من يوليو 2026 ($3/$15 السعر المعلن، مقابل Opus عند $5/$25)، وHaiku بسعر $1/$5 هو الأداة المناسبة لعمل subagent الآلي مثل فرز السجلّات. يتيح
/modelالتبديل في منتصف الجلسة. - رشِّح المخرجات المطوَّلة مسبقًا. hook يُرشِّح عبر grep نتيجة تشغيل اختبار إلى الإخفاقات فقط قبل أن يراها Claude، فيحوّل بذلك 20,000 توكن من نتيجة أداة إلى 300 توكن فقط، ويفعل ذلك في كل عملية إعادة إرسال مستقبلية لتلك الجولة.
- اجمع في دفعات ما ليس تفاعليًا. بالنسبة إلى خطوط أنابيب API الخاصة بك — التصنيف، والمراجعة الجماعية، والمهام الليلية — تشغّل Batches API النماذج نفسها بخصم 50% مقابل تسليم غير متزامن.
- احترم ساعة التخزين المؤقت. اعمل على شكل فترات متواصلة. جلسة Claude Code منفصلة في tmux على خادم VPS لا تكلّف شيئًا أثناء الخمول — فالتوكنات لا تُصرَف إلا حين تُنفَّذ جولة — لكن التخزين المؤقت الدافئ هو ما يضيع بفعل وقت الخمول، وتدفع الجولة التالية ثمن إعادة الكتابة.
FAQ
كم توكن تستهلك جلسة برمجة في Claude Code؟
لا يوجد رقم ثابت — فالجولة الواحدة في منتصف الجلسة تحمل عادة عشرات الآلاف من توكنات الموجّه بمجرد أن تتراكم الملفات والتاريخ، وتصل الجلسة العملية إلى الملايين، تُقدَّم معظمها من التخزين المؤقت بعُشر السعر الأساسي. للمعايرة، تشير أرقام الشركات المنشورة من Anthropic اعتبارًا من يوليو 2026 إلى متوسط نحو $13 لكل مطوّر في اليوم النشط، مع بقاء 90% من المستخدمين دون $30. شغّل /usage في جلستك الخاصة؛ فخمس دقائق من المراقبة تفوق أي متوسط منشور.
هل تكلّف توكنات التفكير مالًا حتى عندما لا أستطيع رؤيتها؟
نعم. تُفوتَر توكنات التفكير بوصفها توكنات إخراج — أي بالسعر الأغلى — وتُحتسب ضمن max_tokens، وتفوترها النماذج الحالية حتى عندما تحذف الواجهة ملخّص التفكير من العرض. وإذا انقطعت استجابة بـ stop_reason: "max_tokens" قبل أن تكتمل الإجابة الظاهرة، فالأرجح أن التفكير استهلك الميزانية. في Claude Code، اخفض مستوى الجهد عبر /effort للمهام التي لا تحتاج تفكيرًا عميقًا.
لماذا تصبح الجلسة الطويلة في Claude Code أغلى لكل رسالة؟
لأن الواجهة عديمة الحالة: كل جولة تعيد إرسال المحادثة بأكملها — كل ملف قُرئ، ونتيجة أداة، وتبادل سابق — بوصفها إدخالًا مفوترًا، لذا تحمل الجولة 50 الجولات من 1 إلى 49 كشحنة. يقدّم التخزين المؤقت للموجّه البادئة المتكررة بنحو عُشر سعر الإدخال الأساسي، لكن البادئة نفسها تستمر في النمو، وأي فجوة خمول تتجاوز مدة صلاحية التخزين المؤقت تحوّل الجولة التالية إلى إعادة كتابة بالسعر الكامل. /compact يقلّص التاريخ؛ و/clear يعيد ضبطه.
كيف أتحقق من استخدامي لتوكنات Claude وتكلفتها؟
في Claude Code، يعرض /usage إحصاءات توكنات الجلسة، وتقديرًا محليًا للتكلفة، وأشرطة حدود الخطة على الاشتراكات (/cost اسم بديل له)؛ ويعرض /context ما يملأ النافذة. أما للفوترة الرسمية عبر API، فاستخدم صفحة الاستخدام في Claude Console. وفي كودك الخاص، اقرأ response.usage — فجمع input_tokens وcache_creation_input_tokens وcache_read_input_tokens يعطي الحجم الحقيقي للموجّه — وقدّر مسبقًا باستخدام نقطة النهاية count_tokens، ولا تستخدم tiktoken أبدًا.