Hub documentation
وضع التطوير في Spaces: تطوير سلس في Spaces
وضع التطوير في Spaces: تطوير سلس في Spaces
يُعد وضع المطور في Spaces جزءًا من خطط PRO أو Team & Enterprise.
وضع التطوير في Spaces
وضع التطوير في Spaces هو ميزة تُسهّل تصحيح أخطاء تطبيقك وتجعل تكرار العمل على Spaces أسرع.
في كل مرة تُحدِّث فيها بعض التغييرات في مستودع مساحة (Space) الخاصة بك، يُعاد بناء صورة Docker الأساسية، ثم يُخصَّص جهاز افتراضي جديد لاستضافة الحاوية الجديدة.
يتيح لك وضع التطوير تحديث مساحتك بشكل أسرع بكثير عن طريق تجاوز صورة Docker.
يبدأ صورة Docker الخاصة بوضع التطوير تطبيقك كعملية فرعية، مما يتيح لك إعادة تشغيله دون إيقاف حاوية Space نفسها. كما يبدأ خادم SSH (للمحررات الطرفية المحلية) وخادم VS Code (لـ VS Code Web داخل المنتج) في الخلفية، بحيث يمكنك الاتصال بـ Space.
تتيح القدرة على الاتصال بالمساحة قيد التشغيل عدة حالات استخدام:
- يمكنك إجراء تغييرات على كود التطبيق دون أن يُعاد بناء المساحة في كل مرة
- يمكنك تصحيح أخطاء تطبيق قيد التشغيل ومراقبة الموارد مباشرة
بشكل عام، يجعل تطوير المساحات والتجارب عليها أسرع بكثير من خلال تجاوز مرحلة إعادة بناء صورة Docker.
الواجهة
بمجرد تفعيل وضع المطوّر على مساحتك، يجب أن ترى نافذة منبثقة مشابهة للنافذة أدناه.

لا يُعاد تشغيل التطبيق تلقائياً عند تغيير الكود. لكي تظهر تعديلاتك في المساحة، عليك استخدام زر Refresh الذي سيعيد تشغيل التطبيق.
الاتصال
يكشف وضع التطوير المساحة قيد التشغيل كمضيف SSH قياسي. يتصل VS Code وأي محرر آخر عبر نقطة نهاية SSH نفسها.
SSH
بمجرد تشغيل وضع التطوير، اتصل باستخدام:
ssh <space-subdomain>@ssh.hf.space
يظهر نطاق الفرع في نافذة التحكم في وضع التطوير. يمكنك أيضًا استرجاعه برمجياً:
from huggingface_hub import HfApi
print(HfApi().space_info("namespace/repo").subdomain)يمكن لـ Hugging Face CLI حل النطاق الفرعي وفتح الجلسة نيابةً عنك:
# SSH into the Space's Dev Mode container
hf spaces ssh username/my-space
# Print the SSH command instead of running it
hf spaces ssh username/my-space --dry-run
# Use a specific identity file
hf spaces ssh username/my-space -i ~/.ssh/id_ed25519مرّر --auto لتفعيل وضع التطوير دون طلب تأكيد إذا لم يكن قيد التشغيل بالفعل. راجع مرجع سطر الأوامر hf spaces ssh للاطلاع على القائمة الكاملة للخيارات.
ستحتاج إلى إضافة مفتاح SSH العام لجهازك إلى حسابك الشخصي حتى تتمكن من الاتصال بالمساحة باستخدام SSH. اطّلع على وثائق Git over SSH للحصول على تعليمات أكثر تفصيلاً.
VS Code
يمكنك أيضاً استخدام تثبيت محلي لـ VS Code للاتصال بحاوية المساحة. للقيام بذلك، ثبّت إضافة Remote - SSH واتصل بنفس المضيف <space-subdomain>@ssh.hf.space.
حفظ التغييرات
# Add changes and commit them
git add .
git commit -m "Persist changes from Dev Mode"
# Push the commit to persist them in the repo
git pushستعرض النافذة المنبثقة تحذيراً إذا كانت لديك تغييرات غير مُثبَّتة أو غير مُرسَلة في المساحة:

تفعيل وضع التطوير
يمكنك تفعيل وضع المطوّر على مساحتك من واجهة الويب أو عبر واجهة برمجة التطبيقات.
عبر واجهة برمجة التطبيقات
يمكنك التبديل إلى وضع التطوير برمجياً:
POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}
{
"enabled": true
}عبر واجهة الويب



يمكنك أيضًا إنشاء مساحة مع تفعيل وضع التطوير:

القيود
حاليًا، وضع التطوير غير متاح للمساحات الثابتة. كما أن مساحات Docker لها بعض المتطلبات الإضافية.
مساحات Docker
يُؤيَّد وضع التطوير (Dev Mode) لمساحات Docker. ومع ذلك، يجب أن تتوافق مساحتك مع القواعد التالية لكي يعمل وضع التطوير بشكل صحيح.
- يجب تثبيت الحزم التالية:
bash(مطلوب لإنشاء اتصالات SSH)curlوwgetوprocps(مطلوبة من قبل عملية خادم VS Code)gitوgit-lfsلتتمكن من تنفيذ عمليات الإرسال والدفع للتغييرات من بيئة وضع التطوير الخاصة بك
يجب أن يكون كود التطبيق الخاص بك موجودًا في مجلد
/appحتى يتمكن شيطان وضع التطوير من اكتشاف التغييرات.يجب أن يكون المالك لمجلد
/appهو المستخدم الذي يحمل المعرّف1000للسماح لك بإجراء تغييرات على الكود.يجب أن يحتوي ملف Dockerfile على تعليمات
CMDللبدء. راجع توثيق Docker حول تعليماتCMDلمزيد من التفاصيل.
يعمل وضع التطوير بشكل جيد عندما تكون الصورة الأساسية مبنية على debian (مثل ubuntu).
لم يتم اختبار توزيعات لينكس الأكثر غرابة (مثل alpine) ولا يُكفَل عمل وضع المطوّر عليها.
مثال على ملفات Dockerfile المتوافقة
هذا مثال على ملف Dockerfile متوافق مع وضع التطوير في Spaces.
يقوم بتثبيت الحزم المطلوبة باستخدام apt-get، إلى جانب بعض الحزم الإضافية لتسهيل عمل المطورين (وهي على وجه التحديد: top وvim وnano).
ثم يبدأ تطبيق NodeJS من /app.
FROM node:19-slim
RUN apt-get update && \
apt-get install -y \
bash \
git git-lfs \
wget curl procps \
htop vim nano && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --link ./ /app
RUN npm i
RUN chown 1000 /app
USER 1000
CMD ["node", "index.js"]تتوفر عدة أمثلة على مساحات Docker متوافقة مع وضع التطوير في هذه المنظمة. لا تتردد في نسخها إلى نطاقك!
تطبيق بايثون مثال (خادم HTTP باستخدام FastAPI): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python
تطبيق JavaScript كمثال (خادم HTTP باستخدام Express.js): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript
ملاحظات
يمكنك مشاركة ملاحظاتك حول وضع المطور في Spaces مباشرةً على HF Hub: https://huggingface.co/spaces/dev-mode-explorers/README/discussions
Update on GitHub