Protocole ACP
Responsabilité
ACP (Agent Client Protocol) est un protocole standard de communication entre un éditeur / IDE et un agent. acp_adapter/ expose Hermes comme serveur ACP, afin que les clients compatibles ACP (Zed, extension VS Code, etc.) puissent piloter Hermes directement : gérer les sessions, lire/écrire des ressources (fichiers/images), approuver des modifications, tracer la provenance, isoler les outils selon les permissions. Hermes n'est plus seulement une plateforme de messagerie, il peut aussi s'imbriquer dans un flux de développement.
Fichiers clés
en-tête server.py:1-92— « ACP agent server — exposes Hermes Agent via the Agent Client Protocol »traitement des ressources:96-150—_MAX_ACP_RESOURCE_BYTES,_resource_display_name,_is_text_resource/_is_image_resourceconversion ressource texte/image:201-296—_format_resource_text/_resource_link_to_parts/_image_data_url(ressource → parties de contenu OpenAI)SessionState / SessionManager:159-175— état et gestionnaire de session ACPtraduction cwd:29-62—_translate_acp_cwd/_normalize_cwd_for_compare(alignement du répertoire de travail de l'éditeur)expansion toolsets:129-159—_expand_acp_enabled_toolsetsclass EditProposal:26-51— proposition d'édition (fichier / patch)build_edit_proposal:178-220— construit la proposition depuis un appel d'outil (write_file / patch_replace / patch_v4a)demandeur d'approbation:51-69—set_edit_approval_requester/ mécanisme de tokenpermissions.py— isolation des permissions d'outilsprovenance:22-111—build_session_provenance/session_provenance_meta(traçabilité de la source des opérations)auth.py/entry.py/events.py__main__.py— entrée de démarrage du serveur ACP (5 lignes)acp_registry/agent.json— manifeste de métadonnées de l'agent (pour découverte par les clients)acp_registry/icon.svg— icône
Flux de données
- Le client ACP (éditeur) découvre et démarre le serveur ACP d'Hermes via
acp_registry/agent.json(acp_adapter/__main__.py). - Le client ouvre une session →
SessionManager:175crée unSessionState, aligne le cwd (acp_adapter/session.py:29), déploie les toolsets (acp_adapter/session.py:129). - Le client envoie messages / ressources →
conversion de ressource:201transforme la ressource ACP (fichier/image, sous la limiteacp_adapter/server.py:96) en parties de contenu OpenAI, et alimenterun_conversation:588. - Quand l'agent veut modifier un fichier, l'appel d'outil devient un
EditProposalviabuild_edit_proposal:178, soumis à l'utilisateur via le demandeur d'approbation (acp_adapter/edit_approval.py:51). - L'exécution des outils est contrôlée par les permissions
acp_adapter/permissions.py; chaque opération est tracée paracp_adapter/provenance.py:22. - Le streaming et les événements (
acp_adapter/events.py) sont renvoyés au client.
Résumé
ACP permet à Hermes de s'imbriquer dans le flux d'un éditeur : gestion de session, lecture/écriture de ressources, approbation des modifications, isolation des permissions, traçabilité de la provenance. Le cœur est server.py (adaptation de protocole) + session.py (session) + edit_approval.py (édition approuvée par un humain). Complémentaire de la couche passerelle — la passerelle branche les plateformes de messagerie, ACP branche l'IDE.