2 puntos por GN⁺ 2024-11-09 | 1 comentarios | Compartir por WhatsApp
  • Codebuff es una herramienta CLI que, al ingresar tareas en lenguaje natural desde la terminal, lee la base de código y puede incluso modificar o crear archivos; se puede usar de inmediato tras instalarla con npm i -g codebuff, sin barrera de inicio de sesión
  • Reduce el flujo de entrada a un solo paso: el usuario solo escribe la tarea que quiere y la herramienta aprovecha el proceso para ejecutar pruebas, el verificador de tipos e incluso instalar paquetes
  • Internamente usa tree-sitter para parsear símbolos como nombres de funciones y clases en 11 lenguajes y crear un mapa de la base de código, combinando caché de prompts de Claude Haiku 3.5 con llamadas a Claude/OpenAI
  • El agente coloca los archivos relevantes en el contexto y luego procesa llamadas a herramientas en forma de etiquetas XML para edit_file, ejecución de comandos en terminal y solicitudes de lectura de archivos adicionales
  • Todas las cuentas reciben hasta $20 en créditos; hay más créditos disponibles en un plan de $99 al mes, aunque indican que es más caro que productos competidores debido al gran contexto y a las costosas llamadas a LLM

Modificar código con lenguaje natural desde la terminal

  • Codebuff es una herramienta CLI que funciona como un “Cursor Composer dentro de la terminal”
    • Escribes en lenguaje natural el cambio que quieres, presionas Enter, y luego revisa la base de código antes de modificar los archivos
    • Puede tanto modificar archivos fuente existentes como crear nuevos archivos
    • Puede ejecutar pruebas, verificadores de tipos e instalación de paquetes para completar la solicitud
  • La instalación y el inicio se hacen con npm i -g codebuff
    • Se puede usar de inmediato sin barrera de inicio de sesión
    • Todas las cuentas reciben hasta $20 en créditos
  • Video demo: YouTube

De experimento inicial a producto

  • La idea inicial comenzó al probar Sonnet 3.5 en un hackathon
    • El primer script traía de una vez el contexto de la base de código, y en una segunda etapa reescribía los archivos
    • Este proceso de 2 etapas sigue presente en Codebuff actualmente
    • La demo inicial no lograba producir código útil
  • Al intentar transmitir al modelo conocimiento específico de cada base de código surgió la idea de knowledge.md
    • En un servidor de una startup anterior, para crear un endpoint había que modificar 3 archivos específicos, pero el modelo no lo sabía
    • Al escribir una guía de la base de código en un archivo Markdown, como si se le explicara a una persona nueva, e incluirla en el prompt del sistema de Sonnet 3.5, la calidad del código mejoró mucho
    • Actualmente Codebuff también usa un archivo knowledge.md que se lee automáticamente en cada solicitud
  • Justo antes de la entrevista de YC, la mayor limitación era la estabilidad al editar archivos
    • Probaron varias estrategias de prompts para reemplazar cadenas en archivos originales, pero ninguna funcionó de forma estable
    • El día antes de la entrevista ajustaron finamente GPT-4o para convertir en un git patch el boceto de cambios generado por Claude
    • Al día siguiente funcionó, y lo desplegaron a producción justo antes de la entrevista de YC

Mapa de la base de código y flujo de ejecución del agente

  • Al ejecutarse, recorre el directorio actual y sus subdirectorios para crear un mapa de la base de código
    • Usa tree-sitter para parsear nombres de funciones, clases o símbolos equivalentes en 11 lenguajes
    • Utiliza tanto el árbol de archivos como la información de símbolos
    • Hace una solicitud a Claude Haiku 3.5 para cachear el contexto de la base de código y reducir la latencia al responder a la entrada del usuario
  • Cuando el usuario envía un mensaje, Claude primero elige los archivos relevantes
    • Después de cargar los archivos seleccionados en el contexto, el agente responde
    • Las llamadas a herramientas se escriben y parsean como etiquetas XML
    • Un ejemplo es una etiqueta de modificación de archivo con forma <edit_file path="src/app.ts">…</edit_file>
    • Otras etiquetas también permiten ejecutar comandos de terminal o solicitar la lectura de archivos adicionales

Arquitectura del servidor e infraestructura

  • El servidor tiene una estructura que reenvía mensajes a Anthropic u OpenAI, y no guarda estado
    • Usa websocket para mover datos entre cliente y servidor
    • Durante los primeros 3 meses procesó solicitudes con instalación gratuita y claves API propias, sin autenticación ni base de datos
  • Después agregaron los componentes necesarios para operar el producto
    • Base de datos Postgres + Drizzle
    • Servidor Bun
    • Hosting en Render
    • Autenticación con Auth.js
    • Sitio web en NextJS
    • Pagos con Stripe
    • Logging con BetterStack
    • Dashboard con Retool

Precio, casos de uso y SDK

  • El precio se compone de un uso gratuito limitado y un plan de pago de $99 al mes
    • El plan de pago ofrece más créditos
    • Indican que es más caro que productos competidores por el mayor contexto y las costosas llamadas a LLM
  • Entre los casos de uso reales están la creación de apps Flutter, escritura de pruebas unitarias, modificaciones iterativas y automatización de tareas repetitivas
    • Un usuario creó en paralelo dos apps Flutter y generó una factura de $500; completó las apps mediante una larga conversación con Codebuff sin revisar directamente el código generado
    • Varios usuarios crearon apps reales para uso de equipo o personal durante un fin de semana
    • Los usos generales más frecuentes son escribir pruebas unitarias, ejecutar bucles de corrección de código hasta que las pruebas pasen, configurar flujos de OAuth y tareas de scaffolding de API
  • También ofrecen un SDK alpha para usuarios que quieran usar Codebuff en sus propios sistemas
    • La app puede invocar la misma interfaz en lenguaje natural y recibir edición de código
    • Enlace para solicitar early access: Retool form

1 comentarios

 
GN⁺ 2024-11-09
Opiniones en Hacker News
  • Felicidades por el lanzamiento de Codebuff, pero parece muy similar a Aider. Aider es de código abierto y solo hay que aprobar cuando pide agregar archivos. Aider también puede ejecutar comandos. Me pregunto cuál es la diferencia

  • Las demos siempre se aplican solo a proyectos simples, y faltan ejemplos sobre proyectos complejos reales. Necesito ayuda para resolver las partes difíciles de un PR. Muchas herramientas ayudan a empezar, pero se quedan cortas al resolver problemas

  • No quiero pagar $20 por enviar mis claves SSH y mi portapapeles a varios terceros. Quisiera comprar software que ofrezca soporte de shell inline sin llamadas de red. Esa es mi opinión general sobre este tipo de productos

  • Codebuff antes se conocía como manicode y es útil para tareas complejas de refactorización. Lo usé en un proyecto de Rust para separar archivos en directorios de módulos, y puede ejecutar pruebas y revisar errores de compilación. Esta tarea consumió alrededor de 100 créditos

  • Me pregunto si el código se envía a través de sus servidores. Creo que sería mejor implementarlo como un servicio local. También me pregunto si el LLM puede recibir comandos que provoquen pérdida de archivos y cómo piensan evitarlo

  • Es riesgoso y vulnerable desde el punto de vista de seguridad que un LLM ejecute comandos sin revisión humana

  • Ya existen AIDE, Continue, Cody, Aider y Cursor. Me pregunto por qué debería usar esta herramienta

  • Probé esta herramienta y tiene aspectos mejores que CoPilot y Cursor. En particular, no da la sensación de estar “compitiendo” con el editor, especialmente en comparación con CoPilot. Tengo preocupaciones de seguridad y me pregunto cómo manejan los archivos sensibles

  • Me pregunto si es mejor que Cursor en términos de calidad de código. Uso Cursor y me ahorra tiempo al copiar archivos. Aun así, sigo programando usando la interfaz de chatGPT/claude

  • Ajusté finamente GPT-4o para convertir los bocetos de cambios de Claude en parches de git. Los datos de entrenamiento se generaron tarde en la noche y el trabajo de ajuste fino se ejecutó mientras dormía. Me pregunto cuál era el contenido completo de los datos de entrenamiento y cómo funcionaban exactamente los bocetos de cambios y los parches de git