
شنو هو DSH-Android
DSH-Android هو مشروع مجتمعي كيخلي DeepSeek Harness يخدم مباشرة فالأجهزة اللي خدامة بأندرويد. من بعد ما تثبّت APK، تقدر توصف المهام باللغة الطبيعية، وتخلي agent يرتّب الملفات، ويتعامل مع التطبيقات، ويبدّل إعدادات النظام، ولا ينشئ مهام أوتوماتيكية كتخدم حسب الوقت وأحداث الجهاز.
المشروع ما كيحتاجش Root وما كيعتمدش على Termux. كيضمّن Node 24 ومحرك dsh الأصلي بلا fork داخل التطبيق، وكيتعامل مع نظام أندرويد عبر قدرات الجهاز المكتوبة بـ Kotlin. النسخة الحالية كتطلب Android 10 ولا أحدث وجهاز بمعمارية arm64-v8a.
DSH-Android مشروع مجتمعي، وما عندوش علاقة رسمية بـ DeepSeek وما حاصلش على تزكيته.

الوظائف الرئيسية
معالجة الملفات والوثائق
تقدر تطلب من DSH-Android يقلب على الملفات، ويرتّبها، وينقلها، ويبدّل أساميها، وكيمكن ليه حتى يضغط الملفات ويفك الضغط عليها. وكيقدر يقرا النصوص من ملفات PDF وWord وExcel وPPT.
- يقلب على الملفات اللي كتاخذ مساحة كبيرة.
- يرتّب مجلد التنزيلات حسب النوع ولا التاريخ.
- ينقل ولا يبدّل أسامي الملفات بشكل جماعي.
- يقرا النصوص من وثائق المكتب الشائعة.
التعامل مع الشاشة والتطبيقات
من بعد تفعيل خدمة الولوج، كيقدر DSH-Android يقرا الشاشة، وينقر، ويدير السحب، ويدخل النصوص، ويفتح التطبيقات ولا يمشي لصفحة محددة. هاد الشي مناسب للمهام متعددة المراحل اللي كتحتاج التعامل مع واجهة رسومية.

إعدادات النظام والإشعارات
المشروع كيدعم التحكم فالسطوع، والصوت، ووضع عدم الإزعاج، والمنبّه، والـ Wi-Fi، والبلوتوث، والموقع، وكيمكن ليه حتى يقرا الإشعارات ويرد عليها ويتحكم فالتشغيل الإعلامي. بعض قدرات النظام كتخدم مباشرة، وقدرات أخرى كتحتاج ترخيص إضافي ولا الاستعانة بـ Shizuku الاختياري.
التشغيل التلقائي حسب الأحداث
بالإضافة لتنفيذ الأوامر فوراً، تقدر تنشئ مهام مبرمجة بوقت محدد، ولا تخليها تخدم ملي يتربط Wi-Fi، ولا البلوتوث، ولا يبدا الشحن، ولا توصل لمكان معيّن، ولا توصلك شي إشعارات.
قدرات dsh كاملة
التطبيق كيشغّل dsh الأصلي، وماشي fork منفصل كيتصان بوحدو، وبهذا تقدر تبقى تستعمل المهارات، وMCP، وsub agent، والبحث فالويب وغيرها من القدرات. مسار المهمة كيعرض العمليات اللي نفذها agent حسب كل دورة، باش يسهل عليك تراجع المراحل.

التحضيرات قبل التثبيت
قبل ما تبدا، تأكد باللي الجهاز كيتوفر فيه هاد الشروط:
- Android 10 ولا إصدار أحدث.
- معمارية المعالج ABI هي arm64-v8a.
- حجم حزمة التثبيت تقريباً 110 MB، ومن الأحسن تخلي على الأقل 500 MB ديال المساحة الخاوية.
- الجهاز يقدر يوصل لـ API ديال النموذج المكوّن.
- عندك حساب DeepSeek، ولا مفتاح DeepSeek API، ولا بيانات اعتماد ديال خدمة نماذج خارجية مدعومة.
التثبيت والإعداد الأولي
حمّل آخر APK من صفحة Releases ديال المشروع وثبّتو فالجهاز ديال أندرويد.
حلّ التطبيق، وسجّل الدخول بحساب DeepSeek، ولا دخل مفتاح API اللي خديتيه من منصة DeepSeek.
إلى بغيتي تستعمل نموذج آخر، دخل لـالإعدادات → خدمات النماذج، زِد مزوّد الخدمة المناسب ودخل مفتاح API، ومن بعد حمّل لائحة النماذج.
رجع للصفحة الرئيسية ودخل مهمة بسيطة. أول مرة تستعمل فيها شي قدرة من قدرات الجهاز، التطبيق غادي يوجّهك باش تمنح الترخيص المناسب.
التراخيص كيتطلبو غير وقت الحاجة، وما كاينش داعي تفتحهم كاملين من الأول. تقدر تشوفهم وتدبّرهم كاملين منالإعدادات → أذونات الهاتف.

تنفيذ المهمة الأولى
المثال الأول: البحث على الملفات الكبيرة
كتب فالصفحة الرئيسية:
عرض أكبر 5 ملفات فمجلد التنزيلاتagent غادي يستعمل قدرة الملفات حسب المهمة ويرجع النتيجة. إلا بغيتي تدير معالجة إضافية، تقدر تكمل فالحديث نفسه:
رتّب الملفات اللي كتفوت 500 MB فمجلد سميتو “ملفات كبيرة”، ولكن ما تمسح حتى ملففالمهام اللي فيها نقل، ولا تعديل، ولا عمليات حساسة أخرى، راجع مزيان المراحل والتنبيهات ديال الموافقة اللي كيعرضها التطبيق.
المثال الثاني: تعديل حالة الهاتف
تقدر توصف الهدف مباشرة، مثلاً:
نقص صوت الوسائط وفعّل وضع عدم الإزعاجواش العملية تقدر تكمل مباشرة كيعتمد على إصدار أندرويد، وROM ديال الجهاز، والتراخيص اللي تعطات. إلا كانت شي صلاحية مطلوبة، التطبيق غادي يعطيك إرشادات التفعيل.
المثال الثالث: التعامل مع التطبيقات
من بعد تفعيل خدمة الولوج، تقدر تجرّب:
حل إعدادات النظام ودخل لصفحة البلوتوثعمليات الشاشة كتعتمد على الحالة الحالية للواجهة. من بعد ما تكمل المهمة، تقدر تدخل لصفحة المسار وترجع تشوف أفعال agent ونتائجها دورة بدورة.
إعداد طرق الاستدعاء السريع
DSH-Android كيدعم الاستدعاء عبر الكرة العائمة، ومساعد النظام، والبلاطة السريعة، ومدخل المشاركة ديال النظام. من بعد ما تفعّل المدخل المناسب حسب طريقة استعمالك، ما غاديش تحتاج ترجع كل مرة للصفحة الرئيسية ديال التطبيق باش ترسل مهمة.

فبعض ROMات الصينية، الكرة العائمة والأتمتة فالخلفية كيحتاجو حتى هما تسمح يدوياً بـإظهار الواجهة من الخلفية والتشغيل التلقائي. تقدر تشوف صفحة فحص التطبيق وتعدّل إعدادات النظام حسب الإرشادات.
تهيئة Shizuku لفتح قدرات نظام إضافية
Shizuku ماشي ضروري للاستعمال الأساسي، ولكن يقدر يوفر صلاحيات shell ويفتح مفاتيح نظام إضافية. المشروع مدمج فيه حزمة التثبيت الرسمية، وتقدر تهيّئو بهاد الخطوات:
دخل لـالإعدادات → أذونات الهاتف.
استعمل وظيفة التثبيت بنقرة وحدة لتثبيت Shizuku.
تبع إرشادات Shizuku باش تكمل التشغيل ومنح الصلاحيات.
إلى كان الجهاز خدام بـ Android 11 ولا أحدث، وإصدار Shizuku ما ناقصش على 13.6، من الأحسن تفعّلالتشغيل عند بدء الجهاز (التصحيح اللاسلكي).
من بعد إعادة تشغيل الجهاز، Shizuku غالباً كيحتاج يعاود يبدا. تفعيل التشغيل عند بدء الجهاز عبر التصحيح اللاسلكي كيقلل العمليات المتكررة، ولكن السلوك الفعلي كيبقى تابع لإصدار النظام وقيود الشركة المصنّعة.
إنشاء مهام أوتوماتيكية
المهام الأوتوماتيكية تقدر تخدم فساعة محددة، ولا تتفعّل بسبب أحداث الجهاز. الأحداث المدعومة كتشمل الاتصال بـ Wi-Fi، والاتصال بالبلوتوث، وبداية الشحن، والوصول لمكان معيّن، والتوصل بإشعار وغيرها.
ملي كتخلق مهمة، من الأحسن توضّح مزيانشرط التشغيل، والإجراء المنفذ، والقيود الضرورية. مثلاً:
كل ليلة مع 11، فعّل وضع عدم الإزعاج ونقص صوت الوسائط لمستوى منخفضمن بعد الاتصال بـ Wi-Fi ديال الدار، نفّذ المهمة المحددةالمثال الثاني ما زال خاصك تهيّأ فيه داخل التطبيق شروط الشبكة الفعلية والإجراءات المحددة. القواعد اللي فيها الموقع، ولا الإشعارات، ولا الخدمة فالخلفية كتحتاج منح الصلاحيات المناسبة. وبالنسبة للأتمتة اللي تقدر تعدّل البيانات ولا تنقلها، من الأحسن تجربها أولاً بعمليات ما فيهاش إتلاف.
استعمال خدمات نماذج خارجية
بالإضافة لـ DeepSeek، المشروع كيسمح بإضافة OpenAI وClaude وGemini وGrok وOpenRouter وKimi و智谱 GLM و通义千问 و火山方舟 وMiniMax و硅基流动 و阶跃星辰، ولا أي واجهة متوافقة.
حلالإعدادات → خدمات النماذج.
اختار مزوّد الخدمة ولا هيّأ واجهة متوافقة.
دخل مفتاح API وحمّل لائحة النماذج.
بدّل للنموذج اللي بغيتي تستعمل من محدد النماذج.
النماذج الخارجية حالياً كتدعم غير واجهات OpenAI المتوافقة مع Chat Completions اللي كتستعمل HTTPS. السياق كامل كيتحسب على أساس 128K، وما كاينش اختيار لمستوى الاستدلال. فعالية استدعاء الأدوات كتتعلق بالنموذج المختار. إلا بغيتي تستعمل البحث المتصل بالإنترنت اللي كتوفرو DeepSeek، خاصك تهيّأ مفتاح DeepSeek API بشكل منفصل، حتى إلا كان النموذج الرئيسي من خدمة خارجية.

نصائح للاستعمال المتقدم
راجع المهام المعقدة عبر المسار
فالمهام متعددة المراحل، ما تكتفيش غير بالجواب النهائي. من بعد ما تكمل المهمة، حلّ المسار وراجع شنو هي القدرات اللي استعملها agent فكل دورة وشنو هي الإجراءات اللي نفذها. بهاد الطريقة غادي يكون أسهل تلقى نقص فالصلاحيات، ولا تغيّر فالواجهة، ولا انحراف فحكم النموذج.
كتب المهام بوضوح أكثر
من الأحسن التعليمات باللغة الطبيعية تتضمن الهدف، والنطاق، وحدود السلامة. مثلاً، عوض “رتّب مجلد التنزيلات”، هاد الصياغة كتكون أكثر تحكماً:
نقل ملفات PDF من مجلد التنزيلات إلى Documents/PDF، وما تغطيش الملفات إلا كان الاسم مكرر، وخلي باقي الملفات كيف ما هيإلى كانت المهمة فيها حذف، ولا تغطية، ولا إرسال رسائل، ولا الرد على إشعارات، من الأحسن تطلب بوضوح عرض العناصر المرشحة أولاً ولا انتظار التأكيد.
ميّز بين عمليات الواجهة وقدرات النظام
من بعد قفل الشاشة، المهام اللي كتستعمل APIs ديال الملفات، وإعدادات النظام، والإشعارات تقدر تبقى خدامة؛ ولكن ملي كيكون قفل آمن للشاشة مفعّل، أندرويد ما كيسمحش للتطبيق يتعامل مع واجهة تطبيقات أخرى. هاد النوع ديال المهام غادي يوقف ويطلب منك تحل القفل باش يكمل.
خلي وقت للتشغيل البارد
التشغيل البارد ديال المحرك كياخذ حالياً تقريباً 5 ثواني. ملي كتفتح التطبيق لأول مرة ولا ما كيكونش المحرك خدام، ممكن استجابة المهمة تكون أبطأ شوية.
دبّر المحادثات والصلاحيات
حط المهام ذات الأهداف المختلفة فمحادثات مختلفة، فهذا كيساعد يبقى السياق واضح. راجع بانتظام أذونات الهاتف، وخدمة الولوج، وصلاحية الوصول للإشعارات، وإعدادات الخدمة فالخلفية، وقدر تسد القدرات اللي ما بقيتيش محتاجها.
البناء من المصدر
إلى بغيتي تساهم فالتطوير، خاصك تجهّز JDK 21 وAndroid SDK، بحيث يكون compileSdk هو 37.2، وNDK r29. ملي كتبيّن المشروع على مضيف Linux بمعمارية arm64، خاصك حتى تمرّر مسار aapt2 ديال arm64.
أولاً حمّل وتحقق من المكتبات الأصلية المسبقة البناء بحال libnode:
native/prebuilt.sh fetchالنتائج غادي تكتب فـ:
toolchains/out/jniLibs/arm64-v8a/من بعد بنِ حزمة المحرك اللي فيها dsh والإضافات والترقيعات:
OUT_DIR=<engineOut> js/build-engine.shوأخيراً بنِ Debug APK:
./gradlew :app:assembleDebug -Pdsh.engineOut=<engineOut>إلى شغّلتي Gradle على مضيف Linux بمعمارية arm64، خاصك تزيد حسب البيئة:
-Pandroid.aapt2FromMavenOverride=<مسار aapt2 ديال arm64>غالباً ما كاينش داعي تكمبايل Node بوحدك. غير ملي كتحدّث Node ولا كتعدّل الترقيعات الأصلية، خاصك تشغّل أولاً:
native/build.shومن بعد نشر النتائج المسبقة البناء بالأمر التالي:
native/prebuilt.sh publishتشغيل اختبارات المضيف من البداية للنهاية
المشروع كيوفر اختبارات من البداية للنهاية على المضيف، وكتستعمل فعلياً DeepSeek API:
node js/test/host-e2e.mjsخزّن مفتاح API فملف، ومن بعد حدّد المسار عبر DSH_E2E_KEY_FILE. المسار الافتراضي هو:
~/.config/dsh/deepseek_api_keyنظرة عامة على المعمارية
العملية الرئيسية ديال التطبيق خدامة بـ Kotlin وCompose، وكتكلف بالمحادثات، والمسارات، والمصادقات، والإعدادات، وقدرات الجهاز، ومشغّلات الأتمتة. Node 24 كيخدم كمكتبة أصلية مشتركة ديال أندرويد داخل خدمة أمامية مستقلة :engine، وكيشغّل dsh عبر JNI.
الواجهة وdsh كيتواصلو عبر JSON-RPC ديال SDK؛ وقدرات الجهاز مطبّقة بـ Kotlin وكتتعرض لـ dsh عبر قناة socket خاصة. Shizuku الاختياري كيوفّر صلاحيات shell لبعض القدرات، بينما طلبات النموذج كتمشي عبر HTTPS لواجهة API المناسبة.
هاد التصميم ماكيستعملش proot ولا Termux، وكيجنّب حتى الاعتماد على عملية Node مستقلة إضافية. dsh براسو ماكيديرش fork، وتكييف أندرويد متركّز فالإضافات وشوية ديال الترقيعات.
الخلاصة
DSH-Android كيغلف محرك dsh agent كامل داخل APK ديال أندرويد، وكيخلي المهام باللغة الطبيعية تتصل بالملفات، وواجهات التطبيقات، وإعدادات النظام، والإشعارات، ومشغّلات الأتمتة. فالاستخدام الأول، من الأحسن تبدا بمهام قليلة المخاطر بحال البحث فالملفات للقراءة فقط، وتعطي الصلاحيات حسب الحاجة، ومن بعد تهيّأ تدريجياً خدمة تسهيلات الاستخدام، وShizuku، ومداخل الاختصار، وقواعد الأتمتة.
المشروع خاضع لـ Apache License 2.0، ولكن مكوّنات Node.js وdsh وShizuku وripgrep المدمجة كتتبع كل وحدة منها الرخصة ديالها.
