Hub documentation
Modo de desenvolvimento do Spaces: desenvolvimento sem atritos em Spaces
Modo de desenvolvimento do Spaces: desenvolvimento sem atritos em Spaces
O Modo de Desenvolvimento do Spaces faz parte dos planos PRO ou Team & Enterprise.
Spaces Modo de Desenvolvimento
O Dev Mode do Spaces é um recurso que facilita o depuramento do seu aplicativo e torna a iteração em Spaces mais rápida.
Sempre que você faz commit de algumas alterações no repositório do seu Space, a imagem Docker subjacente é reconstruída e, em seguida, uma nova máquina virtual é provisionada para hospedar o novo container.
O Modo de Desenvolvimento permite que você atualize seu Space muito mais rapidamente, substituindo a imagem Docker.
A imagem Docker do Dev Mode inicia sua aplicação como um sub-processo, permitindo que você a reinicie sem parar o próprio contêiner do Space. Ela também inicia um servidor SSH (para editores e terminais locais) e um servidor VS Code (para o VS Code Web no produto) em segundo plano, para que você possa se conectar ao Space.
A capacidade de se conectar ao Space em execução libera vários casos de uso:
- Você pode fazer alterações no código do aplicativo sem que o Space precise ser reconstruído a cada vez
- Você pode depurar um aplicativo em execução e monitorar recursos ao vivo
No geral, isso torna o desenvolvimento e a experimentação com Spaces muito mais rápidos, pois elimina a fase de reconstrução da imagem Docker.
Interface
Quando o Modo de Desenvolvimento é ativado no seu Space, você deve ver um modal como o seguinte.

O aplicativo não reinicia automaticamente quando você altera o código. Para que suas alterações apareçam no Space, você precisa usar o botão Refresh, que reiniciará o aplicativo.
Conectando
O Dev Mode expõe o Space em execução como um host SSH padrão. O VS Code e qualquer outro editor se conectam por meio desse mesmo endpoint SSH.
SSH
Quando o Dev Mode estiver em execução, conecte-se com:
ssh <space-subdomain>@ssh.hf.space
O subdomínio é exibido na janela de controles do Modo de Desenvolvimento. Você também pode obtê-lo programaticamente:
from huggingface_hub import HfApi
print(HfApi().space_info("namespace/repo").subdomain)O CLI do Hugging Face pode resolver o subdomínio e abrir a sessão para você:
# 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_ed25519Pass --auto para habilitar o Dev Mode sem solicitar confirmação, caso ele ainda não esteja em execução. Consulte a referência da CLI hf spaces ssh para a lista completa de opções.
Você precisará adicionar a chave pública SSH da sua máquina em sua conta de usuário para poder se conectar ao Space usando SSH. Consulte a documentação de Git over SSH para instruções mais detalhadas.
VS Code
Você também pode usar uma instalação local do VS Code para se conectar ao contêiner do Space. Para isso, instale a extensão Remote - SSH e conecte-se ao mesmo host <space-subdomain>@ssh.hf.space.
Persistindo alterações
# 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 pushO modal exibirá um aviso se você tiver alterações não commitadas ou não pushadas no Space:

Ativando o Modo de Desenvolvimento
Você pode ativar o Dev Mode no seu Space pela interface web ou pela API.
Via a API
Você pode alternar o Modo de Desenvolvimento programaticamente:
POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}
{
"enabled": true
}Pela interface web



Você também pode criar um Space com o modo de desenvolvimento ativado:

Limitações
O Dev Mode não está disponível no momento para Spaces estáticos. Spaces Docker também possuem alguns requisitos adicionais.
Espaços do Docker
O Dev Mode é suportado para Spaces do Docker. No entanto, seu Space precisa estar em conformidade com as seguintes regras para que o Dev Mode funcione corretamente.
- Os seguintes pacotes devem ser instalados:
bash(necessário para estabelecer conexões SSH)curl,wgeteprocps(necessários pelo processo do servidor do VS Code)gitegit-lfspara poder commitar e enviar alterações do seu ambiente de Dev Mode
O código da sua aplicação deve estar localizado na pasta
/apppara que o daemon do Dev Mode consiga detectar alterações.A pasta
/appdeve ser propriedade do usuário com uid1000para permitir que você faça alterações no código.O Dockerfile deve conter uma instrução
CMDpara inicialização. Consulte a documentação do Docker sobre a instruçãoCMDpara mais detalhes.
O Dev Mode funciona bem quando a imagem base é baseada em debian (por exemplo, ubuntu).
Distribuições Linux mais exóticas (por exemplo, alpine) não são testadas e o Dev Mode não é garantido para funcionar nelas.
Exemplo de Dockerfiles compatíveis
Este é um exemplo de um Dockerfile compatível com o Spaces Dev Mode.
Ele instala os pacotes necessários com apt-get, além de alguns extras para conveniência do desenvolvedor (a saber: top, vim e nano).
Em seguida, ele inicia uma aplicação NodeJS a partir de /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"]Existem vários exemplos de Spaces Docker compatíveis com o Dev Mode nesta organização. Sinta-se à vontade para duplicá-los no seu namespace!
Exemplo de aplicativo Python (servidor HTTP FastAPI): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python
Exemplo de aplicativo JavaScript (servidor HTTP Express.js): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript
Feedback
Você pode compartilhar seu feedback sobre o Spaces Dev Mode diretamente no HF Hub: https://huggingface.co/spaces/dev-mode-explorers/README/discussions
Update on GitHub