Introduction

L'article présente une expérience de construction d'un moteur de base de données SQLite-like en utilisant un petit essaim d'agents, notamment Claude, Codex et Gemini, dans le but de démontrer la faisabilité de la conception de logiciels en utilisant des méthodes de systèmes distribués. Cette approche a permis de générer environ 19 000 lignes de code en Rust, avec une implémentation complète de divers composants tels que le parseur, le planificateur, l'exécuteur, le pager, les arbres B+, le journal de transactions, la récupération, les jointures, les agrégats, l'indexation, la sémantique des transactions et la planification éclairée.

Contexte Technique

Le processus de construction a été divisé en deux phases : la phase de démarrage et la phase de travail. La phase de démarrage a consisté à lancer un agent Claude pour générer les documents de base, le squelette de la crate et le harnais de test. La phase de travail a impliqué six agents (2x Claude, 2x Codex, 2x Gemini) qui ont travaillé en parallèle pour implémenter et tester les composants du moteur de base de données. Chaque agent a travaillé sur des tâches spécifiques, avec des frontières de module fortes pour minimiser les collisions de fusion. Les agents ont utilisé des tests et des validations pour garantir la qualité du code.

Analyse et Implications

L'expérience a montré que le parallélisme peut être efficace pour la conception de logiciels, mais nécessite des frontières de tâche strictes et une coordination soignée entre les agents. Les tests et les validations ont joué un rôle crucial pour garantir la qualité du code et éviter les erreurs. Les résultats ont également mis en évidence l'importance de la documentation partagée et de la planification éclairée pour améliorer la productivité et la qualité du code. Les implications concrètes de cette expérience incluent la possibilité d'accélérer le développement de logiciels complexes en utilisant des méthodes de systèmes distribués et des agents de travail en parallèle.

Perspective

Les limites de cette expérience incluent la difficulté de suivre l'utilisation des jetons pour chaque agent et la nécessité de mettre en place des mécanismes de coordination plus efficaces pour minimiser les collisions de fusion. Les prochaines étapes pourraient inclure l'ajout de strictes observabilités pour suivre les performances des agents et l'implémentation de méthodes pour enregistrer l'utilisation des jetons de manière plus efficace. De plus, il serait intéressant d'explorer d'autres applications de cette approche pour la conception de logiciels complexes et de systèmes distribués.