Pi : un agent de codage en terminal bâti sur quatre outils et une consigne très courte
Résumé
Un agent de codage volontairement réduit pour le terminal : quatre outils, une consigne système sous les mille jetons, et tout le reste confié à un mécanisme d'extension que l'agent peut écrire lui-même. Pas de mode planification intégré, pas de liste de tâches, pas de serveurs d'outils fournis, et une explication nette de chaque omission. Gratuit et libre.
Recommander- Nom
- Pi
- Version
- 0.87.1
- Tarif
- Gratuit
- Open source
- Open source
- Système
- macOSLinuxWindows
- Site
- https://pi.dev
- Mis à jour
- 2026-10-06 12:09
Les agents de codage ont grandi pendant deux ans. Toutes les quelques semaines, quelque chose arrive : des sous-agents, un mode de planification, des fenêtres de permission, des shells en arrière-plan, une liste de tâches intégrée, un jeu de serveurs d'outils fournis, des fragments de consigne réglés pour un modèle précis. Chaque ajout paraît raisonnable. Le test honnête reste pourtant simple : coupez la plupart et le travail se fait encore. Ce qui survit à l'usage réel, c'est lire un fichier, modifier un fichier et lancer une commande.
Il existe une seconde gêne, moins discutée et plus corrosive. Beaucoup d'agents glissent discrètement du texte dans le contexte sans jamais le montrer. Le comportement change, et l'explication offerte est que cela rend l'agent plus intelligent. Pour un ingénieur qui veut savoir ce que fait l'outil, c'est exactement ainsi qu'une routine stable se casse entre neuf heures et dix heures : non parce qu'on a demandé un changement, mais parce qu'une nouvelle version a reformulé ses propres consignes.
Pi traite ces deux problèmes comme des contraintes de conception et non comme des récriminations. Quatre outils, une consigne système sous les mille jetons, et un refus délibéré de construire presque tout ce qui fait de l'effet. Ce qui manque est destiné à venir plus tard, par l'agent lui-même, dans des extensions écrites dans un langage de script. L'auteur est un vétéran du logiciel libre qui a écrit un moteur de jeu connu ; au printemps 2026, le projet a été repris par une société d'intérêt général fondée par l'auteur d'un cadriciel web très répandu, et il rassemble depuis une attention considérable.

Quatre outils et une consigne qu'on lit d'un trait
L'ensemble des outils est celui-ci : lire un fichier, écrire un fichier, éditer un fichier par remplacement exact de chaîne, exécuter une commande de shell. C'est la configuration standard, complète, du projet. Comparé aux harnais habituels, dont les consignes système dépassent dix mille jetons dès qu'on compte les fragments propres à un modèle, l'écart n'est pas rhétorique : en temps ordinaire, une part notable de la fenêtre de contexte est consommée avant que le moindre travail commence.
Les conséquences mesurées sont plus intéressantes que le principe. Sur des tâches de programmation comparables, le même travail s'achève une fois et demie à deux fois plus vite qu'avec d'autres agents de cette famille. Une évaluation menée dans un dépôt d'un million de lignes le place devant deux harnais commerciaux connus sur la plupart des combinaisons de coût et de taux de réussite. Et une simple salutation lui coûte environ onze cents jetons, un peu moins d'un demi pour cent de la fenêtre, là où une alternative réputée en dépense dix-huit mille, soit sept pour cent.
Il s'est aussi classé parmi les cinq premiers d'un comparatif de terminaux, aux côtés de trois produits commerciaux achevés. Un outil qui n'a presque rien a battu des outils qui ont tout, ce qui appuie le jugement de l'auteur : les modèles ont vu tant de travail d'agent qu'ils savent déjà ce qu'est un harnais de codage et n'ont pas besoin d'un gros échafaudage pour le leur rappeler.
S'étendre soi-même est la vraie fonction
La petitesse n'est pas une amputation ; c'est un déplacement de ce qui compte comme fonction. Les quatre outils sont un plancher, les capacités supérieures se construisent en extensions : des modules qui déclarent des outils, ajoutent des commandes à barre oblique, étendent les raccourcis, écoutent des événements et composent leur propre interface de terminal. Une cinquantaine d'exemples sont fournis, des sous-agents aux modes de planification, seuils de permission, protection de chemins, exécution distante, bacs à sable, intégration d'outils externes, éditeurs maison, barres d'état et calques.
La moitié la plus intéressante : il n'est pas nécessaire de les écrire. Demandez un outil d'interrogation de base de données, l'agent l'écrit en passant par le shell ; demandez un petit panneau d'affichage, il écrit le composant. Rechargez, la capacité est là. La limite de l'outil est fixée par votre flux de travail, non par une feuille de route. Les extensions se conditionnent pour une équipe ou se publient pour tous, et l'écosystème compte déjà une dérivation avec prise en charge des serveurs de langage et une extension qui fait tourner un jeu entier dans le terminal.

Quatre entrées, une par sorte d'utilisateur
Il y a un mode interactif avec une interface de terminal complète, un rendu différentiel, des protocoles de clavier récents, des images en ligne et des liens cliquables. Il y a un mode à usage unique qui prend une question, répond et sort, avec un flux d'événements lisible par une machine pour les pipelines et l'automatisation. Il y a un mode qui parle un petit protocole sur l'entrée et la sortie standard, afin d'être embarqué là où aucun moteur de script n'existe. Et il y a un mode bibliothèque, avec lequel au moins un assistant multiplateforme a été assemblé.
La prise en charge des modèles est large sans être lourde : plus de quinze fournisseurs et plusieurs centaines de modèles, changeables au milieu d'une session, avec des fournisseurs et des modèles maison ajoutables par un fichier de configuration ou une extension.
Deux manières d'interrompre méritent un mot, car elles attaquent directement la sensation de boîte noire. La touche d'entrée pilote : l'appel d'outil en cours est coupé immédiatement et la nouvelle consigne entre dans le contexte. Une autre combinaison met une relance en file, traitée à la fin du tour en cours. On peut changer de direction sans casser le rythme, et on sait laquelle des deux on a demandée.
La liste de ce qui n'a pas été construit
Le projet tient une page des omissions, forme rare et utile d'honnêteté. Pas de serveurs d'outils fournis : un serveur répandu d'automatisation de navigateur déverserait vingt et une définitions d'outils dans le contexte, plus de treize mille jetons, sept à neuf pour cent de la fenêtre, avant qu'une tâche ait commencé ; à la place, l'agent lit la documentation dont il a besoin et appelle un outil en ligne de commande, payant seulement ce qu'il utilise.
Pas de mode de planification : un plan s'écrit dans un fichier simple, que l'agent peut lire, modifier et citer, et qui se versionne avec le code. Pas de liste de tâches, au motif que ces listes embrouillent les modèles plus souvent qu'elles ne les cadrent. Pas de shell en arrière-plan, parce qu'un multiplexeur de terminal fait déjà ce travail et garde tout observable. Pas de sous-agents, parce qu'une seconde instance du même agent dans un autre volet est plus visible qu'une délégation cachée.
Tout cela se récupère par le mécanisme d'extension, et c'est le point : le noyau reste mince sans qu'aucune capacité ne se perde. Le résumé de l'auteur est qu'il a bâti une machine à produire des ajouts tout en habitant lui-même un logement volontairement spartiate.
À qui cela s'adresse
À qui est las des outils dont le nombre de fonctions croît plus vite que l'utilité, ou veut que son propre flux de travail, et non la feuille de route d'un fournisseur, décide de la forme de l'instrument : c'est l'agent de codage en terminal le plus intéressant du moment. Il ne manque pas d'une fonction ; il part d'une autre prémisse. Le prix est d'accepter de passer une heure à écrire une extension, ou de laisser l'agent l'écrire. Minimal est ici une philosophie d'ingénierie, pas l'excuse d'un produit bâclé.