درس 8 — Démo et marché

Face aux harness du marché

8 دقائق قراءة

هذا المحتوى غير مترجم بعد. تُعرض النسخة الأصلية.

Face aux harness du marché

Votre harness corrige un bug réel pour 5 centimes et vous savez exactement ce qu'il fait. La question suivante viendra vite d'un collègue : « pourquoi ne pas simplement utiliser Claude Code ? ». La bonne réponse n'est ni « le nôtre est mieux » ni « on jette le nôtre ». Elle dépend de qui utilise l'agent, sur quoi, et de qui doit pouvoir auditer ce qu'il a fait.

Le mécanisme : les mêmes briques, poussées plus loin

Les cinq outils ci-dessous reposent sur les briques que vous avez écrites. Le tableau dit ce qu'ils font de plus, d'après leur documentation publique consultée le 2026-10-15.

BriqueCe projetClaude CodeGemini CLICodex CLIOpenHandsAider
Isolation des commandessous-processus, unshare -rn, env vidéSeatbelt (macOS), bubblewrap + socat (Linux) : fichiers et réseauoptionnelle : Seatbelt, Docker/Podman, gVisor, LXCread-only / workspace-write / danger-full-access ; Seatbelt, bubblewrap, sandbox Windowsconteneur Docker par sessionaucune
Réseaucoupé ou ouvertproxy local, liste de domaines autorisés vide au départselon le profil de bac à sablesoumis à approbationcelui du conteneurouvert
Permissions3 modes, liste blanche par préfixemodes, règles allow/deny par outil et motif, hooks avant/après outilmodes d'approbation : default, auto_edit, yolo, planapproval_policy : on-request, neverconfirmation dans l'interfaceconfirmation des commandes
Points de repriserefs git par écritureinstantané par message, /rewind code et conversationdépôt git fantôme, /restore rejoue l'appel d'outilgithistorique d'événementsun commit par édition, /undo
Contextetroncature, compactioncompaction automatique et /compact, sous-agents à contexte neuf/compress, fichier GEMINI.mdfichier AGENTS.mdcondensation de l'historiquecarte du dépôt (tree-sitter)
Extensibilitémodifier le codeMCP, skills, sous-agents, pluginsMCP, extensionsMCPnavigateur, Jupyter, MCPmodes d'édition, lint et test automatiques
flowchart TD
  Q["Qui pilote l'agent ?"] -->|"un développeur, en interactif"| D["Harness du marché : Claude Code, Gemini CLI, Codex CLI, Aider"]
  Q -->|"un processus métier, sans humain au clavier"| P{"Besoins spécifiques ? outils maison, audit, conformité, modèle imposé"}
  P -->|"non"| H["Harness du marché en mode non interactif (Claude Agent SDK, codex exec, gemini -p)"]
  P -->|"oui"| O["Votre harness, ou un SDK d'agent que vous encadrez"]
  Q -->|"code non fiable, exécution longue"| C["Isolation par conteneur : OpenHands ou équivalent"]

Ce qu'ils font de plus, et qui compte vraiment

  1. Le confinement du système de fichiers. C'est l'écart le plus important. Claude Code et Codex CLI enferment les commandes dans un bac à sable du système d'exploitation (bubblewrap sous Linux, Seatbelt sous macOS) ; OpenHands exécute tout dans un conteneur. Votre bac à sable coupe le réseau mais laisse lire ~/.ssh (leçon 3). Sur un poste de développeur, c'est la première chose à rattraper.
  2. Le réseau filtré plutôt que coupé. Couper le réseau casse pip install et les tests qui appellent une API locale. Le proxy de Claude Code avec une liste de domaines autorisés laisse passer pypi.org et bloque le reste : plus utile qu'un interrupteur.
  3. La restauration de la conversation avec les fichiers. Votre undo remet les fichiers ; le modèle, lui, croit encore ses éditions faites. Gemini CLI restaure aussi la conversation et repropose l'appel d'outil ; Claude Code laisse choisir code, conversation ou les deux.
  4. La carte du dépôt. Sur 2 000 fichiers, votre agent cherche par regex et lit au hasard. Aider envoie une carte compacte des symboles (fonctions, classes) construite avec tree-sitter, ce qui réduit fortement les lectures exploratoires.
  5. Les hooks et les règles déclaratives. Une règle « interdire l'écriture dans migrations/ » ou « lancer le formateur après chaque édition » s'écrit en configuration, sans modifier le harness, et peut être imposée par l'entreprise.
  6. L'ergonomie et l'écosystème. Intégration IDE, MCP, sous-agents, skills, modèles réglés sur leurs outils. Ce sont des mois de travail d'équipes dédiées, évalués sur des milliers de tâches.

Ce que votre harness fait et qu'ils ne vous donnent pas

  • Un code de sortie qui dépend d'une vérification indépendante, branché sur votre CI ou votre file de tickets, sans interface.
  • Un journal dans votre format, dans votre stockage, exploitable pour l'audit et l'évaluation.
  • Vos outils métier comme outils de premier rang (API interne de facturation, base de test, outil de ticket), avec vos propres règles de permission.
  • Le choix du modèle et du prix : une variable d'environnement, y compris un modèle hébergé sur Vertex AI dans votre région.

Ce qui casse en production

  • Croire qu'un harness du marché est sûr par défaut. Les bacs à sable sont souvent optionnels ou réglables : le bac à sable de Gemini CLI s'active explicitement, Codex propose danger-full-access, Claude Code permet d'exclure des commandes du bac à sable. Auditez la configuration réelle des postes, pas la documentation.
  • Maintenir un harness maison sans évaluation. Sans jeu de tâches rejoué à chaque changement de prompt, d'outil ou de modèle, le vôtre se dégrade en silence. Le journal JSONL est la matière première de cette évaluation : gardez-le.
  • Mélanger les deux sans frontière. Les développeurs utilisent Claude Code, la CI utilise votre harness, et personne ne sait lequel a produit quel commit. Parade : une signature dans les messages de commit et un journal par session des deux côtés.

La règle de décision

Pour le travail interactif d'un développeur, adoptez un harness du marché et configurez-le sérieusement : bac à sable actif, liste blanche, réseau filtré. Construisez ou gardez votre propre harness quand l'agent est un composant d'un processus (ticket vers correctif, migration en masse, contrôle de conformité), qu'il doit appeler vos outils internes, et que vous devez prouver ce qu'il a fait. Dans ce cas, comblez d'abord l'écart 1 (fichiers confinés par bubblewrap ou conteneur), puis l'écart 3 (restauration de la conversation). Les autres écarts relèvent du confort.

Pratique

Une équipe de 40 développeurs veut un assistant de code dans le terminal. Un architecte propose d'étendre le harness de ce projet. Que recommandez-vous ?

Votre harness maison tourne en CI sur des dépôts de fournisseurs externes. Quel écart avec les harness du marché corrigez-vous en premier ?

Exercice. Faites tourner la même tâche (le dépôt d'exemple) avec un harness du marché de votre choix et votre harness. Comparez sur une grille : tours, tokens, coût, refus, diff final, et ce que chacun vous laisse comme trace exploitable.

Voir la solution

Démarche, pour Gemini CLI par exemple :

  1. make run une fois pour obtenir sorties/depot, puis git -C sorties/depot stash pour revenir à l'état rouge, ou recréer la copie.
  2. Dans sorties/depot, lancez le harness du marché en mode non interactif avec la même consigne que DEMO_TASK, bac à sable actif.
  3. Relevez ses statistiques de session (tokens, durée) et le diff final ; relancez python -m pytest -q vous-même.
  4. Comparez avec sorties/trajectoire.jsonl de votre harness sur une grille à six colonnes.

Ce que l'on observe en général : un harness du marché fait moins de tours grâce à de meilleures consignes et à la lecture de plusieurs fichiers par tour ; votre harness donne une trace plus directement exploitable et un code de sortie fiable. Écrivez la conclusion en une phrase pour votre équipe : quel outil pour quel usage.

  • Je sais citer les six écarts entre mon harness et ceux du marché, par ordre d'importance
  • Je sais vérifier la configuration réelle de bac à sable d'un harness du marché
  • Je sais justifier quand construire, quand adopter, et comment faire cohabiter les deux
  • Je garde mes journaux pour évaluer mon harness à chaque changement