5 puntos por GN⁺ 2025-08-01 | 2 comentarios | Compartir por WhatsApp
  • Es un agente de codificación con IA que funciona en la terminal y, al integrarse con diversos LLM (modelos de lenguaje grande), ayuda con la escritura de código, la automatización de flujos de trabajo y el mantenimiento del contexto del código, mejorando la productividad en programación
  • Permite elegir múltiples modelos o cambiar de modelo libremente durante una sesión y mantiene sesiones/contextos por proyecto
  • Proporciona funciones amigables para desarrolladores como la integración con LSP (Language Server Protocol), soporte extensible de MCP (Model Context Protocol) y características de exclusión como .gitignore y archivos de omisión dedicados
  • Se ejecuta en todos los entornos de terminal principales (macOS, Linux, Windows, FreeBSD, entre otros) y puede instalarse mediante gestores de paquetes, Go o binario, entre otros métodos
  • Soporta configuración intuitiva y personalización avanzada al mismo tiempo, con variables de entorno, configuración JSON, listas blancas de herramientas y un diseño pensado también para usuarios avanzados

Crush

  • Es un agente de codificación con IA para ejecutarse en el entorno de terminal, se integra con el LLM que prefiera el desarrollador y ayuda con la escritura, edición y automatización de código
  • Permite seleccionar y cambiar libremente entre varios modelos (Anthropic, OpenAI, Groq, OpenRouter, entre otros) y gestiona el contexto de forma independiente por sesión
  • A través de LSP (Language Server Protocol) obtiene contexto adicional según cada lenguaje para asistir de forma más inteligente en la escritura de código
  • A través de MCP (Model Context Protocol) puede recopilar y usar información adicional desde fuentes externas como sistemas externos, HTTP, línea de comandos y SSE

Funcionalidades principales

  • Soporte multi-modelo: integración con diversos LLM como OpenAI, Anthropic, Groq, OpenRouter, con posibilidad de agregar otros directamente
  • Trabajo basado en sesiones: separación y gestión de múltiples sesiones y contextos por proyecto
  • Cambio de modelo flexible: cambiar de modelo en cualquier momento durante la sesión, manteniendo el contexto existente
  • Integración de LSP: conexión del LSP de Go, TypeScript, Nix y otros lenguajes principales para reforzar el contexto del código
  • Escalabilidad: extensión fácil de funcionalidades adicionales mediante el protocolo MCP y fuentes externas HTTP/CLI/SSE
  • Amplio soporte de plataformas: funciona en terminales de los principales sistemas operativos, incluyendo macOS, Linux, Windows (WSL, PowerShell), FreeBSD, OpenBSD y NetBSD
  • Configuración intuitiva: listo para usar sin ajustes previos, con soporte de configuración JSON por proyecto o global cuando se requiera
  • Función de exclusión robusta: permite gestionar archivos/carpetas de contexto excluido mediante .gitignore y .crushignore
  • Lista blanca de herramientas: apoyo para aprobación previa y ejecución automática al correr herramientas; la bandera --yolo omite el prompt completo (usar con precaución)
  • Proveedor personalizado: agregar APIs compatibles con OpenAI y Anthropic libremente y definir opciones detalladas

Instalación y primer uso

  • Instalación disponible por diversos gestores de paquetes y por binario/Go, como Homebrew, NPM, Arch, Nix, Debian/Ubuntu, Fedora/RHEL, entre otros
  • Al primer inicio es necesario ingresar la API Key del LLM preferido (OpenAI, Anthropic, Groq, etc.), que también puede establecerse mediante variables de entorno
  • LLM representativos que se pueden integrar por variables de entorno: OPENAI_API_KEY, ANTHROPIC_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY, GEMINI_API_KEY, VERTEXAI_PROJECT, entre otros

Ejemplos de configuración

  • Aplicar opciones avanzadas mediante archivos JSON globales o por proyecto (./.crush.json, ./crush.json, $HOME/.config/crush/crush.json)
  • Configuración de LSP: es posible definir el comando por cada lenguaje
    {  
      "lsp": {  
        "go": { "command": "gopls" },  
        "typescript": { "command": "typescript-language-server", "args": ["--stdio"] }  
      }  
    }  
    
  • Configuración de MCP: ejemplo de extensión externa basada en HTTP/CLI/SSE
    {  
      "mcp": {  
        "filesystem": {  
          "type": "stdio",  
          "command": "node",  
          "args": ["/path/to/mcp-server.js"]  
        }  
      }  
    }  
    
  • Exclusión de archivos y aprobación de herramientas
    • Excluir archivos/carpetas específicas con .crushignore
    • Omitir el prompt con lista blanca de herramientas o con la bandera --yolo

Funciones para usuarios avanzados

  • Registro de proveedor personalizado: añadir APIs compatibles con OpenAI/Anthropic, y definir opciones detalladas como precio y contexto
  • Registro: logs por proyecto y comandos CLI como crush logs y crush logs --follow para revisarlos en tiempo real
  • Opciones de depuración: activar logs detallados con la bandera --debug o desde la configuración

2 comentarios

 
kaydash 2025-08-03

aider sí que es bastante malo;;

 
GN⁺ 2025-08-01
Opiniones de Hacker News
  • Me parece raro que la mayoría de los agentes de codificación con IA basados en terminal estén tratando de hacer muy vistosa la UI de texto. Le meten mucho espacio en blanco, line art, widgets, ASCII art, gradientes y hasta animaciones. Pero les faltan funciones básicas como key bindings completos, autocompletado con tab, scrollback consistente o renderizado de texto sin parpadeos. Al menos esta herramienta no está escrita en node.js, así que en rendimiento da para tener esperanzas, por ejemplo reduciendo redibujados innecesarios en la salida del terminal. Pero si la usas esperando un REPL o un CLI, el modelo de interacción es el mismo y aun así se comporta totalmente distinto, y también se siente claramente diferente a los TUI de Unix tipo editor o lector. Me pregunto si esta tendencia simplemente está copiando a Claude Code o si empezó antes. Por eso yo sigo prefiriendo Aider. Ofrece una apariencia y usabilidad más cercanas a un REPL

    • Esta herramienta fue creada por una empresa llamada Charm, y su misión es hacer atractivas las ventanas de comandos. Llevan varios años en esto, desde antes del boom de los LLM. Hacen frameworks y herramientas CLI para golang

    • Lo que me gusta del terminal es el flujo de trabajo centrado en el scroll, donde escribes comandos y puedes ver en secuencia, como un log, las acciones y salidas de varias fuentes y programas. Lo que realmente quiero es un flujo de trabajo potente de scroll multiprograma basado en HTML. Pero estos intentos recientes se sienten como una mezcla de lo peor de ambos lados. Preferiría encontrar una buena UI en un sistema de renderizado mejor

    • En realidad, esta tendencia de UI de texto ya era el estilo característico de charmbracelet desde antes de que salieran los agentes de IA. A mí me gusta porque, a diferencia de los TUI tradicionales, sus key bindings se descubren de forma más intuitiva

    • Una de las razones por las que estas interfaces están reuniendo fans y desarrolladores tan rápido probablemente es que mucha gente ya está acostumbrada a editores estilo IDE con interfaz gráfica. No todos los desarrolladores trabajan solo en la terminal. (Yo todavía tengo días en los que ni siquiera inicio X/Wayland)

    • Al menos se puede usar Claude Code desde emacs https://github.com/stevemolitor/claude-code.el

  • Una de las cosas buenas de esta herramienta es que todavía está en una etapa temprana, así que el código es muy claro y modular. Es un excelente plano de referencia si quieres diseñar un agente: llamadas de herramientas, sesiones, auto-resumen, manejo de persistencia, etc. Definitivamente vale la pena guardar este enlace del commit

  • Para quienes realmente quieran leer lo que está pasando en el GIF de demostración, alguien lo convirtió a un video más lento con ffmpeg y lo subió https://share.cleanshot.com/XBXQbSPP

  • Lo usé en serio unos 15 minutos. Comparado con Claude Code, las ventajas son una UI hermosa, una barra lateral útil para seguir archivos modificados, costos y demás, y una UX fluida para aceptar cambios (hotkeys, diff fácil de leer). En cambio, las desventajas son que no se pueden combinar varios modelos y que se agregan muchos binarios innecesarios al directorio. La inicialización inicial crea un archivo llamado CHARM.md, pero no coincidía con la información que yo quería compartir con el modelo. Por ejemplo, no se le transmite que mis casos de prueba en Go usan PascalCasing. Además, al salir con Ctrl+C mi terminal se crasheó

    • Sobre esa parte de que la inicialización crea CHARM.md, de verdad ya me gustaría que todos se pusieran de acuerdo en un único estándar conocido para archivos de instrucciones de agentes (por ejemplo, AGENT.md). Es un estándar que Amp está promoviendo para su propia herramienta CLI, pero aun entendiendo la ironía, termino apoyando esa idea https://ampcode.com/AGENT.md. O también existe este hack indirecto https://kau.sh/blog/agents-md/
  • La pregunta realmente importante es cuál de los agentes nuevos soporta bien modelos locales. Quiero eliminar la dependencia de APIs externas y estoy dispuesto a aceptar cierta pérdida de rendimiento

    • Hay un issue en curso para que Crush agregue soporte para Ollama (lleva 2 semanas)

    • La mayoría de los agentes funcionan con endpoints compatibles con OpenAI

    • OpenHands permite configurar cualquier LLM que quieras https://github.com/All-Hands-AI/OpenHands

    • Aider también indica que soporta modelos locales, aunque no lo he probado personalmente https://aider.chat/docs/llms.html

  • Estaría buenísimo tener una tabla que compare todas estas herramientas nuevas como Claude Code, opencode, aider y cortex. No es fácil captar de un vistazo cómo funciona cada una o qué las diferencia

    • Comparar o hacer benchmarking con modelos comerciales es muy difícil por el costo. Cuando escribí un paper recientemente, solo evaluar varios modelos comerciales SOTA me costó más de 10 mil dólares. Comparar con modelos abiertos era barato, pero los reviewers querían comparación contra “lo mejor”, así que no hubo alternativa. Además de eso, la arquitectura interna y el stack de los modelos comerciales no son transparentes y pueden cambiar en cualquier momento, así que es muy ineficiente. No creo que sea deseable exigir siempre comparaciones con modelos comerciales en investigación académica

    • Según recuerdo, antes se llamaba opencode, pero luego le cambiaron el nombre por conflictos entre los desarrolladores

    • El rendimiento no depende solo de la herramienta, sino también del modelo usado, la base de código (contexto) y la tarea dada (prompt). Estos factores no son independientes y el rendimiento cambia mucho según la combinación. Por ejemplo, Claude Sonnet 4 con Claude Code me funcionó bien para implementar funcionalidades de backend en Python, mientras que Gemini 2.5 Pro fue mejor para modificar código frontend en React. O sea, no puedes fijar todas las variables y comparar solo la herramienta; necesitas la combinación herramientamodelocontexto*prompt. 16x Eval cubre parcialmente este punto, pero todavía no incluye factores como la herramienta https://eval.16x.engineer/

  • “glamorous” también se usa en inglés británico https://dictionary.cambridge.org/dictionary/english/glamorous

  • Llevo unas semanas usando Crush y la verdad estoy muy entusiasmado. Llevo mucho tiempo siguiendo a Charm, y es uno de los pocos equipos que de verdad entienden la experiencia del desarrollador y que constantemente construyen herramientas que a la gente le gustan. Que se hayan sumado tan temprano a la carrera de la codificación con IA también es una buena señal. Se nota claramente que es una herramienta hecha por gente que realmente la usa

  • Salió otra más, pero esta vez el diseño sí está realmente bien. Definitivamente la voy a probar. Lo que me decepciona de todas estas herramientas (EDIT: opencode sí permite autenticación con github) es que no puedes autenticarte directamente con tu propia suscripción a servicios de tarifa mensual (github copilot, claude code, openai codex, cursor, etc.). Ya pago por esos servicios, y sería genial poder cambiar libremente de interfaz si no me gusta la que traen

    • La mayoría de las herramientas no permiten que otro programa “use” una suscripción mensual. Entonces hay que sacar una API key aparte y pagar por token. Incluso Claude Code durante un tiempo no se integraba con su propia suscripción
  • Mejorado con LSP: Crush usa LSP como contexto adicional, como suele hacer en general. Para mí, esa es la función más interesante. También me interesan las funciones de múltiples sesiones o proyectos

    • Existe un LSP MCP, así que también se puede usar junto con otros agentes