Ce que j’ai appris en construisant l’agent de codage Pi
(mariozechner.at)- pi-coding-agent est un framework d’agent de codage conçu pour minimiser les fonctionnalités complexes et permettre à l’utilisateur de garder un contrôle total du contexte et de la transparence
- Les quatre composants clés sont pi-ai, pi-agent-core, pi-tui et pi-coding-agent, chacun prenant en charge respectivement l’intégration d’API LLM, la boucle d’agent, l’interface terminal et l’intégration CLI
- Le système vise une simplification extrême en maintenant le prompt système et l’ensemble d’outils sous 1000 tokens, avec seulement quatre outils : read/write/edit/bash
- Il écarte entièrement les restrictions de sécurité, sous-agents, mode plan et support MCP, en privilégiant à la place une observabilité complète et le contrôle
- Les résultats de benchmark et l’expérience d’usage réelle montrent qu’une conception simple et transparente peut être tout à fait compétitive face à des agents plus complexes
pi-ai et pi-agent-core
- pi-ai fournit une API d’intégration unifiée pour différents fournisseurs de LLM comme Anthropic, OpenAI, Google, xAI et Groq
- Inclut le streaming, les appels d’outils, la prise en charge du raisonnement (trace), le suivi des tokens et des coûts, ainsi que la compatibilité navigateur
- Quatre API majeures seulement (OpenAI Completions/Responses, Anthropic Messages, Google Generative AI) suffisent pour communiquer avec la plupart des modèles
- Les différences d’API entre fournisseurs sont unifiées et gérées de façon cohérente
- Ex. : différences de nom de champ
max_tokens, emplacement du champ reasoning, absence de prise en charge du rôledeveloper, etc. - Comme les modes de remontée des tokens varient fortement, un calcul exact des coûts est impossible ; pi-ai effectue donc un suivi en mode best-effort
- Ex. : différences de nom de champ
- La fonction de context handoff permet de changer de modèle ou de fournisseur en cours de session
- Ex. : lors d’un passage d’Anthropic → OpenAI → Google, le contenu de raisonnement est conservé en étant converti en balises ``
- Un registre de modèles permet des définitions de modèles sûres du point de vue des types
- Les données d’OpenRouter et de models.dev sont analysées afin de générer automatiquement les informations de coût et de capacités par modèle
- La gestion de l’interruption des requêtes (abort) et le retour de résultats partiels sont entièrement pris en charge
- Si le streaming est interrompu via AbortController, les résultats intermédiaires peuvent être utilisés tels quels
- Une structure séparée pour les résultats d’outils a été introduite
- Le texte destiné au LLM et les données destinées à l’affichage UI sont renvoyés séparément, avec validation des arguments via TypeBox/AJV
- Une fonction de streaming des résultats d’outils est prévue pour plus tard
- La boucle d’agent répète automatiquement le traitement des messages, l’exécution des outils et le retour des résultats
- Une structure orientée événements facilite la création d’interfaces réactives
- Les paramètres de contrôle inutiles (nombre maximal d’étapes, etc.) ont été retirés pour simplifier l’ensemble
pi-tui
- pi-tui est un framework d’interface terminal basé sur Node.js, qui prend en charge les mises à jour en temps réel avec un minimum de flicker
- Le rendu différentiel (differential rendering) ne met à jour que les lignes modifiées
- Les séquences de sortie synchronisées (CSI ?2026h/l) réduisent le flicker au minimum
- Parmi deux approches TUI, le projet adopte un mode de sortie de type CLI qui conserve le tampon de scrollback
- Les fonctions natives du terminal comme le défilement naturel et la recherche restent disponibles telles quelles
- Structure similaire à Claude Code, Codex et Droid
- Il utilise une UI en retained mode
- Chaque composant met en cache son propre rendu et ne se redessine qu’en cas de changement
- Cela permet des mises à jour efficaces sans rerendu complet de l’écran
- Les performances et l’usage mémoire restent minimes ; même de grandes sessions se traitent aisément avec quelques centaines de Ko
pi-coding-agent
- pi-coding-agent est un agent de codage en CLI qui fournit les fonctions suivantes
- Prise en charge de Windows/Linux/macOS, gestion de session (reprise et branchement), changement de modèle, chargement de AGENTS.md par projet
- Authentification OAuth, changement de thème en temps réel, export de session en HTML, prise en charge du mode headless (JSON/RPC)
- Le prompt système reste concis avec moins de 1000 tokens
- Il ne mentionne que les quatre outils read/write/edit/bash
- Les explications inutiles et les règles complexes sont supprimées ; l’utilisateur peut étendre librement via AGENTS.md
- L’ensemble d’outils se limite à 4 outils minimum
- Seuls
read,write,editetbashsont utilisés, ce qui suffit pour la plupart des tâches de codage - Des outils supplémentaires peuvent être activés en option (ex. : grep, find, ls)
- Seuls
- Le mode YOLO est appliqué par défaut
- Aucun blocage sur l’accès à l’ensemble du système de fichiers ni sur l’exécution de commandes
- Les prompts de sécurité et procédures de validation préalable sont supprimés ; l’usage en environnement conteneurisé est recommandé à la place
- Les fonctions To-do intégré, mode Plan, MCP, Background bash et Sub-agent sont toutes supprimées
- To-do/Plan sont simplement remplacés par une gestion basée sur des fichiers (TODO.md, PLAN.md)
- MCP est exclu à cause du gaspillage de tokens et de la complexité, et remplacé par une approche CLI + README
- Pour Background bash, l’usage de tmux est recommandé
- Les Sub-agents sont désactivés faute de visibilité ; si nécessaire, l’agent peut s’appeler lui-même via bash
- L’accent est mis sur l’observabilité (Observability)
- Toutes les commandes, tous les accès fichiers et toutes les sorties sont affichés de façon transparente
- En contraste avec la structure en « boîte noire » d’autres agents comme Claude Code
Benchmarks
- Des tests ont été réalisés sur Terminal-Bench 2.0 avec le modèle Claude Opus 4.5
- Des performances compétitives ont été obtenues face à Codex, Cursor, Windsurf, etc.
- Le fichier de résultats (
results.json) a été soumis au dépôt public
- Des agents simples comme Terminus 2 montrent aussi des performances comparables, ce qui valide l’approche minimaliste
Conclusion
- pi est un agent de codage qui privilégie le contrôle du contexte, la simplicité et la transparence plutôt que les fonctionnalités complexes
- Tant dans l’usage réel que dans les benchmarks, il montre une efficacité équivalente à celle de grands agents
- Les principales fonctionnalités prévues pour la suite sont la compaction du contexte et le streaming des résultats d’outils
- Le projet est publié en open source, avec liberté de fork et d’extension garantie
- La leçon essentielle est que « la simplicité est le contrôle, et le contrôle est la productivité »
2 commentaires
Pi : analyse de l’agent IA pour développeurs au cœur d’OpenClaw, extrêmement simplifié
Avis sur Hacker News
On dirait vraiment un projet excellent et réfléchi
Je partage totalement l’importance du context engineering et des structures de conversation arborescentes
Les flux de conversation linéaires existants sont trop limités, ce qui rend la collaboration avec un LLM inconfortable pour la recherche ou l’idéation
J’ai moi aussi créé un outil personnel avec une philosophie similaire, en construisant soigneusement le contexte pour pouvoir le réutiliser, ou en lançant des quêtes secondaires pour ne récupérer que les bons résultats
Ta version est une implémentation bien plus précieuse. Ravi d’avoir découvert Pi grâce à toi
L’idée est de conserver une mémoire entre les sessions tout en réduisant le gaspillage de contexte lors de la création de sous-agents
Vous pouvez consulter mon exemple de code
J’ai l’impression que la relation entre OpenClaw et Pi-agent ressemble à celle entre ollama/llama-cpp
Le premier attire l’attention, mais en réalité c’est le second qui est le plus impressionnant
Claude Code est correct pour l’instant grâce aux avantages de l’abonnement, mais une fois le marché stabilisé et les tarifs API rapprochés, une expérience premium facturée au token me semble être un meilleur choix
Au final, je pense qu’un framework d’agents personnalisable finira par l’emporter sur les applications fermées
La structure de coût de l’inférence est plus efficace qu’on ne le pense, et ils ont largement les fonds R&D nécessaires
Tous les outils continuent de s’améliorer, et les produits concurrents ne sont pas parfaits non plus
Personnellement, je suis content de voir le projet de Peter recevoir de l’attention
Il y a toujours beaucoup de PR côté OpenClaw, mais Pi n’en a qu’environ 1/100, donc c’est bien plus simple à gérer
OpenAI disait aussi : « on ne comprend pas pourquoi ChatGPT est si populaire, GPT existait déjà via l’API »
Je suis surpris que Google ne prenne toujours pas en charge le tool call streaming
Ils ne fournissent même pas de tokenizer local, ce qui oblige AI Studio à compter les tokens via des appels API à chaque fois, une architecture très inefficace
L’utilisation CPU monte jusqu’à 100 %, au point que j’ai l’impression que mon portable consomme plus qu’un cluster TPU
Les mesures de sécurité des autres agents de code ne sont pour la plupart que du security theater
Codex n’est pas totalement inutile puisqu’il exécute les commandes dans un sandbox OS (par exemple macOS Seatbelt)
Même si c’est pénible, c’est préférable à devoir réparer une mauvaise commande
Il ne touche pas à la base de données et ne modifie que l’UI et le code de couche intermédiaire
J’ai déjà vu quelques power users migrer vers Pi, et j’y pense moi aussi
Les points forts de Pi sont le contrôle total du contexte et une structure d’outils extensible
Il existe divers exemples : system prompt, extension de todo, adaptateurs MCP, etc.
Si l’on comprend les limites de performance du contexte ou des problèmes comme le context rot et le contextual drift, la valeur de Pi devient évidente
Collection de liens associée
Armin est clairement en avance sur son temps
Claude Code reste encore superficiel sur les hooks et la gestion du contexte
J’utilise encore Cursor
J’ai essayé de passer à Claude Code, mais sur ma petite base de code Cursor est bien plus rapide
En revanche, l’interface de revue des diff n’est pas intégrée à Git, ce qui est gênant
Il est difficile de distinguer les changements produits par l’IA de ceux que j’ai faits, et j’ai l’impression qu’une revue intégrée à Git est plus importante
Avec Claude Code, on a l’impression de lui faire confiance et d’attendre le résultat, ce qui est un peu anxiogène
La possibilité de changer librement de modèle est essentielle. Les performances varient selon le langage ou le type de tâche
J’ai créé un hook qui injecte la liste des fichiers dans le contexte au démarrage pour améliorer la vitesse
J’ai aussi créé un outil personnalisé qui modifie plusieurs fichiers à la fois, ce qui l’a rendu environ 3 fois plus rapide, mais je l’ai désactivé à cause de certains cas limites
Par exemple, automatiser des tests frontend ou modifier des landing pages
Les fonctionnalités principales, je les gère dans une instance Claude séparée avec une boucle de feedback étroite
L’article sur une architecture d’agent minimaliste m’a marqué
J’aime cette philosophie du « ne pas construire ce dont on n’a pas besoin »
J’utilise OpenClaw pour gérer plusieurs workflows en parallèle — support client, supervision des déploiements, revue de code, etc.
Le point clé, c’est le context engineering
Le modèle workspace-first d’OpenClaw prolonge l’apprentissage entre les sessions grâce à AGENTS.md, TOOLS.md et au répertoire memory/
On peut observer dans les logs le processus d’apprentissage de l’agent lui-même
J’apprécie cette approche qui reconnaît un modèle de menace réaliste plutôt que de faire du théâtre sécuritaire
Je partage aussi l’idée que plusieurs agents spécialisés en parallèle valent mieux qu’un agent généraliste
Il serait intéressant de comparer Pi et OpenClaw sur Terminal-Bench
J’ai aimé l’article expliquant pourquoi Armin Ronacher utilise Pi
C’est en lisant le post d’Armin que j’ai compris pour la première fois que Pi était le harnais d’agent d’OpenClaw
Pi a une structure basée sur JavaScript, ce qui s’accorde bien avec une architecture de sandbox de navigateur
Je pense que cela correspond bien à l’orientation future des agents IA
En revanche, j’aimerais que l’auteur soit plus souple vis-à-vis des vendor extensions
Discussion associée
Je n’utilise toujours pas le mode YOLO
Il faudra probablement encore 6 mois pour que l’outillage soit vraiment complet
Un agent a rarement besoin d’exécuter des commandes arbitraires
Il suffit généralement d’intégrer au système de permissions des actions comme le lint, la recherche, la modification et l’accès au web
Un runtime avec sandboxing et contrôle des permissions, comme Deno ou Workerd, constitue déjà une première ligne de défense
C’est pourquoi j’ai du mal à comprendre le choix de Bun par Anthropic — son architecture de sécurité est presque inexistante