Blog
  • Login

  • Connexion
  • Inscription
  • Blog

  • Articles
  • en
  • de

🤖 Développement parallèle d'IA avec Cursor et Git Worktrees

le 15 février 2026

Dans cet article, je souhaite présenter un exemple concret de parallélisation du développement à l'aide de Cursor, Git worktrees et d'un véritable bundle Symfony :

👉 https://github.com/darkwood-com/ia-exception-bundle

L’objectif est simple : améliorer le produit en travaillant simultanément sur deux fonctionnalités indépendantes sans conflit, grâce à des agents d’IA.

Contexte

Je travaille actuellement sur un bundle Symfony appelé :

Pack d'exceptions Darkwood IA Dépôt : https://github.com/darkwood-com/ia-exception-bundle

Son objectif est d'améliorer la gestion des exceptions Symfony grâce à l'IA : lorsqu'une erreur 500 se produit, le module analyse l'exception et génère des diagnostics structurés (causes probables, solutions suggérées, score de confiance, etc.).

Cependant, en travaillant dessus en local, j'ai identifié deux améliorations.

🟥 Problème 1 Améliorer l'icône d'erreur

L'icône actuelle est une icône de « danger » standard de Bootstrap. Cela fonctionne, mais cela ne communique pas visuellement que l'exception est augmentée par l'IA.

L'idée : Remplacez-la par une icône de danger sur le thème de l'IA plus appropriée.

🟦 Problème 2 : Rendu asynchrone de l’analyse IA

Actuellement:

  1. Une exception se produit.
  2. L'appel à l'IA est déclenché.
  3. La réponse HTTP attend l'IA.
  4. La page complète n'est affichée qu'une fois que l'IA a terminé.

Cela introduit une latence.

Nous voulons plutĂ´t :

  • Rendu immĂ©diat des exceptions.
  • L'analyse IA est chargĂ©e de manière asynchrone. La page sera mise Ă  jour dès rĂ©ception de la rĂ©ponse de l'IA.

Pour cela, nous utilisons Symfony UX.

Le Défi

Comment pouvons-nous travailler sur les deux problèmes en parallèle en utilisant Cursor sans créer de conflits de fichiers ?

La réponse provient d'une idée popularisée dans des articles récents sur les agents de codage IA :

Utilisez les répertoires de travail Git pour l'isolation du contexte.

Petit rappel concernant les arbres de travail Git

Un répertoire de travail Git vous permet de créer un nouveau répertoire de travail rattaché au même dépôt.

Ce n'est pas un clone parfait.

Il partage l'historique Git mais réside dans un répertoire physique distinct.

Exemple:

git worktree add ../feature-ai-icon feature/ai-icon
git worktree add ../feature-async-render feature/async-render

Vous avez maintenant :

  • DĂ©pĂ´t principal
  • Arborescence de travail A → FonctionnalitĂ© 1
  • Arborescence de travail B → FonctionnalitĂ© 2

Chacun peut évoluer indépendamment.

Aucun conflit de fichiers. Pollution sans contexte.

Pourquoi c'est important pour les agents IA

Avec Cursor, vous pouvez affecter un agent d'IA Ă  chaque arbre de travail.

L'agent 1 travaille uniquement à l'intérieur :

feature/ai-icon

L'agent 2 travaille uniquement à l'intérieur :

feature/async-render

Chaque agent opère de manière isolée.

C’est ce que nous appelons :

Isolation du contexte

Et c'est essentiel pour paralléliser le développement piloté par l'IA.

Mise en œuvre pratique

Étape 1 Créer deux arbres de travail

J'ai créé manuellement deux arborescences de travail correspondant aux deux problèmes.

Ensuite, pour chaque arbre de travail, je :

  • Ouvert dans le curseur
  • J'ai collĂ© la description du problème GitHub
  • Laisser l'agent IA implĂ©menter la fonctionnalitĂ©

Étape 2 Rendu asynchrone des exceptions

Pour la fonctionnalité asynchrone, l'IA a implémenté :

  • Un chargeur de route dĂ©diĂ©
  • Un IAExceptionController
  • Un système de stockage de contexte
  • Un service d'analyse diffĂ©rĂ©e de l'IA Comportement conditionnel lorsque le mode asynchrone est activĂ©

Le flux de travail est maintenant le suivant :

  1. L'exception est générée instantanément.
  2. Symfony UX charge l'analyse IA de manière asynchrone.
  3. La page se met à jour dynamiquement dès réception de la réponse de l'IA.

Cela améliore considérablement la performance perçue.

Amélioration de l'icône de l'étape 3

Dans le deuxième arbre de travail, l'agent :

  • IcĂ´ne de danger Bootstrap remplacĂ©e
  • Introduction d'un SVG plus Ă©purĂ© sur le thème de l'IA
  • CompatibilitĂ© de mise en page maintenue
  • Style Bootstrap prĂ©servĂ©

Cela était totalement indépendant de la fonctionnalité asynchrone.

Pas de code qui se chevauche.

Basculement entre les fonctionnalités

Comme il s'agit d'arborescences de travail, changer de contexte est facile.

Dans mon application Darkwood locale :

  • Le paquet est normalement chargĂ© via Composer.
  • J'ai temporairement liĂ© le paquet Ă  l'arborescence de travail correspondante.
  • Cache vidĂ©.
  • Une exception contrĂ´lĂ©e a Ă©tĂ© dĂ©clenchĂ©e.

Je pourrais alors tester chaque fonctionnalité indépendamment.

Passer de la fonctionnalité A à la fonctionnalité B est uniquement nécessaire :

  • Modification du lien symbolique
  • Nettoyage du cache
  • RafraĂ®chissant

Pas de fusion. Pas de rebasage. Aucun conflit.

Nos réalisations

Nous avons maintenant :

  • Deux demandes de fusion indĂ©pendantes
  • Deux agents d'IA isolĂ©s Aucun conflit de fichiers
  • SĂ©paration claire des prĂ©occupations

Ces modifications ont été publiées dans :

👉 v1.0.2 https://github.com/darkwood-com/ia-exception-bundle/releases/tag/v1.0.2

Cette version introduit :

  • AmĂ©liorations de l'interface utilisateur pour le rendu des exceptions d'IA
  • Chargement de l'analyse IA asynchrone
  • SĂ©paration architecturale amĂ©liorĂ©e pour les dĂ©veloppements futurs

Quand cela va-t-il se rompre ?

Le développement parallèle fonctionne mieux lorsque les problèmes sont :

  • Clairement sĂ©parĂ©s
  • Cibler diffĂ©rentes couches
  • Ne pas modifier les mĂŞmes fichiers

Si deux problèmes se modifient :

  • Le mĂŞme service
  • Le mĂŞme modèle Twig
  • La mĂŞme manette

Vous rencontrerez des conflits de fusion plus tard.

Le développement parallèle de l'IA nécessite une décomposition adéquate des tâches.

Considérations relatives à la production

Si vous poussez plusieurs branches :

  • Vous pourriez rencontrer des conflits de ports au niveau local.
  • Les environnements de prĂ©visualisation peuvent nĂ©cessiter une configuration.
  • Les fonctionnalitĂ©s asynchrones peuvent nĂ©cessiter la persistance du contexte.

Ces problèmes sont gérables, mais doivent être pris en compte.

Pourquoi c'est puissant

La véritable valeur ne réside pas dans le modèle d'IA.

C'est:

  • Isolement
  • Orchestration
  • ContrĂ´le du contexte

Les arborescences de travail Git nous permettent de faire évoluer les sessions de codage IA sans chaos.

Conclusion

Le développement parallèle de l'IA ne consiste pas à exécuter davantage de modèles.

Il s'agit d'isoler correctement le contexte.

Avec:

  • Arbres de travail Git
  • Agents de curseur
  • ExpĂ©rience utilisateur Symfony
  • DĂ©composition propre des problèmes

Vous pouvez faire évoluer en toute sécurité des systèmes complexes sans compromettre vos propres modifications.

Références

  • Ensemble d'exceptions IA du rĂ©fĂ©rentiel https://github.com/darkwood-com/ia-exception-bundle

  • Version 1.0.2 https://github.com/darkwood-com/ia-exception-bundle/releases/tag/v1.0.2

  • Arbres de travail Git pour agents de codage IA parallèles Upsun https://devcenter.upsun.com/posts/git-worktrees-for-parallel-ai-coding-agents/

  • Arbres de travail Git : La puissance des agents parallèles de Cursor DEV.to https://dev.to/arifszn/git-worktrees-the-power-behind-cursors-parallel-agents-19j1

  • Configuration des arborescences de travail de la documentation du curseur https://cursor.com/fr/docs/configuration/worktrees

  • Plan du Site - Hello - Blog - Apps - Photos - Contact - - - - - Mentions lĂ©gales - Darkwood 2026, tous droits rĂ©servĂ©s