SSD Nodes Learn 🎉 VPS dès $5.50/mois
Guides Matt ConnorPar Matt Connor · Mis à jour le 2026-08-21

Qu’est-ce qu’un harness d’agent ?

Découvrez ce qu’est un harness d’agent : boucle d’exécution, outils, permissions, état de session et répertoire de travail, sans le confondre avec un modèle.

Ce qu’est un harness d’agent

Un harness d’agent est le programme qui s’exécute autour d’un modèle de langage et le transforme en agent. Il contient la boucle qui appelle le modèle en continu, les définitions des outils que le modèle peut appeler, les règles d’autorisation qui déterminent quels appels sont réellement exécutés, l’état de session conservé entre les tours, ainsi que le répertoire de travail où les opérations sont effectuées. Le modèle peut être remplacé à l’intérieur du harness.

C’est la dernière phrase qu’il faut retenir. Un modèle seul répond à une question, puis vous oublie. Un harness demande au modèle quoi faire ensuite, exécute la commande demandée par le modèle, lui renvoie le résultat, puis lui pose à nouveau la question. Cette répétition correspond à ce que l’on appelle un « agent ». Si le vocabulaire environnant reste flou, la différence entre un agent IA, un LLM et un assistant permet de clarifier les termes avant de choisir un outil.

Le harness n’est pas le modèle

Les deux sont souvent confondus parce que les éditeurs les commercialisent sous une même marque.

dsh et DeepSeek sont des produits différents. DeepSeek Harness, publié à l’adresse github.com/deepseek-ai/deepseek-harness le 13 August 2026 sous licence MIT, est un programme Node que vous installez sur une machine. Les modèles DeepSeek sont des weights servis derrière une API (application programming interface). Configurez dsh pour utiliser le modèle d’un autre éditeur : il continue de fonctionner, car le harness a seulement besoin d’un service qui accepte des messages et renvoie des tool calls.

Claude Code et Claude forment le même type de paire. Claude Code est un harness : un programme de terminal avec une boucle d’exécution, un système de permissions, ainsi que des outils pour les fichiers et le shell. Claude est la famille de modèles qu’il appelle par défaut. Codex et Gemini CLI se répartissent de la même manière.

Voici le test qui permet de trancher à chaque fois. Vous installez un harness. Vous appelez un modèle. Si le composant possède une version sur votre disque et un fichier de configuration dans votre répertoire personnel, c’est un harness. S’il s’agit d’une chaîne dans ce fichier de configuration, comme deepseek-chat, c’est le modèle.

Ce que fait réellement la boucle

Un tour de boucle du harness se déroule comme suit. Lisez cette séquence attentivement, car presque toutes les différences entre les harnesses se trouvent dans ces cinq étapes.

  1. Le harness envoie au modèle la conversation en cours, ainsi qu’une liste de définitions d’outils.
  2. Le modèle répond avec du texte ou demande l’appel de l’un de ces outils.
  3. Le harness vérifie cette demande selon ses règles d’autorisation, puis exécute l’appel ou s’arrête pour vous demander confirmation.
  4. Le harness exécute l’outil, capture sa sortie et son code de retour, puis tronque la sortie si elle est très longue.
  5. Le harness ajoute ce résultat à la conversation et revient à l’étape 1.

C’est à l’étape 3 que les harnesses diffèrent le plus au quotidien. Un harness qui demande une confirmation avant chaque commande est sûr, mais épuisant. Un harness qui ne demande jamais de confirmation finira par exécuter une commande destructive sur un chemin mal identifié par le modèle. Tous les harnesses sérieux proposent désormais un réglage intermédiaire : une allowlist de commandes exécutées sans confirmation, et une demande de confirmation pour tout le reste.

Le reste des différences se trouve à l’étape 1. La conversation s’allonge à chaque tour, alors que le modèle dispose d’une fenêtre de contexte fixe. Le harness doit donc décider quoi supprimer, quoi résumer et quoi écrire dans un fichier pour le relire plus tard. Cette décision explique en grande partie pourquoi deux harnesses qui pilotent le même modèle produisent un travail de qualité différente.

La plupart des harnesses connectent désormais des outils externes via MCP (model context protocol), une méthode standard pour exposer un outil à tout harness compatible. Une seule intégration peut ainsi servir à plusieurs harnesses. La section Exécuter des serveurs MCP sur un VPS couvre cet aspect.

Agent harness ou framework d’agent

Cette question revient chaque fois qu’un nouveau harness est publié, et les réponses divergent, en partie parce que les éditeurs ne sont pas d’accord entre eux. Voici la distinction qui reste valable.

Un framework est une bibliothèque que vous importez. Vous écrivez la boucle, vous décidez quand appeler le modèle et vous gérez vous-même les résultats des outils. LangChain en est l’exemple le plus connu : vous disposez de briques que vous assemblez pour créer l’agent dans le code.

Un harness est un programme que vous exécutez. La boucle est déjà écrite, les outils existent déjà et le modèle de permissions possède déjà une configuration par défaut. Vous obtenez un agent fonctionnel dès la première commande, puis vous le configurez.

Le test d’installation permet généralement de trancher. Si vous l’installez, puis écrivez du code, c’est un framework. Si vous l’installez, puis interagissez avec lui, c’est un harness.

La frontière fait réellement débat. La documentation de LangChain en est la preuve la plus claire. En août 2026, elle décrit Deep Agents comme un framework « opinionated, batteries-included » construit sur LangGraph, tandis que le dépôt langchain-ai/deepagents se décrit comme « the batteries-included agent harness ». Les deux descriptions sont justes. Deep Agents est un SDK Python (kit de développement logiciel) que vous importez. Le test d’installation le classe donc parmi les bibliothèques, mais il fournit suffisamment de comportements par défaut pour que les utilisateurs l’emploient comme un harness. Microsoft a publié un harness et des agents hébergés en disponibilité générale en août 2026. Cela montre que le terme désigne désormais une catégorie de produits plutôt qu’un simple jargon.

Posez plutôt la question qui permet de prévoir votre charge de travail. Si vous écrivez la boucle, vous en êtes responsable : nouvelles tentatives, réduction du contexte, demandes d’autorisation et historique de ce qui s’est produit. Si la boucle est fournie avec le produit, vous héritez des réponses de quelqu’un d’autre à toutes ces questions. Le démarrage est beaucoup plus rapide, mais les modifications ultérieures sont plus difficiles.

Différences entre un harness et une fenêtre de chat

Une fenêtre de chat et un harness affichent tous deux la sortie du modèle. La différence concerne l’ordinateur sur lequel le travail est effectué. Dans une fenêtre de chat, le code exécuté par le modèle s’exécute dans le sandbox du fournisseur, sur les fichiers que vous avez importés, puis disparaît à la fin de la session. Un harness exécute les outils sur la machine depuis laquelle vous l’avez lancé, avec les droits de l’utilisateur qui l’a lancé, sur vos vrais fichiers et avec vos vrais identifiants dans son environnement.

Ces deux phrases résument tout l’intérêt et tout le risque. L’agent peut enfin effectuer le travail. Il peut aussi supprimer ce travail.

Les harness que les utilisateurs exécutent réellement

Cette liste est datée du 19 août 2026 à dessein. La catégorie évolue chaque semaine et tout récapitulatif devient rapidement obsolète.

  • Claude Code et Codex sont des harness fournis par leurs éditeurs. Ils privilégient le terminal, sont liés par défaut aux modèles de leur propre éditeur et offrent la gestion des permissions la plus aboutie. Comparaison de Claude Code, Cursor, Codex et Copilot les présente en détail.
  • DeepSeek Harness (dsh) est distribué sous licence MIT et repose sur une idée simple : tout est un plugin. Les modèles, les outils, les sessions, les sandbox et l’interface utilisateur sont donc des composants interchangeables. Il comptait environ 166,800 étoiles sur GitHub le 19 août 2026, soit six jours après sa publication.
  • Hermes, développé par Nous Research, est un agent autonome généraliste plutôt qu’un outil de développement. Il est sorti sous licence MIT en février 2026 et stocke ses mémoires et ses compétences dans une base SQLite locale sur votre propre machine. Auto-héberger Hermes sur un VPS explique la procédure.
  • Omnigent est un meta-harness : il pilote d’autres harness, notamment Claude Code et Codex, derrière une API unique avec des sessions partagées, des plafonds de dépenses et une sandbox au niveau du système d’exploitation. Omnigent comme harness multi-agent explique ce que cela permet.
  • OneCLI est un harness isolé destiné aux équipes. Il repose sur une gateway qui injecte les identifiants réels dans les requêtes sortantes. L’agent ne voit donc que des clés fictives.

Le démarrage rapide de dsh tient en une seule commande. L’exécuter une fois est le moyen le plus rapide de comprendre ce qu’est un harness. Node.js doit être installé sur la machine.

npx @deepseek-ai/dsh web

Cette commande démarre l’interface web (user interface) sur http://127.0.0.1:3080. Lisez le README avant de vous y fier, car dsh se présente comme une developer preview et indique clairement que des changements incompatibles sont prévus. Exécuter DeepSeek Harness sur un VPS couvre l’installation sur le serveur, et pourquoi cette adresse commence par 127.0.0.1 explique le comportement par défaut de la loopback.

Les routeurs se placent au-dessus du harness

Un routeur de modèles est un proxy local placé entre le harness et l’API du fournisseur. Claude Code Router en est l’exemple courant : il écoute par défaut sur 127.0.0.1:3456, accepte les requêtes que Claude Code aurait envoyées à son propre fournisseur, puis les transmet au fournisseur que vous avez configuré. Le harness ne sait pas que quelque chose a changé.

Les routeurs existent parce que le modèle peut être remplacé. Ils illustrent donc bien l’idée principale de cet article. Ils concentrent aussi les risques, car le proxy voit chaque prompt et détient chaque clé de fournisseur. Traitez-le comme une infrastructure, et non comme un simple outil pratique. Emplacement des clés d’API et des paramètres de modèle du harness pose le même problème, un niveau plus bas.

Ce qui change lorsque le harness s’exécute sur un VPS

Quatre éléments changent lorsque le harness quitte votre ordinateur portable pour s’exécuter sur un serveur que vous louez.

Il continue de fonctionner lorsque vous rabattez l’écran. Une tâche longue survit à votre trajet et à votre batterie. Démarrez-la dans tmux, puis détachez-vous de la session :

tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agent

Pour toute tâche qui doit redémarrer après un reboot, un service utilisateur est préférable à une session de terminal :

loginctl enable-linger $USER
systemctl --user status my-agent.service

loginctl enable-linger est le point souvent oublié. Sans ce paramètre, systemd arrête les services de votre utilisateur dès que votre dernière session SSH (secure shell) se ferme. L’agent s’arrête donc lorsque vous vous déconnectez, sans afficher d’erreur. Exécuter dsh sans interface sous systemd contient le fichier d’unité. Une fois qu’une session s’exécute sur ce serveur, une deuxième ne coûte rien de plus. De plus, deux sessions Claude Code sur le même serveur peuvent s’envoyer des messages, et celle que vous avez démarrée ce matin peut donc transmettre une tâche à l’autre sans que vous ayez à la relayer manuellement.

Il conserve vos clés. La clé du fournisseur se trouve désormais dans un fichier de configuration sur ce serveur. Vérifiez qui peut le lire :

ls -l ~/.config

Tout processus exécuté avec votre utilisateur peut lire ce fichier. Cela inclut l’agent et tout ce que l’agent décide d’exécuter.

Il peut accéder à vos autres machines. Un VPS situé sur le même réseau privé que vos autres serveurs fournit à l’agent une route vers ces machines. C’est précisément l’objectif, mais c’est aussi la surface d’impact.

Il est accessible où que vous soyez. La plupart des harness exposent une interface web, et la plupart l’associent à loopback pour une bonne raison. Vérifiez la vôtre :

ss -tlnp | grep 3080

127.0.0.1:3080 signifie que seul le serveur lui-même peut se connecter. 0.0.0.0:3080 signifie que toute personne qui trouve l’adresse peut se connecter. Accédez à une interface loopback via un tunnel SSH plutôt que de modifier l’adresse d’écoute :

ssh -N -L 3080:127.0.0.1:3080 you@your-server

Ouvrez ensuite http://127.0.0.1:3080 dans le navigateur de votre ordinateur portable. Le trafic circule à l’intérieur de la session SSH, donc rien de nouveau n’est exposé à Internet.

Tous ces points constituent aussi l’argument de sécurité

Relisez ces quatre propriétés du point de vue d’un attaquant.

Le programme s’exécute sans intervention, donc personne ne surveille le moment où le modèle interprète mal un chemin. Il contient vos clés, donc un seul fichier de configuration lisible suffit à compromettre tout votre compte auprès du fournisseur. Il peut atteindre vos autres machines, donc une injection de prompt, c’est-à-dire des instructions dissimulées dans une page web ou un fichier que l’agent lit, peut alors atteindre votre serveur de base de données. Il est accessible depuis n’importe où, donc une interface web liée à 0.0.0.0 sans mot de passe revient à exposer un shell sur Internet.

Dans chaque cas, la correction est simple et toujours identique. Attribuez à l’agent son propre compte utilisateur sans privilèges, au lieu d’utiliser le vôtre :

sudo adduser --disabled-password --gecos "" agent

Laissez l’interface web sur la boucle locale et accédez-y via SSH. Donnez à l’agent les identifiants les plus restreints possible tout en lui permettant de terminer la tâche ; l’article garder les secrets hors des agents IA explique ce point correctement. Pour tout ce qui s’exécute sans surveillance, une machine jetable est préférable à une machine soigneusement configurée : exécuter des agents de programmation dans une VM jetable et exécuter Claude Code en toute sécurité sur un VPS suivent toutes deux cette approche.

Faut-il utiliser un agent harness ?

Si votre travail consiste à traiter une question à la fois, une fenêtre de chat suffit. Un harness ne fait alors qu’ajouter une boucle que vous devez superviser. Un harness devient utile lorsqu’une tâche comporte de nombreuses étapes sur des fichiers réels ou lorsqu’elle doit continuer à fonctionner pendant votre sommeil.

La plupart des outils de cette catégorie sont récents. dsh indique « developer preview » dans son propre README en août 2026, et les autres évoluent suffisamment vite pour qu’un fichier de configuration écrit aujourd’hui doive être modifié le mois prochain. Il est donc préférable de conserver une configuration réduite et reproductible, et de noter les modifications effectuées. La même retenue est utile dans la boucle : une compétence qui pousse l’agent à effectuer la plus petite modification fonctionnelle vous laisse un diff que vous pouvez réellement lire à la fin d’une exécution sans surveillance. Commencez avec un seul harness sur un seul serveur, donnez-lui une seule tâche et une seule clé aux permissions limitées, puis élargissez son accès uniquement lorsque cette première tâche s’est exécutée sans incident pendant une semaine. Les agents auto-hébergés qui valent la peine d’être exécutés aujourd’hui constituent un bon point de départ pour choisir le premier.

FAQ

Qu’est-ce qu’un agent harness, en termes simples ?

C’est le programme qui entoure le modèle. Le modèle produit du texte et demande à utiliser des outils. Le harness exécute la boucle qui continue à envoyer des demandes, exécute les outils demandés par le modèle, applique les règles déterminant quels outils peuvent s’exécuter sans autorisation, et conserve l’état de la session ainsi que les fichiers entre les tours. Si vous remplacez le modèle, le harness continue de fonctionner. C’est le signe le plus clair que les deux sont distincts.

Claude Code est-il un modèle ou un harness ?

Claude Code est un harness. C’est un programme de terminal doté d’une boucle, d’un système d’autorisations et d’outils intégrés pour les fichiers et le shell. Claude est la famille de modèles qu’il appelle par défaut. La même séparation s’applique à DeepSeek Harness (dsh), un programme Node que vous installez, et aux modèles DeepSeek, qui sont fournis via une API. Vous installez un harness sur une machine. Vous appelez un modèle sur le réseau.

Quelle est la différence entre un agent harness et un agent framework ?

Un framework est une bibliothèque que vous importez et avec laquelle vous écrivez du code. Vous contrôlez donc la boucle, les nouvelles tentatives et la gestion du contexte. Un harness est un programme que vous exécutez. Tous ces éléments sont donc fournis avec des valeurs par défaut que vous configurez au lieu de les écrire. La distinction est parfois floue en pratique : Deep Agents de LangChain est un SDK importable que son propre dépôt qualifie d’agent harness complet, en août 2026. Demandez-vous si vous allez écrire vous-même la boucle. La réponse détermine le terme adapté à votre situation.

Ai-je besoin d’un VPS pour exécuter un agent harness ?

Non. Tous les harness mentionnés ici s’exécutent sur un ordinateur portable. Un serveur modifie quatre éléments : l’agent continue de fonctionner lorsque vous fermez le capot, il conserve vos clés sur une machine toujours allumée, il peut accéder à vos autres serveurs et vous pouvez reprendre la même session depuis n’importe quel appareil. Chacun de ces éléments constitue aussi un point de sécurité. Donnez donc à l’agent son propre compte utilisateur et liez toute interface web à 127.0.0.1.

Puis-je utiliser un autre modèle dans le même harness ?

En général, oui. C’est même la propriété qui définit un harness. La plupart acceptent un nom de modèle et une URL de base dans leur configuration. Pointer un harness vers un autre fournisseur consiste donc à modifier la configuration, et non à réécrire le programme. Lorsqu’un harness ne le permet pas facilement, un routeur local tel que Claude Code Router peut s’intercaler entre le harness et le fournisseur pour traduire les requêtes, en écoutant par défaut sur 127.0.0.1:3456. Soyez prudent avec ce proxy : il voit chaque prompt et conserve chaque clé.