PHP, le grand oublié des agents IA
Depuis quelques années, le message implicite du monde de l'IA était clair : pour construire des agents autonomes, il fallait apprendre Python. Frameworks, tutoriels et conférences pointaient tous dans la même direction. Résultat, les développeurs PHP qui voulaient expérimenter avec des systèmes autonomes n'avaient que deux options : changer de stack, ou bricoler quelque chose à partir d'appels API bruts en espérant que ça tienne.
C'est exactement le vide que Neuron AI, un framework PHP pour construire des applications agentiques, a été conçu pour combler. Et pour prouver que le pari tenait la route, son créateur est allé jusqu'au bout de l'idée : il a construit Maestro, un agent de codage autonome, entièrement en PHP.
Neuron AI, un framework pensé pour la production
Neuron AI couvre tout le cycle de vie d'une application agentique : interfaces vers les LLM, chargement de données, orchestration multi-agents, monitoring et debug. Trois choix de conception ressortent particulièrement : un typage fort, avec des signatures de méthodes et propriétés explicitement typées et une couverture PHPStan à 100 % pour une autocomplétion fiable dans l'IDE ; une architecture soignée, avec des interfaces PSR standard et des dépendances externes minimales pour éviter les conflits de versions ; et une communauté ouverte, puisque les mêmes patterns fonctionnent qu'on soit sur Laravel, Symfony, WordPress ou une stack maison, ce qui facilite le transfert de compétences entre projets PHP.
Maestro : un agent qui lit, comprend et propose
Maestro n'est pas un simple outil d'autocomplétion. C'est un agent autonome qui tourne dans le terminal, lit les fichiers du projet, raisonne sur la base de code, et propose des modifications. Il fonctionne en boucle : on lui donne une tâche, il choisit les outils à appeler (lire un fichier, chercher un motif, écrire des changements), les exécute dans l'ordre, puis rend compte. Le mot-clé, c'est « propose » : avant de toucher au système de fichiers, Maestro demande toujours une validation.
La validation des actions, la vraie fonctionnalité de sécurité
Un agent qui a un accès en écriture à votre code sans jamais s'arrêter pour confirmer, c'est un risque. Quand Maestro veut modifier un fichier, l'exécution s'arrête et propose quatre choix : autoriser une fois, autoriser pour la session, toujours autoriser, ou refuser. « Autoriser pour la session » est l'option la plus utilisée en pratique : on valide les opérations d'écriture sur un type de fichier ou d'outil donné une seule fois par session. « Toujours autoriser » persiste la préférence dans .maestro/settings.json, pour que les sessions suivantes ne reposent plus la question.
Ce mécanisme d'interruption et de reprise repose sur une fonctionnalité de premier ordre introduite par Neuron v3 : l'interruption de workflow « human-in-the-loop ». L'agent suspend son exécution, en attendant d'être repris exactement là où il s'était arrêté.
Sous le capot : une architecture événementielle
Le point d'entrée est une commande Symfony Console (bin/maestro). La classe CodingAgent étend l'Agent de base de Neuron et ajoute un middleware de validation d'outils, qui intercepte l'exécution avant toute écriture disque, déclenche un événement ToolApprovalRequestedEvent, et attend. Trois événements pilotent le tout : AgentThinkingEvent avant chaque appel au modèle, AgentResponseEvent à la réponse du modèle, et ToolApprovalRequestedEvent à la demande de validation. Un CliOutputListener s'abonne à ces événements et gère tout le rendu dans le terminal.
Cette séparation garde la logique de l'agent propre : il ne sait rien de la façon dont sa sortie est affichée, il se contente d'émettre des événements. Construire une interface web par-dessus la même logique reviendrait à remplacer le listener, sans toucher au reste.
Des commandes inline à la /help, /init
Maestro implémente un système de commandes façon « slash commands » directement dans le chat interactif, sans quitter la boucle principale. Une interface InlineCommand définit le contrat, un registre central gère l'enregistrement et empêche les doublons, et un adaptateur permet d'envelopper n'importe quelle commande Symfony Console existante sans réécrire sa logique. Résultat : /init réutilise toute la logique d'InitCommand, invites interactives et validation comprises, dans une interface simplifiée.
Installer Maestro en quelques minutes
Maestro s'installe comme un outil Composer global, avec la commande composer global require neuron-core/maestro. Il faut ensuite s'assurer que le binaire global de Composer est bien dans le PATH du système. La configuration vit dans .maestro/settings.json, à la racine du projet ; on peut lancer maestro init pour un guide interactif. Au minimum, il faut renseigner un fournisseur par défaut et une clé API, par exemple Anthropic avec un modèle de la famille Claude.
Maestro prend en charge nativement Anthropic, OpenAI, Gemini, Cohere, Mistral, Ollama, Grok et Deepseek, via une ProviderFactory qui associe le fournisseur par défaut à l'instance Neuron correspondante. Pour tourner entièrement en local sans envoyer de données à une API externe, il suffit de pointer la configuration vers une instance Ollama.
Donner du contexte à l'agent sur votre projet
Par défaut, Maestro charge un fichier Agents.md à la racine du projet. On peut aussi pointer vers un autre fichier markdown via la propriété context_file des settings, par exemple CLAUDE.md, qui décrit l'architecture, les conventions de code et les standards à suivre. Ce contenu est ajouté aux instructions système avant que la conversation ne démarre. Un agent qui sait que le projet suit PSR-12, que les contrôleurs ne doivent pas contenir de logique métier, et qu'on préfère l'injection de dépendances aux service locators produira des suggestions pertinentes dès le premier message.
Étendre l'agent avec le protocole MCP
Pour les équipes qui veulent aller au-delà des opérations sur le système de fichiers, Maestro supporte les serveurs MCP (Model Context Protocol) dans sa configuration. Chaque entrée du bloc mcp_servers lance un sous-processus connecté à l'agent comme source d'outils supplémentaire. L'agent peut alors consulter des données de monitoring applicatif, faire une recherche web, ou accéder à n'importe quel service compatible MCP, en plus de ses outils natifs de système de fichiers.
Ce que ça prouve pour l'écosystème PHP
Maestro est une preuve concrète que les patterns que le reste de l'industrie construit en Python et en TypeScript sont pleinement possibles en PHP aujourd'hui. L'architecture de workflow qui rend possible la validation des outils, le pipeline de rendu événementiel, l'abstraction multi-provider, l'intégration MCP : rien de tout ça n'a nécessité de sortir de l'écosystème PHP.
Le framework qui fait le gros du travail ici, c'est Neuron AI, et plus précisément l'architecture de workflow introduite avec la v3. Sans la capacité d'interrompre l'exécution en plein milieu de la boucle de l'agent et de la reprendre selon la réponse de l'utilisateur, le système de validation des outils aurait demandé beaucoup plus d'échafaudage pour être construit et maintenu.
Pour aller plus loin, le code de Maestro est disponible sur GitHub (github.com/neuron-core/maestro), et la documentation de Neuron AI sur docs.neuron-ai.dev. Un projet à suivre pour tous ceux qui pensaient que l'IA agentique n'était pas faite pour PHP.
Laisser un commentaire