إصلاح أخطاء تثبيت وإصدارات DeepSeek Harness
كل إصدارات DeepSeek Harness المنشورة ما تزال تجريبية. ثبّت إصدار dsh محدداً، وامسح ذاكرة npx المؤقتة، وتحقق من npm المرفق بإصدار Node.js لديك.
ما المقصود فعلياً بتثبيت DeepSeek Harness
يتكوّن تثبيت DeepSeek Harness من أمر واحد: npx @deepseek-ai/dsh web. لا يوجد برنامج تثبيت، ولا توجد خدمة تحتاج إلى إعداد. معظم المشكلات التي يواجهها المستخدمون ليست مشكلات تثبيت أصلاً. بل تتعلق بحل الإصدار: ما الإصدار الذي قرر @deepseek-ai/dsh npx تشغيله اليوم، وما إذا كان إصدار Node.js لديك يستطيع تشغيله. عند بدء التشغيل، يرتبط العنوان الذي يطبعه بالأمر بـlocalhost، ولذلك فإن سبب استجابة واجهة الويب فقط على 127.0.0.1:3080 مشكلة منفصلة عن المشكلات المذكورة في هذه الصفحة.
هناك حقيقتان تحددان كل ما يلي. أولاً، كل إصدار من @deepseek-ai/dsh نُشر حتى الآن إلى npm هو إصدار ما قبل الإصدار النهائي. معظمها إصدارات مرشحة للإصدار (-rc.N)، ومنذ 30 August 2026 أصبحت تتوفر أيضاً إصدارات alpha (-alpha.N). يشير الوسم latest إلى إصدار مرشح للإصدار. واعتباراً من 6 October 2026، فإن ذلك الإصدار هو 0.2.0-rc.2، وقد نُشر في 29 September 2026. ثانياً، يذكر README الخاص بالمشروع أن harness ما يزال في معاينة للمطورين، وأنه يتغير بسرعة، وأنه سيشهد تغييرات تكسر التوافق. قد يختفي هذا الأسبوع خيار كان يعمل الأسبوع الماضي. ثبّت إصداراً محدداً قبل أن تبني أي شيء عليه.
لنوضح بعض المصطلحات أولاً. dsh هو أداة سطر أوامر DeepSeek Harness. Node.js هو بيئة تشغيل JavaScript التي تحتاج إليها الأداة. أما npx فهو مشغّل الحزم الذي يأتي مع npm (node package manager)، ويجلب الحزمة عند الطلب بدلاً من تثبيتها بشكل دائم. إذا كان استخدام كلمة harness في هذه الجملة غير مألوف، فإن agent harness هو البرنامج المحيط بالنموذج، ويدير الحلقة والأدوات والأذونات وحالة الجلسة. لذلك يمكن لرقم إصدار لم تختره أن يغيّر طريقة عمل وكيلك.
ما إصدار Node.js الذي يحتاج إليه dsh؟
يعلن الجذر package.json للمستودع عن "engines": {"node": "^22.19.0 || >=24.0.0"}، وفقاً للقراءة في 6 October 2026، عندما كان المستودع في الإصدار 0.2.1-alpha.1. لذلك تحتاج إلى Node 22.19.0 أو أحدث ضمن سلسلة 22، أو إلى Node 24 أو أحدث. لم يعد Node 20 مدعوماً.
تحقق مما لديك قبل أي خطوة أخرى.
node -v
npm -vإليك الجزء الذي يفاجئ بعض المستخدمين. لا تحتوي حزمة @deepseek-ai/dsh المنشورة على حقل engines خاص بها. يعلن جذر monorepo وحده عن هذا الحقل، ولا يُنشر ملف الجذر ذلك إلى npm. لذلك لا يجد npm شيئاً ليتحقق منه، فلا يطبع تحذير EBADENGINE ولا يرفض التثبيت. على Node 20 يبدو التثبيت ناجحاً، ويظهر الفشل لاحقاً عندما يلامس الكود المحمّل صياغة أو API غير متاح في بيئة التشغيل لديك. لا توجد رسالة خطأ واحدة ثابتة يمكنك البحث عنها، لأن السطر الذي يفشل أولاً يعتمد على الوحدة التي تُحمّل أولاً. اقرأ node -v بدلاً من الاكتفاء بقراءة الانهيار.
إذا كان إصدار Node لديك قديماً جداً، فإن nvm (مدير إصدارات node) هو أقل الحلول تدخلاً على VPS، لأنه يثبّت الملفات ضمن مجلد home الخاص بك ويترك Node الخاص بالنظام دون تغيير.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash
exec $SHELL -l
nvm install 24
nvm use 24
node -vينبغي أن يطبع node -v الآن إصداراً يبدأ بـ v24.. إذا استمرت shell في عرض الإصدار القديم، فهذا يعني أن دالة nvm الخاصة بـshell لم تُحمّل. افتح login shell جديدة ثم حاول مرة أخرى. يُعد Node 24 سلسلة LTS النشطة (الدعم طويل الأمد) في 6 October 2026، وكان أحدث إصدار لها في ذلك التاريخ هو 24.21.0. وهو الهدف الأفضل لسبب ثانٍ نوضحه أدناه.
لماذا يشغّل npx إصداراً مختلفاً كل يوم؟
تسمّي npx @deepseek-ai/dsh web الحزمة من دون تحديد إصدار، لذلك يطلب npx من السجل القيمة التي يشير إليها وسم latest. يتغير هذا الوسم كثيراً. صدر 0.1.0-rc.8 في 19 August 2026، بعد يومين من 0.1.0-rc.7، وبحلول 6 October 2026 كان latest قد انتقل إلى 0.2.0-rc.2. في كل مرة يتغير فيها الوسم، يبدأ الأمر المحفوظ في ملاحظاتك بتشغيل شيفرة مختلفة، من دون مطالبة بالتأكيد ومن دون سجل تغييرات أمامك.
يمكنك فحص كل جزء متغير من سطر الأوامر.
npm view @deepseek-ai/dsh dist-tags
npm view @deepseek-ai/dsh versions --json
npm view @deepseek-ai/dsh time --jsonيعرض dist-tags إلى أي شيء يشير latest حالياً. في 6 October 2026 كان كل من latest وnext يشير إلى 0.2.0-rc.2، بينما كان وسم ثالث، هو alpha، يشير إلى 0.2.1-alpha.1. لا يمثّل أي منها قناة مستقرة يمكنك التبديل إليها. وتبدو قائمة versions أكثر أهمية لأنها تحتوي على فجوات. في 6 October 2026 كانت تضم 30 إصداراً، من 0.0.1-rc.1 إلى 0.2.1-alpha.1. يقفز خط 0.0.1 من -rc.2 إلى -rc.5، ويقفز خط 0.1.0 من -rc.3 إلى -rc.6، وتبدأ إصدارات alpha عند 0.1.2-alpha.2 و0.1.3-alpha.2، ولا يوجد 0.1.4 على الإطلاق. الأرقام مفقودة لأن بعض الإصدارات لم تُنشر قط، ولأن إصدارات alpha ومرشحات الإصدار متداخلة في القائمة نفسها. سيفشل تخمين -rc.N التالي في نص النشر، لذلك اقرأ القائمة بدلاً من زيادة الأرقام بالتتابع.
لماذا يواصل npx تشغيل إصدار قديم؟
هذه شكوى معاكسة، وكلتا الشكويين صحيحتان، وذلك يعتمد على إصدار npm الذي تشغّله.
يحتفظ npx بدليل الحزم الخاص به، وهو منفصل عن ذاكرة tarball المؤقتة، داخل مجلد يُسمى _npx في ذاكرة npm المؤقتة. اطبع المسار وافحصه.
npm config get cache
ls "$(npm config get cache)/_npx"لسنوات، أعاد npx استخدام أي محتوى يجده هناك عند استخدام اسم حزمة مجرد، ولم يطلب البيانات من السجل مرة أخرى. غيّر npm 11.2.0 هذا السلوك. عندما تكون المواصفة اسماً مجرداً أو نطاق إصدارات، يجلب npx الآن البيان ويعيد استخدام النسخة المخزنة مؤقتاً فقط عندما يطابق tarball المحلّل ما أعاده السجل للتو.
يحدد إصدار Node الذي تستخدمه السلوك الذي تحصل عليه، لأن Node يضم إصداراً محدداً من npm:
- يضم Node 20.20.2 الإصدار npm 10.8.2.
- يضم Node 22.19.0 الإصدار npm 10.9.3.
- يضم Node 22.23.3، وهو أحدث إصدار 22 اعتباراً من 6 October 2026، الإصدار npm 10.9.9.
- يضم Node 24.19.0 الإصدار npm 11.17.0.
- يضم Node 24.21.0، وهو أحدث إصدار 24 اعتباراً من 6 October 2026، الإصدار npm 11.19.0.
لذلك، فإن سلسلة Node 22 بأكملها، التي يدعمها harness رسمياً، تتضمن إصدار npm أقدم من 11.2.0. في Node 22، سيواصل npx @deepseek-ai/dsh web المجرد تشغيل الإصدار المرشح الذي خزّنه مؤقتاً قبل أسابيع. أما الأمر نفسه في Node 24، فيعيد حل الإصدار في كل تشغيل. الأمر نفسه، لكن بسلوكين مختلفين، ولا يحذرك أيٌّ منهما. اطلب من الأداة معرفة إصدارها:
npx @deepseek-ai/dsh --versionمسح ذاكرة npx المؤقتة
في npm 11.2.0 والإصدارات الأحدث، توجد أوامر فرعية مخصصة.
npm cache npx ls
npm cache npx rm --forceمن دون --force، يرفض npm المسح الكامل ويطبع Please use --force to remove entire npx cache. استخدم npm cache npx ls أولاً عندما تريد إزالة إدخال واحد حسب مفتاحه بدلاً من إزالة جميع الإدخالات.
في npm 10، لا توجد هذه الأوامر الفرعية، لذلك احذف الدليل بنفسك.
rm -rf "$(npm config get cache)/_npx"لا يساعد npm cache clean --force في هذه الحالة. فهو يمسح _cacache، أي مخزن tarball، ويترك _npx دون تغيير. وهذا الفصل هو السبب تحديداً في أن npm أضاف لاحقاً أوامر npm cache npx الفرعية. كما أن مسح _npx لا يسبب فقداناً دائماً: فهو يحتوي على الحزم التي تم تنزيلها، بينما توجد حالة harness في $DSH_HOME/profiles/<name> ولا تتأثر.
كيف أثبّت مرشح إصدار محدداً بدقة؟
اذكر سلسلة الإصدار الكاملة، بما في ذلك الجزء -rc.N.
npx --yes @deepseek-ai/dsh@0.1.0-rc.7 webتستخدم الأمثلة في هذه الصفحة 0.1.0-rc.7. استبدله بالبنية التي اختبرتها فعلياً. في 6 October 2026، كانت العلامة latest تشير إلى 0.2.0-rc.2.
يهم --yes في البرنامج النصي، لأن npx يطبع مطالبة قبل تثبيت حزمة لم يرها من قبل، ثم ينتظر إجابة لن تصل.
الإصدار المحدد بدقة هو أيضاً المسار الأسرع. يحدد npx مجلد ذاكرة التخزين المؤقت استناداً إلى سلسلة المواصفات التي كتبتها. عند استخدام إصدار محدد بدقة، يقارن npx هذه السلسلة بمعرّف الحزمة المثبّت هناك، ثم يشغّلها من دون أي طلب إلى السجل. في npm 11.2.0 والإصدارات الأحدث، يفرض الاسم المجرد جلب البيان في كل عملية تشغيل.
يعمل التثبيت العام بالطريقة نفسها من حيث تثبيت الإصدار، ويوفر لك أمراً مختصراً.
npm install -g @deepseek-ai/dsh@0.1.0-rc.7
dsh --versionلم يتم العثور على إصدار مطابق لـ @deepseek-ai/dsh@^0.1.0
يفشل نطاق caret أو tilde مع هذه الحزمة. يجيب npm install -g @deepseek-ai/dsh@^0.1.0 برمز الخطأ ETARGET والسطر No matching version found for @deepseek-ai/dsh@^0.1.0. السجل يعمل بصورة سليمة. هذه قاعدة semver: لا يطابق نطاق الإصدار إصداراً تجريبياً سابقاً للإصدار الرسمي، إلا إذا سمّى النطاق نفسه إصداراً تجريبياً سابقاً للإصدار الرسمي. كل بنية منشورة لهذه الحزمة هي إصدار تجريبي سابق للإصدار الرسمي، إما -rc.N أو -alpha.N، لذلك لا يطابق ^0.1.0 أي شيء. اكتب الإصدار المحدد بدقة.
لهذه القاعدة أثر مفيد. بما أن النطاقات لا تنتقل تلقائياً إلى مرشح إصدار جديد، فلا توجد حالة تثبيت جزئي تحتاج إلى تحليلها. إما أن تستخدم إصداراً محدداً بدقة، أو تستخدم علامة متحركة.
هل أستخدم npx أم أثبّت dsh تثبيتاً عاماً؟
استخدم npx لإلقاء نظرة أولية، لأنّه لا يترك وراءه شيئاً باستثناء مجلد cache تعرف الآن كيفية مسحه. استخدم تثبيتاً عاماً بإصدار محدد لأي شيء يجب أن يظل يعمل بعد إعادة التشغيل، مثل وكيل برمجي تتركه قيد التشغيل على VPS.
قد يختلف الاثنان على خادم استخدمت فيه كليهما، لذا قارنهما.
which dsh
dsh --version
npx @deepseek-ai/dsh --versionwhich dsh العثور على لا شيء مباشرة بعد نجاح التثبيت العام يعني غالباً أن مجلد bin العام لـnpm مفقود من PATH لديك. شغّل npm prefix -g لطباعة الجذر، وستجد الملفات الثنائية في مجلد bin تحته.
ملاحظة أمنية. يجلب npx التعليمات البرمجية من السجل وينفّذها كلما حلّ تبعية جديدة، وهذا يمثّل على الخادم تعرّضاً حقيقياً وليس احتمالاً نظرياً. تثبيت إصدار محدد جزء من الحل. ويتناول الجزء المتبقي كيفية وصول هجمات سلسلة توريد npm إلى الخادم.
ما الذي تعنيه معاينة المطوّر لقابلية إعادة الإنتاج
نُشرت 0.1.0-rc.6 في 13 August 2026، ونُشرت 0.1.0-rc.7 في 17 August 2026. الفاصل بينهما أربعة أيام. ولم يتباطأ الإيقاع منذ ذلك الحين: نُشرت 23 نسخة إضافية بين 19 August و3 October 2026، من بينها 0.2.0-rc.1 في 28 September و0.2.0-rc.2 في اليوم التالي. وبهذا الإيقاع، قد تصف تعليمات كُتبت قبل شهر سطر أوامر لم يعد موجوداً، وينطبق ذلك على هذه الصفحة أيضاً. سجّل تاريخ كل ادعاء يتعلق بإصدار تكتبه، بما في ذلك ملاحظاتك الخاصة.
تجعل عادتان استخدام المعاينة قابلاً للاستمرار. ثبّت الإصدار الدقيق في كل أمر وكل script، حتى تنتج إعادة بناء الخادم harness نفسه. ثم اقرأ مخرجات المساعدة من البناء المثبّت بدلاً من قراءتها من أي دليل.
npx @deepseek-ai/dsh@0.1.0-rc.7 --help
npx @deepseek-ai/dsh@0.1.0-rc.7 web --dump-configالنصف الثاني من قابلية إعادة الإنتاج هو profile. يقلع dsh --profile <name> باستخدام profile المخزّن في $DSH_HOME/profiles/<name>، وينشئ profile كل من web وheadless من القوالب المضمّنة عند أول استخدام. وهذا الدليل هو أيضاً المكان الذي يقرأ منه harness إعدادات مفتاح API والنموذج ونقطة النهاية، لذلك فإن تثبيت الإصدار وضبط الإعدادات العاملة أمران منفصلان يجب إتقانهما. تُحلّ الحزم المضمّنة من تثبيت dsh قيد التشغيل حالياً، ما يعني أن تغيير الإصدار المثبّت يغيّر تلك الحزم أيضاً. أما plugins الخارجية فتعمل بطريقة مختلفة. فهي موجودة في profile directory، ويمرّر dsh plugin --profile <name> add <package> معاملاته إلى pnpm لتثبيتها. لذلك يجب أن يكون pnpm موجوداً في PATH، ويذكر dsh ذلك بوضوح عندما لا يكون موجوداً. تعمل كل إضافة تضيفها بالصلاحيات نفسها التي يملكها agent، ولذلك من المفيد التحقق مما يمكن لـplugin الوصول إليه قبل تثبيته. ويُثبت package.json الخاص بـprofile هذه plugins، لذلك يشمل التثبيت الكامل ملفين لا ملفاً واحداً.
سيبدو هذا الفصل مألوفاً إذا كنت قد أبقيت أدوات Python في بيئات معزولة على خادم: تُثبّت الأداة والأشياء التي تضيفها إليها في موضعين منفصلين. بعد بدء harness، يكون السؤال التالي عادةً متعلقاً بالشبكة لا بالإصدارات. وهنا يأتي دور الوصول إلى Web UI الخاص بـdsh على VPS بعيد والشرح الأطول في تثبيت DeepSeek Harness على VPS.
أخطاء الوسائط التي ستراها فعلياً
تأتي هذه الأخطاء من محلّل CLI نفسه، ويحدّد كل خطأ المشكلة بدقة. بقيت الصياغة مستقرة إلى حد كبير بين الإصدارات، لكن ليس بالكامل، لذلك جرى التحقق من الرسائل أدناه مقابل 0.2.0-rc.2 في 6 October 2026.
خطأ: --profile <name> مطلوب
شغّلت npx @deepseek-ai/dsh من دون أمر فرعي ومن دون profile. يشغّل الأمر المجرد profile، لذلك يحتاج إلى اسم. يعمل dsh web من دون --profile لأن المحلّل يقرأ الكلمة الأولى المجردة باعتبارها اسم profile، ولذلك يشغّل profile web المشحون مسبقاً لك.
خطأ: --patch يحتاج إلى مسار
مرّرت --patch من دون أي قيمة بعده. يمكن تكرار هذا الخيار، ويتطلب كل ظهور له مسار ملف واحداً.
خطأ: --dump-config و--dump-default-config متعارضان
اختر أحدهما. في 0.2.0-rc.2، وهو الإصدار الذي أشار إليه البناء latest في 6 October 2026، تذكر الرسالة خياراً ثالثاً وتصبح error: --dump-config, --dump-default-config, and --dump-config-schema are mutually exclusive، لأن --dump-config-schema، الذي يطبع JSON Schema لإدخالات profiles وpatches، انضم إلى الخيارين الآخرين. يطبع --dump-default-config طبقات الحزمة المشحونة مسبقاً ولا يقبل أي --patch. يطبع --dump-config الإعدادات المركبة لـ profile. تطبع هذه الخيارات جميعاً النتائج ثم تنتهي من دون تشغيل harness، ما يجعلها الطريقة الآمنة لمعرفة التغييرات التي أحدثها إصدار مرشح جديد خلف الكواليس.
خطأ: plugin يحتاج إلى وسيطات pnpm لتمريرها (مثلاً add <package>)
لم تُعطَ dsh plugin --profile <name> أي وسيطات لتمريرها. يهيّئ الأمر الفرعي profile إذا كان مفقوداً، ثم يمرّر بقية سطر الأوامر إلى pnpm، لذلك يحتاج إلى وسيطات مثل add @scope/dsh-plugin-example.
FAQ
ما إصدار Node.js الذي يحتاج إليه DeepSeek Harness؟
يحدّد المستودع ^22.19.0 || >=24.0.0 في ملف package.json الموجود في جذره، وفقاً للقراءة في 6 October 2026، عندما كان إصدار المستودع 0.2.1-alpha.1. لذلك تحتاج إلى Node 22.19.0 أو إصدار أحدث ضمن السلسلة 22، أو إلى Node 24 أو إصدار أحدث. لن يعمل Node 20. لا تحتوي حزمة npm المنشورة على حقل engines خاص بها، لذلك لا يعرض npm أي تحذير ولا يمنع التثبيت، ويظهر الفشل بدلاً من ذلك أثناء التشغيل. افحص node -v أولاً. ويُعد Node 24 الخيار الأفضل على أي حال، لأنه يضم npm 11، الذي يعالج إعادة استخدام إصدارات npx.
كيف أُجبر npx على استخدام أحدث إصدار من dsh بدلاً من إصدار موجود في ذاكرة التخزين المؤقت؟
في npm 11.2.0 والإصدارات الأحدث، يعيد npx @deepseek-ai/dsh التحقق من السجل لكل اسم حزمة مجرد في كل تشغيل. أما في npm 10، الذي يأتي مضمّناً مع كل إصدارات Node 22، فلا يفعل ذلك. امسح ذاكرة التخزين المؤقت لـ npx باستخدام npm cache npx rm --force في npm 11، أو احذف المجلد باستخدام rm -rf "$(npm config get cache)/_npx" في npm 10. ثم تحقّق باستخدام npx @deepseek-ai/dsh --version. لاحظ أن npm cache clean --force يمسح دليلاً مختلفاً، ولن يحل هذه المشكلة.
لماذا يفشل تثبيت @deepseek-ai/dsh@^0.1.0؟
يعرض npm رمز الخطأ ETARGET مع السطر No matching version found for @deepseek-ai/dsh@^0.1.0. كل إصدار منشور هو إصدار ما قبل الإصدار، مثل 0.2.0-rc.2 أو 0.2.1-alpha.1، ولا يطابق نطاق semver إصدارات ما قبل الإصدار إلا إذا سمّى النطاق نفسه إصداراً من هذا النوع. ثبّت سلسلة الإصدار الدقيقة، بما في ذلك اللاحقة. شغّل npm view @deepseek-ai/dsh versions --json لمعرفة الإصدارات الموجودة، لأن التسلسل يتضمن فجوات لم تُنشر فيها إصدارات.
هل أُثبّت dsh على مستوى النظام أم أشغّله عبر npx؟
يناسب npx التجربة الأولى، إذ لا يبقى شيء سوى دليل ذاكرة التخزين المؤقت. أما التثبيت العام المثبّت على إصدار محدد، مثل npm install -g @deepseek-ai/dsh@0.1.0-rc.7، فيناسب أي استخدام يجب أن يستمر في العمل، لأن الإصدار لا يتغير إلا عندما تغيّره أنت. إذا لم يُعثر على الأمر dsh بعد التثبيت العام، فدليل bin العام الخاص بـ npm غير موجود في PATH، ويطبع npm prefix -g الجذر الذي يوجد تحته.
هل DeepSeek Harness مستقر بما يكفي للبناء عليه؟
ليس بعد، وفقاً لوصفه الخاص. يذكر README أن المشروع في مرحلة معاينة للمطورين، وأنه يتطور بسرعة، وأنه سيشهد تغييرات تكسر التوافق. نُشرت الإصداران المرشحان 0.1.0-rc.6 و0.1.0-rc.7 بفارق أربعة أيام في August 2026، ونُشر الإصداران 0.2.0-rc.1 و0.2.0-rc.2 بفارق يوم واحد في September 2026. ثبّت إصداراً دقيقاً، واقرأ --help من تلك النسخة المثبّتة بدلاً من قراءته من أي دليل. دوّن تاريخ ملاحظاتك، حتى تتمكن من معرفة مدى تقادمها.