العودة إلى المدونة

تحسين التكلفةدليل

استخدام رموز Claude Code: أبقِ ناتج الأدوات خارج السياق

كيف يبقي خطاف PreToolUse وإضافة وضع السياق سجلات الاختبار خارج سياق Claude Code، بالإضافة إلى تقدير تكلفة الجلسة مع وبدون ترشيح.

بواسطة CheapTokens Teamنُشر في 5 دقيقة قراءة

طرفية تعرض أمر اختبار يمر عبر grep وhead بحيث تصل حالات الفشل فقط إلى Claude Code
في هذه الصفحة
  1. لماذا يُدفع مقابل سجل واحد عدة مرات
  2. الحل 1: خطاف PreToolUse يرشح ناتج الاختبار
  3. الحل 2: وضع السياق لنتائج الأدوات الكبيرة
  4. تكلفة جلسة طويلة، مع وبدون ترشيح
  5. شغّل Claude Code على نموذج CheapTokens
  6. قائمة تحقق سريعة

شغّل وكيلك مجموعة الاختبارات ثلاث مرات، والفاتورة أكبر من المهمة. السبب نادرًا ما يكون الكود الذي كتبه. إنها سجلات الاختبار: بمجرد أن يصل ناتج أداة إلى سياق Claude Code، كل طلب لاحق يحمله مرة أخرى. الحل هو تقليص ناتج الأداة قبل أن يراه النموذج. الطريقة الرسمية هي خطاف PreToolUse على Bash؛ طريقة الطرف الثالث هي إضافة وضع السياق. كلاهما أدناه، مع تقدير تكلفة لجلسة طويلة على نموذج CheapTokens.

لماذا يُدفع مقابل سجل واحد عدة مرات#

وفقًا لصفحة تكاليف Claude Code (https://code.claude.com/docs/en/costs، تم التحقق في 23 أكتوبر 2026)، يرسل Claude Code المحادثة الكاملة مع كل طلب، وكل استخدام أداة يطلق طلبًا آخر يحمل نتائج الأداة. إعادة قراءة التخزين المؤقت للمطالبات للسجل بسعر مخبأ أرخص، لكن الرموز لا تزال موجودة.

لنفترض أن الوكيل يشغّل npm test ويحصل على سجل من 10,000 سطر. تقول الوثائق إن هذا النوع من السجلات يمكن أن يكون عشرات الآلاف من الرموز. افترض 30,000 رمز. مهما فعلت بعد ذلك، فإن تلك الـ 30,000 رمز هي جزء من مدخلات الخطوة 11، والخطوة 12، والخطوة 13، وهكذا حتى تقوم بـ /clear أو الضغط. وهذا هو المأزق: السجل مفيد لخطوة واحدة، وتدفع مقابله لثلاثين خطوة.

الحل 1: خطاف PreToolUse يرشح ناتج الاختبار#

تقترح نفس صفحة الوثائق الخطافات كمعالجة مسبقة: خطاف PreToolUse على Bash يعيد كتابة أوامر الاختبار (npm test، pytest، go test) بحيث تمر عبر grep -A 5 -E '(FAIL|ERROR|error:)' | head -100. ثم يرى الوكيل فقط حالات الفشل بالإضافة إلى بضعة أسطر من السياق، وليس 10,000 سطر من النقاط الخضراء. تقول الوثائق إن هذا يمكن أن يحول عشرات الآلاف من الرموز إلى مئات.

ما يراه الوكيل قبل وبعد الخطاف
ناتج npm test الخام مقابل حالات الفشل فقط

هذا هو السكريبت من صفحة الوثائق تلك (تم التحقق في 23 أكتوبر 2026). يحتاج إلى jq. أنشئ المجلد باستخدام mkdir -p ~/.claude/hooks، واحفظ السكريبت باسم ~/.claude/hooks/filter-test-output.sh وشغّل chmod +x عليه:

bash
#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')

pattern='^(npm test|pytest|go test)( [^;&|<>`$#\\[:cntrl:]]*)?$'

if [[ "$cmd" =~ $pattern ]]; then
  filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
  echo "$input" | jq --arg filtered "$filtered_cmd" '{hookSpecificOutput: {hookEventName: "PreToolUse", updatedInput: (.tool_input + {command: $filtered})}}'
else
  echo "{}"
fi

ثم سجله في ~/.claude/settings.json:

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "~/.claude/hooks/filter-test-output.sh" }]
      }
    ]
  }
}

للتحقق من عمله، افتح /hooks داخل Claude Code وابحث عن مدخل PreToolUse، أو ابدأ بـ claude --debug-file ./claude-debug.txt واطلب من الوكيل تشغيل npm test. عندما يكون الخطاف قد أعاد كتابة الأمر، يحتوي الملف على سطر modified tool input keys مع حقل command. إذا نجحت الاختبارات، يكون الناتج فارغًا، فيحصل الوكيل على نجاح صامت؛ عدّل النمط إذا كان مشغل الاختبارات لديك يطبع حالات الفشل بشكل مختلف.

الحل 2: وضع السياق لنتائج الأدوات الكبيرة#

الخطاف يغطي فقط الأوامر التي يمكن تمريرها عبر أنبوب. لقطات الصفحات من Playwright أو قائمة بعشرين مشكلة من GitHub تأتي من أدوات MCP. هذا ما يستهدفه وضع السياق. وفقًا لملف README الخاص به (https://github.com/mksglu/context-mode، تم التحقق في 23 أكتوبر 2026؛ لا يظهر إصدارًا أو تاريخًا)، فهو خادم MCP وإضافة تحافظ على ناتج الأداة الخام خارج نافذة السياق، وتخزن حالة الجلسة في SQLite وتوجه استدعاءات الأدوات عبر الخطافات. يحتاج إلى Claude Code v1.0.33 أو أحدث، وترخيصه Elastic License 2.0، وهو ليس ترخيصًا مفتوح المصدر معتمدًا من OSI.

التثبيت داخل Claude Code:

text
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode

أعد التشغيل أو شغّل /reload-plugins، ثم تحقق باستخدام /context-mode:ctx-doctor. البديل الخاص بـ MCP فقط، claude mcp add context-mode -- npx -y context-mode، يضيف الأدوات لكن ليس لديه توجيه تلقائي.

يذكر المشروع تخفيضات كبيرة: 315 كيلوبايت تصبح 5.4 كيلوبايت (98%)، لقطة صفحة بحجم 56 كيلوبايت تصبح 299 بايت، 986 كيلوبايت تصبح 62 كيلوبايت. هذه أرقام المؤلف نفسه: اعتبرها الحد الأقصى وقس على جلستك الخاصة باستخدام /context قبل وبعد.

تكلفة جلسة طويلة، مع وبدون ترشيح#

إليك الحساب على جلسة مفترضة واحدة. إنها جلسة برمجة من 40 خطوة على سياق أساسي متوسطه 20,000 رمز، و500 رمز إخراج لكل خطوة، وثلاث جولات اختبار، عند الخطوات 10 و20 و30. كل سجل خام هو 30,000 رمز؛ النسخة المفلترة هي 500.

  • سجل من الخطوة 10 يُعاد إرساله في الطلبات الثلاثين التي تليه: 30 × 30,000 = 900,000 رمز. الخطوة 20: 20 × 30,000 = 600,000. الخطوة 30: 10 × 30,000 = 300,000. مدخلات إضافية: 900,000 + 600,000 + 300,000 = 1,800,000.
  • مفلتر: (30 + 20 + 10) × 500 = 30,000 مدخلات إضافية.
  • المدخلات الأساسية: 40 × 20,000 = 800,000. الإخراج: 40 × 500 = 20,000.
  • إذن الجلسة هي 800,000 + 1,800,000 = 2,600,000 رمز مدخلات بدون ترشيح و800,000 + 30,000 = 830,000 مع الترشيح، مع 20,000 رمز إخراج في كلتا الحالتين.

يحسب الحساب كل رمز مدخلات بالسعر الكامل. التخزين المؤقت يخفض الرقم الحقيقي، لكنه يخفض كلا الحالتين بنفس المنطق. الأسعار الحية لـ MiniMax-M2.7 (MiniMaxAI/MiniMax-M2.7، سياق 180K، حتى 8,192 رمز إخراج)، وهو النموذج الذي يناسب حلقات الوكلاء كثيفة المدخلات مثل هذه، موجودة في الرسم البياني أدناه.

تكلفة الجلسة على MiniMax-M2.7، 40 خطوة
  • بدون ترشيح$0.133
  • مع الخطاف$0.0445

الافتراضات: 40 خطوة، سياق أساسي 20,000 رمز، 500 رمز إخراج لكل خطوة، ثلاث جولات اختبار من 30,000 رمز (مفلترة: 500).

على MiniMax-M2.7 تكلف الجلسة $0.133 بدون ترشيح و$0.0445 مع الترشيح، وإجمالًا، مع حساب المدخلات والمخرجات معًا، فهي أرخص من سعر OpenRouter المرجعي. ما يقرب من ثلثي المدخلات في حالة عدم الترشيح هي سجلات قرأها الوكيل مرة واحدة.

النقطة ليست في الدولارات الدقيقة. بل في أن الفلتر يزيل حوالي 1,770,000 من 2,600,000 رمز مدخلات (2,600,000 − 830,000 = 1,770,000) على أي نموذج، والنموذج الأرخص يخفض سعر كل رمز متبقٍ.

شغّل Claude Code على نموذج CheapTokens#

يتحدث Claude Code بروتوكول Anthropic Messages، وCheapTokens يدعمه. عنوان URL الأساسي لـ Claude Code لا يحتوي على /v1. الإعداد الكامل في كيفية توصيل Claude Code بـ CheapTokens. النسخة المختصرة، مع مفتاح بديل:

bash
export ANTHROPIC_BASE_URL=https://api.cheaptokens.dev
export ANTHROPIC_AUTH_TOKEN=YOUR_CHEAPTOKENS_KEY
export ANTHROPIC_MODEL=MiniMaxAI/MiniMax-M2.7
claude

استخدم المعرّف الكامل من الوثائق؛ الأسماء المختصرة من جداول الأسعار لا يقبلها API. الأسعار لكل نموذج على صفحة الأسعار. للعادات الأخرى التي تخفض فاتورة Claude Code (/clear، /compact، /mcp، الوكلاء الفرعيون)، راجع كيفية جعل Claude Code أرخص. لمعرفة كيف تُحسب المدخلات والمخرجات في طلب حقيقي، اقرأ كم عدد الرموز التي يستهلكها طلب API.

قائمة تحقق سريعة#

  1. شغّل /context في جلسة طويلة وانظر ما الذي يستهلك المساحة.
  2. أضف خطاف Bash لأوامر الاختبار؛ أكد إعادة الكتابة في /hooks أو سجل التصحيح.
  3. إذا كانت أدوات MCP تعيد لقطات كبيرة، جرب وضع السياق وقارن /context قبل وبعد.
  4. /clear بين المهام غير المرتبطة، حتى تتوقف السجلات القديمة عن المرافقة.