Réduire la consommation de tokens d'Aider

Aider envoie une carte du dépôt à chaque requête et, sur certains modèles, redemande des fichiers entiers. Ces deux défauts décident de votre facture, et chacun tient dans un flag.

Profile photo of Paul Irolla

Par Paul Irolla

Founder · AI & developer tools · Tokenade

Docteur en IA · conçoit des outils d'optimisation de tokens pour agents de code

Voir la page de l'auteur
6 min de lecture
Résumer avec l'IA
Citer cette page
Fait partie du pilier réduire l'usage des tokens d'un agent de code. Cette page est spécifique à Aider.

Comment réduire la consommation de tokens d'Aider ?

Vérifiez d'abord votre format d'édition, puis le budget de votre carte du dépôt. Sur un modèle configuré en format whole, Aider demande au LLM de renvoyer le fichier entier pour un changement de deux lignes, et ce seul défaut peut coûter plus que tout le reste de cette page réuni. Aider fonctionne en apportez-votre-clé. Aucun forfait n'absorbe l'inefficacité : chaque token évitable arrive sur une facture fournisseur à votre nom. La contrepartie, c'est qu'Aider est inhabituellement transparent sur leur destination — /tokens détaille le contexte courant à la demande, ce que peu d'agents offrent.

Pourquoi Aider consomme-t-il des tokens ?

Parce que deux choses sont renvoyées en permanence, et que l'une d'elles est votre dépôt entier, en plan. Aider envoie une carte du dépôt au modèle avec chaque requête de modification. Cette carte liste les fichiers du dépôt et les symboles clés définis dans chacun, avec les lignes critiques de chaque définition. C'est réellement astucieux — un algorithme de classement par graphe sur un graphe de dépendances sélectionne les portions les plus pertinentes plutôt que de tout déverser — et c'est aussi une charge permanente à chaque tour. La seconde est le format d'édition, qui décide de la quantité que le modèle doit réécrire. C'est de la sortie, facturée plus cher au token que l'entrée, et en format whole elle a la taille du fichier plutôt que celle du changement.

Que contrôle réellement --map-tokens ?

Le budget en tokens de la carte, avec une tendance documentée à le dépasser. --map-tokens vaut 1k tokens par défaut. La documentation d'Aider est franche sur ce qui suit : elle « ajuste dynamiquement la taille de la carte selon l'état de la conversation », restera « en général dans la valeur du réglage », mais « étend parfois la carte de façon significative, en particulier quand aucun fichier n'a été ajouté à la conversation ». Cette dernière clause est celle qui compte. Une conversation vide est exactement le moment où la carte enfle, parce qu'Aider tente de comprendre le dépôt entier sans autre point d'appui. Le moment coûteux est donc celui qui précède le moment où vous lui donnez de quoi travailler. Deux tickets ouverts sur le dépôt documentent l'ampleur de l'écart. Le ticket #752 rapporte un lancement avec --map-tokens 1024 alors que /tokens affiche plus de 16 000 tokens pour la carte. Le ticket #3796 demande pourquoi la bannière annonce 4 096 tokens quand la carte réelle en fait plus du double. À lire pour ce que c'est : le budget est une cible que l'optimiseur vise, pas un plafond que l'exécution impose. Ne posez pas --map-tokens en considérant l'affaire réglée. Lancez /tokens et regardez.

Quel format d'édition utiliser ?

diff ou udiff sur tout modèle qui les gère. whole seulement quand le modèle ne sait pas faire mieux. Les formats d'édition d'Aider n'ont pas du tout le même coût :
FormatCe que le modèle renvoie
wholeUne copie complète et à jour de chaque fichier modifié
diffDes blocs recherche/remplacement — uniquement les parties changées
diff-fencedComme diff, chemin à l'intérieur de la clôture (modèles Gemini)
udiffDiff unifié simplifié — uniquement les parties changées
La description de whole par Aider est sans détour : « ça peut être lent et coûteux, parce que le LLM doit renvoyer le fichier entier même si seules quelques lignes changent ». Sur un fichier de 1 200 lignes et un correctif de trois lignes, c'est le fichier entier, en tokens de sortie, à chaque fois. Aider choisit déjà le format optimal pour la plupart des modèles courants : vérifiez donc avant de changer quoi que ce soit. --edit-format force la main, et imposer diff à un modèle incapable de le produire de façon fiable échange des tokens contre des éditions ratées et des reprises, ce qui est un plus mauvais marché.

Que coûte le mode architecte ?

Deux modèles au lieu d'un, et ce n'est pas automatiquement plus cher. Le mode architecte scinde le travail : un modèle architecte résout la tâche et émet des instructions en texte simple, un modèle éditeur les transforme en modifications réelles, via les formats allégés editor-diff ou editor-whole avec --editor-edit-format. L'arithmétique n'est pas évidente. Vous payez deux appels, mais le modèle de raisonnement coûteux n'a plus à produire des diffs syntaxiquement parfaits, et le modèle éditeur bon marché fait la partie mécanique. Que ce soit gagnant dépend de l'écart de prix entre les deux et de la fréquence à laquelle la configuration à un seul modèle reprenait des éditions ratées. À mesurer plutôt qu'à supposer, dans un sens comme dans l'autre.

Le cache de prompts vaut-il le coup ?

Oui, et il est désactivé par défaut. Lancez avec --cache-prompts et Aider organise l'historique pour mettre en cache ce qui se répète : le prompt système, les fichiers en lecture seule ajoutés via --read ou /read-only, la carte du dépôt, et les fichiers éditables ajoutés à la conversation. Que la carte du dépôt soit cachable est le point important, parce que c'est précisément elle qui est renvoyée à chaque requête. Le cache transforme la plus grosse ligne récurrente en une ligne bien moins chère. Une réserve à connaître avant d'évaluer le résultat : les statistiques et coûts de cache ne sont pas disponibles en réponse streamée, à cause de limitations des API fournisseurs. Pour voir ce que le cache fait vraiment, ajoutez --no-stream. Mesurez sans streaming, puis décidez si vous le laissez désactivé.

Comment voir où sont partis les tokens ?

/tokens, puis /drop et /clear.
  • /tokens rapporte le nombre de tokens utilisés par le contexte courant, ventilé. C'est la commande qui met fin aux discussions sur la responsabilité de la carte du dépôt.
  • /drop retire des fichiers de la session pour libérer du contexte. Les fichiers ajoutés il y a trois tâches sont toujours envoyés.
  • /clear vide l'historique quand la transcription elle-même est devenue le coût.
  • /ask permet de poser des questions sur le code sans éditer de fichiers, ce qui évite de tirer des fichiers dans l'ensemble éditable juste pour les regarder.

Comment appliquer ça dès aujourd'hui

  1. Lancez /tokens avant tout. Il faut savoir si la carte, les fichiers ou l'historique dominent. La réponse change d'un dépôt à l'autre.
  2. Vérifiez votre format d'édition. Si un modèle est en whole, cherchez s'il gère diff de façon fiable. C'est le plus gros levier sur le coût de sortie.
  3. Posez --map-tokens délibérément, puis vérifiez avec /tokens que la réalité suit. Le comportement documenté dit que parfois non.
  4. Ajoutez des fichiers avant de poser de grosses questions. Une conversation vide est le moment où la carte enfle le plus.
  5. Activez --cache-prompts, et mesurez une fois avec --no-stream pour voir réellement l'effet.
  6. Faites /drop sans état d'âme. Un contexte que vous n'éditez plus est un coût récurrent pur.

Ce qui cloche en pratique (anti-patterns)

Faire confiance à --map-tokens sans vérifier. Deux tickets ouverts disent que le budget n'est pas toujours respecté, et le dépassement se compte en multiples, pas en pourcentages. Un appel à /tokens tranche. Laisser whole en place parce que ça marche. Ça marche. Ça renvoie aussi un fichier complet pour un changement d'une ligne, dans la classe de tokens que vous payez le plus cher. Évaluer le cache avec le streaming actif. Les statistiques sont indisponibles dans ce mode : vous ne conclurez rien, et probablement de travers. Prendre la carte du dépôt pour gratuite parce qu'elle est astucieuse. Le classement par graphe est du bon travail d'ingénierie, et son résultat est quand même envoyé à chaque requête. Croire que ça règle les sorties de commandes. Aider ne filtre pas ce que votre lanceur de tests imprime avant que ça n'entre dans le contexte. C'est un problème distinct et généralement plus gros — voir filtrer la sortie des commandes.
À lire aussi :

Réduisez la facture de tokens de votre agent IA.

Classé n°1 au Token-Harness Optimizer Leaderboard. Zéro config.

Tokenade est la façon la plus simple de réduire ce que votre agent de code envoie au modèle — installez-le une fois et économisez sur chaque prompt.