Curso

Construire son harness d'agent de code

En Python, sans framework d'agent : un agent qui lit, cherche, édite et teste un dépôt sous contrôle (bac à sable, permissions, budget de contexte, points de reprise, journal), mesuré sur une vraie correction de bug.

Experto 8 lecciones 8h
Empezar el curso
Progreso 0% · 0/8

Este contenido aún no está traducido. Se muestra la versión original.

Un lundi matin, l'équipe facturation d'un grossiste reçoit trois réclamations : des clients qui ont commandé exactement 50 ramettes n'ont pas eu leur remise. La correction tient en un caractère. Le vrai sujet est ailleurs : vous voulez qu'un agent fasse ce genre de correction seul, sur votre dépôt, sans qu'il puisse lire votre .env, appeler Internet depuis un test, réécrire les tests pour les faire passer ou vous coûter 40 € de tokens en boucle.

Ce qui fait la différence entre un agent qui vous rend service et un agent dangereux n'est presque jamais le modèle. C'est le harness : le programme qui entoure le modèle, lui expose des outils, décide ce qu'il a le droit de faire, choisit ce qu'il garde en mémoire, sait revenir en arrière et trace chaque action. Claude Code, Gemini CLI, Codex CLI, OpenHands et Aider sont des harness. Ce projet vous fait écrire le vôtre, environ 1 000 lignes de Python, tests non compris, pour savoir exactement ce que les leurs font, et ce qu'ils font de plus.

Sortie réelle de make e2e : la suite passe de 4 échecs à 6 succès, 17 tours, 0,054 $

Ce que vous livrez

Un dépôt prêt à cloner (files/) qui contient :

  • une boucle d'agent en function calling manuel avec google-genai, sans ADK ni LangChain ;
  • cinq outils : lister, lire (paginé, numéroté), chercher (regex façon grep), éditer (remplacement exact, unique, avec diff) et exécuter une commande ;
  • un bac à sable de commandes : sous-processus, délai avec destruction du groupe de processus, répertoire confiné, environnement vidé de toute clé, réseau coupé par unshare -rn ;
  • un système de permissions à trois modes (ask, auto, deny) : lecture libre, écritures soumises à approbation avec diff, commandes en liste blanche ;
  • une gestion du contexte : troncature des sorties d'outils, compaction des anciens tours par résumé, plafond de tokens par session ;
  • des points de reprise git qui ne touchent ni votre branche ni votre index, et une commande undo ;
  • un journal de trajectoire JSONL et un rapport HTML ;
  • 28 tests sans clé ni réseau, et un make e2e qui fait passer une vraie suite du rouge au vert.

Architecture

flowchart LR
  U["Tâche"] --> L["Boucle agent.py"]
  L -->|"historique + déclarations"| M["Gemini (google-genai)"]
  M -->|"appels d'outils"| L
  L --> P{"Permissions"}
  P -->|"lecture"| T["Outils confinés au dépôt"]
  P -->|"écriture approuvée"| C["Point de reprise git"] --> T
  P -->|"commande en liste blanche"| S["Bac à sable : délai, sans réseau, sans clé"]
  P -->|"refus"| L
  T --> X["Troncature"] --> L
  S --> X
  L --> K["Compaction si budget dépassé"]
  L --> J["Journal JSONL + rapport HTML"]

Stack, coût, durée

LangagePython 3.10+, google-genai, python-dotenv, pytest, git
Modèlegemini-3.8-flash par défaut (variable MODEL)
Coût mesuré0,034 à 0,054 par‘makee2e‘(cinqexeˊcutionsdu2026−10−15,tarif0,75/3,75par `make e2e` (cinq exécutions du 2026-10-15, tarif 0,75 / 3,75 par million de tokens)
Ressources cloudaucune : seul l'appel à l'API Gemini est facturé
Durée8 h : 6 h de leçons et de code, 2 h d'exercices
SystèmeLinux pour l'isolation réseau ; macOS et Windows exécutent tout le reste, avec un avertissement

Prérequis

  • Python professionnel : typage, subprocess, pathlib, tests pytest.
  • Avoir déjà écrit une boucle d'agent simple (par exemple dans Construire un agent IA de A à Z).
  • git en ligne de commande ; une clé Gemini (Google AI Studio) pour make run et make e2e.

Programme

ModuleLeçonÀ la fin, cette commande marche
1. La boucleUne boucle que vous contrôlezmake test vert, démo hors ligne
Lire, chercher, éditer sans casserpytest tests/test_tools.py
2. SécuritéLe bac à sable des commandespytest tests/test_sandbox.py, réseau coupé
Les permissionsmake run avec approbation interactive
3. Contexte et repriseLe budget de contextecompaction observée sur un vrai run
Points de reprise et journalpython -m harness undo --to 1
4. Démo et marchéDu rouge au vert, mesurémake e2e vert, tours, tokens, coût
Face aux harness du marchégrille de décision pour votre équipe

Démarrage

cd files
make setup        # .venv, dépendances, .env
make test         # 28 tests, sans clé ni réseau
make run          # sans clé : scénario hors ligne ; avec clé : vrai modèle, vous approuvez chaque écriture
make e2e          # vrai modèle, approbation automatique, échoue si la suite n'est pas verte
make clean        # supprime sorties/ (dépôt de travail, journal, rapport)

Recursos

Descargar todo (.zip)

Referencias