À propos du projet
Plumb est un serveur MCP, distribué sous forme d'un seul binaire Go sous licence MIT, qui offre aux agents de codage une couche d'intelligence de type IDE dans des garde-fous. Son README énonce quatre piliers par ordre de priorité : la fiabilité des écritures, la coordination multi-agents, l'intelligence sémantique et l'efficacité contextuelle.
Sécurité des écritures. Chaque écriture est mise en scène dans un fichier temporaire puis renommée, décrite comme consciente des symlinks et tolérante au CRLF. Un verrou par chemin dans le daemon sérialise les écritures concurrentes vers le même fichier entre sessions et fenêtres de chat. Les transactions multi-fichiers appliquent des modifications sur de nombreux fichiers avec un rollback atomique en cas d'échec, et les gardes mtime/sha rejettent les éditions obsolètes avant qu'elles n'écrasent des changements plus récents. La commande serve est un proxy stdio reconnexion : si le daemon plante ou se bloque, il est relancé et l'échange de poignée de main est rejoué ; le README indique que les écritures en cours ne sont jamais relancées silencieusement.
Coordination. Puisqu'un seul daemon sert tous les agents, les sessions peuvent se voir et s'envoyer des messages. La conscience peer est activée par défaut: workspace_sessions indique les sessions actives et les écritures enregistrées par le daemon, distinguant les écritures échouées ou refusées. Une messagerie agent-vers-agent (leave_note, check_messages) est activée par défaut au sein d'un même espace de travail, avec des messages délivrés via des résultats d'outil normaux plutôt que par sondage. Les intentions consultatives (share_intent, opt-in sous [collab] intents) signalent quand l'écriture d'un pair touche un chemin revendiqué, et sont explicitement étiquetées comme des affirmations non vérifiées qui ne bloquent rien. Les découvertures durables (share_findings, opt-in) transforment les apprentissages de session en mémoire projet cherchable et débarrassée des secrets. Le README souligne que la sécurité des écritures ne dépend pas de la coopération des agents.
Intelligence sémantique. Les outils de refactorisation alimentés par LSP incluent rename_symbol, replace_symbol_body et safe_delete_symbol. Les diagnostics provenant de véritables language servers comme gopls et pyright sont joints à chaque écriture. La recherche de symboles est limitée au projet, excluant les bruits de bibliothèque standard et de dépendances. Les contrôles contextuels permettent à un agent de lire des symboles ou des plages de lignes plutôt que des fichiers entiers, et session_start bootstrappe espace de travail, branche, commits récents, diagnostics et mémoire projet en un seul aller-retour. L'accès est gouverné par une liste blanche de chemins par connexion avec des racines en lecture seule et lecture-écriture, ainsi qu'un contrôle gradué git ; les opérations git destructrices et réseau sont désactivées par défaut. Le README publie des mesures chiffrées dans docs/use-cases.md, régénérées par un script, et documente également une limitation : read_multiple_files coûte environ 1,31 fois plus de payload que la lecture native de fichiers.
La prise en charge des langages est décrite par niveaux plutôt qu'en un seul chiffre. Go (gopls) et Python (pyright) sont de première classe, testés en CI contre de vrais binaires avec LSP complet et outils d'écriture. Java, Rust, Swift, TypeScript/JavaScript, Zig, Kotlin et HTML sont listés comme validés à condition que leurs servers soient dans le PATH ; HTML est noté comme n'ayant pas d'accès au système de fichiers. Un index tree-sitter intégré couvre 31 langages ou plus pour la recherche classée, les plans et l'exploration du graphe topologique sans language server. La validation par binaires réels est indiquée pour macOS et Linux ; Windows est suivi mais pas encore supporté car le daemon utilise des sockets Unix.
Architecture. plumb serve fait proxy via plumb.sock vers un daemon partagé en arrière-plan qui maintient les language servers en activité entre les chats. SQLite stocke un global stats.db pour les statistiques d'outils et les résumés épisodiques, plus topology.db et memory.db par projet sous le répertoire .plumb/ de chaque workspace. Le README indique que 58 outils sont exposés ; les plus utilisés incluent session_start, workspace_symbols, get_definition, find_references, rename_symbol, edit_file, transaction_apply et diagnostics, les autres couvrant l'accès système de fichiers, les hiérarchies LSP, le git gradué, un index Topology local optionnel et la mémoire. Exécuter plumb sans argument ouvre un tableau de bord TUI montrant les appels d'outils, la santé du daemon, les statistiques par outil et les logs streamables.
Installation et configuration. Installation via Homebrew, go install ou binaires préconstruits ; les binaires macOS préconstruits ne sont pas encore notarés. plumb setup écrit la configuration MCP pour des clients tels que claude-code, claude-desktop, codex, gemini et cursor. La configuration utilise un config.toml global ou par projet, ou des variables d'environnement, avec plumb config show rapportant les valeurs résolues et leur provenance ; les options d'exemple incluent strict edits nécessitant une lecture préalable et une limitation par minute pour les boucles dérapantes.
Statut. Plumb est en pré-1.0, avec la sécurité des écritures, le daemon résilient, l'index topologique et la mémoire projet décrits comme étant en usage quotidien. La feuille de route liste des releases thématiques 0.10 à 0.19, 0.19.x être la dernière 0.x avant 1.0, et le support natif Windows étant reporté à 1.1. Les guidelines de contribution, un AGENTS.md, un code de conduite et la licence MIT sont référencés, et la prose suit l'anglais australien.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.