15 points par GN⁺ 2025-09-01 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2025-09-01
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

    • En mars 2025, IBM a annoncé l’Agent Communication Protocol (ACP), mais a depuis décidé d’abandonner ce nom et de fusionner les travaux liés à ACP avec le protocole Agent2Agent (A2A) de Google. Cette décision intervient alors que toutes les équipes de développement ACP sont en cours de dissolution et que l’industrie semble se rallier à A2A sous l’impulsion de la Linux Foundation. L’objectif est d’éviter une fragmentation des standards pour agents IA et de converger vers un protocole ouvert piloté par la communauté plus de détails ici
  • 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

    • Parce que LSP n’a pas connu de ruée IA. L’IA traverse en ce moment une période d’explosion d’outils dans tous les sens, un peu comme les bibliothèques JavaScript à leurs débuts. On ignore complètement l’expérience et les connaissances accumulées auparavant, et on essaie de résoudre les mauvais problèmes avec les mauvais outils. Au final, cette approche ne fera qu’accumuler davantage de complexité et d’inefficacité, comme l’ont fait les bibliothèques JS. Quand on résout mal un problème, cela en crée d’autres, ce qui entraîne ensuite l’ajout de nouvelles mauvaises solutions dans un cycle sans fin
  • 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 ici

    • On 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éressant

  • J’espère que ce type de protocole se généralisera, pour que je ne sois plus toujours lié à un IDE existant en particulier