Hub documentation

وضع التطوير في Spaces: تطوير سلس في Spaces

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

وضع التطوير في Spaces: تطوير سلس في Spaces

يُعد وضع المطور في Spaces جزءًا من خطط PRO أو Team & Enterprise.

وضع التطوير في Spaces

وضع التطوير في Spaces هو ميزة تُسهّل تصحيح أخطاء تطبيقك وتجعل تكرار العمل على Spaces أسرع.

في كل مرة تُحدِّث فيها بعض التغييرات في مستودع مساحة (Space) الخاصة بك، يُعاد بناء صورة Docker الأساسية، ثم يُخصَّص جهاز افتراضي جديد لاستضافة الحاوية الجديدة.

يتيح لك وضع التطوير تحديث مساحتك بشكل أسرع بكثير عن طريق تجاوز صورة Docker.

يبدأ صورة Docker الخاصة بوضع التطوير تطبيقك كعملية فرعية، مما يتيح لك إعادة تشغيله دون إيقاف حاوية Space نفسها. كما يبدأ خادم SSH (للمحررات الطرفية المحلية) وخادم VS Code (لـ VS Code Web داخل المنتج) في الخلفية، بحيث يمكنك الاتصال بـ Space.

تتيح القدرة على الاتصال بالمساحة قيد التشغيل عدة حالات استخدام:

  • يمكنك إجراء تغييرات على كود التطبيق دون أن يُعاد بناء المساحة في كل مرة
  • يمكنك تصحيح أخطاء تطبيق قيد التشغيل ومراقبة الموارد مباشرة

بشكل عام، يجعل تطوير المساحات والتجارب عليها أسرع بكثير من خلال تجاوز مرحلة إعادة بناء صورة Docker.

الواجهة

بمجرد تفعيل وضع المطوّر على مساحتك، يجب أن ترى نافذة منبثقة مشابهة للنافذة أدناه.

screenshot of the dev mode controls interface.

لا يُعاد تشغيل التطبيق تلقائياً عند تغيير الكود. لكي تظهر تعديلاتك في المساحة، عليك استخدام زر Refresh الذي سيعيد تشغيل التطبيق.

إذا كنت تستخدم Gradio SDK، أو كان تطبيقك مبنيًا على Python، فانتبه إلى أن المتطلبات لا تُثبَّت تلقائيًا. ستحتاج إلى تشغيل pip install يدويًا من VS Code أو SSH.

الاتصال

يكشف وضع التطوير المساحة قيد التشغيل كمضيف 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.

حفظ التغييرات

التغييرات التي تجريها عند تفعيل وضع التطوير لا تُحفظ تلقائيًا في مستودع المساحة. افتراضيًا، ستُتجاهل هذه التغييرات عند تعطيل وضع التطوير أو عند دخول المساحة إلى وضع السكون.
If you wish to persist changes made while Dev Mode is enabled, you need to use `git` from inside the Space container (using VS Code or SSH). For example:
# 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

ستعرض النافذة المنبثقة تحذيراً إذا كانت لديك تغييرات غير مُثبَّتة أو غير مُرسَلة في المساحة:

screenshot of the dev mode controls interface.

تفعيل وضع التطوير

يمكنك تفعيل وضع المطوّر على مساحتك من واجهة الويب أو عبر واجهة برمجة التطبيقات.

عبر واجهة برمجة التطبيقات

يمكنك التبديل إلى وضع التطوير برمجياً:

POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}

{
  "enabled": true
}

عبر واجهة الويب

screenshot of the dev mode toggle from the contextual menu.
screenshot of the dev mode toggle from the Space settings.
screenshot of the dev mode toggle from the Space logs.

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

screenshot of the dev mode toggle from the Space creation page.

القيود

حاليًا، وضع التطوير غير متاح للمساحات الثابتة. كما أن مساحات Docker لها بعض المتطلبات الإضافية.

مساحات Docker

يُؤيَّد وضع التطوير (Dev Mode) لمساحات Docker. ومع ذلك، يجب أن تتوافق مساحتك مع القواعد التالية لكي يعمل وضع التطوير بشكل صحيح.

  1. يجب تثبيت الحزم التالية:
  • bash (مطلوب لإنشاء اتصالات SSH)
  • curl وwget وprocps (مطلوبة من قبل عملية خادم VS Code)
  • git و git-lfs لتتمكن من تنفيذ عمليات الإرسال والدفع للتغييرات من بيئة وضع التطوير الخاصة بك
  1. يجب أن يكون كود التطبيق الخاص بك موجودًا في مجلد /app حتى يتمكن شيطان وضع التطوير من اكتشاف التغييرات.

  2. يجب أن يكون المالك لمجلد /app هو المستخدم الذي يحمل المعرّف 1000 للسماح لك بإجراء تغييرات على الكود.

  3. يجب أن يحتوي ملف 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