Les ingénieurs responsables de grands projets hérités (legacy) passent deux heures par jour à fouiller dans des montagnes de code. La méthode consistant à traquer des chaînes de caractères avec grep a atteint ses limites. Même en voulant adopter des agents d'IA, la réalité est qu'il est difficile de savoir comment les intégrer efficacement dans le flux de travail. Cet article traite des procédures techniques concrètes pour établir les agents non pas comme de simples chatbots, mais comme des outils améliorant la productivité opérationnelle.
Éliminez d'abord le bruit
Si vous donnez l'intégralité de la base de code à un agent, le contexte sera pollué. L'apprentissage de données inutiles conduit à des réponses erronées et gaspille les coûts de jetons (tokens). Le simple fait de restreindre la portée de l'indexation rend la vitesse de réponse nettement plus rapide.
Appliquez immédiatement ces 3 points :
- Créez un fichier .cursorignore à la racine du projet. Excluez impérativement les artefacts de build volumineux tels que /dist, /build, /target, node_modules.
- Excluez également les stubs Protobuf ou les fichiers *.gen.ts générés automatiquement. Cela empêchera l'agent de générer du code ignorant la rétrocompatibilité.
- Utilisez des outils de synchronisation basés sur les arbres de Merkle. Ne recréez pas l'index complet à chaque fois, mettez uniquement à jour les valeurs de hachage des fichiers modifiés pour augmenter la vitesse d'indexation de plus de 3 fois.
Suivez les dépendances grâce à l'arbre syntaxique
La recherche textuelle ne pourra jamais découvrir des relations d'héritage complexes. Vous devez analyser l'arbre syntaxique (AST) du code avec des outils comme ast-grep. L'intégrer dans vos invites (prompts) permet d'effectuer des requêtes beaucoup plus sophistiquées qu'une simple recherche.
- Définissez le motif syntaxique de ce que vous voulez analyser. Par exemple, rédigez une fonction asynchrone dépourvue de gestion d'erreurs en utilisant la syntaxe ast-grep.
- Envoyez ce motif à l'agent avec l'outil @codebase. Ajoutez des instructions pour limiter la portée afin d'ignorer les bibliothèques externes et de ne rechercher que les relations d'héritage entre les modules internes.
- Demandez à l'agent de produire les résultats sous forme de diagramme Mermaid. Visualiser les flux d'appels complexes peut réduire le temps de résolution des problèmes d'environ 40 %.
Vérifiez les correctifs par des tests
Les correctifs proposés par l'IA sont à moitié erronés. Les fusionner tels quels ne fera qu'accumuler de la dette technique. Automatisez la boucle de vérification en intégrant l'analyse d'impact des tests (TIA) dans votre pipeline CI.
- Écrivez un script qui ne sélectionne et n'exécute que les tests liés au code modifié, comme
--findRelatedTestsde Jest. - Donnez des instructions à l'agent : si un test échoue, configurez une boucle pour qu'il analyse les journaux d'erreurs et corrige lui-même le code.
- Intégrez des outils comme CodeQL dans l'étape CI. Cela permet de filtrer automatiquement les vulnérabilités de sécurité difficiles à détecter pour un humain.
La mise en place de cette boucle peut considérablement augmenter la précision de la validation syntaxique. Il n'est pas nécessaire de jeter tous vos outils existants. Ripgrep est toujours 10 fois plus rapide qu'un agent pour une recherche simple. Le véritable travail d'un ingénieur senior est de séparer les rôles en fonction des caractéristiques de chaque outil.
