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

الأدوات والتكاملاتدليل

توصيل Crush بـ CheapTokens: مزوّد crushrc، النموذج، المفتاح

أضف CheapTokens إلى Crush بأمرين في crushrc: مزوّد completions ونموذج بحدود حقيقية؛ المفتاح يأتي من متغير بيئة.

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

ملف إعداد Crush مع سطري مزوّد ونموذج CheapTokens
في هذه الصفحة
  1. تثبيت Crush
  2. وضع CheapTokens في crushrc
  3. افتح Crush وشغّل مهمة أولى
  4. كم تكلف جلسة برمجة
  5. إذا لم يعمل

لتوصيل Crush بـ CheapTokens، ضع أمرين في crushrc: provider add مع عنوان URL الأساسي https://api.cheaptokens.dev/v1 و--type completions، وmodel add مع معرّف النموذج الكامل. ثم افتح Crush، واضغط Ctrl+l، واختر النموذج وأعطه مهمة. يبقى المفتاح في متغير بيئة، لا في الملف.

إذا اتبعت دليلاً أقدم، فمن المحتمل أنه يعدّل crush.json. لا يزال Crush يقرأ ذلك الملف، لكن README الخاص به يصفه بأنه مهجور: الإعداد الحالي هو crushrc، ومنذ v0.99.0 (29 أكتوبر 2026) يصف المزوّد --type صيغة API، لا المورّد. المصادر هي README الخاص بـ Crush وملاحظات الإصدار، تم التحقق منها في 10 نوفمبر 2026؛ وأحدث إصدار مستقر في ذلك التاريخ هو v0.100.0.

تثبيت Crush#

اختر أي مدير حزم لديك بالفعل. Crush ملف تنفيذي واحد، لذا لا يهم أي طريق تسلك.

تثبيت Crush

Homebrew

bash
brew install charmbracelet/tap/crush

npm

bash
npm install -g @charmland/crush

winget

bash
winget install charmbracelet.crush

Go

bash
go install github.com/charmbracelet/crush@latest

يسرد README أيضاً مستودعات apt وyum وScoop وNix وArch وFreeBSD. شغّل crush مرة واحدة للتأكد من أنه يبدأ، ثم اخرج.

وضع CheapTokens في crushrc#

يصف README ملف crushrc بأنه "مجرد Bash مع بعض الأوامر المدمجة الخاصة بـ Crush". هذه هي الحيلة كلها: تكتب shell، وprovider add وmodel add أوامر يفهمها Crush. يبحث Crush عن الملف بهذا الترتيب: ./.crushrc، ثم ./crushrc، ثم ~/.config/crush/crushrc.

إذن أنت تختار مكان وجوده. ملف .crushrc المحلي للمشروع ينطبق على مستودع واحد؛ والملف في ~/.config/crush/ ينطبق في كل مكان. للتجربة الأولى، الملف العام أسهل.

أولاً ضع المفتاح في shell الخاص بك. أنشئه في لوحة تحكم CheapTokens وصدّره (القيمة أدناه عنصر نائب):

bash
export CHEAPTOKENS_API_KEY="your-key-here"

ثم افتح ~/.config/crush/crushrc واكتب:

bash
provider add cheaptokens --type completions \
  --base-url "https://api.cheaptokens.dev/v1" \
  --api-key "$CHEAPTOKENS_API_KEY"

model add cheaptokens/deepseek-ai/DeepSeek-V4-Flash-0731 \
  --name "DeepSeek-V4-Flash" \
  --context-window 380000 \
  --default-max-tokens 32768

بعض التفاصيل تستحق نظرة ثانية:

  • --type completions هو اسم Crush للمزوّدين المتوافقين مع OpenAI الذين ليسوا OpenAI نفسها. responses مخصص لوكالة OpenAI، وmessages للمتوافقين مع Anthropic. لا يزال openai-compat القديم يعمل ويتم ترحيله.
  • ينتهي عنوان URL الأساسي بـ /v1. هذا هو عنوان CheapTokens لـ Chat Completions بأسلوب OpenAI؛ القائمة الكاملة لنقاط النهاية في وثائق CheapTokens.
  • يتم توسيع $CHEAPTOKENS_API_KEY بواسطة shell، لذا لا يحتوي الملف على أي سر، ويمكن وضع .crushrc الخاص بالمشروع في git بأمان.
  • معرّف النموذج هو الكامل، deepseek-ai/DeepSeek-V4-Flash-0731. يتم رفض معرّف قصير مثل deepseek-v4-flash بواسطة API. بعد اسم المزوّد تأتي شرطة مائلة ثانية، لأن المعرّف نفسه يحتوي على واحدة.
  • --context-window 380000 هو 380K المقرّب لـ DeepSeek-V4-Flash، و--default-max-tokens 32768 هو حدّه لكل إجابة. هذه هي الحدود الحقيقية للنموذج في CheapTokens: سياق 380K وحتى 32,768 رمزاً لكل إجابة. ضعها في model add بدلاً من ترك قيم المثال من README (64000 و5000).
ملف crushrc مع مزوّد ونموذج CheapTokens
crushrc: سطر مزوّد واحد وسطر نموذج واحد؛ المفتاح يأتي من البيئة

يعرض README model add فقط مع معرّف بسيط (deepseek/deepseek-chat). معرّفك يحتوي على شرطة مائلة إضافية، لذا فإن منتقي النموذج في الخطوة التالية هو الفحص الحقيقي: إذا ظهر النموذج تحت cheaptokens، فقد تمت قراءة السطر كما هو مقصود.

تريد نموذجاً آخر على نفس الرصيد؟ أضف سطر model add آخر بمعرّفه وحدوده الخاصة. GLM-5.3-Flash هو zai-org/GLM-5.3-Flash (سياق 390K، وحتى 8,192 رمزاً لكل إجابة)، وMiniMax-M2.7 هو MiniMaxAI/MiniMax-M2.7 (سياق 180K، وحتى 8,192 رمزاً لكل إجابة). أبقِ --default-max-tokens عند حد الإجابة للنموذج الذي تضيفه أو أقل منه.

افتح Crush وشغّل مهمة أولى#

ابدأ crush في مجلد مشروع. اضغط Ctrl+l لفتح منتقي النموذج واختر DeepSeek-V4-Flash من مجموعة cheaptokens. لا يصف README أمر crushrc للنموذج الافتراضي، لذا فإن المنتقي هو الطريقة.

من crushrc إلى الإجابة الأولى: المزوّد، النموذج، المنتقي، المهمة
المسار من الإعداد إلى الإجابة الأولى

الآن أعطه شيئاً صغيراً وقابلاً للتحقق، مثلاً: Read this repo and tell me which file starts the app, in two lines. إجابة تذكر ملفاً حقيقياً تعني أن السلسلة كلها تعمل: المفتاح، وعنوان URL الأساسي، ومعرّف النموذج.

جرّب بنفسكجرّبه: تضغط Ctrl+l والنموذج ليس في القائمة. ما أول شيء تتحقق منه؟إظهار الإجابة

موقع الملف والمتغير. يبحث Crush عن الإعداد حسب الأولوية: ./.crushrc، ./crushrc، ~/.config/crush/crushrc. تحقق من أن المشروع لا يحتوي على .crushrc أو crushrc آخر بمحتوى مختلف، وأن المزوّد أُضيف في الملف الذي عدّلته. ويجب أن يطبع echo $CHEAPTOKENS_API_KEY المفتاح في نفس shell الذي تبدأ فيه crush.

مطالبات الأذونات موجودة عن قصد. permissions allow <tools> في crushrc يتيح لأدوات محددة بالاسم العمل دون سؤال؛ و--yolo يتخطى كل المطالبات، ويقول README نفسه أن تكون حذراً جداً معه.

كم تكلف جلسة برمجة#

خطوة وكيل في طرفية كثيفة الإدخال: يرسل Crush السجل ومحتويات الملفات ومخرجات الأدوات في كل مرة، ويحصل على إجابة متواضعة. لنفترض أن خطوة متوسطة ترسل 30,000 رمزاً وتستقبل 2,000. على DeepSeek-V4-Flash تكلف تلك الخطوة $0.00065، والسعر نفسه في أي ساعة، دون أوقات ذروة. محسوبة مع الإدخال والإخراج معاً، فهي أرخص من سعر OpenRouter المرجعي.

استبدل بأرقامك الخاصة: جلسة من 40 خطوة كهذه على بعد شريط تمرير واحد.

حاسبة التكلفة

يوم واحد من وكيل برمجة في Crush

رموز الإدخال لكل طلب: 30,000 · رموز الإخراج لكل طلب: 2,000 · الطلبات يوميًا: 40

النموذجيوميًاشهريًا
GLM-5.3-Flash$0.0272$0.816
DeepSeek-V4-Flash$0.026$0.78
MiniMax-M2.7$0.072$2.16

ينمو الإدخال لكل خطوة مع تقدم الجلسة، لذا تحقق من جلسة طويلة مقابل نافذة 380K بدلاً من المتوسط. الأسعار الحالية لكل رمز لكل نموذج على صفحة الأسعار.

إذا لم يعمل#

يكتب Crush سجلاً في مشروعك، ./.crush/logs/crush.log. اقرأه قبل التخمين:

bash
crush logs --tail 500
crush logs --follow
crush --debug

يمكنك أيضاً وضع option debug true في crushrc لإبقاء مخرجات التصحيح مفعّلة. ثم طابق ما تراه مع حالة HTTP التي أعادتها API:

  • 401: أُرسل المفتاح لكن لم يتم التعرف عليه: خطأ مطبعي أو مفتاح مستبدل. أنشئه أو انسخه مرة أخرى.
  • 402: الرصيد أو حد المفتاح مستنفد. الطلب بدون مفتاح على الإطلاق يبدو نفسه، لذا شغّل echo $CHEAPTOKENS_API_KEY في shell الذي تبدأ فيه crush. إذا كان المفتاح موجوداً، فاشحن الرصيد.
  • 429: طلبات كثيرة جداً في وقت قصير. انتظر قيمة Retry-After وحاول مرة أخرى.
  • 400 أو "model not found": انظر إلى معرّف النموذج. يجب أن يكون الكامل من الوثائق، مع بادئة المورّد.

إذا انتقلت من crush.json، لاحظ أن ~/.local/share/crush/crush.json هو حالة Crush، لا إعداد؛ لا تعدّله يدوياً.

للإعداد نفسه في أدوات أخرى، راجع توصيل Aider بـ CheapTokens وتوصيل Kilo Code بـ CheapTokens. صفحة نموذج DeepSeek الرخيص تحتوي على حدود النموذج المستخدم هنا.