📍 Article principal de la série : Vibe coding 2026 : du tweet de Karpathy aux outils dominants
Cet article fait partie de la série « vibe coding ». Pour la vue d’ensemble du concept, des plateformes concurrentes et de la méthodologie disciplinée, lire d’abord le guide principal.
Pourquoi Windsurf et Cascade pour vibe-coder
Vous êtes développeur Python à Cotonou, vous avez essayé Cursor mais l’expérience ne vous a pas convaincu, ou bien vous cherchez une alternative pour des raisons de licence, de prix, ou simplement parce que vous voulez voir ce qui se fait ailleurs. Windsurf, créé par Codeium puis renommé fin 2024, propose une approche distincte du vibe coding via son agent maison Cascade : moins focalisé sur les diffs validables un par un, plus orienté sur des « flows » agentiques où l’on décrit un objectif et où Cascade orchestre l’exécution sur plusieurs étapes — recherche dans la codebase, modifications, lancement de tests, ajustements selon les échecs. C’est une expérience qui se prête particulièrement bien au vibe coding sur des projets Python, Rust ou Go.
Ce tutoriel suit l’usage de Windsurf pour produire une fonctionnalité backend complète en Python — un service d’API qui expose un endpoint d’inscription d’utilisateurs avec validation, persistance et envoi d’e-mail de bienvenue — depuis l’ouverture du projet jusqu’au commit. Sept étapes, avec à chaque étape les particularités qui distinguent Windsurf de Cursor.
Prérequis
- Windsurf installé en version récente (téléchargeable depuis windsurf.com)
- Compte Windsurf — un free tier généreux existe ; les plans payants démarrent autour de 15 USD par mois (environ 9 000 FCFA)
- Python 3.11 ou plus récent installé localement
- Un projet Python existant ou la volonté d’en démarrer un (FastAPI dans cet exemple)
- Familiarité de base avec un terminal et la notion de package Python
- Temps estimé : 30 à 45 minutes pour produire la fonctionnalité complète
Étape 1 — Ouvrir un projet et présenter Cascade
Lancez Windsurf et ouvrez votre dossier de projet. L’interface ressemble fortement à VS Code dont Windsurf hérite, avec une barre latérale dédiée à Cascade — l’agent maison. Contrairement à Cursor où Composer s’ouvre via un raccourci, Cascade reste affiché en permanence sur le côté droit, prêt à recevoir des instructions.
Le premier réflexe consiste à donner du contexte à Cascade. Tapez une description du projet : « Ce projet est une API FastAPI pour une plateforme de formation en ligne au Sénégal. Python 3.11, base PostgreSQL via SQLAlchemy 2 et Alembic. Tests Pytest. Linter Ruff. Convention : type hints obligatoires, async pour les fonctions I/O, errors via HTTPException avec codes explicites. » Cascade lit le projet, se constitue une représentation interne et confirme qu’il a compris.
Pour les projets dont la description tient mal en quelques lignes, créez un fichier .windsurfrules à la racine — équivalent fonctionnel des règles Cursor — où vous consignez les conventions persistantes. Ce fichier est lu automatiquement à chaque session et évite de répéter le contexte.
Étape 2 — Lancer un flow Cascade ample
La force distinctive de Cascade tient dans les « flows » — des séquences d’actions enchaînées que l’agent orchestre seul. Pour la fonctionnalité d’inscription, formulez une demande qui couvre toute la chaîne : « Ajoute un endpoint POST /api/users/register qui prend en JSON un nom, un e-mail et un mot de passe. Valide que l’e-mail est bien formé et que le mot de passe fait au moins 10 caractères. Hash le mot de passe avec bcrypt. Crée l’utilisateur en base. Envoie un e-mail de bienvenue via Resend en utilisant la variable d’environnement RESEND_API_KEY. Renvoie 201 avec l’id et l’e-mail si succès, 400 si validation échoue, 409 si l’e-mail existe déjà. Ajoute les tests Pytest qui couvrent les trois cas. Mets à jour la migration Alembic si le schéma utilisateur change. »
Cascade démarre une séquence visible étape par étape sur le côté : exploration des fichiers existants pour comprendre la structure, identification des fichiers à modifier ou créer, génération du code, lancement des tests, ajustement si un test échoue, jusqu’à ce que tout passe. Vous voyez en direct chaque action — c’est cette visibilité qui distingue Cascade d’un agent boîte noire.
Étape 3 — Suivre l’exécution sans interférer
La tentation pendant un flow Cascade est d’interrompre dès qu’une action paraît imparfaite. C’est une mauvaise habitude. Cascade fonctionne en cycles : produire, tester, corriger. Une étape intermédiaire imparfaite est souvent corrigée à l’étape suivante par l’agent lui-même quand il observe un test qui échoue. Laissez le flow aller au bout avant d’intervenir.
Surveillez en revanche trois indicateurs. Premier indicateur, la commande lancée : si Cascade s’apprête à exécuter rm -rf, DROP TABLE, ou un appel de production, interrompez et reformulez. Cascade demande généralement confirmation pour les commandes destructrices, mais la vigilance reste votre rôle. Deuxième indicateur, le périmètre des modifications : si Cascade commence à modifier des fichiers hors du sujet, c’est un signe qu’il a mal interprété la demande. Troisième indicateur, le nombre d’itérations : si Cascade tourne en rond après cinq cycles successifs sans progresser, arrêtez et reformulez plus précisément.
Étape 4 — Valider le résultat avec une revue ciblée
Une fois le flow terminé, Cascade affiche un récapitulatif : fichiers créés, fichiers modifiés, tests ajoutés, tests passants. Le mode vibe coding strict consisterait à accepter d’un bloc. Le mode vibe coding raisonnable, plus proche de la pratique professionnelle, consiste à effectuer une revue ciblée sur les zones sensibles avant validation.
Pour notre fonctionnalité d’inscription, trois fichiers méritent une lecture rapide. Le handler du endpoint : vérifier que le mot de passe n’est jamais loggé, que la validation est bien appliquée avant l’écriture en base, que l’erreur 409 (conflit) est bien renvoyée plutôt qu’une 500 quand l’e-mail existe. La fonction de hashage : vérifier l’usage de bcrypt avec un coût d’au moins 10. La migration Alembic : lire le SQL généré pour s’assurer qu’aucune colonne existante n’est supprimée par erreur. Ces trois lectures prennent dix minutes et coupent l’écrasante majorité des bugs critiques.
Si tout tient, validez le bloc complet via la commande de validation Cascade. Sinon, formulez les corrections au niveau du comportement et laissez Cascade itérer.
Étape 5 — Tester en local avant de commiter
Lancez localement les tests : pytest tests/test_users.py -v. Tous doivent passer. Si l’environnement de test demande PostgreSQL, démarrez votre instance locale ou utilisez une base SQLite éphémère pour les tests selon votre configuration habituelle. Vérifiez aussi que le linter ne signale rien : ruff check . doit retourner sans erreur.
Pour valider l’endpoint en condition réelle, lancez le serveur — uvicorn app.main:app --reload — et envoyez une requête depuis un autre terminal :
curl -X POST http://localhost:8000/api/users/register \
-H "Content-Type: application/json" \
-d '{"nom":"Test User","email":"test@example.com","password":"motDePasse123"}'
Vous devez recevoir une réponse 201 avec l’id et l’e-mail. Vérifiez ensuite l’arrivée de l’e-mail dans la boîte de réception (selon votre service Resend configuré) et la présence de l’utilisateur dans la base. Si tout est conforme, vous êtes prêt pour le commit.
Étape 6 — Commiter avec un message clair
Cascade peut générer un message de commit aligné sur les modifications. Demandez-lui : « Génère le message de commit pour les changements en cours. Format : verbe à l’infinitif, sujet sous 60 caractères, corps optionnel pour le contexte. » Cascade produit quelque chose comme :
Ajouter endpoint inscription utilisateurs avec e-mail bienvenue
- POST /api/users/register avec validation et bcrypt
- Envoi e-mail Resend a l'inscription
- Migration Alembic pour la table users
- Tests Pytest couvrant 201, 400, 409
Validez via git commit en utilisant ce message. Pour les projets en équipe, ouvrez ensuite une pull request en demandant à Cascade de générer aussi la description de la PR à partir du diff.
Étape 7 — Déployer et monitorer
Le déploiement d’une API FastAPI vers un VPS ou un PaaS sort du périmètre vibe coding pur, mais Windsurf peut aider à générer la configuration de déploiement. Demandez à Cascade : « Crée le Dockerfile pour cette API et le docker-compose.yml qui inclut PostgreSQL. La variable RESEND_API_KEY doit être lue depuis l’environnement, pas codée en dur. » Cascade produit les fichiers, vous les lisez, vous les ajustez à votre infrastructure, vous déployez.
Une fois en production, surveillez les premiers jours via les logs de votre PaaS ou les logs Docker en SSH. La règle qui sépare un projet vibe-codé qui tient d’un projet qui s’effondre : du monitoring minimal en production (logs centralisés, alerte si erreurs HTTP 500 augmentent) plus une procédure simple de rollback si quelque chose dérape.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| Cascade boucle sur un test qui échoue sans progresser | Mauvaise interprétation de l’erreur ou environnement de test mal configuré | Arrêter le flow, lire le message d’erreur, reformuler en pointant la cause précise (« le test échoue parce que la base de test n’est pas migrée ») |
| Cascade modifie des fichiers en dehors du sujet | Périmètre du flow trop large | Préciser dans la demande : « Modifie uniquement app/users/ et tests/test_users.py » |
| Le code généré ne passe pas le linter Ruff | Convention non documentée pour Cascade | Ajouter au fichier .windsurfrules les règles Ruff spécifiques au projet |
| L’e-mail Resend part en spam | Domaine d’envoi non configuré côté Resend | Vérifier SPF/DKIM/DMARC sur le domaine, suivre la documentation Resend pour valider le domaine |
| Les variables d’environnement ne sont pas lues | Fichier .env manquant ou pas chargé |
Vérifier la présence du .env et son chargement via python-dotenv ou équivalent |
| Cascade propose des dépendances obsolètes | Modèle qui privilégie les patterns historiques | Préciser les versions cibles : « Utilise SQLAlchemy 2.0, FastAPI 0.115+, Pydantic v2 » |
Adaptation au contexte ouest-africain
Windsurf présente plusieurs avantages spécifiques pour un développeur ouest-africain. Premier avantage, le free tier généreux permet de tester l’outil sans engager de carte bancaire — utile pour valider l’adéquation avant de souscrire. Deuxième avantage, la tarification à partir de 15 USD par mois (environ 9 000 FCFA) place Windsurf parmi les options les plus accessibles du segment professionnel. Troisième avantage, l’installation locale du logiciel limite la dépendance à une connexion permanente — l’éditeur fonctionne offline, seules les requêtes vers les modèles passent sur le réseau.
Côté confidentialité, Windsurf propose comme Cursor un mode où le code n’est pas utilisé pour entraîner les modèles. Vérifiez les paramètres avant la première session pour activer ce mode. Pour du code propriétaire client, c’est une discipline de base. Pour des projets sensibles relevant de la loi sénégalaise sur la protection des données ou des législations équivalentes de la CEDEAO, complétez par une revue des conditions d’utilisation à jour avant intégration des données réelles.
Côté écosystème Python, Windsurf brille particulièrement parce que beaucoup de profils ouest-africains arrivent au développement par Python — data science, IA, automatisation. Cursor et Copilot couvrent aussi Python, mais l’expérience Cascade en flow agentique reste distinctive sur des sujets backend Python où le débogage itératif fait souvent gagner du temps.
Tutoriels associés
- Cursor Composer 2.0 en mode vibe coding : agent autonome multi-fichiers
- Méthodologie vibe coding responsable : revue, tests, sécurité
Pour aller plus loin
- 🔝 Retour au guide principal : Vibe coding 2026 : du tweet de Karpathy aux outils dominants
- Documentation officielle Windsurf : docs.windsurf.com
- Documentation FastAPI : fastapi.tiangolo.com
- Pour l’usage discipliné en production : guide principal AI coding développeur 2026 (Claude Code, Cursor, Copilot)
FAQ
Windsurf et Codeium, c’est la même chose ?
Codeium est l’entreprise (renommée par la suite Windsurf), Windsurf est le produit IDE phare. L’entreprise commercialise aussi des extensions pour VS Code et JetBrains. Cascade est l’agent maison intégré à l’IDE Windsurf.
Windsurf vs Cursor, lequel choisir en 2026 ?
Le test pratique : essayez les deux pendant deux semaines sur vos projets, choisissez celui qui colle à votre style. Cursor brille en édition multi-fichiers visuelle (Composer). Windsurf brille en flows agentiques où Cascade orchestre plusieurs étapes. Beaucoup de développeurs gardent les deux installés et basculent selon la tâche.
Cascade peut-il tourner sur un modèle local Ollama ?
Pas directement en avril 2026 — Cascade utilise les modèles Windsurf hébergés en cloud par défaut. Pour des modèles locaux, l’extension Continue.dev installable dans Windsurf permet de brancher Ollama. C’est moins fluide que l’expérience Cascade native mais possible.
Le free tier suffit-il pour un freelance débutant ?
Pour découvrir et produire un premier projet, oui. Pour un usage régulier en facturant des clients, le passage en plan Pro (autour de 15 USD par mois, environ 9 000 FCFA) est rapidement amorti.
Cascade respecte-t-il les conventions de mon équipe ?
Tant que les conventions sont documentées dans .windsurfrules, oui. Sans documentation, Cascade applique des conventions génériques qui dérivent souvent du style de l’équipe. La règle pratique : investir une demi-journée pour rédiger un fichier rules complet rentabilise des semaines de productivité.
Que faire si Cascade détruit du code en cours d’exécution ?
Windsurf maintient un historique des modifications par session. Vous pouvez revenir à un état antérieur via la commande de revert intégrée. La parade systématique reste de commiter régulièrement — un commit toutes les heures de session vibe coding limite l’ampleur d’une éventuelle perte.