- Agent Client Protocol (ACP) est un protocole visant à standardiser la communication entre les éditeurs de code et les agents de codage IA
- Jusqu’à présent, pour qu’un éditeur se connecte à un agent donné, il fallait un travail d’intégration personnalisé distinct, ce qui entraînait des limitations de compatibilité et des problèmes de verrouillage des développeurs
- À l’image du Language Server Protocol (LSP), ACP fournit une méthode de communication standardisée, permettant, une fois implémentée, de connecter librement tous les éditeurs et agents compatibles
- L’éditeur exécute l’agent en tant que sous-processus et communique via JSON-RPC over stdio ; les éléments d’interface prennent en charge l’affichage des diff et des sorties basées sur Markdown
- À ce jour, Zed et Neovim (via le plugin CodeCompanion) prennent en charge ACP ; côté agents, la CLI Gemini est compatible, et la prise en charge doit encore s’étendre
Introduction
- Agent Client Protocol (ACP) est un protocole ouvert conçu pour standardiser les interactions client-serveur telles que le développement à distance, le port forwarding et l’exécution de commandes
- Problème existant : les agents de codage IA et les éditeurs sont étroitement liés, mais l’interopérabilité n’est pas garantie par défaut
- Chaque éditeur doit construire une intégration personnalisée pour chaque agent qu’il souhaite prendre en charge
- Les agents doivent implémenter des API d’éditeur spécifiques pour pouvoir atteindre les utilisateurs
- Cela entraîne un surcoût d’intégration, une compatibilité limitée et des problèmes de dépendance des développeurs
- La solution ACP : ACP fournit un protocole standardisé entre agents et éditeurs
- Un agent qui implémente ACP fonctionne dans tous les éditeurs compatibles
- Un éditeur compatible ACP peut accéder à l’ensemble de l’écosystème des agents compatibles ACP
- Cela permet une innovation indépendante et donne aux développeurs la possibilité de choisir les outils les mieux adaptés à leur workflow
Vue d’ensemble d’ACP
- Fonctionnement : l’utilisateur travaille principalement dans un éditeur de code et invoque un agent pour certaines tâches
- L’agent s’exécute comme sous-processus de l’éditeur
- La communication utilise JSON-RPC via stdio
- Format des données : réutilise le format JSON de MCP et inclut des types personnalisés pour les éléments UX du codage assisté par agent, comme l’affichage des diff
- Format texte : le format Markdown est utilisé par défaut pour améliorer la lisibilité pour l’utilisateur
- Il permet une mise en forme riche sans rendu HTML
- Le protocole est encore en cours de développement, mais il est déjà suffisamment abouti pour construire des expériences utilisateur intéressantes
État actuel de la prise en charge
- Éditeurs
- Agents
- Gemini : prise en charge d’ACP via Gemini CLI
- Prise en charge d’autres agents à venir
Conclusion
- En s’inspirant du succès de LSP, ACP améliore de façon majeure l’interopérabilité entre les agents de codage IA et les éditeurs
- Les développeurs peuvent librement choisir la meilleure combinaison d’outils, sans dépendre d’un agent ou d’un éditeur en particulier
- L’extension du protocole peut accroître la scalabilité de l’écosystème et améliorer l’efficacité comme la flexibilité des workflows des développeurs
1 commentaires
Avis sur Hacker News
J’ai demandé à Claude de créer un protocole de communication entre des agents IA et des IDE/éditeurs, puis j’ai imaginé lui demander aussi de développer des bibliothèques Node, Python et Rust, ainsi que de construire un site web avec une landing page
Honnêtement, je suis tenté de vérifier si Gemini peut utiliser un plugin Sublime Text qui implémente ce protocole. En ce moment, la plupart des utilisateurs semblent se concentrer sur VSCode, donc les nouveaux outils ont tendance à ne prendre en charge que cette plateforme. Je veux éviter d’être forcé à migrer simplement parce que Sublime n’est plus pris en charge ; c’est vraiment un excellent éditeur, et il n’est même pas soutenu par une énorme entreprise
Et on pourrait aussi en faire un agent qui ne prend en charge que Gemini, histoire d’effacer les traces
C’est drôle, c’est un souhait terriblement égocentrique
J’espère vraiment que ce projet va réussir. Zed revient à l’essence de la collaboration, et je pense que cela peut aussi faire évoluer la catégorie des IDE agentiques. Dans ce cas, Zed n’aurait pas besoin de consacrer son temps à une concurrence frontale et pourrait aussi se différencier. Je me demande dans quelle mesure ce sera adopté parmi les agents CLI (c’est déjà agréable de voir Gemini CLI intégré), et la concurrence féroce sur le marché des LLM et des assistants de code est toujours la bienvenue. Je pense que ce genre de changements continuera à réduire le coût de transition entre les outils
Moi aussi, je suis presque prêt à passer à Zed. Il propose presque toutes les fonctions que je voulais depuis des années dans un éditeur, ainsi que beaucoup de fonctionnalités géniales que je n’avais même pas imaginées. J’ai même déjà essayé de prototyper mon propre éditeur par frustration face à l’existant, mais créer un bon éditeur demande vraiment énormément d’efforts. Zed a fait ce travail. Je salue leur volonté de collaborer ouvertement
Sincèrement, j’espère que ce changement fera disparaître les forks médiocres de VS Code. J’aimerais aussi que Zed reçoive enfin la reconnaissance qu’il mérite. J’ai vraiment l’impression que les éditeurs IA ont aspiré tout l’oxygène du secteur
Je suis en train de créer un outil pour que Claude Code puisse utiliser ACP (comme j’utilise souvent CC et Zed). Jusqu’ici, cela a plutôt bien avancé avec le SDK Claude Code et la bibliothèque client ACP. Il reste encore quelques finitions, mais je compte peaufiner un peu tout ça et l’ouvrir demain
Il existe déjà un ACP appelé agentcommunicationprotocol.dev, donc le nom peut prêter à confusion. Il y a bien des différences entre les deux projets, mais c’est un point qui me dérange
Ce qui m’intrigue le plus, c’est pourquoi un serveur LSP ou une extension du protocole LSP ne suffirait pas à couvrir ce dont les LLM ont besoin
Je préfère traiter l’IA comme un vrai développeur humain. Par exemple, je lui demande d’implémenter une fonctionnalité, de corriger un bug ou de faire un refactoring, puis je lis le commit produit. Si le commit ne me plaît pas, je fais
git reset --hard, j’améliore le prompt et je relance l’IA. J’appelle cette méthode le « prompt coding ». Je n’ai pas besoin d’une interaction directe entre mon environnement de développement et l’IA ; elle travaille comme un développeur humain, sans toucher à mon éditeur explication iciOn dit ces temps-ci qu’écrire des prompts serait mieux, mais j’ai quelques doutes là-dessus. L’IA aide pour certaines tâches très spécifiques, mais elle raconte encore beaucoup de bêtises, et il est particulièrement difficilement acceptable qu’elle invente des choses qui n’existent pas, comme des API
Je ne vais pas jusqu’à laisser l’IA faire les commits. Je dois presque toujours retoucher son résultat à plusieurs endroits. J’ai l’impression de perdre mon temps à enchaîner les reprompts, donc si elle ne donne pas la réponse que je veux du premier coup, je préfère généralement corriger moi-même. En revanche, quand elle comprend d’emblée ce que je veux et fournit le code attendu, ma confiance en elle augmente fortement
J’aimerais que cette idée se diffuse davantage. Une question que je me pose concerne la différence entre la recherche de fichiers et les fichiers non enregistrés. En pratique, les agents utilisent souvent des outils comme ripgrep pour parcourir le système de fichiers, mais si le protocole permet aussi de lire et d’écrire dans des fichiers non enregistrés, cela pose un problème de précision, car ripgrep ne peut pas chercher dans des fichiers non enregistrés
J’aimerais vraiment qu’Anthropic adopte ce protocole dans Claude Code, au moins avec un niveau d’intégration comparable à celui offert dans VSCode. Et ce serait bien, au minimum, de pouvoir accéder aux informations de diagnostic de l’éditeur
MCP a lui aussi commencé avec JSON-RPC sur stdio. Avec l’arrivée d’environnements comme GitHub Codespaces, les devcontainers ou les « background agents », je me demande si l’on verra une évolution vers quelque chose comme JSON over SSE. À l’heure actuelle, j’utilise Claude Code en local, tandis que l’application tourne dans des conteneurs. L’agent peut exécuter de manière autonome
docker compose exec backend. Ce qui freine l’adoption d’un workflow avec git worktree, c’est le partage du moteur de base de données (faute de ressources locales suffisantes) et le temps nécessaire aux migrations initiales. Déporter cette charge vers le cloud est aussi un scénario intéressantJ’espère que ce type de protocole se généralisera, pour que je ne sois plus toujours lié à un IDE existant en particulier