veilletech.fr
10 oct. Feed du jour
#08 DUCKDB Article

DuckDB 2.0 : le CLI compacte sa sortie pour les agents

Moins de décor pour le modèle, et plus de troncature qui passe pour un résultat complet.

Le CLI de DuckDB 2.0 détecte les agents de code (Claude Code, Codex, Cursor, Gemini CLI, Copilot) et passe en tableaux Markdown compacts, tronque explicitement les gros résultats avec un hash, renvoie les erreurs en JSON et annonce le coût des requêtes lourdes. Sur 22 questions TPC-H, la sortie lue par le modèle baisse de 59 %, mais cela ne pèse qu'environ 0,5 % de l'entrée totale.

3 min de lectureintermédiairevidéo 1:11
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Le mécanisme
  3. Ce que la mesure dit, et ne dit pas
  4. Comment s'y prendre
  5. À retenir

Ce qui se passe

Quand un agent de code lance duckdb -c "…", il récupère par un tube un texte dessiné pour un humain : bordures, colonnes alignées, types sous les noms. Chaque caractère de décor coûte des jetons. Pire, un gros résultat est coupé avec un pied de page « (40 shown) » qu'un modèle peut survoler, avant de conclure sur des données qu'il n'a jamais vues.

DuckDB 2.0 ajoute un mode agent au CLI.

Le mécanisme

Le mode s'active seul quand trois conditions sont réunies : une variable d'environnement d'agent est définie (AI_AGENT, AGENT, CLAUDECODE, CODEX_CI, CODEX_SANDBOX, CODEX_THREAD_ID, CURSOR_AGENT, GEMINI_CLI, COPILOT_AGENT, COPILOT_CLI, COPILOT_AGENT_SESSION_ID), la sortie n'est pas un terminal, et aucun format n'a été demandé (-csv, -json, -markdown).

Ce qui change, par défaut :

Ce que la mesure dit, et ne dit pas

Sur les 22 questions TPC-H en facteur d'échelle 100, posées en français courant sans SQL, avec Claude Code (trois runs avec le mode, trois sans) : 132 runs, 132 réponses justes. Le texte lu venant de DuckDB passe de 123,6 k à 50,8 k jetons, soit −59 %.

L'équipe précise elle-même la limite : le coût total ne bouge pas. Le prompt système, relu à chaque tour, pèse bien plus que les résultats, si bien que les jetons économisés font environ 0,5 % de l'entrée totale. Les runs avec le mode ont même demandé un peu plus de tours (237 contre 224). Le gain est dans la fiabilité de lecture, pas dans la facture.

Comment s'y prendre

Terminal
# voir ce que voit l'agent
duckdb -agent -c "SUMMARIZE FROM 'my_data.parquet'" | cat

# comparer avec le rendu classique
duckdb -no-agent -c "SUMMARIZE FROM 'my_data.parquet'"

Les réglages .maxrows N et .maxbytes N (-1 ou 0 : sans limite) ajustent les seuils ; .startup_text none dans ~/.duckdbrc supprime la ligne d'annonce. Il faut que le binaire duckdb du chemin de l'agent soit en 2.0 ou plus, et que l'agent ne demande pas lui-même un format.

Source : Agent Mode in the DuckDB CLI, DuckDB, 9 octobre 2026. Rapport d'expérience : hannes/agent-mode-experiment.