Aller au contenu
Se connecter

AI-DevOps

Le harness : ce qui fait tenir un agent IA en production

Moins d'outils, un contexte géré comme une ressource, un état écrit sur disque, des évaluations sur du travail réel : ce que Vercel, Manus et Anthropic ont appris en construisant leurs agents.

Par 8 min de lecture

Choisir le meilleur modèle ne suffit pas à faire un bon agent. Entre le modèle et la tâche, il y a le harness : l’infrastructure qui décide de ce que le modèle voit, de ce qu’il peut faire, et de ce qui se passe quand il se trompe. C’est un sujet d’ingénierie, et donc un sujet de DevOps.

Les équipes qui construisent des agents à grande échelle commencent à publier ce qu’elles ont appris. Voici l’essentiel, source par source, et ce qu’on peut en tirer pour ses propres agents.

Ce qu’on appelle le harness

Le modèle au centre, entouré des cinq responsabilités du harness : gestion du contexte, choix des outils, reprise sur erreur, état persistant et mémoire externe. Modèle Contexte ce qui entre, ce qui sort Outils lesquels, quelle interface Reprise sur erreur échecs, boucles, relances État progression entre sessions Mémoire externe fichiers, au-delà du contexte
Les cinq responsabilités du harness. Le modèle raisonne ; tout le reste relève du système qui l'entoure.

Une image aide : le modèle est le moteur, le harness est la voiture. Un bon moteur dans une voiture mal conçue ne reste pas longtemps sur la route.

1. Moins d’outils, mais plus généraux

Vercel a raconté en décembre 2025 la refonte de d0, son agent qui traduit des questions en SQL. L’ancienne version empilait des outils spécialisés : le code publié en liste dix-sept. La nouvelle n’en garde que deux, exécuter une commande shell dans un bac à sable et exécuter du SQL. L’agent, propulsé par Claude Opus 4.5, explore la couche sémantique (des fichiers YAML, Markdown et JSON) avec grep, cat, find et ls.

Avant et après sur 5 requêtes : réussite de 80 à 100 %, durée moyenne de 274,8 à 77,4 secondes, jetons moyens d'environ 102 000 à 61 000. Réussite Durée moyenne Jetons moyens 80 % (4/5) 100 % 274,8 s 77,4 s ≈ 102 000 ≈ 61 000 gris : avant · vert : après
Moyennes publiées par Vercel sur 5 requêtes représentatives. Le pire cas de l'ancienne version durait 724 secondes et échouait ; la nouvelle le réussit en 141 secondes.

Pourquoi ça marche : un modèle a vu énormément de shell pendant son entraînement, mais jamais vos outils maison. Chaque outil spécialisé ajoute un schéma à comprendre, des erreurs à gérer et une décision à prendre. Vercel a depuis publié bash-tool, et un guide pour construire des agents avec des fichiers et le shell.

Cinq requêtes ne font pas une étude. La bonne réaction est de reproduire l’expérience sur vos propres évaluations.

2. Gérer le contexte comme une ressource

Manus a publié en juillet 2025 ce que quatre reconstructions de son framework lui ont appris. Une tâche y demande en moyenne une cinquantaine d’appels d’outils, et l’agent lit environ 100 jetons pour 1 jeton écrit. Le contexte, c’est donc l’essentiel de la facture et de la latence.

Rendre le contexte « cachable ». Un préfixe de prompt stable, un historique qu'on ne fait qu'allonger et une sérialisation déterministe permettent de réutiliser le cache. À l'époque, avec Claude Sonnet, un jeton en cache coûtait dix fois moins cher qu'un jeton normal.

Le système de fichiers comme mémoire. Plutôt que de tout garder dans le contexte, l'agent écrit sur disque et relit au besoin. Les fichiers sont « illimités en taille, persistants par nature, et directement manipulables par l'agent ». Une page web peut sortir du contexte tant que son URL reste : la compression est restaurable.

Réciter ses objectifs. L'agent réécrit en permanence un fichier todo.md, ce qui place ses objectifs à la fin du contexte. Les modèles exploitent mieux ce qui est au début et à la fin d'un long contexte que ce qui est au milieu, comme l'a montré l'étude « Lost in the Middle ».

Masquer les outils plutôt que les retirer. Ajouter ou retirer des outils en cours de tâche casse le cache et peut dérouter le modèle. Manus garde la liste stable et restreint le choix au moment du décodage, selon l'état de la tâche.

Un ordre de grandeur, aux tarifs actuels de Claude Sonnet 5.5 (2 dollars le million de jetons en entrée, 0,10 en cache) : une tâche qui relit 200 000 jetons coûte 0,40 dollar sans cache, et 0,02 dollar si tout est servi depuis le cache. Sur des millions de tâches, c’est toute la différence.

3. Écrire l’état sur disque, pas dans la mémoire du modèle

Pour les tâches qui durent plusieurs sessions, Anthropic décrit une approche en deux rôles (novembre 2025), avec le même harness et seulement un prompt initial différent :

Un agent initialiseur prépare init.sh, un fichier de progression et un premier commit git. Ensuite, à chaque session, l'agent de code lit la progression, réalise une seule fonctionnalité, laisse un code propre et met à jour le fichier. Initialiseur init.sh claude-progress.txt premier commit git une seule fois Lire la progression Une seule fonctionnalité État propre fusionnable Noter et commiter à chaque session de l'agent de code
Un modèle ne se souvient pas d'une session à l'autre : le fichier de progression et git le font pour lui.

L’« état propre » est défini simplement : du code qu’on pourrait fusionner sur la branche principale, sans bug majeur, ordonné et documenté. C’est exactement ce qu’on demanderait à un humain.

4. Mesurer sur du travail réel

Les scores élevés sur des exercices isolés disent peu de chose d’une vraie mission. Le benchmark APEX-Agents, publié par Mercor en janvier 2026, met des agents face à 480 tâches de banque d’affaires, de conseil et de droit, dans 33 environnements simulés d’environ 166 fichiers chacun.

Indicateur (janvier 2026) Résultat
meilleur score au premier essai 24,0 % (Gemini 3 Flash)
meilleur score en huit essais 40,0 % (GPT-5.2)
exécutions à zéro point de 40 % à 62 % selon le modèle
dépassement de la limite de 250 étapes jusqu’à 29,8 %, souvent en tournant en boucle

Le classement actuel, sur une nouvelle version du benchmark, dépasse 80 % en tête. Modèles et harnesses progressent ensemble : la seule façon de savoir ce qui améliore votre agent, c’est de mesurer chaque changement sur vos tâches.

5. Construire pour supprimer

Anthropic le recommandait dès 2024 dans Building effective agents : « trouver la solution la plus simple possible, et n’ajouter de la complexité que si nécessaire ». C’est l’esprit de « The Bitter Lesson » de Richard Sutton (2019) : à long terme, les méthodes générales qui profitent de la puissance de calcul l’emportent sur les connaissances codées à la main.

Pour un harness, cela donne une règle pratique : chaque béquille doit pouvoir disparaître. Si le modèle suivant n’a plus besoin d’une étape de routage ou d’un outil spécialisé, on la retire. Un harness qui se complique à chaque nouveau modèle va à contre-courant.

6. Sécuriser et observer

Donner un shell à un agent, c’est ouvrir une surface d’attaque. Les règles sont celles qu’un DevOps applique déjà :

  • un bac à sable pour toute exécution, jamais la machine hôte ;
  • le moindre privilège : seulement les accès de la tâche en cours ;
  • des secrets injectés par le harness, jamais visibles dans le contexte du modèle ;
  • le contrôle des sorties réseau : un agent manipulé peut faire fuir des données par un appel d’outil parfaitement légitime ;
  • un journal de chaque appel d’outil : nom, durée, taille de la sortie, succès ou échec, avec des traces OpenTelemetry sur toute la tâche ;
  • un budget de contexte suivi : jetons par tâche, taux de cache, nombre d’étapes.

La liste pour votre prochain agent

  1. Construisez une petite suite d’évaluation sur des tâches réelles, et mesurez chaque changement.
  2. Essayez la version minimale : shell en bac à sable et fichiers. Gardez un outil spécialisé seulement s’il fait mieux.
  3. Stabilisez le début du prompt et n’allongez l’historique que par la fin, pour profiter du cache.
  4. Faites écrire la progression dans un fichier que l’agent relit à chaque session.
  5. Isolez, journalisez, limitez : le harness est une application de production comme une autre.
  6. À chaque nouveau modèle, cherchez ce que vous pouvez retirer.

Testez-vous

Vercel passe de dix-sept outils spécialisés à deux outils généraux. Quelle conclusion en tirer ?

Réponse B. Le résultat est fort mais mesuré sur cinq requêtes : c'est une expérience à reproduire, pas une règle universelle.

Pourquoi Manus masque-t-il des outils au lieu de les retirer en cours de tâche ?

Réponse C. Changer la liste des outils modifie le début du contexte, ce qui invalide le cache, et peut dérouter le modèle.

Un agent travaille sur plusieurs sessions. Où doit vivre sa progression ?

Réponse A. Le modèle ne se souvient de rien d'une session à l'autre : l'état doit être écrit par le harness, sur disque.

Votre score

Quiz terminé.

Sources