“Vibe Coding” avec les IDE agentiques

Dit artikel is ook beschikbaar in het Nederlands.

Avez-vous déjà entendu parler du “Vibe Coding” ? Il s’agit de programmer sans avoir à taper le code source. Un outil d’IA dans votre éditeur le fera pour vous ; il vous suffit de lui donner des instructions en langage naturel.

Cela semble trop beau pour être vrai ? La vérité est actuellement quelque part entre les deux. Créer une application spécifique et complexe en partant de zéro est en effet encore un peu ambitieux. Il existe cependant des exemples d’applications web simples qui ont été construites à l’aide de simples descriptions textuelles soumises à un moteur d’IA générative et qui font ce qu’elles doivent faire. Dans cet article, nous explorons les “IDE agentiques”, l’outil d’IA qui permet de faire cela, et nous nous intéressons de plus près à un produit que j’ai récemment testé : WindSurf.

Le buzz du moment : agentiques

À mon avis, les agents sont actuellement le principal moyen de faire progresser l’IA. La construction d’une couche d’outils et de processus de réflexion utiles autour d’un LLM (Large Language Model ou grand modèle de langage) offre encore beaucoup de potentiel, là où les modèles de langage purs commencent à se heurter à certaines limites.

Dans un précédent article de blog sur les agents, mon collègue Bert a déjà brièvement expliqué ce qu’est un IDE agentique. En bref, un agent est un fragment d’IA qui peut effectuer toutes sortes de tâches de manière (semi-)autonome (comme éditer des fichiers texte, par exemple, ce qui est l’activité principale en programmation). Nous connaissons déjà les environnements de développement intégrés : il s’agit des logiciels que nous utilisons pour écrire du code, composés d’un éditeur de texte et de tous les outils supplémentaires possibles pour compiler, exécuter, refactoriser le code, etc. Mon IDE préféré, par exemple, est Intellij IDEA.

Le terme IDE agentique désigne un IDE qui, parmi ses outils supplémentaires intégrés, comprend une fonctionnalité permettant à l’IA d’exécuter toutes sortes de tâches à votre place. En général, l’IDE affiche une fenêtre dans laquelle vous pouvez dialoguer avec l’IA, qui se met au travail dès que vous lui demandez quelque chose. La grande différence avec les assistants IA plus basiques réside dans le fait que l’agent peut utiliser pratiquement toutes les fonctionnalités de l’IDE : éditer toutes sortes de fichiers (pas nécessairement celui sur lequel vous travaillez à ce moment-là), compiler et exécuter le code, voire le déployer sur un serveur, exécuter des commandes dans le terminal, etc. Travailler de cette manière, en conversant simplement dans la fenêtre de dialogue et en laissant l’agent faire le reste, est ce que l’on appelle le “vibe coding”.

Quelques Exemples

Une petite recherche sur Internet nous permet de trouver rapidement plusieurs exemples d’IDE agentiques.

  • https://bolt.new/ fonctionne entièrement sur le web et permet de créer des applications web complètes à partir d’une invite. La plateforme est très populaire, même si plusieurs tentatives sont parfois nécessaires (et donc plutôt une conversation entière qu’une seule invite) pour obtenir le résultat souhaité. Ce site de commerce en ligne (qui n’est pas entièrement fonctionnel) a par exemple été construit après une conversation avec 5 invites de plus en plus complexes: https://starlit-melba-287efe.netlify.app/products .
  • GitHub CoPilot est sans doute l’un des plus connus. Il donne un nouvel élan à l’IDE Visual Studio Code (VS Code) grâce à une IA qui travaille pour vous, un peu comme la programmation en binôme.
  • Codeium WindSurf, un autre IDE agentique basé sur VS Code, sera présenté plus en détail ci-dessous. WindSurf est actuellement en cours d’acquisition par OpenAI.
  • Cursor est également un IDE basé sur VS Code et l’un des IDE agentique les plus connus et les plus populaires.
  • https://cline.bot/ . Également basé sur VS Code, et open source.
  • La liste continue : Lovable, V0, Replit Agent, Devin, Trae, …
  • Le petit nouveau (disponible depuis quelques semaines seulement) : IntelliJ Junie. Il sera certainement intéressant pour nous de le tester plus en détail à l’avenir, car il est basé sur IntelliJ IDEA.

Testé : Codeium WindSurf

Avant de commencer à tester WindSurf (anciennement Codeium), je n’avais pratiquement aucune expérience avec VS Code, l’IDE sur lequel Windsurf est basé, mais cela s’est avéré ne pas poser de problème ! Une fois l’installation terminée, j’ai eu l’idée d’un test très simple : j’ai demandé à l’IDE de m’écrire un petit outil en Java, qui se connecterait à Confluence et lirait les données d’un tableau sur une page spécifique. L’outil devait ensuite transférer ces données dans un nouveau fichier Excel et l’enregistrer sur mon PC..

L’outil a bien démarré, mais il y avait quelques problèmes à surmonter. À titre d’exemple, la connexion à Confluence ne fonctionnait pas avec les identifiants que Windsurf m’avait demandés lors de notre conversation initiale. Après une petite recherche sur Confluence, j’ai compris comment la connexion au site devait fonctionner pour les outils programmés, et j’ai pu en informer WindSurf. L’IDE a rapidement apporté les modifications nécessaires et tout a fonctionné. Après une brève conversation pour obtenir quelques détails supplémentaires sur l’application afin qu’elle réponde à mes besoins, j’ai obtenu, en une heure environ, une version fonctionnelle de l’outil demandé.

L’IDE WindSurf en action

Un deuxième test, dans lequel j’ai demandé une application plus importante en plusieurs composants (serveur API + interface web, etc.), a été interrompu en raison d’un manque de crédits dans la version gratuite. Il s’est avéré qu’un IDE agentique perd ici un peu de sa vue d’ensemble et commet des erreurs en raison de la taille du projet.

Pour le troisième test, armé d’une licence commerciale et soutenu par un architecte compétent, je me suis mis au travail sur le code existant d’un projet Java assez ancien, avec une structure monolithique et des dépendances et méthodes obsolètes. Du moins, c’était une partie de l’équation. L’application est en cours de réécriture chez Smals, et une partie du nouveau code était déjà disponible. L’objectif du test était de permettre à WindSurf d’ajouter une fonctionnalité complète dans le nouveau code source, sur la base de tout le code existant (hérité + nouveau).

La nouvelle architecture de cette application était extrêmement modulaire (une architecture dite “oignon”) et nous avons dû ajuster régulièrement l’IDE, car il ne fournissait pas les ajouts et modifications appropriés dans tous les modules en même temps. À un moment donné, nous avons également dû l’aider manuellement à rechercher une fonctionnalité dans l’ancienne version du projet, afin de pouvoir la reprogrammer dans la nouvelle version. Finalement, après deux heures de “vibe coding”, nous avons ajouté la fonctionnalité, ce qui aurait autrement été une tâche fastidieuse et répétitive (mais impossible à automatiser de manière traditionnelle) pour un programmeur.

Comment peut-on faire encore mieux ?

Comme nous avons pu le voir dans la section précédente, les IDE agentiques offrent de nombreuses possibilités pour raccourcir et automatiser en partie le travail de programmation, mais tout ne se passe pas toujours sans accroc, car l’agent se trompe, ne fait pas exactement ce que nous voulons ou oublie de faire certaines choses. Un peu comme un programmeur inexpérimenté, peut-être ? Le problème se pose d’autant plus que le projet prend de l’ampleur.

Nous nous posons alors naturellement la question suivante : comment pouvons-nous améliorer cela ? Nous ne sommes toutefois pas les seuls ; d’autres sur le web ont déjà réfléchi à cette question et confirment ce que nous soupçonnions déjà : il faut fournir davantage de contexte et de meilleure qualité pour aider l’agent à comprendre ce que nous voulons réellement. Cela peut se faire de différentes manières : vous pouvez ajouter une liste de tâches à l’invite, et/ou vous pouvez fournir un fichier dans le projet, avec une liste d’instructions supplémentaires, et/ou vous pouvez ajouter dans chaque dossier d’un projet existant un fichier contenant des informations utiles sur ce dossier, et vous pouvez le faire de manière hiérarchique pour les sous-dossiers. Il s’agit en fait d’une sorte de signalisation de votre projet, adaptée à l’IA.

Bien sûr, fournir tout ce contexte représente beaucoup de travail. Mais ne vous inquiétez pas : il est probablement possible de laisser l’IA le faire elle-même dans une étape préparatoire. Il existe même déjà des outils commerciaux à cet effet, qui agissent également comme des agents et utilisent également un LLM en arrière-plan.

Documenter le code existant et le rendre plus compréhensible de cette manière est utile pour un IDE agentique, mais aussi pour les développeurs humains ! Ce sera la prochaine piste de recherche sur ce que l’IA peut apporter à la programmation…

Conclusion

Les IDE agentiques sont actuellement l’incarnation ultime de la programmation assistée par l’IA. Ils vont bien au-delà de la simple assistance et peuvent coder à votre place, comme si vous parliez à un développeur (inexpérimenté) qui effectue le travail à votre place. Le “Vibe Coding” pourrait bien prendre en charge une grande partie de notre travail dans un avenir proche !
La seule nuance, que nous devons toujours apporter à l’IA, c’est qu’il ne s’agit pas de magie : elle ne sait pas automatiquement ce qui doit être fait, et vous devrez l’ajuster et lui fournir un contexte. Garbage in – Garbage out.
Il y a donc certainement encore matière à amélioration, mais vu la vitesse à laquelle la technologie évolue, cela pourrait bien arriver rapidement…

_________________________

Cette contribution a été soumise par Koen Vanderkimpen, consultant IT chez Smals Research.  Elle a été rédigée en son nom propre et ne prend pas position au nom de Smals.

Leave a Reply

Your email address will not be published. Required fields are marked *