
Compound Engineering Now Works Better in a Multi-Model World
AI Summary
Bienvenue à cette discussion sur Compound Engineering, une initiative née d'une philosophie visant à optimiser l'utilisation de l'intelligence artificielle (IA) dans le développement de logiciels. Le cœur de cette philosophie est l'idée de "Compounding Knowledge" (capitaliser la connaissance), c'est-à-dire extraire les apprentissages et les solutions générées par l'IA et les intégrer dans le système pour améliorer les processus futurs et permettre une réflexion plus approfondie.
L'approche de Compound Engineering est souvent décrite comme un "sandwich AI", où la pensée humaine est concentrée au début et à la fin du processus. Au début, nous nous posons des questions clés pour définir le problème. Ces questions, peu nombreuses mais pertinentes, sont soumises à l'IA. L'IA génère des solutions, et la philosophie de Compound Engineering privilégie l'efficacité des tokens plutôt que leur économie à tout prix. L'objectif est d'obtenir le meilleur résultat possible, quitte à dépenser un peu plus de tokens. Une fois que l'IA a fourni sa réponse, l'humain intervient à nouveau pour juger et affiner, créant ainsi une boucle d'apprentissage continue.
Cette approche s'étend au-delà de l'ingénierie logicielle pour englober la gestion des connaissances, de l'idéation au marketing produit, en passant par la recherche et même la création de vidéos éducatives. L'objectif est de simplifier les tâches complexes et de déléguer un maximum de travail aux fournisseurs d'IA, tout en augmentant la portée des problèmes que nous pouvons résoudre.
L'un des avantages de Compound Engineering est son indépendance vis-à-vis des modèles ou fournisseurs spécifiques. Nous n'avons pas de loyauté envers une seule IA, ce qui nous permet d'adopter les meilleurs outils disponibles pour chaque tâche. Cette flexibilité est essentielle pour obtenir les meilleurs résultats.
**Les compétences clés de Compound Engineering**
Deux compétences (skills) ont été particulièrement mises en avant lors de cette présentation :
1. **CEPOV (Compound Engineering Point of View) : La compétence "Oracle"**
Cette compétence est conçue pour aider à prendre des décisions éclairées lorsque l'on est confronté à des choix complexes et que l'on manque d'informations. L'agent, lorsqu'il ne sait pas comment décider, peut invoquer CEPOV. Cette compétence va interroger un "panel Oracle" composé de plusieurs modèles d'IA (par exemple, Claude, Grok, Codex) pour obtenir des opinions diverses et impartiales.
* **Comment ça fonctionne :**
* L'agent soumet le problème au panel Oracle.
* Chaque modèle fournit son point de vue, étayé par des faits et des citations (par exemple, en recherchant dans le référentiel de code ou sur le web).
* L'agent orchestrateur analyse les réponses. Si les modèles sont d'accord, il renforce sa position et formule une recommandation.
* S'il y a désaccord, l'agent orchestrateur arbitre, propose sa propre vision et la soumet à nouveau au panel pour un nouveau cycle de discussion. Ce processus peut se dérouler sur jusqu'à trois tours, permettant d'atteindre un consensus, une impasse ou un rejet.
* **Utilisation pratique :** Lorsqu'un agent pose une question et que vous n'êtes pas sûr de la réponse, invoquez CEPOV. Vous pouvez également demander l'avis d'un modèle spécifique (par exemple, "ask Grok's opinion"). L'objectif est d'obtenir une opinion éclairée et non biaisée de plusieurs sources pour prendre la meilleure décision.
2. **CE Explain : La compétence d'explication**
Cette compétence est cruciale pour la capitalisation des connaissances et l'apprentissage continu, en particulier dans un environnement où les agents génèrent beaucoup de travail. Elle permet de comprendre rapidement ce qui s'est passé dans un projet ou sur un concept.
* **Comment ça fonctionne :**
* **Explication de l'activité du dépôt :** Vous pouvez demander à CE Explain de résumer les activités récentes d'un dépôt (par exemple, "CE Explain since last Thursday"). Il vous fournira une explication détaillée de la semaine, le nombre de PR fusionnées, les plus importantes, un résumé chronologique des événements, et l'évolution des modèles utilisés. C'est un outil précieux pour les chefs d'équipe ou les managers pour suivre l'avancement des projets et rester informé sans avoir à lire toutes les discussions.
* **Explication de concepts :** CE Explain peut expliquer des concepts techniques complexes en se basant sur le référentiel de code. Par exemple, si vous utilisez beaucoup de WebSockets mais que vous vous interrogez sur l'utilisation des SSE dans Ruby on Rails, CE Explain peut vous fournir une explication contextuelle et pertinente.
* **Explication des Pull Requests (PR) :** Lorsqu'une PR est soumise, CE Explain peut générer une description de PR enrichie, expliquant les nouveaux concepts introduits et invitant les relecteurs à en apprendre davantage avec une commande spécifique. Cela aide les membres de l'équipe à comprendre rapidement les changements majeurs et à intégrer de nouvelles connaissances.
* **Mode "apprentissage" :** CE Explain peut également fonctionner en mode "apprentissage", où il ne donne pas directement la réponse à une question, mais guide l'utilisateur à travers le processus de pensée. C'est utile pour se préparer à des réunions, comprendre pourquoi certaines décisions ont été prises, ou simplement approfondir ses connaissances.
* **L'importance de l'apprentissage continu :** Dans l'ingénierie agencée, il est facile de se laisser submerger par la quantité de travail déléguée aux agents et de moins apprendre par soi-même. CE Explain est un moyen de contrer cela, en "ré-énergisant" la pensée humaine et en favorisant un apprentissage actif.
**L'efficacité des tokens et les "multi-harnesses"**
La question de l'efficacité des tokens est abordée. L'objectif n'est pas d'économiser des tokens à tout prix ("token deficient"), mais de les utiliser de la manière la plus efficace possible ("token efficient"). Si dépenser un peu plus de tokens permet d'obtenir un meilleur résultat, c'est ce qui est privilégié. L'accent est mis sur la valeur et le coût par solution plutôt que sur le coût brut des tokens.
L'un des défis majeurs est la diversité des modèles d'IA et des "harnesses" (environnements ou interfaces) dans lesquels ils fonctionnent. Beaucoup de harnesses sont associés à un modèle spécifique (par exemple, Cloud Code, Codex). Cependant, les utilisateurs ont des préférences et peuvent vouloir tirer parti des forces de différents modèles pour différentes tâches.
C'est là qu'intervient la notion de "multi-harness". L'idée est de permettre aux utilisateurs de basculer entre les modèles et les harnesses au sein d'une même session de travail.
* **Exemple :** Vous pouvez commencer une session de planification avec Opus (un modèle) pour ses capacités de brainstorming, puis, pour l'implémentation, passer à Codex (un autre modèle) via un autre harness.
* **Commandes :** Des commandes comme "CE plan, use Fable" ou "CE work, use Codex" permettent de déléguer des tâches spécifiques à des modèles ou harnesses différents, même si vous travaillez dans un environnement par défaut (par exemple, Cloud Code).
* **LFG (Let's F\*\*king Go) :** La compétence LFG est particulièrement puissante. Vous pouvez, par exemple, lancer "LFG, brainstorm with Fable, implement with Codex". L'agent orchestrera l'ensemble du processus, utilisant Fable pour le brainstorming interactif, puis Codex pour l'implémentation, y compris les tests, l'ouverture des PR et le "babysitting" (surveillance) de la PR jusqu'à sa fusion.
* **Configuration flexible :** Les utilisateurs peuvent définir des configurations par défaut dans un fichier `config.yaml`, spécifiant quel modèle utiliser pour quelle tâche ou quel harness. Cela offre un contrôle accru sur le workflow.
L'objectif de cette approche multi-harness est de maximiser la flexibilité, de permettre l'expérimentation et d'utiliser les meilleurs outils pour chaque étape du processus, sans être contraint par un seul modèle ou environnement.
**Brainstorm vs. Plan**
Une question fréquente concerne la différence entre les compétences "Brainstorm" et "Plan".
* **CE Plan :** C'est une compétence plus directe. Si le problème est clair et qu'il n'y a pas d'ambiguïté, vous pouvez aller directement à "CE Plan" pour créer un plan technique détaillé. C'est utile lorsque vous avez déjà une idée bien définie et que vous avez juste besoin d'une feuille de route pour l'implémentation.
* **CE Brainstorm :** Cette compétence est conçue pour les situations où l'idée n'est pas encore totalement claire ou pourrait être améliorée. Elle agit comme un "produit intelligent" qui vous pose des questions difficiles et pertinentes, adaptées à votre problème, pour affiner votre idée.
* Elle peut vous demander de faire un choix entre différentes approches.
* Elle peut même générer des esquisses ou lancer un serveur web pour vous montrer une interface utilisateur temporaire, afin de mieux visualiser la direction à prendre.
* Elle est essentielle pour explorer des scénarios, valider les exigences et "tester la pression" de votre idée avant de passer à l'implémentation.
En général, il est recommandé de commencer par "CE Brainstorm" pour bien définir et valider l'idée, puis de passer à "CE Plan" pour structurer l'implémentation. Cependant, pour des tâches simples ou lorsque l'idée est déjà très claire, "CE Plan" seul peut suffire.
**Évangéliser Compound Engineering en entreprise**
Pour introduire Compound Engineering dans un environnement d'entreprise, la meilleure approche est de "montrer par l'exemple". Il ne s'agit pas d'imposer l'utilisation des outils, mais de démontrer les résultats concrets qu'ils peuvent apporter.
* **Commencer petit :** Utilisez des compétences comme "CE Explain" pour résumer l'activité hebdomadaire d'un dépôt ou "CE Doc Review" pour poser des questions sur un document. Ces petites victoires peuvent inspirer d'autres.
* **Mettre en avant les résultats :** Si Compound Engineering permet de livrer un travail de meilleure qualité, plus rapidement, ou de manière plus efficace, ces résultats parleront d'eux-mêmes.
* **Efficacité des tokens :** Mettez en avant l'efficacité des tokens, non pas en les économisant, mais en les utilisant pour obtenir plus de valeur. Les agents, en capitalisant sur la connaissance via les documents générés par Compound Engineering, peuvent prendre des décisions plus rapidement et avec plus de confiance, ce qui se traduit par une meilleure qualité et une plus grande efficacité à long terme.
**La compétence "Babysitting PR"**
Une autre compétence puissante, souvent sous-estimée, est le "Babysitting PR". Lorsque vous utilisez la commande "commit push PR", cette compétence est automatiquement activée.
* **Fonctionnalités :**
* Elle ouvre une PR avec une description de qualité, axée sur la valeur et évitant les descriptions génériques souvent générées par les IA par défaut.
* Elle inclut une explication générée par CE Explain, décrivant les nouveaux concepts introduits.
* Elle "surveille" la PR pendant plusieurs heures (par exemple, 8 heures). Cela signifie qu'elle gère les retours des relecteurs, rebase le code si la branche principale a évolué, et s'assure que la PR est prête à être fusionnée.
* **Avantage :** L'agent prend en charge toutes les tâches fastidieuses et répétitives associées à la gestion d'une PR, libérant ainsi l'ingénieur pour des tâches plus complexes et créatives.
En conclusion, Compound Engineering est un écosystème en constante évolution, riche en compétences conçues pour optimiser le travail avec l'IA. Que ce soit par l'orchestration multi-modèles, l'explication de concepts complexes, ou la