2 points par GN⁺ 2024-11-09 | 1 commentaires | Partager sur WhatsApp
  • Codebuff est un outil CLI qui, lorsque vous saisissez une tâche en langage naturel dans le terminal, lit la base de code et va jusqu’à modifier ou créer des fichiers. Après installation avec npm i -g codebuff, il peut être utilisé immédiatement, sans écran de connexion
  • Il réduit le flux de saisie à une seule étape : l’utilisateur saisit simplement la tâche souhaitée, et l’outil utilise l’exécution des tests, le type checker et l’installation de paquets dans le processus de réalisation de la demande
  • En interne, il utilise tree-sitter pour analyser les symboles, comme les noms de fonctions et de classes, dans 11 langages afin de construire une carte de la base de code, et combine la mise en cache de prompts avec Claude Haiku 3.5 et des appels à Claude/OpenAI
  • L’agent place les fichiers pertinents dans le contexte, puis traite, via des appels d’outils sous forme de balises XML, edit_file, l’exécution de commandes de terminal et les demandes de lecture de fichiers supplémentaires
  • Tous les comptes reçoivent jusqu’à 20 $ de crédits, et davantage de crédits sont proposés avec une offre à 99 $ par mois, mais l’entreprise indique que le service est plus cher que les produits concurrents en raison du grand contexte et des appels LLM coûteux

Modifier du code en langage naturel depuis le terminal

  • Codebuff est un outil CLI qui fonctionne comme un « Cursor Composer dans le terminal »
    • Vous saisissez en langage naturel le changement souhaité, appuyez sur Entrée, et l’outil inspecte la base de code avant de modifier les fichiers
    • Il peut à la fois modifier des fichiers source existants et créer de nouveaux fichiers
    • Il peut exécuter les tests, le type checker et l’installation de paquets pour mener la demande à bien
  • L’installation et le démarrage se font avec npm i -g codebuff
    • Il peut être utilisé immédiatement, sans écran de connexion
    • Tous les comptes reçoivent jusqu’à 20 $ de crédits
  • Vidéo de démonstration : YouTube

Des premières expérimentations au produit

  • L’idée initiale est née lors d’un hackathon, en testant Sonnet 3.5
    • Le premier script récupérait le contexte de la base de code en une seule fois, puis une deuxième étape réécrivait les fichiers
    • Ce processus en 2 étapes subsiste encore aujourd’hui dans Codebuff
    • La démo initiale ne produisait pas de code utile
  • En transmettant au modèle des connaissances propres à chaque base de code, l’idée de knowledge.md est apparue
    • Sur le serveur de la startup précédente, créer un endpoint nécessitait de modifier trois fichiers précis, mais le modèle ne le savait pas
    • En rédigeant un guide de la base de code dans un fichier Markdown, comme on l’expliquerait à un nouvel arrivant, puis en l’ajoutant au prompt système de Sonnet 3.5, la qualité du code s’est nettement améliorée
    • Codebuff utilise encore aujourd’hui un fichier knowledge.md, lu automatiquement à chaque requête
  • Juste avant l’entretien YC, la fiabilité de l’édition de fichiers était le principal goulet d’étranglement
    • Plusieurs stratégies de prompting avaient été essayées pour remplacer des chaînes dans le fichier d’origine, sans fonctionner de manière fiable
    • La veille de l’entretien, GPT-4o a été fine-tuné pour transformer les esquisses de changements produites par Claude en patch git
    • Le lendemain, cela fonctionnait, et la fonctionnalité a été déployée en production juste avant l’entretien YC

Carte de la base de code et flux d’exécution de l’agent

  • Lorsqu’il s’exécute, il parcourt les fichiers source du répertoire courant et de ses sous-répertoires afin de construire une carte de la base de code
    • tree-sitter analyse, dans 11 langages, les noms de fonctions et de classes, ou des symboles équivalents
    • L’outil utilise à la fois l’arborescence des fichiers et les informations de symboles
    • Il envoie une requête à Claude Haiku 3.5 pour mettre en cache le contexte de la base de code et réduire la latence de réponse aux saisies utilisateur
  • Quand l’utilisateur envoie un message, Claude choisit d’abord les fichiers pertinents
    • Les fichiers sélectionnés sont chargés dans le contexte, puis l’agent répond
    • Les appels d’outils sont écrits sous forme de balises XML puis analysés
    • L’exemple est une balise de modification de fichier de la forme <edit_file path="src/app.ts">…</edit_file>
    • D’autres balises permettent aussi d’exécuter des commandes de terminal ou de demander la lecture de fichiers supplémentaires

Configuration serveur et infrastructure

  • Le serveur transmet les messages à Anthropic ou OpenAI et ne stocke pas d’état
    • Les échanges de données entre le client et le serveur utilisent des websockets
    • Pendant les trois premiers mois, les requêtes étaient traitées sans authentification ni base de données, via une installation gratuite et des clés API propres aux utilisateurs
  • Des composants nécessaires à l’exploitation du produit ont ensuite été ajoutés
    • Base de données Postgres + Drizzle
    • Serveur Bun
    • Hébergement Render
    • Authentification Auth.js
    • Site web NextJS
    • Paiements Stripe
    • Logging BetterStack
    • Tableau de bord Retool

Prix, cas d’usage et SDK

  • La tarification comprend un volume gratuit limité et une offre payante à 99 $ par mois
    • L’offre payante fournit davantage de crédits
    • L’entreprise indique être plus chère que les produits concurrents en raison du contexte plus vaste et des appels LLM coûteux
  • Les cas d’usage réels incluent la création d’apps Flutter, l’écriture de tests unitaires, les modifications itératives et l’automatisation de tâches répétitives
    • Un utilisateur a créé deux apps Flutter en parallèle, générant 500 $ de facturation, et a finalisé les apps au fil d’une longue conversation avec Codebuff, sans regarder directement le code généré
    • Plusieurs utilisateurs ont créé, en un week-end, de vraies apps pour leur équipe ou pour un usage personnel
    • Les usages généraux fréquents sont l’écriture de tests unitaires, l’exécution de boucles de modification du code jusqu’à réussite des tests, la configuration de flux OAuth et les travaux de scaffolding d’API
  • Un SDK alpha est également proposé aux utilisateurs qui veulent employer Codebuff dans leurs propres systèmes
    • Une app peut appeler la même interface en langage naturel et recevoir des modifications de code
    • Lien de demande d’early access : formulaire Retool

1 commentaires

 
GN⁺ 2024-11-09
Avis Hacker News
  • Félicitations pour le lancement de Codebuff, mais cela semble très similaire à Aider. Aider est open source, et quand on lui demande d’ajouter des fichiers, il suffit d’approuver. Aider peut aussi exécuter des commandes. Je me demande quelle est la différence

  • Les démos s’appliquent toujours à des projets simples, et il manque des exemples sur de vrais projets complexes. J’ai besoin d’aide pour résoudre les parties difficiles d’une PR. Beaucoup d’outils aident à démarrer, mais sont insuffisants pour résoudre les problèmes

  • Je n’ai pas envie de payer 20 $ pour envoyer ma clé SSH et mon presse-papiers à plusieurs tiers. J’aimerais acheter un logiciel qui offre un support shell inline sans appel réseau. C’est mon avis général sur ce genre de produits

  • Codebuff était auparavant connu sous le nom de manicode, et il est utile pour les tâches de refactorisation complexes. Je l’ai utilisé sur un projet Rust pour séparer des fichiers dans un répertoire de modules, et il pouvait exécuter les tests et vérifier les erreurs de compilation. Cette tâche a consommé environ 100 crédits

  • Je me demande si le code est transmis via leurs serveurs. Il me semblerait préférable de l’implémenter comme un service local. Je me demande si le LLM peut recevoir des commandes susceptibles d’entraîner une perte de fichiers, et comment cela serait empêché

  • Il est risqué et peu sûr qu’un LLM exécute des commandes sans revue humaine

  • Il y a déjà AIDE, Continue, Cody, Aider et Cursor. Je me demande pourquoi il faudrait utiliser cet outil

  • J’ai essayé cet outil, et il a des avantages par rapport à CoPilot et Cursor. En particulier, avec CoPilot, on n’a pas l’impression qu’il est en "concurrence" avec l’éditeur. J’ai des inquiétudes sur la sécurité, et je me demande comment les fichiers sensibles sont traités

  • Je me demande s’il est meilleur que Cursor en termes de qualité de code. J’utilise Cursor et cela me fait gagner du temps sur la copie de fichiers. Je continue malgré tout à coder via l’interface chatGPT/claude

  • GPT-4o a été fine-tuné pour convertir les esquisses de modifications de Claude en patchs git. Les données d’entraînement ont été générées tard dans la nuit, et le fine-tuning a été lancé pendant le sommeil. Je me demande quel était le contenu complet des données d’entraînement et comment les esquisses de modifications et les patchs git fonctionnaient