Un agent minimal porté en Python à partir de `pi-mono`, le cœur d’OpenClaw
(github.com/solvit-team)Je pense que, pour beaucoup de gens, les agents restent encore quelque chose d’un peu vague. Ça a l’air impressionnant, mais quand on ouvre le capot, il est souvent difficile de se faire une idée claire de leur fonctionnement réel, ou même de savoir par où commencer à mettre les mains dedans.
J’étais un peu dans le même cas. Puis j’ai entendu dire que le cœur de
OpenClawétaitpi-mono, et j’ai trouvé marquant le fait qu’il s’agisse d’un agent extrêmement minimal. J’ai surtout eu l’impression que c’était un bon exemple de la philosophie selon laquelle « les systèmes les plus puissants sont les systèmes simples ». Je l’ai donc pris comme point de départ pour construire mon propre agent, en décidant de le porter en Python jusqu’au niveau où il peut écrire du code automatiquement.En réalité, l’actuel
py-pimonocontient encore bien moins de choses quepi-mono, qui en possède déjà beaucoup d’autres mais qui n’ont pas encore été reprises ici. Par exemple :
- gestion de session
- steering
- suivi
- divers utilitaires
- streaming
Ainsi,
py-pimonoest moins un produit fini qu’un agent réduit à l’essentiel : presque uniquement l’ossature, sans grand-chose d’autre, mais qui fonctionne malgré tout. En contrepartie, sa structure est rendue relativement explicite afin qu’il soit plus facile de comprendre quoi ouvrir, où regarder et quoi brancher à quel endroit. Je me suis donc dit que cela pourrait être une bonne base, même pour celles et ceux à qui les agents paraissent encore abstraits, afin de suivre la structure et commencer à y toucher. J’ai voulu permettre d’explorer ce type de questions dans une base de code aussi petite que possible.
- Certains voudront comprendre comment le fait qu’« un agent continue à tourner sur la durée » se traduit concrètement dans le code
- D’autres voudront comprendre comment les données de session sont stockées puis rechargées
J’ai donc essayé de séparer ces éléments autant que possible dans ce dépôt, en espérant qu’il puisse servir de bon point de départ pour lire et analyser le code avec un LLM, puis y greffer votre propre boucle ou votre propre gestion de session, et faire évoluer progressivement la structure.
En revanche, pour que l’on puisse l’exécuter immédiatement et se familiariser rapidement avec lui, j’ai inclus une UI sur ce harnais minimal. Si vous ouvrez le répertoire
ui/, vous y trouverez aussi plusieurs interfaces avec lesquelles je me suis amusé, ainsi qu’une connexion à Discord.Installation :
pip install py-pimonoSi l’authentification Codex est déjà faite, il suffit de l’exécuter directement.
pyaiMême sans authentification Codex, le perroquet de secours
MockLlmfonctionne en fallback ; c’est donc aussi assez amusant d’observer la boucle de l’agent en plaçant des points de debug.Si vous n’avez pas encore l’authentification Codex, connectez-vous d’abord puis lancez-le.
codex login pyaiEnsuite, je me suis dit qu’il serait intéressant de construire cela avec vous en n’ajoutant que les éléments vraiment importants qui manquent encore ici, de la manière la plus propre et la plus minimaliste possible. Plutôt que de laisser les agents comme un objet vague, j’aimerais que davantage de personnes puissent avoir la sensation de les ouvrir, de les modifier et de se les approprier directement, d’où ce partage.
Aucun commentaire pour le moment.