Harness
Le cadre d'exécution qui entoure un agent ou un outil : il gère les permissions, les appels, les erreurs et les logs sans que le modèle s'en préoccupe.
Le filet de sécurité du trapéziste
Le trapéziste fait ses figures. Il ne pense pas au filet en dessous. Mais si quelque chose se passe mal, le filet est là.
Le harness, c'est le filet. L'agent (ou le modèle) s'occupe de raisonner et d'agir. Le harness s'occupe du reste : est-ce que cet appel est autorisé ? Est-ce que le résultat a bien été reçu ? Est-ce qu'il faut relancer en cas d'erreur ? Où est-ce qu'on log tout ça ?
Ce que le harness gère concrètement
- Permissions : quels outils l'agent a le droit d'appeler, sur quels fichiers ou APIs
- Gestion d'erreurs : si un outil échoue, retry ou fallback automatique
- Logging : trace de chaque action pour audit ou debug
- Limites : budget de tokens, nombre max d'actions, timeout
- Contexte : inject le bon contexte (mémoire, fichiers) avant chaque appel
Exemples concrets
- Claude Code tourne dans un harness qui contrôle l'accès au système de fichiers et demande confirmation pour les actions destructives
- Un agent de production a un harness qui bloque l'accès à la base de données en écriture hors fenêtre de maintenance
- Hermes (VPS Browse Club) a un harness qui log chaque commande exécutée et notifie en cas d'erreur
Pour aller plus loin
Dans le SDK Agents d'Anthropic, le harness correspond à la boucle d'orchestration : le code qui tourne autour du LLM, intercepte les tool_use blocks, exécute les fonctions, retourne les résultats.
En pratique, construire un bon harness c'est définir :
- Les outils disponibles (
toolsarray passé au modèle) - La boucle : tant que le modèle retourne
tool_use, exécuter et relancer - Les guardrails : whitelist d'actions autorisées, max iterations, budget
- L'observabilité : logs structurés, traces, alertes
while response.stop_reason == "tool_use":
tool_result = execute_tool(response.tool_name, response.tool_input)
response = client.messages.create(
messages=[..., tool_result]
)
C'est la différence entre un agent qui "tourne en prod" et un prototype : le harness.