5 points par GN⁺ 2025-08-01 | 2 commentaires | Partager sur WhatsApp
  • Un agent de codage IA qui fonctionne dans le terminal, capable de s'intégrer à divers LLM (modèles de langage de grande taille) pour faciliter la rédaction de code, l'automatisation des workflows et la conservation du contexte, afin d'améliorer la productivité du code.
  • Il est possible de choisir plusieurs modèles ou de changer de modèle librement en cours de session, et de conserver les sessions/contexts par projet.
  • Il propose des fonctionnalités orientées développeur : intégration LSP (Language Server Protocol), support MCP (Model Context Protocol) extensible, exclusion via .gitignore ou d'autres fichiers dédiés, etc.
  • Il s'exécute sur macOS, Linux, Windows, FreeBSD et autres environnements de terminal principaux, et peut être installé via un gestionnaire de paquets, Go ou des binaires, entre autres.
  • Il prend à la fois en charge une configuration intuitive et une personnalisation avancée, avec variables d'environnement, configuration JSON, liste blanche d'outils, et est pensé jusqu'aux utilisateurs avancés.

Crush

  • Un agent de codage IA qui s'exécute dans l'environnement terminal, prenant en charge la rédaction, l'édition et l'automatisation du code en s'intégrant librement au LLM préféré du développeur
  • Il permet de choisir et de basculer librement entre plusieurs modèles (Anthropic, OpenAI, Groq, OpenRouter, etc.) et de gérer indépendamment le contexte session par session
  • Grâce à LSP (Language Server Protocol), il récupère du contexte additionnel adapté à chaque langage pour assister plus intelligemment l'écriture de code
  • Via MCP (Model Context Protocol), il peut collecter et exploiter des informations complémentaires provenant de systèmes externes, HTTP, CLI, SSE, etc.

Principales fonctionnalités

  • Prise en charge multimodèle : intégration de différents LLM comme OpenAI, Anthropic, Groq, OpenRouter, avec possibilité d'en ajouter d'autres
  • Travail basé sur les sessions : séparation et gestion des contextes pour plusieurs sessions de travail par projet
  • Changement de modèle flexible : modification libre du modèle même en cours de session, tout en conservant le contexte existant
  • Intégration LSP : connexion aux LSP de Go, TypeScript, Nix, etc., pour renforcer le contexte de code
  • Extensibilité : extension aisée de fonctionnalités supplémentaires sur la base du protocole MCP à partir de sources externes HTTP/CLI/SSE
  • Large prise en charge des plateformes : fonctionnement dans les terminaux des principaux OS : macOS, Linux, Windows (WSL, PowerShell), FreeBSD, OpenBSD, NetBSD
  • Configuration intuitive : utilisable immédiatement sans configuration initiale, avec prise en charge d'une configuration JSON globale ou par projet si nécessaire
  • Fonction d'exclusion puissante : gestion des fichiers/répertoires à exclure via les fichiers .gitignore et .crushignore
  • Liste blanche d'outils : approbation préalable de l'exécution d'outils et options d'exécution automatique, avec l'option --yolo pour sauter l'invite complète (avec prudence)
  • Fournisseurs personnalisés : possibilité d'ajouter librement des API compatibles OpenAI et Anthropic et de définir des options détaillées

Installation et démarrage

  • Installation possible via de nombreux gestionnaires de paquets et méthodes de déploiement : Homebrew, NPM, Arch, Nix, Debian/Ubuntu, Fedora/RHEL, ainsi que via des binaires ou Go
  • Lors de la première exécution, il faut renseigner la clé API LLM préférée (OpenAI, Anthropic, Groq, etc.), mais celle-ci peut aussi être définie via des variables d'environnement
  • Les LLM pouvant être connectés via variables d'environnement incluent notamment : OPENAI_API_KEY, ANTHROPIC_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY, GEMINI_API_KEY, VERTEXAI_PROJECT, etc.

Exemples de configuration

  • Application d'options avancées via un fichier JSON global ou au niveau du projet (./.crush.json, ./crush.json, $HOME/.config/crush/crush.json)
  • Configuration LSP : possibilité de spécifier une commande par langage
{
  "lsp": {
    "go": { "command": "gopls" },
    "typescript": { "command": "typescript-language-server", "args": ["--stdio"] }
  }
}
  • Configuration MCP : exemple d'extension externe basée sur HTTP/CLI/SSE
{
  "mcp": {
    "filesystem": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/mcp-server.js"]
    }
  }
}
  • Exclusion de fichiers et approbation d'outils
    • Exclusion de fichiers/répertoires spécifiques via .crushignore
    • Validation via liste blanche d'outils ou saut de l'invite globale avec --yolo

Fonctionnalités avancées

  • Enregistrement de fournisseurs personnalisés : ajout d'API compatibles OpenAI/Anthropic, définition d'options détaillées telles que le prix et le contexte
  • Journalisation : fichiers de logs par projet, consultation en temps réel via les commandes CLI crush logs, crush logs --follow
  • Options de débogage : activation de logs détaillés via le drapeau --debug ou par la configuration

2 commentaires

 
kaydash 2025-08-03

Aider est vraiment nul ;;

 
GN⁺ 2025-08-01
Avis sur Hacker News
  • Il est étrange de voir que la plupart des agents de codage IA en terminal essaient de rendre leur interface texte tape-à-l’œil. On y ajoute beaucoup d’espace vide, du line art, des widgets, de l’art ASCII, des dégradés, voire des animations. Mais les fonctions de base qu’on voudrait vraiment — des raccourcis clavier complets, l’autocomplétion par tabulation, un scrollback cohérent ou un rendu texte sans scintillement — manquent souvent. Cela dit, cet outil n’est pas écrit en node.js, donc on peut espérer de meilleures performances, notamment en réduisant les redraws inutiles de la sortie terminal. En revanche, si on l’utilise en s’attendant à un REPL ou à une CLI, il se comporte de façon totalement différente malgré un modèle d’interaction similaire, et il donne aussi une sensation très différente des TUI Unix de type éditeur ou lecteur. Je me demande si cette tendance vient simplement de Claude Code ou si elle a commencé plus tôt. C’est pour ça que je préfère toujours Aider, qui offre une apparence et une ergonomie plus proches d’un REPL

    • Cet outil est développé par une entreprise appelée Charm, dont la mission est de rendre les fenêtres de commande séduisantes. Elle existe depuis plusieurs années, bien avant l’engouement pour les LLM. C’est une société qui crée des frameworks et des outils CLI pour golang

    • Ce que j’aime dans le terminal, c’est un workflow centré sur le défilement, où je tape une commande puis je peux voir, dans l’ordre, comme dans un journal, les actions et sorties de plusieurs sources et programmes. Ce que je veux vraiment, c’est un puissant workflow de défilement multi-programmes basé sur HTML. Or, les tentatives actuelles cumulent plutôt les défauts des deux mondes. J’aimerais retrouver une bonne UI dans un meilleur système de rendu

    • En réalité, cette tendance des interfaces texte était déjà le style caractéristique de charmbracelet bien avant l’arrivée des agents IA. Personnellement, je l’apprécie parce que, contrairement aux TUI traditionnelles, les raccourcis clavier y sont plus intuitifs à découvrir

    • L’une des raisons pour lesquelles ces interfaces attirent si vite des fans et des développeurs, c’est sans doute que beaucoup de gens sont à l’origine habitués à des éditeurs de style IDE graphiques. Tous les développeurs ne travaillent pas uniquement dans le terminal. (Moi, il m’arrive encore de passer des journées sans même lancer X/Wayland)

    • On peut au moins utiliser Claude Code dans emacs https://github.com/stevemolitor/claude-code.el

  • L’un des points positifs de cet outil, c’est qu’il en est encore à ses débuts, donc le code est très clair et bien modularisé. C’est un excellent modèle de référence si l’on veut concevoir un agent, notamment pour les appels d’outils, les sessions, les résumés automatiques ou la gestion de la persistance. Ce lien de commit vaut vraiment la peine d’être conservé

  • Pour celles et ceux qui veulent réellement lire ce qui se passe dans la démo GIF, quelqu’un l’a ralentie avec ffmpeg et l’a publiée en vidéo https://share.cleanshot.com/XBXQbSPP

  • Je l’ai utilisé sérieusement pendant une quinzaine de minutes. Par rapport à Claude Code, ses avantages sont une belle UI, une barre latérale utile qui permet de suivre les fichiers modifiés et le coût, ainsi qu’une UX fluide pour accepter les changements (raccourcis clavier, diff facile à lire). En revanche, ses défauts sont l’impossibilité de combiner plusieurs modèles et l’ajout de nombreux binaires inutiles dans le répertoire. L’initialisation crée un fichier CHARM.md, mais son contenu ne correspondait pas aux informations que je voulais partager avec le modèle. Par exemple, cela ne précise même pas que mes cas de test Go utilisent le PascalCasing. De plus, quand je quitte avec Ctrl+C, mon terminal plante

    • À propos du fait que l’initialisation crée CHARM.md : j’aimerais vraiment que tout le monde finisse par s’accorder sur un standard unique et bien connu pour les fichiers d’instructions d’agent, par exemple AGENT.md. C’est certes un standard promu par Amp pour son propre outil CLI, et malgré l’ironie de la situation, je me retrouve à soutenir cette approche. Voir https://ampcode.com/AGENT.md. Sinon, il existe aussi ce contournement un peu bricolé https://kau.sh/blog/agents-md/
  • La vraie question importante, c’est de savoir lesquels de ces nouveaux agents prennent correctement en charge les modèles locaux. J’aimerais me passer de dépendances à des API externes, et je suis prêt à sacrifier un peu de performance pour cela

    • Une issue est en cours pour ajouter la prise en charge d’Ollama dans Crush (depuis 2 semaines)

    • La plupart des agents fonctionnent avec des endpoints compatibles OpenAI

    • OpenHands permet de configurer n’importe quel LLM https://github.com/All-Hands-AI/OpenHands

    • Aider indique aussi prendre en charge les modèles locaux, même si je ne l’ai pas testé moi-même https://aider.chat/docs/llms.html

  • Ce serait vraiment utile d’avoir un tableau comparatif de tous ces nouveaux outils comme Claude Code, opencode, aider ou cortex. Il n’est pas facile de comprendre d’un coup d’œil comment chacun fonctionne ou ce qui les différencie

    • Les comparaisons ou benchmarks utilisant des modèles commerciaux sont très difficiles à réaliser à cause du coût. Quand j’ai écrit un article récemment, j’ai dépensé plus de 10 000 dollars rien que pour évaluer plusieurs modèles commerciaux SOTA. Comparer avec des modèles open était peu coûteux, mais les reviewers voulaient une comparaison avec le « meilleur », donc je n’avais pas vraiment le choix. En plus de cela, l’architecture interne ou la stack des modèles commerciaux ne sont pas transparentes et peuvent changer à tout moment, ce qui rend le tout très inefficace. Je ne pense pas qu’il soit souhaitable, en recherche académique, d’exiger systématiquement des comparaisons avec des modèles commerciaux

    • Si je me souviens bien, opencode était le nom d’origine, puis le nom a été changé à la suite d’un conflit entre développeurs

    • Les performances ne dépendent pas seulement de l’outil, mais aussi du modèle utilisé, de la base de code (contexte) et de la tâche donnée (prompt). Ces facteurs ne sont pas indépendants et les différences de performance varient fortement selon leur combinaison. Par exemple, Claude Sonnet 4 avec Claude Code est très bon pour implémenter des fonctionnalités backend en Python, tandis que Gemini 2.5 Pro était meilleur pour modifier du code frontend React. Autrement dit, on ne peut pas figer toutes les variables et ne comparer que l’outil : il faut considérer la combinaison outilmodèlecontexte*prompt. 16x Eval traite partiellement cet aspect, mais n’inclut pas encore les éléments comme l’outil https://eval.16x.engineer/

  • « glamorous » est aussi une expression utilisée en anglais britannique https://dictionary.cambridge.org/dictionary/english/glamorous

  • J’utilise Crush depuis quelques semaines et je suis vraiment enthousiaste. Je suis Charm depuis longtemps, et c’est l’une des rares équipes qui comprend réellement l’expérience développeur tout en créant régulièrement des outils que les gens aiment. Le fait qu’ils soient entrés si tôt dans la course au codage IA est aussi un bon signal. On sent clairement que c’est un outil construit par des gens qui l’utilisent vraiment

  • Encore un autre outil, mais cette fois le design est vraiment réussi. Je vais forcément le tester. Ce qui me frustre dans tous ces outils (EDIT : opencode permet l’authentification GitHub), c’est qu’on ne peut pas s’authentifier directement avec son abonnement sur les services au forfait mensuel (github copilot, claude code, openai codex, cursor, etc.). On paie déjà l’abonnement au service, mais si l’interface ne nous plaît pas, ce serait formidable de pouvoir la remplacer librement

    • La plupart des outils ne permettent pas à un autre programme « d’utiliser » un abonnement mensuel. Il faut donc obtenir une clé API séparée et payer au token. Même Claude Code n’a pas pris en charge pendant un moment l’intégration avec son propre abonnement
  • Renforcé par LSP : Crush utilise le LSP comme contexte supplémentaire, comme c’est généralement son usage. C’est la fonctionnalité qui m’intéresse le plus. Les fonctions multi-session et projet m’intriguent aussi

    • Il existe un MCP LSP, donc on peut aussi l’utiliser avec d’autres agents