ÉTUDE DE CAS
DÉFINITION

Harnais d'agent

Un harnais d'agent est la couche située entre un modèle et ses outils.

Il décide ce qui reste dans la fenêtre de contexte, ce qui est résumé, ce qui s'exécute dans un bac à sable sans jamais entrer dans le contexte, quand confier une sous-tâche complexe à un sous-agent, et quand s'arrêter pour demander l'avis d'un humain. Ce n'est pas un framework : vous écrivez toujours vos propres outils. Ce n'est pas une passerelle : il ne détient ni vos identifiants ni votre politique. C'est l'élément qui maintient un agent opérationnel de la première à la cinquantième itération.

La boucle elle-même représente environ deux cents lignes de code. N'importe qui peut l'écrire, et la plupart des équipes le font en un après-midi. Le harnais, c'est tout ce que vous construisez au cours des six mois suivants, une fois que cette boucle rencontre une charge de travail réelle et commence à faire face à des obstacles en cours de route.

Notre thèse est que les modèles deviendront interchangeables, que les outils deviendront le facteur de différenciation de l'entreprise plutôt que celui du fournisseur, et que la gouvernance doit se situer sous l'agent plutôt qu'à l'intérieur. Ce que nous avions sous-estimé, c'était le harnais. L'équipe d'ingénierie des plateformes de développement de NetApp a soumis une charge de travail réellement complexe à cette thèse, en profondeur, en avance sur le marché, et nous a montré exactement là où elle montrait ses limites.

JUIN 2025

la Voie Ouverte

NetApp a choisi une voie ouverte avant que le marché ne rattrape son retard

En juin 2025, Rob Rubin, désormais directeur principal de l'ingénierie des plateformes de développement chez NetApp, avait déjà dépassé la question que la plupart des entreprises débattaient encore. Son équipe gère les environnements Kubernetes sur lesquels le reste de l'entreprise s'appuie, et le provisionnement en libre-service était déjà entièrement automatisé. La contrainte résidait dans l'interface : un formulaire de demande ne peut offrir que ce qui a été modélisé à l'avance.

Son idée était d'y placer l'intention à la place. Décrivez la pile que vous souhaitez ; laissez un agent l'assembler à partir de l'automatisation existante.
Cela impliquait deux choses de notre part.

/01
Gouverné, accès au modèle géré de manière centralisée.
/02
Un espace sécurisé pour héberger des serveurs MCP, afin que les outils déjà possédés par son équipe puissent être exposés à un modèle en tant qu'outils.

Pas de framework d'agent. Pas de harnais. Ce n'était pas encore le sujet de la conversation. La raison pour laquelle il a choisi de standardiser sur MCP explique pourquoi cette histoire s'arrête là :

Mi-2025, c'était une position minoritaire. C'est en grande partie pour cette raison que TrueForge propose ses solutions en open source plutôt que sous forme de runtime géré fermé.

PHASE 1

identité

La gouvernance doit relever des agents, et non être intégrée en leur sein

La première phase concernait l'identité, et c'est la partie que la plupart des équipes sous-estiment.

Pas une identité basée sur « l'agent détient une clé API ». Une véritable identité, où la personne qui pose la question détermine ce que les outils peuvent faire. Un utilisateur s'authentifie via le fournisseur d'identité de NetApp. Cette identité est transmise via la passerelle MCP au serveur MCP, qui la vérifie par rapport au compte de cluster de l'utilisateur et émet des identifiants à courte durée de vie, limités à l'utilisateur. Chaque appel kubectl et chaque commande shell s'exécutent en tant que cette personne. Si vous interrogez quelque chose auquel vous n'avez pas accès, vous obtenez exactement ce qu'un terminal vous donnerait : rien.

« Nous ne pratiquons pas l'élévation de privilèges. »
— Igor Feoktistov · Ingénierie de la plateforme développeur, NetApp

Quatre mots, et ils sont la raison pour laquelle ce projet est passé en production. Un agent fonctionnant avec un compte de service disposant des droits cluster-admin n'est qu'une démonstration. Un agent fonctionnant avec votre identité est une infrastructure.

Tout le reste réside dans la passerelle plutôt que dans un agent individuel : identifiants de fournisseur, RBAC au niveau du modèle, autorisations au niveau des outils, budgets, limites de débit, garde-fous, journalisation. Les agents font référence aux noms des modèles et des serveurs ; les identifiants ne transitent jamais. C'est ce qui permet à une équipe de plateforme d'approuver le quarantième agent aussi facilement que le premier, car un nouvel agent n'est pas une nouvelle copie du modèle de sécurité.

DÉBUT 2026

La charge de travail

Une question, huit clusters, trente itérations

Début 2026, l'agent Kubernetes était opérationnel auprès des utilisateurs, et la nature de la charge de travail explique tout ce qui suit.

Un ingénieur demande : « Pourquoi mon pod est-il en CrashLoopBackOff ? » La plateforme couvre huit clusters Kubernetes au service de toute l'entreprise ; la première tâche de l'agent consiste donc généralement à localiser la charge de travail avant de pouvoir diagnostiquer quoi que ce soit. Vient ensuite l'enquête proprement dite : décrire l'espace de noms, lister les pods, extraire les événements, filtrer les journaux, inspecter la couche d'entrée, interroger les métriques historiques. Le serveur MCP expose kubectl, un shell, Prometheus et un outil d'inventaire de cluster. Aucune de ces séquences n'est scriptée ; le modèle la compose en fonction du problème.

« Selon le problème, il faut plutôt compter entre 15 et 30 itérations pour mener une enquête complète »
— David Fox · DIRECTEUR PRINCIPAL, INGÉNIERIE DE LA PLATEFORME DÉVELOPPEUR, NETAPP

Quinze à trente séries de sorties de commandes réelles par question. Gardez ce chiffre en tête, car il résume toute l'histoire de l'ingénierie.

Session de laboratoire

Couche matérielle

Sous Kubernetes

Fidèle à son habitude, NetApp a vu Igor Feoktistov construire un second serveur MCP plongeant sous le cluster, au cœur de l'infrastructure physique. Lors d'une session de laboratoire, il a tapé « dépanner problème de cluster », sans nom de cluster ni aucune autre indication.

L'agent a localisé le nœud non réactif, a exploré la couche Kubernetes, n'y a rien trouvé de concluant, est passé aux diagnostics matériels et a identifié la cause profonde comme étant une erreur mémoire sur le matériel sous-jacent. Il a ensuite identifié une ressource de secours et a effectué la migration de la charge de travail, avec une fenêtre de rétablissement prévue de cinq à dix minutes.

Ce qui est techniquement intéressant, c'est le cheminement, pas le résultat. Aucun manuel de procédure ne code « défaillance de pod vers erreur mémoire vers migration de charge de travail ». Cette chaîne a traversé deux serveurs MCP conçus indépendamment, et elle a tenu parce que les deux exposaient des outils fiables sous la même identité utilisateur, permettant au modèle de continuer à descendre dans les couches jusqu'à ce que les preuves soient établies. Cette capacité provenait de la couche d'outils, que NetApp a conçue et développée. Notre rôle était de rendre son exposition sûre et d'offrir à la boucle un environnement durable pour s'exécuter.

MODE DE DÉFAILLANCE

Mur de contexte

Où la boucle a rompu : le contexte est le véritable défi d'ingénierie

Trente itérations de sorties brutes kubectl et de logs ont un effet prévisible sur une fenêtre de contexte. Les investigations commençaient à échouer en cours de route.

Ce que nous avons reçu n'était pas une demande de fonctionnalité. C'était un rapport de bug, et un rapport bien argumenté :

« Ce n'est pas un problème de prompt. Ce n'est pas un problème de prompt système. C'est un problème d'interface utilisateur. »
— David Fox · DIRECTEUR PRINCIPAL, INGÉNIERIE DE PLATEFORME DÉVELOPPEUR, NETAPP

Il avait écarté les suspects coûteux, ce qui constitue la partie la plus ardue de tout diagnostic : ce n'était ni le modèle, ni le prompt, ni les outils. La couche qu'il pointait du doigt se situait juste sous l'interface, celle qui décide de ce qui reste dans le contexte, de ce qui est résumé, et de ce qui est exécuté ailleurs sans jamais entrer dans le contexte.

Nous n'avions pas cette couche. Nous étions partis du principe, à tort, que la boucle intermédiaire relevait de la responsabilité du client. C'est cette hypothèse que NetApp a fait voler en éclats, et c'est celle sur laquelle repose encore, selon nous, une grande partie du marché.

Fonctionnalités

Ce qu'est TrueForge : huit éléments qui maintiennent une boucle en vie

La suite de nos réalisations nous appartient, et personne ne nous a rien demandé. NetApp a identifié le mur ; la conception de ce qui l'a franchi est notre œuvre, éprouvée chaque semaine face à leur charge de travail réelle.

Bac à sable

Exécution isolée pour le code, les fichiers et les commandes shell. Au lieu d'importer des mégaoctets de journaux dans le contexte pour que le modèle les lise, l'agent exécute du code sur ces données et ne renvoie que la réponse. Les secrets n'entrent jamais dans le bac à sable.

Approbations avec intervention humaine

Dès qu'un agent peut migrer une charge de travail hors d'un matériel défaillant, quelqu'un doit pouvoir dire « pause » et demander une confirmation préalable. L'exécution s'arrête pour approbation à des points définis.

SDK et API REST

Les agents deviennent des services appelables, intégrables dans n'importe quelle interface plutôt que d'être confinés à la nôtre. Une demande de NetApp, et celle qui a le plus transformé le produit.

Ingénierie du contexte

Compactage automatique à mesure que la fenêtre se remplit ; résultats d'outils volumineux déchargés vers le stockage plutôt qu'intégrés ; chargement différé des outils, afin que plus d'une centaine de définitions d'outils n'encombrent pas la fenêtre avant le début du travail.

Bac à sable pour agents

Une interface de création et de test pour ceux qui ne programmeront jamais en Python, et qui ne devraient pas avoir à le faire.

Mode Code

Permet au modèle d'enchaîner plusieurs appels d'outils dans un script isolé plutôt que de payer un aller-retour de modèle par appel. Conçu pour les tâches de diffusion comme l'analyse de huit clusters.

Limites d'itération configurables

C'était banal, et pourtant crucial. Le plafond de NetApp est passé de 30 à 40 puis 50 à mesure que les outils s'enrichissaient. Toute limite codée en dur aurait été erronée à chaque étape de cette courbe.

Sous-agents

Permet à une investigation longue de déléguer une sous-tâche fastidieuse et de recevoir une conclusion plutôt qu'une transcription. Le contexte parent reste propre sur plus de 30 itérations.

MISE À L'ÉCHELLE

Un → Flotte

D'un agent à une flotte

Une seconde équipe de NetApp est arrivée indépendamment. Vimal Kannan, directeur informatique pour les données d'entreprise et l'analytique, gère NetAI Chat, l'assistant interne de NetApp. Son problème tenait à l'étendue plutôt qu'à la profondeur : de nombreuses équipes, de nombreux outils, de nombreux modèles, le tout nécessitant une gouvernance centralisée.

Aujourd'hui, environ 150 outils sont accessibles via un seul Serveur MCP Virtuel — un point de terminaison unique qui centralise de nombreux serveurs MCP, permettant au client de se connecter une seule fois au lieu d'être configuré pour chacun d'eux. Le contrôle d'accès par utilisateur détermine ce que chaque individu peut invoquer, et les Compétences (instructions packagées pour une tâche récurrente) sont délimitées de sorte qu'une équipe ne voit que ce qui lui appartient. Des milliers d'employés de NetApp accèdent à ces outils via la passerelle sans jamais ouvrir une console TrueFoundry. La gouvernance est invisible pour eux, et c'est bien là l'objectif.

Parce que l'équipe d'ingénierie de plateforme développeur nous avait poussés à exposer les agents sous forme de SDK et d'API, l'équipe NetAI Chat a pu appeler ces agents directement depuis sa propre interface. Deux efforts indépendants sont devenus une plateforme unique, désormais sous une direction commune assurée par Rob Rubin, couvrant les modèles, les outils, les agents et un Registre d'Agents qui répertorie ce qui existe et qui en est responsable.

Un agent Kubernetes est devenu plusieurs en production, avec d'autres en cours de développement et un générateur d'agents interne sur la feuille de route. À ce stade, le problème change de nature :

« Nous avons beaucoup de dispersion que nous essayons de réduire. » [...] « Nous ne voulons pas, vous savez, que 20 personnes construisent quelque chose de similaire [...] nous voulons pouvoir dire : hé, cet agent existe déjà. Utilisez simplement celui-là. »
— ROB RUBIN · DIRECTEUR PRINCIPAL, INGÉNIERIE DE PLATEFORME DÉVELOPPEUR, NETAPP

C'est le problème qui survient quand l'adoption fonctionne. Elle arrive plus vite que ce que la plupart des équipes avaient prévu.

MISE À L'ÉCHELLE

Attribution

La question des coûts est une question de contrôle

Un moteur d'exécution ouvert et auto-hébergé élimine la facture par utilisateur d'une plateforme gérée. Ce n'est pas là l'aspect le plus intéressant, et ce n'est pas la raison pour laquelle NetApp est ici.

« Nous essayons vraiment de maîtriser nos dépenses en IA [...] et nous voulons absolument les rattacher à chaque équipe, et même jusqu'à l'utilisateur final. »
— ROB RUBIN · DIRECTEUR PRINCIPAL, INGÉNIERIE DE PLATEFORME DÉVELOPPEUR, NETAPP

Parallèlement à l'attribution, il y a le problème de la discipline : les utilisateurs se tournent vers le plus gros modèle alors qu'un plus petit suffirait. Les deux problèmes se règlent au même endroit. Chaque appel de modèle et chaque appel d'outil est associé à une personne et à une équipe, avec des budgets et des limites de débit réellement contraignants, et un routage qui dirige le travail vers le modèle approprié plutôt que vers le plus gros disponible.

Nous n'avons pas fini. Rob souhaite une application du budget par exécution plutôt que par semaine, et il a raison : un plafond hebdomadaire est trop imprécis lorsqu'un agent à exécution longue peut l'épuiser en une seule investigation.

C'est aussi pour cette raison que le harness et la passerelle doivent appartenir au même système. Un harness seul vous donne un agent. Un harness intégré à un plan de contrôle gouverné vous donne un agent que vos équipes de sécurité et de finance pourront valider.

DÉCISION

Open Source

Pourquoi nous passons à l'open source

Un client, aussi avancé soit-il, ne constitue qu'un seul point de données. NetApp a rencontré une limite contextuelle en menant des investigations de 30 itérations sur huit clusters. Une équipe travaillant sur des flux documentaires, le traitement de dossiers ou le tri de tickets CI rencontrera une limite différente, et nous préférons l'apprendre du marché plutôt que de notre propre feuille de route.

Il existe une raison plus pragmatique. Une équipe qui a refusé les connecteurs propriétaires en 2025 n'allait jamais miser son infrastructure Kubernetes sur un moteur d'exécution qu'elle ne pouvait ni lire, ni exécuter elle-même, ni modifier. La portabilité était la condition sine qua non de toute cette collaboration. En rendant le harness open source, nous prenons cette condition au sérieux plutôt que de demander à être crus sur parole.

NOTES

Équipes plateforme

Ce que je retiendrais si je dirigeais une équipe plateforme

/01
Maîtrisez la couche d'outils.

La capacité différenciée de NetApp, de Kubernetes jusqu'au matériel, existe parce que leurs ingénieurs ont écrit leurs propres serveurs MCP pour leurs propres systèmes. Aucun fournisseur n'aurait pu fournir cela. Le rôle de la plateforme est de les héberger, de les sécuriser et de les gouverner.

/02
La difficulté des agents ne réside pas dans la boucle.

C'est à la vingt-deuxième itération, quand le contexte est saturé de sorties de terminal et que l'investigation n'est pas terminée, que tout se joue. L'essentiel du travail d'ingénierie réside dans cet écart, qui reste invisible tant que vous ne faites pas tourner un processus assez longtemps pour y être confronté. Un test simple : si vos agents dépassent régulièrement dix appels d'outils par tâche, vous finirez par vous heurter à ce mur.

/03
L'identité d'abord, sinon rien n'atteint la production.

Chaque agent qui bloque lors de la revue se heurte à la même question : que peut faire cet outil, et avec quelles permissions ? Répondez-y au niveau de l'infrastructure, et la réponse sera valable pour tous les agents suivants.

/04
Ne fixez pas de plafond en dur.

Limites d'itération, budgets de contexte, nombre d'outils : chez NetApp, tous ces paramètres ont évolué en quelques mois. Gérez-les comme de la configuration.

/05
Rendez les agents appelables dès le premier jour.

Un agent qui ne fonctionne qu'au sein de l'interface utilisateur d'un fournisseur ne peut être intégré à rien. Le SDK et l'API ont été le catalyseur qui a permis à deux équipes de NetApp de ne former qu'une seule plateforme.

DÉCISION

Open source

Essayer

TrueForge est open source, sous licence MIT, disponible sur github.com/truefoundry/trueforge. Le mur auquel NetApp s'est heurté est désormais un obstacle que vous pouvez rencontrer avec vos propres charges de travail, avec la couche qui l'a franchi déjà entre vos mains.

Cela lance le harness et son interface utilisateur sur votre machine. Lorsque vous êtes prêt pour une utilisation réelle, auto-hébergez-le avec Docker Compose ou Kubernetes dans votre propre environnement. Connectez-le à n'importe quel modèle via un point de terminaison compatible OpenAI, reliez vos serveurs MCP, et vous disposez d'un agent opérationnel.

Le harness est autonome ; les passerelles vous permettent de le piloter. Exécutez TrueForge seul et vous bénéficiez de la boucle complète : exécution en bac à sable, ingénierie de contexte, sous-agents, approbations, SDK et API. Vous gérez vos propres modèles et clés MCP. Associez-le aux passerelles AI Gateway et MCP Gateway de TrueFoundry, et chaque appel de modèle, appel d'outil et interaction MCP devient authentifié, budgétisé, soumis à des politiques et consigné sous une identité utilisateur réelle, la couche à laquelle l'examen de sécurité de NetApp accordait réellement de l'importance.