Login / Sign up
Discover Bonzai
Terms of Use
Legal notice
Privacy
Region
Language
matyo91
matyo91
12
Subscribers
Facebook
X
Whatsapp
Telegram
👉 You must follow matyo91 to access chat.
Feed Shop About

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

Facebook
Twitter
Whatsapp
Telegram
2 days ago

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

matyo91
matyo91
Free

Consulting Tech & Automation – Call Découverte Gratuit

Open
Follow matyo91 to comment
matyo91

matyo91

Je t'aide à automatiser tes process
12
Visit this Bonzai
Follow matyo91 to get the latest updates.

🤖 Comment rendre Darkwood prêt pour les agents

6 days ago
21

🧑‍💻 Codeur vs Vibe codeur

6 days ago
18

🚨 Darkwood IaExceptionBundle — Quand les erreurs commencent à s'expliquer d'elles-mêmes

1 week ago
16

⚙️ FOSDEM 2026 : signaux structurels de l’écosystème open source

2 weeks ago
29

♾️ Dégâts de défausse infini

1 month ago
41

📝 Gouvernance IT : reprendre le contrôle sans ralentir l’innovation

1 month ago
40

⭐️ Monter Légende avec le Guerrier Quête (Enter the Lost City)

1 month ago
49

⭐️ Monter légende avec le deck Paladin Aggro Bubule

1 month ago
50

🎄 Offre de fin d’année – Formation Flow (PHP)

1 month ago
52

⭐️ Meetup AFUP Paris Décembre 2025

1 month ago
53

🏛️ Open Source Experience 2025 : un écosystème qui s’organise, s’affirme et accélère

2 months ago
57

ai-PULSE 2025 : l'Europe de l'IA passe à la vitesse supérieure

2 months ago
58

🧩 Meetup AFUP Paris – Novembre 2025

2 months ago
66

🤖 L’IA Café Club #12 : Création, business, cinéma… l’IA sous toutes ses formes à la Monnaie de Paris

2 months ago
73

🎮 Comprendre l’ECS : la brique invisible derrière les jeux modernes

4 months ago
102

🚀 Uniflow 1.1.18

4 months ago
106

🎨 Programmation récursive de pipes

4 months ago
106

🚀 Veille tech semaine 39

4 months ago
110

🎙️HttpChunk avec Flow

4 months ago
104

🔨 API Platform Conference 2025 : retour de l’écosystème Symfony et PHP

4 months ago
131
© 2026 Bonzai Privacy Legal notice Terms of Use