Crush : Revue de la CLI de Terminal basée sur l'IA (Ancien OpenCode AI)

Thenewstack

Crush, une application d’interface de ligne de commande (CLI) open source basée sur Go, est récemment apparue comme un acteur important dans le domaine des outils de développement assistés par l’IA. Anciennement connue sous le nom d’OpenCode AI, son changement de marque et sa transition de dépôt ont eu lieu rapidement le 29 juillet 2025, signalant une nouvelle phase pour ce projet innovant. Crush intègre l’intelligence artificielle directement dans le terminal, offrant une interface utilisateur de terminal (TUI) robuste conçue pour rationaliser les tâches de codage, le débogage et divers autres flux de travail de développement.

Construit sur le framework BubbleTea, un projet de Charm, Crush offre une expérience sophistiquée, multi-modèles et basée sur les sessions. Les utilisateurs peuvent choisir parmi une gamme diversifiée de grands modèles de langage (LLM) ou même intégrer leurs propres modèles personnalisés. Une caractéristique clé est la capacité de basculer entre différents LLM en cours de session tout en maintenant le contexte conversationnel, assurant la continuité dans les tâches complexes. De plus, Crush prend en charge l’intégration des protocoles de serveur de langage (LSP), de manière similaire à leur configuration dans un éditeur de code, améliorant ainsi son utilité pour les opérations sensibles au code.

L’installation est simple, en particulier pour les utilisateurs de macOS, avec Homebrew offrant une méthode pratique. Lors de son lancement initial, Crush invite les utilisateurs à saisir des clés API, bien que la configuration LLM puisse également être gérée via des variables d’environnement. L’application prend en charge un large éventail de modèles, y compris les standards de l’industrie attendus comme GPT-5 (maintenant disponible) et Opus 4, aux côtés d’options moins connues telles que Groq et Grok. Lors de son démarrage, Crush guide l’utilisateur à travers un processus d’initialisation, créant un fichier de configuration et configurant le contexte initial. Bien que cette configuration soit conçue pour être conviviale, l’utilisation d’invites informelles comme “yep” et “nope” pourrait potentiellement poser un léger défi pour les non-anglophones.

Un aspect distinctif de Crush est son approche des permissions. Le système applique activement des vérifications supplémentaires pour les commandes du système d’exploitation exécutées dans l’environnement Crush. Par exemple, tenter de changer de répertoire (par exemple, cd ..) déclenche un changement de permission, nécessitant une confirmation de l’utilisateur. Ce comportement est régi par le fichier de configuration crush.json, qui contient une liste “allowed_tools” spécifiant les actions autorisées telles que view, ls, grep et edit. Pour les utilisateurs qui préfèrent contourner ces invites, un drapeau --yolo est disponible, reflétant l’éthos quelque peu insouciant du projet.

Lors du traitement d’un projet de développement, Crush génère un fichier CRUSH.md, fournissant un résumé concis de la base de code. Il incorpore également intelligemment les instructions d’autres outils de développement populaires comme Cursor et Copilot. La première passe de l’agent se concentre sur l’identification des configurations, des tests et des fichiers de projet principaux. Cependant, les utilisateurs peuvent rencontrer des défis d’interface mineurs selon leur émulateur de terminal ; par exemple, dans le terminal Warp, certaines commandes peuvent être interceptées, et les fonctionnalités standard comme le placement du curseur à la souris ou la copie de texte peuvent être indisponibles. L’auteur a noté un cas où une tâche a été interrompue en raison d’un manque de jetons Anthropic, nécessitant une recharge et une nouvelle exécution du processus pour générer avec succès le fichier CRUSH.md.

Lors d’un test pratique, Crush a été chargé de générer une nouvelle classe au sein d’une collection de stratégies, un besoin réel pour un projet de développement de jeux. Le LLM a réussi à capter le contexte du projet existant, interprétant des termes comme “farmer” à la fois comme nom de personnage et comme type, et reformulant intelligemment “PollutionBad” en “FreezingBad” en se basant sur le contexte de la langue anglaise entrelacé avec les spécificités du codage. Crush a ensuite demandé la permission d’ajouter la classe générée et de l’intégrer dans la liste de stratégies du projet. Bien qu’il ait tenté d’ajouter des instances du nouveau récit, il manquait d’informations suffisantes pour une complétion complète, démontrant que, bien qu’il organise le travail de manière logique, il peut toujours nécessiter les conseils de l’utilisateur pour des tâches plus complexes et multi-étapes. L’interface permet aux utilisateurs de basculer facilement entre les blocs de requête et de réponse à l’aide de la touche Tab.

En conclusion, Crush, bien qu’étant à ses débuts et manquant de certaines commodités courantes de l’interface utilisateur, introduit plusieurs fonctionnalités intéressantes et novatrices. Bien qu’il ne puisse pas encore égaler les capacités CLI agentiques intégrées de solutions de terminal plus matures comme Warp, son approche cohérente basée sur la TUI et sa nature open source le positionnent avec un potentiel significatif. À mesure que les contributions augmentent et que les fonctionnalités principales se renforcent, Crush pourrait bien devenir un outil formidable, dépassant son poids actuel dans le paysage du développement assisté par l’IA.