كيف نُصدر Statnive باستخدام Claude Code دون حرق الرموز
ميزانية رموز فعلية لفريق plugin WordPress — أكثر من 80 skill و24 connector MCP ونافذة سياق 200K. ما قِسناه، وما قطعناه، والأرقام الأربعة التي تَحْكُم الآن كل إصدار.
أوّل مرّة شغّلنا فيها /context، كان لدينا 12% متبقّ
Statnive فريق صغير يشحن plugin تحليلات WordPress بمنطق الخصوصية أولاً. قاعدة كودنا تحتوي على submodules اثنين في git (الـ plugin وموقع التسويق)، وأكثر من 80 skill من Claude Code، و24 connector من MCP، وبوابة إصدار تشغّل 248 اختبارًا و22 بوابة إصدار قبل أن يُشحن أي شيء.
في أوّل شهرَين، شعر التطوير بمساعدة AI سحريًا. ثم بدأ يشعر بالكلفة. كانت الجلسات تنقطع في منتصف المهمّة. بدا أن النموذج ينسى أشياء قرأها قبل خمس دقائق. ارتفعت فاتورة Anthropic لدينا فوق 6 دولارات في اليوم لمهندس واحد.
شغّلنا /context لأوّل مرّة وفهمنا السبب. قبل أن نكتب prompt واحدًا، كنّا نستخدم بالفعل 88% من نافذة السياق. اثنا عشر بالمئة متبقّ للعمل الفعلي.
هذا المقال هو كيف خفّضنا ذلك الحمل بنحو الثلثَين — دون إسقاط أي skills أو connectors — والأرقام الأربعة التي تحكم الآن كل إصدار.
الأرقام الرئيسية: ~54K رمز من الحمل الأساسي (نزولًا من ~175K)، ~73% من نافذة السياق متاحة للعمل الحقيقي، وانخفاض الإنفاق اليومي من ~6 دولار إلى ~2-3 دولار.
ما يعيش فعلًا في تلك الـ 200K رمز
يمنحك Claude Code نافذة سياق بـ 200K رمز. يبدو ذلك سخيًا حتى تفهم ما الذي يأكلها قبل رسالتك الأولى.
| المكوّن | ما هو | غير محسَّن | هدفنا |
|---|---|---|---|
| prompt النظام | تعليمات Claude Code المدمجة | ~3,200 | ~3,200 |
| الأدوات المدمجة | Read، Write، Bash، Grep، Glob، Edit | ~11,600 | ~11,600 |
| CLAUDE.md في الجذر | تعليمات المشروع، محمَّل دائمًا | 8,000+ | ≤ 1,500 |
| metadata الـ Skill | مدخلات <available_skills> | 4,000+ | ≤ 2,500 |
| schemas أدوات MCP | 24 connector × أدوات كثيرة | 48,000-120,000 | ≤ 3,000 |
| مساحة auto-compact | هامش محجوز | 32,000 | 32,000 |
ثلاثة من هذه الصفوف هي المعركة كلّها: CLAUDE.md المحمَّل دائمًا، وسجلّ metadata الـ skill، وحمل schema أدوات MCP. كلّ شيء آخر مثبَّت من قبل الإطار.
الآلية الكامنة هي الكشف التدريجي. يحمّل نظام skills في Claude Code فقط حقلَي name وdescription من frontmatter لكل skill عند بدء التشغيل — نحو 30-50 رمز لكل skill — ويؤجّل جسم SKILL.md الكامل حتى يُستدعى الـ skill فعلًا. تعمل الحيلة ذاتها لـ schemas أدوات MCP والمستندات المرجعية، إذا ضبطته. إذا لم تفعل، فإن كل تعريف أداة وكل قاعدة وكل تعليمة تجلس في السياق إلى الأبد.
كان حمل أدوات MCP أكبر تسرّب لدينا
تشغيل /context لأوّل مرّة تجربة مُذِلّة. إليك ما رأيناه قبل أن نلمس أي شيء:
| connector MCP | الأدوات | الرموز المستهلكة |
|---|---|---|
| GitHub | 35 | ~26,000 |
| Playwright (أتمتة المتصفّح) | 21 | ~13,647 |
| Slack | 11 | ~21,000 |
| Context7 (مستندات المكتبات) | ~15 | ~8,000 |
| 20 connector آخر | ~200 | ~60,000+ |
تلك الصفوف الخمسة وحدها استهلكت نحو 60% من نافذة السياق قبل أن نفتح ملفًا. المشكلة في البنية: كل schema أداة MCP — الاسم والوصف وتعريفات معاملات JSON الكاملة — يُحقَن في السياق عند بدء الجلسة افتراضيًا. خادم MCP الخاص بـ Docker يشحن 135 أداة ويستهلك ~126,000 رمز بمفرده.
الإصلاح الذي قام بـ 85% من العمل لنا كان تشغيل MCP Tool Search. شُحن في Claude Code v2.1.7، يبني Tool Search فهرسًا خفيفًا ~5K رمز لأسماء الأدوات وأوصافها ويحمّل الـ schema الكامل لأداة فقط عندما يستدعيها Claude فعلًا. أظهر اختبار Anthropic الداخلي انخفاضًا من 134K إلى ~5K رمز — قطع 85% — بينما ارتفعت الدقّة في تقييمات MCP (Opus 4: 49% → 74%).
التفعيل يحدث تلقائيًا عندما تتجاوز أوصاف الأدوات نحو 10% من نافذة السياق، لكنّنا نتحقّق من نشاطه على كل جلسة عبر /context ونراقب سطر «tool search enabled».
كتبنا أكثر عن أرقام القبل/البعد والـ connectors الثلاثة التي أبقيناها سريعة التحميل في مقال مخصّص عن MCP Tool Search.
CLAUDE.md: 162 سطرًا، لا 800
على عكس الـ skills وأدوات MCP، كل بايت من CLAUDE.md يُحمَّل في السياق عند بدء كل جلسة دون تحميل كسول. يشمل ذلك ملف الجذر، وأي استيرادات عبر صيغة @path/to/file (متكرّرة حتى 5 مستويات)، وكل الملفات العامّة وملفات المؤسسة.
كان أوّل CLAUDE.md لدينا 820 سطرًا. كان يوثّق كل skill وكل سير عمل وكل معيار ترميز وكل بوابة إصدار وكل دقيقة من إعداد WordPress-coding-standards. كان شاملًا. كان أيضًا يستهلك نحو 12% من نافذة السياق على كل جلسة على الإطلاق، بما في ذلك جلسات لا علاقة لها بمعظم ما وصفه.
اختصرناه إلى 162 سطرًا بنقل البروتوكولات إلى الخارج واستبدالها بجدول محفّزات — نمط بحث-skill مضغوط يحلّ محل النثر المسهب لكل skill:
## Skill triggers
| Trigger keywords | Skill | Domain |
|------------------|-------|--------|
| sprint, backlog, iteration | pm-sprint-plan | PM |
| deploy, release, ship | statnive-release | Dev |
| security, audit | sec-audit-remediate | Security |
يكلّف هذا النمط ~800 رمز بدلًا من 3000+ للوثائق المسهبة. تعيش البروتوكولات المفصّلة في ملفات SKILL.md الفردية، تُحمَّل فقط عندما يوجّه Claude إليها. تلتقط القواعد path-scoped تحت .claude/rules/ القيود الخاصّة بالمجال (اصطلاحات React، معايير ترميز PHP، قواعد بوابة الإصدار) فقط عندما يعمل Claude مع ملفات مطابقة.
القبل/البعد الكامل موثَّق في مقال إعادة تصميم CLAUDE.md لدينا، لكن أكبر نمط مضادّ منفرد أزلناه كان @-importing ملفات مرجعية كبيرة في CLAUDE.md في الجذر. كل @import يحمّل الملف الهدف الكامل في كل جلسة — كان لدينا ثلاثة منها، تضيف نحو 6000 رمز من الحمل الدائم لمحتوى نادرًا ما يحتاجه النموذج.
تدريج الـ Skill: أربعة دلاء، قاعدة واحدة
لدينا أكثر من 80 skill تغطّي إدارة المنتج، وبناء الـ backend، وQA، وتدقيق الأمن، وأنماط خاصّة بـ WordPress، وحزم الإصدار، والمزيد. محمَّلة بشكل ساذج، 80 skill × ~50 رمزًا من metadata لكل واحدة يساوي 4000 رمز من الحمل الدائم. النمو إلى 141 skill (كما يفعل إطار jaan.to الذي نبني عليه) يمكن أن يدفع ذلك فوق 14,000.
الإصلاح هو نموذج التدريج رباعي الدلاء الذي يعرّفه نظام skill في Claude Code:
| الدلو | Frontmatter | كلفة metadata | متى يُستخدم |
|---|---|---|---|
| دائم التشغيل | (افتراضي) | ~40 رمز | مسارات عمل أساسية يجب أن يوجّه إليها النموذج تلقائيًا |
| قابل للاستدعاء التلقائي | (افتراضي، وصف موجز) | ~40 رمز | skills مجال بكلمات محفّزة قويّة |
| يدوي فقط | disable-model-invocation: true | 0 رمز | skills slash-command-only — نادرة أو مدمّرة |
| Fork / subagent | context: fork | ~40 رمز | مراجعات وتدقيقات وتحليلات متعدّدة الخطوات يجب ألّا تلوّث السياق الرئيسي |
اختبار سؤال واحد: هل تحتاج المحادثة الرئيسية إلى رؤية المخرج؟ إذا لا — إذا كان الـ skill قائمًا بذاته ويعيد ملخّصًا — فهو مرشّح fork/subagent ويختفي استخدامه الداخلي للرموز من السياق الرئيسي. توثّق Anthropic عودة subagents بـ ~500-1000 رمز من 10,000+ من العمل الداخلي — نحو انخفاض 37% في السياق الرئيسي على المهامّ المعقّدة.
نضع علامة على نحو نصف skills لدينا بـ disable-model-invocation: true — لا يمكن الوصول إليها إلّا عبر slash commands. وفّر هذا وحده نحو 2000 رمز من metadata الأساسية، وحسّن فعلًا جودة التوجيه للـ skills المتبقّية القابلة للاستدعاء التلقائي لأن Claude لم يكن يختار بين متشابهات قريبة.
التفصيل دلوًا-بدلوٍ — بما في ذلك كيف نصنّف مكتبة skills الفعلية لـ Statnive — في مقال تدريج الـ skill.
عزل Subagent للعمل الثقيل
ثلاث فئات من العمل لم تعد تلامس سياقنا الرئيسي: مراجعات الكود، وتدقيقات الأمن، والبحث الاستكشافي. تشتغل في subagents — نسخ Claude منفصلة بنافذة سياقها الخاصّة 200K — وتعيد رسالة ملخّص.
الاقتصاديات دقيقة. تستهلك جلسات subagent إجمالي رموز أكثر من العمل inline: توثّق Anthropic فرق وكلاء تستخدم نحو 7× رموز إجمالية أكثر لأن كل وكيل يولّد نسخة Claude جديدة بتحميل prompt النظام وتهيئة الأدوات.
لكن إجمالي إنفاق الرموز ليس ما نحسّن من أجله. نحسّن من أجل:
- نظافة السياق الرئيسي. تدقيق أمن يقرأ 40 ملفًا ويجد 3 مشكلات يعيد ملخّصًا 600 رمز. دون عزل، ستأكل حلقة القراءة الكاملة 40K رمز من السياق الرئيسي، مما يدفعنا نحو منطقة «الضائع في المنتصف» حيث تتدهور جودة الاسترجاع 15-47%.
- توجيه النموذج. يستطيع subagents العمل على Haiku 4.5 (1$/5$ لكل MTok) بينما تستخدم الجلسة الرئيسية Sonnet أو Opus. الاستكشاف للقراءة فقط لا يحتاج إلى أعلى نموذج — ميزة كلفة 3× لـ Haiku تتراكم بسرعة على تدقيقات تقرأ مئات الملفات.
كيف يبدو يوم إصدار طبيعي الآن
في يوم إصدار Statnive نموذجي، نحرق نحو 400K-600K رمز من العمل الفعلي. إليك أين يذهبون:
| العمل | النموذج | النمط |
|---|---|---|
| مراجعة كود الصباح على PR مفتوح | Sonnet (رئيسي) + Haiku (subagent fork) | Fork المراجعة، أعد ملخّصًا |
| كتابة ميزة جديدة في لوحة تحكم React | Sonnet (رئيسي) | skill frontend-scaffold قابل للاستدعاء التلقائي، المراجع تُحمَّل عند الطلب |
| تشغيل بوابة الإصدار | Sonnet (رئيسي) | skill statnive-release، مدفوع بـ bash — لا سياق إضافي |
| كتابة أحد منشورات المدوّنة هذه | Sonnet (رئيسي) | مسوّدة inline، fork مرّة مراجعة |
التخزين المؤقت لـ prompt يتولّى البقية. يخزّن Claude Code البادئة المستقرّة — prompt النظام، تعريفات الأدوات، metadata الـ skill، CLAUDE.md في الجذر — التي تتكرّر في كل دور. قراءات التخزين المؤقت تكلّف 0.1× السعر الأساسي، مما يُحقّق نحو انخفاض كلفة 90% على تلك البادئة المستقرّة. يزيد ترتيب المحتوى ثابت-أوّلًا وديناميكي-أخيرًا من إصابات التخزين، لذا نُبقي CLAUDE.md في الجذر فوق أي سياق ديناميكي محقون.
ما لم نحسّنه
شفافية بشأن القيود، لا فقط القدرات:
- لم ننتقل إلى سياق مدفوع بـ hooks ثقيل. تشير الأبحاث إلى أن hooks
SessionStartيمكنها حقن سياق ديناميكي (الفرع الحالي، الملفات المتغيّرة، الخدمات الجارية) لاستبدال محتوى CLAUDE.md الثابت — تُظهر دراسات حالة من المجتمع انخفاضًا إضافيًا بنسبة ~62%. جرّبناه، تراجعنا. مخاطرةexit code 2التي تُراكم نصّ الخطأ في السياق أرعبتنا. سنعيد النظر بعد أن تنضج تشخيصات hooks في Claude Code. - لا نزال نستخدم Opus لبعض المهامّ المعمارية. تقول الأبحاث افتراضًا Sonnet لـ 80% من العمل واحفظ Opus للاستدلال المعقّد. نفعل ذلك للميزات، لكنّنا نُفرط في Opus للإصدارات لأن كلفة إصدار معطوب تتجاوز فاتورة Anthropic الهامشية.
- لم نبنِ بوابات CI لميزانيات الرموز بعد. كتاب اللعب البحثي — أفشل PR إذا تجاوز CLAUDE.md في الجذر ~1500 رمز، أو إذا تجاوزت القواعد غير المقيّدة 400، أو إذا تجاوز أي
SKILL.md500 سطر — سيمنع الانحدار. هو على خارطة الطريق. حاليًا نفرض بفحوصات/contextيدوية على كل جلسة. - أرقامنا مُبلَّغ ذاتيًا. نحن فريق صغير. أرقام Anthropic العامّة (134K → 5K لـ Tool Search، 37% لعزل subagent، 90% للتخزين المؤقت لـ prompt) تصمد في قياساتنا، لكنّنا لم ننشر معيارًا صارمًا كما فعلنا لـ أداء plugin تحليلات WordPress.
أثر التراكم حقيقي
التحسينات الأربعة — التخزين المؤقت لـ prompt، توجيه النموذج، عزل subagent، تأجيل أداة MCP — مضاعفة، لا جمعية. كلّ واحدة وحدها تبدو متواضعة. مكدَّسة، تحوّل نافذة سياق 200K من ضيقة إلى مريحة، وتحوّل عادة 6$/يوم إلى أداة بـ ~2-3$/يوم. الإرشادات الكاملة لمحاسبة الكلفة في مقال الاقتصاديات.
ما يعنيه هذا لمستخدمي Statnive: الفريق ذاته الذي يشحن plugin تحليلات بمنطق الخصوصية أولاً يستطيع أن يعمل بنطاق فريق أكبر بكثير، دون مقايضة على تغطية الاختبار أو صرامة الامتثال. لا يزال كل إصدار يجتاز نفس 248 اختبارًا و22 بوابة إصدار. سير عمل AI سقالة، لا اختصار.
لماذا نشرنا هذا
نكتب مقالات مثل كيف بنينا أسرع tracker WordPress وكيف نختبر Statnive لأنّنا نعتقد أن نظام WordPress يستحقّ روايات هندسية أكثر صدقًا. ينطبق الأمر ذاته على التطوير بمساعدة AI: محتوى كثير يدّعي أن Claude Code سيحوّل فريقك، ولا أحد منه تقريبًا يُظهر محاسبة الرموز.
إذا كنت فريق plugin WordPress، أو أي فريق هندسي صغير، يشغّل Claude Code على نطاق: شغّل /context اليوم. شاهد ما الذي يأكل نافذتك. الأرقام الأربعة التي تَحْكُم كل إصدار من إصداراتنا الآن هي حمل أساسي تحت 30%، وCLAUDE.md في الجذر تحت 1500 رمز، وMCP Tool Search متحقَّق من نشاطه، وصفر @-imports في إعداد الجذر. هذه قابلة للتحقيق في فترة ما بعد ظهر واحدة.
جرّب Statnive
plugin تحليلات WordPress بمنطق الخصوصية أولاً المبني بهذا سير العمل مجاني على WordPress.org. المصدر الكامل على GitHub — بما في ذلك CLAUDE.md، وskill بوابة الإصدار، ومجموعة الاختبار الكاملة. بياناتك تبقى على خادمك. لنا تبقى على خادمنا.