عند توصيل DeepSeek V4-Pro بـ Cursor عبر إعدادات OpenAI الافتراضية، يفشل أول استدعاء أداة غالبًا بخطأ 400. السبب أن V4-Pro يُرجع الحقل reasoning_content، بينما يحذفه Cursor من الطلبات اللاحقة لأنه ليس جزءًا من مخطط OpenAI. عندها ترفض واجهة DeepSeek الطلب لأن سلسلة التفكير مفقودة. الحل العملي هو تشغيل الوكيل المفتوح المصدر yxlao/deepseek-cursor-proxy، والذي يخزّن reasoning_content ويعيد حقنه قبل إرسال الطلب إلى DeepSeek.
الخلاصة
- يفشل Cursor مع DeepSeek V4-Pro افتراضيًا في استدعاءات الأدوات لأن Cursor يحذف
reasoning_content. - يعمل
deepseek-cursor-proxyكطبقة وسيطة بين Cursor وDeepSeek، ويعيد إضافة محتوى التفكير المطلوب. - الإعداد العملي:
- ثبّت الوكيل عبر
uvأوpip. - شغّل
deepseek-cursor-proxy. - استخدم رابط ngrok في إعدادات النموذج المخصص داخل Cursor.
- أضف مفتاح DeepSeek API.
- ثبّت الوكيل عبر
- تبلغ تكلفة V4-Pro داخل Cursor تقريبًا 0.87 دولار لكل مليون رمز إخراج. راجع خصم سعر DeepSeek V4-Pro الدائم بنسبة 75% لسياق التسعير الكامل.
لماذا تحتاج إلى وكيل؟
يعيد V4-Pro في كل استجابة حقلين أساسيين:
{
"content": "الإجابة النهائية",
"reasoning_content": "سلسلة التفكير"
}
في المحادثات العادية، يمكن تجاهل reasoning_content. لكن عند استخدام الأدوات داخل Cursor، يصبح هذا الحقل جزءًا من حالة المحادثة.
تتوقع واجهة DeepSeek أنه عند متابعة محادثة تحتوي على reasoning_content، يجب تمرير هذا الحقل مرة أخرى مع نتيجة tool_calls.
المشكلة أن Cursor يستخدم عميلًا متوافقًا مع OpenAI، وreasoning_content ليس جزءًا من مخطط OpenAI، لذلك يحذفه. النتيجة:
HTTP 400
missing reasoning_content
هذا ليس خطأ مباشرًا في Cursor بقدر ما هو اختلاف في عقد API بين DeepSeek وOpenAI. إلى أن يدعم Cursor الحقل أصليًا، تحتاج إلى وكيل يعيد إضافته.
كيف يعمل deepseek-cursor-proxy
يقوم الوكيل بثلاث مهام رئيسية:
- يستمع محليًا على منفذ افتراضي، عادة
9000. - يخزّن
reasoning_contentمن استجابات DeepSeek في SQLite. - يعيد حقن
reasoning_contentفي الطلب التالي قبل تمريره إلى DeepSeek.
مسار التخزين الافتراضي:
~/.deepseek-cursor-proxy/reasoning_content.sqlite3
يعتمد الوكيل على SHA-256 لتوليد مفتاح من بادئة المحادثة، ما يمنع تداخل المحادثات المتوازية.
كما يفتح الوكيل نفق ngrok لأن إعدادات النموذج المخصص في Cursor تتطلب HTTPS ولا تقبل عادةً:
http://localhost
المتطلبات المسبقة
قبل البدء، جهّز الآتي:
- Cursor 2.0 أو أحدث.
- مفتاح DeepSeek API. يمكنك الحصول عليه من platform.deepseek.com.
- Python 3.11 أو أحدث.
- ngrok مع authtoken.
إذا لم تستخدم uv سابقًا، راجع وثائق تثبيت uv الرسمية.
ولإعداد ngrok، اتبع دليل البدء السريع لـ ngrok.
الخطوة 1: تثبيت الوكيل
الطريقة الأسرع هي uv:
uv tool install deepseek-cursor-proxy
أو عبر pip من المستودع:
git clone https://github.com/yxlao/deepseek-cursor-proxy.git
cd deepseek-cursor-proxy
pip install -e .
تحقق من التثبيت:
deepseek-cursor-proxy --help
إذا ظهر دليل الاستخدام، فالأمر متاح في PATH.
الخطوة 2: تهيئة ngrok
أضف رمز المصادقة الخاص بك:
ngrok config add-authtoken YOUR_NGROK_AUTHTOKEN
في الطبقة المجانية، يعطيك ngrok نطاقًا عشوائيًا عند كل تشغيل. إذا كنت تريد رابطًا ثابتًا، احجز نطاقًا من لوحة ngrok ثم مرّره للوكيل:
deepseek-cursor-proxy --ngrok-url https://your-reserved.ngrok-free.app
الخطوة 3: تشغيل الوكيل
شغّل الأمر الافتراضي:
deepseek-cursor-proxy
سيُنشئ الوكيل ملف الإعدادات:
~/.deepseek-cursor-proxy/config.yaml
ويطبع مخرجات مشابهة:
Starting deepseek-cursor-proxy
Tunnel: https://random-name.ngrok-free.app
Local: http://127.0.0.1:9000
Cache: /Users/you/.deepseek-cursor-proxy/reasoning_content.sqlite3
استخدم رابط Tunnel لاحقًا داخل Cursor.
خيارات مفيدة
deepseek-cursor-proxy --port 9001
لتغيير المنفذ المحلي.
deepseek-cursor-proxy --verbose
لطباعة الطلبات والاستجابات أثناء التصحيح.
deepseek-cursor-proxy --no-ngrok
لتعطيل ngrok عند الاختبار بأداة تقبل localhost.
deepseek-cursor-proxy --no-display-reasoning
لإخفاء كتل التفكير من واجهة Cursor مع استمرار تمريرها تقنيًا.
الخطوة 4: تهيئة Cursor
افتح إعدادات Cursor، ثم انتقل إلى Models وأضف نموذجًا مخصصًا.
استخدم القيم التالية:
| الحقل | القيمة |
|---|---|
| اسم النموذج | deepseek-v4-pro |
| Base URL | https://random-name.ngrok-free.app/v1 |
| API Key | مفتاح DeepSeek API الخاص بك |
مثال:
Model name: deepseek-v4-pro
Base URL: https://random-name.ngrok-free.app/v1
API Key: sk-...
مهم: يجب أن ينتهي الرابط بـ:
/v1
يضغط Cursor عادةً على زر التحقق من النموذج. إذا ظهر خطأ اتصال، تحقق من:
- أن الوكيل يعمل.
- أن رابط ngrok صحيح.
- أن الرابط يحتوي على
/v1. - أن سجلات الوكيل تعرض طلبات واردة.
الخطوة 5: اختبر استدعاء أداة
افتح لوحة الدردشة في Cursor واختر نموذجك المخصص.
استخدم موجهًا يجبر Cursor على قراءة ملف:
Open the README in this repo, list every code block, and tell me which ones are missing language hints.
المسار المتوقع:
- يرسل Cursor الطلب إلى الوكيل.
- يمرره الوكيل إلى DeepSeek.
- يعيد DeepSeek
contentوreasoning_contentوtool_calls. - يخزّن الوكيل
reasoning_content. - يشغّل Cursor الأداة مثل
read_file. - يرسل Cursor نتيجة الأداة بدون
reasoning_content. - يعيد الوكيل حقن
reasoning_content. - يقبل DeepSeek الطلب ويكمل الإجابة.
لتأكيد ذلك، شغّل الوكيل بهذا الشكل:
deepseek-cursor-proxy --verbose
ثم راقب السجلات عند أول استدعاء أداة.
حساب التكلفة
يدفع V4-Pro داخل Cursor أسعار DeepSeek API، وليس تسعير Cursor المجمع. الأسعار المذكورة هنا دائمة اعتبارًا من مايو 2026:
| نوع الرمز | السعر لكل مليون رمز |
|---|---|
| الإدخال، فشل ذاكرة التخزين المؤقت | 0.435 دولار |
| الإدخال، نجاح ذاكرة التخزين المؤقت | 0.003625 دولار |
| الإخراج | 0.87 دولار |
مثال ليوم استخدام مكثف:
- 50 دورة دردشة.
- 8,000 رمز إدخال لكل دورة.
- 1,500 رمز إخراج لكل دورة.
الحساب التقريبي في أسوأ حالة للإدخال:
50 × 8,000 × 0.435 / 1,000,000 = 0.174 دولار
ومع نجاح ذاكرة التخزين المؤقت على أجزاء ثابتة من السياق، تنخفض تكلفة الإدخال أكثر.
تكلفة الإخراج:
50 × 1,500 × 0.87 / 1,000,000 = 0.065 دولار
النتيجة العملية: يوم استخدام مكثف قد يكون في حدود دولار واحد تقريبًا حسب حجم السياق ومعدل نجاح التخزين المؤقت.
للمزيد حول التسعير، راجع خصم سعر DeepSeek V4-Pro الدائم بنسبة 75%.
ولسياق أوسع حول DeepSeek V4، راجع:
كيف يبدو V4-Pro داخل Cursor؟
ستلاحظ ثلاثة اختلافات رئيسية.
1. ظهور رموز التفكير
يعرض الوكيل افتراضيًا تفكير DeepSeek ككتلة Markdown قابلة للطي:
<details>
<summary>Reasoning</summary>
...
</details>
إذا كانت مزعجة أثناء العمل اليومي، عطّلها:
deepseek-cursor-proxy --no-display-reasoning
2. زمن انتظار أعلى قبل أول أداة
لأن V4-Pro نموذج تفكير، قد يستغرق 2 إلى 4 ثوانٍ قبل أول استدعاء أداة. بعد ذلك تكون المتابعات طبيعية.
3. أداء أفضل في إعادة الهيكلة المعقدة
تستفيد مهام مثل:
- إعادة تسمية رموز عبر عدة ملفات.
- تغيير signatures.
- تعديل إعدادات مرتبطة بعدة أجزاء من المشروع.
- تطبيق تغييرات متسلسلة داخل repo كبير.
من سلسلة التفكير التي يستخدمها V4-Pro.
لأنماط DeepSeek السابقة مع Cursor، راجع:
اختبار إعداد DeepSeek باستخدام Apidog
تكامل Cursor يثبت أن المسار يعمل داخل Cursor فقط. إذا كنت تستخدم V4-Pro في أماكن أخرى، مثل:
- وكيل CI.
- خدمة خلفية.
- إضافة IDE مخصصة.
- سير عمل داخلي يستدعي DeepSeek API.
فمن الأفضل بناء اختبارات API قابلة للإعادة.
يمكنك استخدام Apidog لاختبار نفس نقطة النهاية:
https://api.deepseek.com/v1
خطوات عملية:
- أنشئ بيئة في Apidog.
- أضف متغيرًا لمفتاح API.
- استورد مخطط OpenAI Chat Completions.
- وجّه الطلبات إلى DeepSeek.
- خزّن استجابات مرجعية لـ V4-Pro.
- أعد تشغيل الاختبارات عند تعديل الموجهات أو الأدوات.
يمكنك استخدام Apidog من أجل:
- تسجيل استجابات ذهبية ومقارنتها لاحقًا.
- التحقق من شكل
tool_callsعبر JSON Schema. - مقارنة V4-Pro وGPT-5.5 على نفس الدفعة.
- اكتشاف انحرافات العقد قبل أن تصل إلى الإنتاج.
ابدأ من تنزيل Apidog، ثم اتبع نفس سير العمل الموضح في كيفية استخدام واجهة برمجة تطبيقات DeepSeek V4.
استكشاف الأخطاء الشائعة
خطأ 400 بعد أول استدعاء أداة
هذا هو العطل الذي صُمم الوكيل لحله.
تحقق من:
Base URL ends with /v1
Proxy is running
Cursor requests appear in proxy logs
Model name is valid
ngrok يتغير بعد كل تشغيل
في الطبقة المجانية، قد يتغير النطاق عند إعادة التشغيل. الحل:
deepseek-cursor-proxy --ngrok-url https://your-reserved.ngrok-free.app
استخدم نطاقًا محجوزًا من لوحة ngrok.
ظهور التفكير مكررًا
غالبًا لديك مثيلان من الوكيل يستخدمان نفس قاعدة SQLite.
أوقفهما ثم احذف قاعدة التخزين:
rm ~/.deepseek-cursor-proxy/reasoning_content.sqlite3
ثم شغّل مثيلًا واحدًا فقط.
معدل نجاح ذاكرة التخزين المؤقت منخفض
تعتمد ذاكرة التخزين المؤقت في DeepSeek على بادئات متطابقة بالبايت. إذا كان Cursor يضيف طوابع زمنية أو معرفات جلسة في موجه النظام، ستنخفض نسبة النجاح.
الحل العملي:
- قلل المحتوى المتغير في system prompt.
- انقل البيانات المتغيرة إلى user message.
- استخدم وضع
no-system-promptفي Cursor عند الحاجة.
Cursor يقول إن النموذج غير موجود
يجب أن يطابق اسم النموذج معرفًا حقيقيًا في DeepSeek.
أمثلة مذكورة:
deepseek-v4-pro
deepseek-v4-flash
deepseek-v3-2-pro
deepseek-r1-1
الوكيل لا يترجم أسماء النماذج. هو يمررها كما هي.
بدائل إذا لم ترغب في تشغيل الوكيل
استخدام V4-Flash مباشرة
deepseek-v4-flash ليس نموذج تفكير، ولا يُرجع reasoning_content. لذلك يمكن لـ Cursor الاتصال به مباشرة دون وكيل.
تتخلى عن بعض قدرات التفكير، لكن التكامل أبسط.
استخدام إضافات IDE تدعم reasoning أصليًا
أدوات مثل Cline أو Continue أو مساعدين آخرين قد تتعامل مع reasoning_content بشكل مباشر. إذا لم تكن مرتبطًا بـ Cursor، فقد يكون تغيير الأداة أسهل من تشغيل وكيل.
للمزيد، راجع أفضل مساعدي الترميز مفتوحي المصدر في عام 2026: بدائل Cursor المجانية.
تكاملات أخرى مع Cursor:
الأسئلة الشائعة
لماذا لا يدعم Cursor DeepSeek V4-Pro مباشرة؟
لأن Cursor يستخدم مخطط OpenAI Chat Completions، وreasoning_content امتداد خاص بـ DeepSeek. يحتاج Cursor إلى دعم خاص بالمزود حتى يمرر هذا الحقل.
هل يعمل الوكيل مع DeepSeek R1 أو V3.2؟
نعم، طالما أن النموذج يُرجع reasoning_content ويتطلبه في متابعات استدعاء الأدوات.
هل من الآمن ترك الوكيل يعمل؟
نعم، لكن انتبه إلى أن SQLite تحتوي على محتوى التفكير الخام من جلساتك. إذا كنت تعمل على جهاز مشترك، قيّد أذونات الدليل:
chmod 700 ~/.deepseek-cursor-proxy
هل يمكن استخدامه بدون ngrok؟
نعم:
deepseek-cursor-proxy --no-ngrok
لكن واجهة Cursor القياسية غالبًا ترفض http://localhost. لذلك يحتاج معظم المستخدمين إلى ngrok أو بديل مثل Cloudflare Tunnel أو Tailscale Funnel.
هل يعمل مع Cursor Composer؟
نعم. يستخدم Composer نفس مسار توجيه النموذج، لذلك يصلحه الوكيل بالطريقة نفسها عند استدعاء الأدوات.
ما حمل وقت الاستجابة للوكيل؟
الحمل صغير: قفزة محلية، بحث SQLite، ومعالجة JSON. عادةً يكون بضعة مللي ثانية للوكيل نفسه، مع زمن إضافي من ngrok حسب أقرب edge.
كيف يقرر الوكيل ما الذي يخزنه؟
يقوم بتجزئة بادئة المحادثة باستخدام SHA-256، ثم يستخدمها كمفتاح لتخزين reasoning_content في SQLite. عند الطلب التالي، يحسب التجزئة مرة أخرى ويبحث عن تطابق.
الخطوات التالية
قدرة V4-Pro على الترميز قريبة من GPT-5.5 حسب مقارنة DataCamp، مع تكلفة إخراج أقل بكثير. العائق الأساسي داخل Cursor هو عدم تمرير reasoning_content.
للبدء عمليًا:
- ثبّت
deepseek-cursor-proxy. - شغّله مع ngrok.
- أضف نموذج
deepseek-v4-proفي Cursor. - اختبره على مستودع حقيقي باستدعاء أدوات.
- أضف اختبارات API في Apidog ضد
api.deepseek.com.
تم حل ضريبة رموز التفكير. السعر لم يرتفع.

Top comments (0)