SSD Nodes Learn Hosting plans →
Guides Matt ConnorPar Matt Connor · Mis à jour le 2026-08-27

Qu’est-ce qu’un agent harness ?

Un agent harness exécute la boucle autour du modèle, gère ses outils, permissions et session. Découvrez ce qui le distingue d’un modèle et d’un framework.

Ce qu’est un agent harness

Un agent harness est le programme qui exécute la boucle autour d’un modèle de langage et le transforme en agent. Il contient la boucle qui rappelle le modèle, les définitions des outils qu’il 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 et le répertoire de travail où les opérations sont effectuées. Le modèle peut être remplacé à l’intérieur de cette structure.

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 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

La confusion vient du fait que les éditeurs les distribuent sous une même marque.

dsh et DeepSeek sont des produits différents. DeepSeek Harness, publié à 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). Pointez dsh vers un modèle d’un autre éditeur et il continue de fonctionner, car le harness a seulement besoin d’un composant qui accepte des messages et renvoie des tool calls.

Claude Code et Claude forment le même duo. Claude Code est un harness : un programme de terminal avec une boucle d’exécution, un système de permissions et 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 sont séparés de la même façon.

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 d’un harness se déroule ainsi. 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’outil ou s’arrête pour vous demander confirmation.
  4. Le harness exécute l’outil, récupère 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 dans l’usage quotidien. Un harness qui demande confirmation avant chaque commande est sûr, mais épuisant. Un harness qui ne demande jamais 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.

C’est à l’étape 1 que se trouve le reste des différences. Le harness ajoute aussi le system prompt transmis avec chacune de ces requêtes. Claude Code vous donne directement accès à ce réglage, car un output style modifie le system prompt qu’il envoie et modifie donc chaque réponse reçue. La conversation s’allonge à chaque tour et un 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 pilotant le même modèle produisent des résultats différents. Si ces cinq étapes restent abstraites, écrivez une fois votre propre boucle rudimentaire. C’est exactement ce que un parcours progressif pour apprendre les agents IA vous fait construire dès le début.

La plupart des harnesses attachent 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. Exécuter des serveurs MCP sur un VPS couvre cet aspect. La recherche Web est généralement le premier outil ajouté. Diriger l’agent vers votre propre instance SearXNG permet de garder les requêtes hors d’un service tiers et montre clairement que chaque page ensuite lue par l’agent est une entrée non fiable reçue à l’intérieur de la boucle.

Harness d’agent et framework d’agent

Cette question revient chaque fois qu’un nouveau harness sort, 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 est l’exemple le plus connu : vous disposez de briques et vous assemblez 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 dispose déjà de valeurs par défaut. Vous obtenez un agent fonctionnel dès la première commande, puis vous le configurez.

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

La frontière est réellement discutée, et la documentation de LangChain elle-même en est l’illustration 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 présente comme « the batteries-included agent harness ». Les deux descriptions sont justes. Deep Agents est un SDK Python (software development kit) que vous importez : le test de l’installation le classe donc parmi les bibliothèques, et il fournit suffisamment de comportements par défaut pour que les utilisateurs s’en servent comme d’un harness. Microsoft a rendu un harness et des agents hébergés disponibles en disponibilité générale en août 2026, ce qui montre que le terme désigne désormais une catégorie de produits plutôt qu’un jargon.

Posez plutôt la question qui permet de prévoir votre charge de travail. Si vous écrivez la boucle, vous en êtes responsable : tentatives répétées, réduction du contexte, demandes de permission et historique des opérations. Si la boucle est déjà fournie, vous héritez des réponses d’un tiers à 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 tient à l’ordinateur sur lequel le travail est effectué. Dans une fenêtre de chat, tout 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 où vous l’avez lancé, avec l’utilisateur qui l’a lancé, sur vos vrais fichiers et avec vos vrais identifiants disponibles dans son environnement.

Cela résume à la fois tout l’intérêt et tout le risque, en deux phrases. L’agent peut enfin effectuer le travail. Il peut aussi supprimer le travail.

Les harnesses réellement utilisés

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 harnesses fournis par leurs éditeurs. Ils privilégient le terminal et sont liés par défaut aux modèles de leur propre éditeur. Leur gestion des permissions est 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 sandboxes et l’interface utilisateur sont donc interchangeables. Chaque plugin installé s’exécute avec les permissions de l’agent. Il est donc plus important ici de vérifier ce qu’un plugin dsh peut atteindre avant de l’ajouter qu’avec un harness dont l’ensemble d’outils est fixe. Il comptait environ 166,800 étoiles sur GitHub le 19 août 2026, 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 distribué sous licence MIT depuis février 2026 et conserve ses mémoires et ses compétences dans une base SQLite locale sur votre propre machine. Auto-héberger Hermes sur un VPS présente la procédure.
  • Omnigent est un méta-harness : il pilote d’autres harnesses, 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 cette approche apporte.
  • OneCLI est un harness isolé destiné aux équipes. Il repose sur une gateway qui injecte de véritables identifiants dans les requêtes sortantes. L’agent ne voit donc que des clés fictives.

Trois de ces outils figurent assez souvent sur la même liste restreinte pour qu’il soit utile de lire DeepSeek Harness, Claude Code et Omnigent comparés au sujet du couplage aux modèles, de la licence, de la maturité et des éléments nécessaires pour les exécuter sur un serveur.

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 sur http://127.0.0.1:3080. Lisez le README avant de vous y fier, car dsh se présente comme une version d’évaluation destinée aux développeurs et indique clairement que des changements incompatibles sont prévus. Si cette première commande échoue complètement ou récupère un build inattendu, épingler une version exacte de dsh et vider le cache npx permet généralement de reprendre l’installation. Exécuter DeepSeek Harness sur un VPS couvre l’installation sur le serveur, tandis que pourquoi cette adresse commence par 127.0.0.1 explique le comportement par défaut du loopback.

Les routeurs se placent au-dessus du harness

Un routeur de modèles est un proxy local entre le harness et l’API du fournisseur. Claude Code Router en est l’exemple courant : il se lie par défaut à 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 quoi que ce soit a changé.

Les routeurs existent parce que le modèle peut être remplacé. Ils illustrent donc bien le point principal 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, pas comme une simple commodité. Emplacement des clés d’API et des paramètres de modèle dans un 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 fermez le capot. Une tâche longue survit à votre trajet et à l’autonomie de votre batterie. Lancez-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 tout ce 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 l’élément souvent oublié. Sans lui, 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 fonctionne sur ce serveur, une deuxième ne vous coûte rien de plus. De plus, deux sessions Claude Code sur le même serveur peuvent s’envoyer des messages, de sorte que celle que vous avez lancée ce matin peut transmettre une tâche à l’autre sans que vous deviez faire suivre les informations 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 compte peut lire ce fichier. Cela inclut l’agent et tout ce que l’agent choisit d’exécuter.

Il peut accéder à vos autres machines. Un VPS situé sur le même réseau privé que vos autres machines fournit à l’agent une route vers celles-ci. C’est précisément l’objectif, mais c’est aussi l’étendue potentielle d’une compromission.

Il est accessible où que vous soyez. La plupart des harness exposent une interface web, et la plupart l’attachent à 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 au lieu 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. Rien de nouveau n’est donc exposé à Internet.

Chacune de ces propriétés constitue aussi un 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 chez le fournisseur. Il peut accéder à vos autres machines, donc une prompt injection, c’est-à-dire des instructions dissimulées dans une page web ou un fichier que l’agent lit, peut désormais 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 équivaut à un shell exposé sur l’Internet public.

Dans chaque cas, la correction est simple et identique. Donnez à 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 loopback et accédez-y via SSH. Donnez à l’agent les identifiants les plus limités qui lui permettent tout de même de terminer sa tâche. L’article conserver les secrets hors des agents IA explique comment procéder correctement. Pour tout ce qui s’exécute lorsque vous ne surveillez pas le système, une machine temporaire est préférable à une machine soigneusement configurée : exécuter des agents de code dans une VM temporaire et exécuter Claude Code en toute sécurité sur un VPS appliquent tous deux cette méthode.

Avez-vous besoin d’un agent harness ?

Si votre travail consiste à traiter une question à la fois, une fenêtre de chat suffit. Un harness ajoute seulement 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 à s’exécuter pendant votre sommeil.

Cette catégorie est encore récente. dsh indique « developer preview » dans son propre README en août 2026, et les autres projets évoluent assez vite pour qu’un fichier de configuration écrit aujourd’hui doive être modifié le mois prochain. Il est donc préférable de garder une configuration réduite et reproductible, et de noter les modifications effectuées. Cette retenue est également utile dans la boucle d’exécution : une skill qui pousse l’agent à effectuer la plus petite modification fonctionnelle vous laisse un diff réellement lisible à la fin d’une exécution sans supervision. Commencez avec un seul harness sur un seul serveur, donnez-lui une seule tâche et une seule clé aux droits limités, puis élargissez son accès seulement après une semaine de fonctionnement sans incident. Les agents auto-hébergés qui valent la peine d’être exécutés aujourd’hui est 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 envoie les demandes successives, lance les outils demandés par le modèle, applique les règles concernant les outils pouvant 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 ces deux éléments sont distincts.

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

Claude Code est un harness. C’est un programme de terminal qui intègre une boucle, un système d’autorisations et des outils intégrés pour les fichiers et le shell. Claude désigne la famille de modèles appelée par défaut. La même séparation s’applique à DeepSeek Harness (dsh), qui est 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 contre 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 floue en pratique : Deep Agents de LangChain est un SDK importable que son propre dépôt qualifie d’agent harness prêt à l’emploi, 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 fonctionnent sur un ordinateur portable. Un serveur apporte quatre changements : 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 points constitue aussi un enjeu de sécurité. Donnez donc à l’agent son propre compte utilisateur et gardez toute interface web liée à 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 base URL dans leur configuration. Pointer le 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 et traduire les requêtes. Il se lie par défaut à 127.0.0.1:3456. Soyez prudent avec ce proxy, car il voit chaque prompt et conserve chaque clé.