Le harness engineering est la couche qui orchestre des agents IA pour produire du code fiable sur des tâches complexes. Le vrai sujet n’est plus seulement de bien prompter, mais de coordonner, valider, relancer et documenter un processus reproductible.
Pourquoi le prompt ne suffit plus ?
Le prompt ne suffit plus dès qu’une tâche de développement demande plusieurs étapes, plusieurs décisions et plusieurs vérifications. Un bon prompt aide à démarrer, mais il ne suffit pas à piloter un vrai flux de travail logiciel. Coder avec l’IA, ou intelligence artificielle, ne consiste pas seulement à demander une fonction puis à copier-coller la réponse.
Le prompt engineering a tout de même apporté quelque chose d’utile. Il a appris aux développeurs à mieux formuler leur intention, à préciser un format de sortie, à ajouter des contraintes techniques, à demander un exemple de code ou une explication. C’est déjà mieux qu’une demande vague du type “fais-moi une API”.
La limite arrive vite. Une interaction isolée reste fragile, parce qu’elle ne garde pas toujours une mémoire fiable du projet, ne coordonne pas plusieurs rôles et ne valide pas systématiquement le résultat. L’IA peut produire une réponse convaincante, mais incomplète, non testée ou mal intégrée au reste du code.
Dans le développement, ce risque apparaît sur des tâches très concrètes :
- Générer une fonction peut introduire des hypothèses invisibles sur les entrées, les erreurs ou les performances.
- Corriger un bug peut masquer le symptôme sans traiter la cause.
- Créer des tests peut donner une fausse confiance si les cas limites ne sont pas couverts.
- Faire une revue de sécurité peut rater une injection SQL, une fuite de secret ou un contrôle d’accès absent.
- Rédiger une documentation peut décrire ce que le code semble faire, pas ce qu’il fait réellement.
La différence tient souvent au processus :
| Avec un prompt seul | Une demande, une réponse, peu de contrôle sur la suite. |
| Avec un processus | Une tâche découpée, un contexte fourni, des tests, une revue et des critères d’acceptation. |
Les études sur les assistants de code montrent bien l’intérêt de ces outils. L’étude de Peng et al. publiée en 2023 sur GitHub Copilot observe des gains de vitesse sur certaines tâches de programmation. Mais aller plus vite ne remplace ni la qualité, ni les tests, ni la revue humaine.
Le prompt reste donc une interface utile, pas une méthode complète. La couche suivante consiste à donner à l’IA ce qui lui manque le plus souvent pour bien travailler : le contexte.
Comment les trois couches se complètent ?
Les trois couches se complètent parce qu’elles ne résolvent pas le même problème. Le prompt engineering améliore la consigne, le context engineering améliore les informations disponibles, et le harness engineering organise le travail complet autour de l’IA, de la demande initiale jusqu’à la validation.
Le prompt engineering consiste à formuler de bonnes instructions. Il précise le rôle attendu, le format de sortie, les contraintes et parfois les étapes de raisonnement souhaitées. C’est utile, mais insuffisant si le modèle ne connaît pas votre base de code, vos choix d’architecture ou vos règles internes.
Le context engineering consiste à sélectionner et injecter les bons éléments dans la fenêtre de contexte du modèle. Cette fenêtre correspond à la quantité d’informations que l’IA peut lire pendant une interaction. Dans un projet logiciel, ce contexte peut inclure plusieurs éléments concrets :
- Les fichiers du dépôt concernés par la tâche.
- L’historique des décisions techniques.
- La documentation technique et fonctionnelle.
- Les conventions de code de l’équipe.
- Les résultats de tests et les logs d’erreur.
- Les tickets produit, bugs ou demandes métier.
- Les contraintes de sécurité, de performance ou de conformité.
Ce contexte rend l’IA beaucoup plus pertinente. Mais même un bon contexte reste souvent limité à une session, à une requête ou à un agent unique. Il ne garantit pas que le bon outil sera appelé, que les tests seront lancés, que le code sera relu, ni que les étapes seront exécutées dans le bon ordre.
Le harness engineering ajoute cette couche supérieure. Un harness, dans ce contexte, est un cadre d’exécution qui orchestre un processus complet. Il décide quel agent travaille, avec quel contexte, dans quel ordre, avec quels outils, et selon quels critères de validation. Dans un pipeline IA, c’est-à-dire une suite d’étapes automatisées autour d’un modèle, il transforme une simple interaction en workflow contrôlé.
| Prompt Objectif : Donner une instruction claire. | Exemple : “Refactorise cette fonction sans changer son comportement.” | Limite : Ne contient pas forcément les informations du projet. | Rôle dans un pipeline IA : Définir la tâche demandée à l’agent. |
| Contexte Objectif : Fournir les bonnes informations. | Exemple : Injecter les fichiers modifiés, les tests échoués et les conventions de code. | Limite : Reste souvent attaché à une session ou à un agent. | Rôle dans un pipeline IA : Rendre la réponse adaptée au dépôt réel. |
| Harness Objectif : Orchestrer le processus complet. | Exemple : Lancer un agent de diagnostic, puis un agent de correction, puis les tests. | Limite : Demande une conception plus rigoureuse du workflow. | Rôle dans un pipeline IA : Coordonner agents, contexte, outils et validation. |
Que fait concrètement un harness ?
Un harness transforme des interactions IA dispersées en pipeline contrôlé. Au lieu d’envoyer une demande vague à un modèle, puis de copier-coller des réponses entre plusieurs outils, il organise le travail comme une chaîne d’exécution observable, reproductible et vérifiable.
Le terme vient des test harness. En développement logiciel, un test harness est un environnement qui lance du code, injecte des données de test, capture les résultats et vérifie automatiquement si le comportement attendu est respecté. L’idée est simple : ne pas dépendre d’une vérification manuelle fragile quand une procédure peut être codifiée.
Appliqué aux agents IA, le harness joue ce rôle de cadre d’exécution. Il lance les sessions, prépare le contexte utile, choisit quel agent doit intervenir, route les sorties vers les bons outils, déclenche des commandes, valide les résultats, gère les erreurs et conserve les traces importantes. Il ne rend pas l’IA magique. Il rend son usage moins improvisé.
Sur une demande de refactoring d’un module critique, le parcours peut être découpé proprement :
- Un agent architecte analyse le module, les dépendances, les risques et propose un plan de modification.
- Un agent développeur applique les changements dans le code, en respectant les contraintes du projet.
- Un agent test génère ou exécute les tests unitaires, les tests d’intégration et signale les régressions.
- Un agent sécurité relit les zones sensibles, par exemple l’authentification, les entrées utilisateur ou les appels réseau.
- Un agent documentation met à jour les notes techniques, le changelog ou les commentaires utiles.
Le harness coordonne ces étapes avec des règles explicites. Il peut refuser une modification si les tests échouent, relancer un agent avec plus de contexte, demander une correction ciblée ou bloquer la fusion tant que les critères de succès ne sont pas atteints.
| Responsabilité | Rôle concret |
| Orchestration | Enchaîner les agents dans le bon ordre. |
| Validation | Comparer les résultats aux tests, règles et attentes définies. |
| Gestion des échecs | Relancer, corriger, escalader ou arrêter le pipeline. |
| Traçabilité | Conserver les prompts, décisions, diffs, erreurs et validations. |
Le point important est là : le harness rend explicites des décisions qu’un développeur expérimenté prendrait souvent intuitivement. Quel contexte fournir ? Quel test lancer ? Quand accepter une réponse ? Quand demander une revue ? Ces choix deviennent des règles, donc un système améliorable.
Comment valider le travail des agents ?
Le travail des agents se valide avec des boucles automatiques et humaines, pas avec la confiance seule. Un agent peut produire du code utile, mais il peut aussi rater une exigence, inventer une dépendance, casser un comportement existant ou introduire une faille. Le rôle du harness est donc de transformer chaque sortie en hypothèse vérifiable.
Les validations automatiques couvrent d’abord les erreurs rapides à détecter. Le linting désigne la détection automatique des erreurs de style, de convention ou de qualité du code. L’analyse statique inspecte le code sans l’exécuter, par exemple pour repérer une variable non utilisée, une injection SQL possible ou une dépendance vulnérable. Les tests unitaires vérifient une fonction isolée. Les tests d’intégration vérifient le comportement entre plusieurs composants, par exemple une API, une base de données et un service d’authentification.
Une validation solide combine plusieurs boucles, car aucune ne suffit seule :
- Tests unitaires pour vérifier les comportements locaux attendus.
- Tests d’intégration pour contrôler les interactions entre composants.
- Linting pour maintenir un niveau minimal de lisibilité et de cohérence.
- Analyse statique pour détecter des erreurs sans lancer l’application.
- Vérification sécurité pour repérer secrets exposés, dépendances vulnérables ou entrées non filtrées.
- Revue humaine pour juger l’intention, l’architecture et les arbitrages.
- Comparaison aux exigences initiales pour éviter le code correct techniquement, mais hors sujet.
Cette logique rejoint les recommandations du NIST AI Risk Management Framework, qui insiste sur la mesure, la gouvernance et la gestion continue des risques liés à l’IA. Elle rejoint aussi l’OWASP Top 10 for LLM Applications, qui documente les risques propres aux applications utilisant des grands modèles de langage, comme l’injection de prompt, la fuite de données ou les actions non autorisées.
| Type de validation | Ce qu’elle détecte | Automatisable | Action possible en cas d’échec |
| Tests unitaires | Régression ou logique incorrecte dans une fonction | Oui | Relancer le même agent avec les logs d’échec |
| Tests d’intégration | Mauvaise interaction entre services ou composants | Oui | Transmettre à un agent spécialisé backend ou API |
| Linting | Style incohérent, code fragile ou non conforme | Oui | Demander une correction automatique ciblée |
| Analyse statique | Bugs potentiels, dette technique, vulnérabilités simples | Oui | Bloquer le pipeline ou enrichir le contexte |
| Revue humaine | Erreur d’architecture, exigence mal comprise, risque métier | Non | Demander une intervention humaine |
Le point clé tient dans la décision après échec. Le harness ne doit pas seulement dire “ça ne passe pas”. Il doit choisir entre relancer le même agent avec un contexte enrichi, transmettre la tâche à un agent spécialisé, demander une revue humaine ou arrêter le pipeline. C’est cette boucle de décision qui transforme un agent IA en composant utilisable dans un vrai processus de développement.
Comment démarrer sans suringénierie ?
Il faut démarrer petit, sur un flux critique et répétable, avant de construire une orchestration complexe. Le bon point de départ n’est pas “un système multi-agents complet”, mais une tâche de développement que vous faites souvent, avec un résultat vérifiable.
Je partirais d’une méthode en quatre étapes, simple à auditer et facile à améliorer.
- Choisir un cas d’usage fréquent. Prenez une tâche qui revient chaque semaine : génération de tests à partir d’une pull request, revue de code sécurité, documentation automatique après merge, ou correction de bugs encadrée par des tests existants.
- Définir les rôles d’agents. Un agent est un rôle confié à l’IA dans le processus. Par exemple : analyser le diff, proposer des tests, vérifier les risques sécurité, résumer les changements. Chaque rôle doit avoir un objectif clair.
- Formaliser les entrées et sorties attendues. L’entrée peut être un diff Git, un ticket Jira, un rapport d’erreur ou une suite de tests. La sortie doit être précise : patch, commentaire de revue, fichier de documentation, liste de risques classés.
- Ajouter les validations minimales. Avant de faire confiance au résultat, ajoutez des garde-fous : exécution des tests, lint, analyse statique, validation humaine sur les zones sensibles.
| Cas d’usage | Validation minimale |
| Génération de tests depuis une pull request | Les tests passent et couvrent le code modifié |
| Revue de code sécurité | Les alertes sont justifiées et reliées à des lignes de code |
| Documentation après merge | Le changement documenté correspond au diff fusionné |
| Correction de bug encadrée par tests | Le test rouge devient vert sans régression |
Ce qu’il faut éviter est assez clair. Ne multipliez pas les agents sans critères de succès. Ne confondez pas automatisation et autonomie totale : automatiser une étape ne veut pas dire laisser l’IA décider seule d’un merge en production. N’ignorez pas les logs, car ils permettent de comprendre pourquoi une décision a été prise. Ne supprimez pas la revue humaine sur du code sensible, notamment sécurité, paiement, authentification ou données personnelles.
Le lien avec les briques précédentes est simple : le prompt donne la consigne, le contexte donne la matière, le harness donne le processus. Sans harness, l’IA répond. Avec un harness, elle travaille dans un cadre reproductible, observable et validable.
Vous avez probablement besoin d’un harness si plusieurs critères sont vrais :
- La tâche est répétable.
- Elle comporte plusieurs étapes.
- Vous avez besoin de traçabilité.
- Vous avez des exigences qualité explicites.
- Le résultat peut être validé par des tests, des règles ou une revue humaine.
Alors, faut-il ajouter un harness à vos agents IA ?
Le harness engineering devient utile quand l’IA ne sert plus seulement à répondre à une question, mais à contribuer à un vrai processus de développement. Le prompt reste nécessaire, le contexte améliore fortement la qualité, mais l’orchestration fait la différence sur les tâches longues, sensibles ou répétables. En pratique, un bon harness spécialise les agents, contrôle les entrées, vérifie les sorties et gère les erreurs. Je ne le vois pas comme une couche magique, plutôt comme une méthode d’ingénierie appliquée aux agents IA. Le bénéfice pour vous : gagner en fiabilité sans renoncer à la vitesse.
FAQ
- Qu’est-ce que le harness engineering ?
Le harness engineering désigne la couche d’orchestration qui pilote des agents IA dans un processus structuré. Il décide quels agents lancer, avec quel contexte, dans quel ordre, comment valider leurs sorties et quoi faire en cas d’erreur. - Quelle différence entre prompt engineering et harness engineering ?
Le prompt engineering améliore la consigne donnée à un modèle. Le harness engineering va plus loin : il organise plusieurs interactions, plusieurs agents, des validations et des boucles de correction pour obtenir un résultat plus reproductible. - Le context engineering reste-t-il utile ?
Oui. Le contexte reste indispensable pour fournir les bons fichiers, règles, historiques, tests ou documents. Le harness ne remplace pas le contexte : il décide comment l’utiliser, à quel moment et pour quel agent. - Pourquoi utiliser plusieurs agents IA pour coder ?
Plusieurs agents permettent de spécialiser les rôles : architecture, génération de code, tests, sécurité, documentation. Cette spécialisation réduit le risque de demander à un seul agent de tout faire sans contrôle clair. - Quand faut-il mettre en place un harness ?
Un harness devient pertinent quand vos tâches IA sont répétables, multi-étapes, sensibles à la qualité ou nécessitent de la traçabilité. Pour une question ponctuelle, un bon prompt suffit souvent. Pour un pipeline de développement, l’orchestration devient utile.
A propos de l’auteur
Je suis Franck Scandolera, responsable de l’agence webAnalyste et de l’organisme Formations Analytics. J’accompagne les entreprises sur le tracking avancé server-side, l’Analytics Engineering, l’automatisation No/Low Code avec n8n, l’intégration opérationnelle de l’IA, le SEO et le GEO. J’ai travaillé pour des références comme Logis Hôtel, Yelloh Village, BazarChic, la Fédération Française de Football ou Texdecor. Si vous voulez structurer vos usages IA, automatiser vos workflows ou fiabiliser vos agents, vous pouvez me contacter.
⭐ Analytics engineer, Data Analyst et Automatisation IA indépendant ⭐
Ref clients : Logis Hôtel, Yelloh Village, BazarChic, Fédération Football Français, Texdecor…
Mon terrain de jeu :
Data Analyst & Analytics engineering : tracking avancé (GTM server, e-commerce, CAPI, RGPD), entrepôt de données (BigQuery, Snowflake, PostgreSQL, ClickHouse), modèles (Airflow, dbt, Dataform), dashboards décisionnels (Looker, Power BI, Metabase, SQL, Python).
Automatisation IA des taches Data, Marketing, RH, compta etc : conception de workflows intelligents robustes (n8n, App Script, scraping) connectés aux API de vos outils et LLM (OpenAI, Mistral, Claude…).
Engineering IA pour créer des applications et agent IA sur mesure : intégration de LLM (OpenAI, Mistral…), RAG, assistants métier, génération de documents complexes, APIs, backends Node.js/Python.
