Aller au contenu
Guide Avancé 12 min

Layerer les modèles d'un agent CLI à budget plafonné

Sébastien Giband · Dev Symfony/TypeScript · terminal-first ·
pi opencode Go Claude Code PHP/Symfony 7 TypeScript/React

TL;DR

Sous un abonnement à budget plafonné comme opencode Go, choisir un modèle ne se fait pas au prix du token mais aux requêtes par 5 h, à la seule source qualité encore vivante (vals.ai) et à la fiabilité du tool-calling — le critère décisif qu'aucun benchmark ne mesure. Le résultat : un modèle par preset, un frontier délégué hors de l'agent, et des outils contraints plutôt qu'instruits.

model-routing opencode-go inference-cost layering workflow

Choisir un modèle pour un agent de coding était simple tant qu’un seul dominait. En 2026, sous un abonnement à budget plafonné comme opencode Go — un pool de modèles ouverts accessibles pour une somme mensuelle fixe — la question devient : quel modèle sur quelle tâche, sachant que le quota est fini et que la moitié des modèles ont des défaillances documentées ? Voici la méthode que j’ai appliquée pour layerer mon setup pi, avec les chiffres relevés en juillet 2026.

Pourquoi le prix au token ne suffit plus à choisir un modèle ?

Parce qu’un budget plafonné ne se dépense pas en tokens, il se dépense en requêtes. opencode Go plafonne à 60 $/mois — soit, une fois lissé sur les fenêtres glissantes, environ 2,77 $ par jour ouvré effectif. Le tarif au token ne dit rien de ce que tu vas réellement brûler, parce qu’il ignore la verbosité du modèle.

Le chiffre décisif, opencode Go le publie lui-même : le nombre de requêtes par tranche de 5 h, qui intègre déjà prix et verbosité. Relevé en juillet 2026 :

ModèleReq. / 5 h
Grok 4.5120
GLM-5.2880
DeepSeek V4 Pro4 300
Hunyuan 3 (hy3)30 100

Grok 4.5 consomme 36× plus de quota que DeepSeek V4 Pro, et 251× plus que Hy3. Un modèle « pas cher au token » mais bavard peut vider ton quota en une matinée. C’est le premier filtre : un modèle à 120 req/5 h ne peut pas être ton défaut, il est réservé à un usage parcimonieux.

Comment lire les benchmarks qui restent ?

Le piège de 2026 : les leaderboards indépendants et reproductibles ont gelé ou changé de cap, et ce qui reste à jour est majoritairement auto-déclaré. Je détaille cet effondrement — et pourquoi il faut s’en méfier plutôt que d’y renoncer — dans le dispatch Choisir un modèle quand les benchmarks ne suivent plus. Côté méthode, retiens deux garde-fous.

Une seule source reste vivante et indépendante : vals.ai (SWE-bench Verified, mis à jour en continu). Extrait de juillet 2026 :

ModèleScoreDispo
Claude Opus 597,0quota Claude
Kimi K393,4Go
Grok 4.586,6Go
GLM-5.282,8Go
Kimi K2.7 Code78,2Go
DeepSeek V4 Pro77,4Go

Premier garde-fou : elle sature. Les cinq premiers tiennent en quatre points, avec ~2 points d’erreur type. On s’en sert pour éliminer le bas, pas pour départager le haut. Second : aucun de ces chiffres ne parle de ta stack — aucune donnée publique n’existe sur les performances PHP/Symfony de ces modèles (SWE-bench est du Python, Terminal-Bench du shell). Tout classement appliqué à ton code est une extrapolation par proxy, d’où le test local en bout de course.

Quel est le vrai critère pour un agent CLI ?

La fiabilité du tool-calling — et aucun benchmark de qualité ne la mesure. Un agent CLI ne fait que ça : lire, éditer, lancer du bash, réécrire. Un modèle qui score haut en génération mais rate un appel d’outil sur cinq est inutilisable en agent.

Le seul dont le tool-calling soit vérifié indépendamment est Kimi K2.7 Code (MCPMark Verified : 81,89 %, devant Claude Opus 4.8 et DeepSeek V4 Pro). Rançon : c’est le plus lent du lot (~51 t/s). Pour un rôle qui doit enchaîner des outils sans dérailler, c’est le signal le plus solide du dossier.

À l’inverse, une issue opencode rapporte que DeepSeek V4 Pro/Flash et MiMo renverraient une erreur 500 dès que le paramètre tools est présent, sur les backends Go. Attention : ce constat est contesté — deux sources indépendantes (CI OpenHands, groupe de contrôle) ne le reproduisent pas, mais toutes deux passent par litellm, pas par le backend Go. À traiter comme un risque non tranché, à vérifier soi-même avant de confier du volume à ces modèles.

À quoi ressemble le layering une fois tranché ?

Un modèle par preset, chaque affectation portant sa justification. Voici le layering déployé en juillet 2026 sur pi via opencode Go :

PresetModèleOutilsRaison
planglm-5.2read, bash, grep, find, lsMeilleur QI open, 191 t/s
implementkimi-k2.7-coderead, bash, edit, writeSeul tool-calling vérifié indépendamment
reviewgrok-4.5read, bash, grep, find, lsVerbosité la plus basse ; une review consomme peu de requêtes, seul usage tenable sous 120 req/5 h
bulkdeepseek-v4-flashread, writeLe moins cher, mais outils restreints par précaution
fastglm-5.2read, bash, edit, write191 t/s, TTFT 1,35 s
visiongrok-4.5read, bash, grep, find, lsImage input, mais 120 req/5 h → parcimonie
hardkimi-k2.7-code hightousLong-horizon : PR multi-fichiers, refactors profonds

La config réelle est publique : presets.json (ce tableau en JSON) et preset.ts (l’extension qui l’applique).

Le point qui n’est pas dans le tableau : le frontier ne passe pas par l’agent. Pour une tâche qui mérite le meilleur modèle avec tous les garde-fous, je ne bascule pas de modèle dans pi — je délègue à Claude Code interactif. La raison est mécanique : appeler un modèle premium depuis pi via un sous-processus casse les prompts interactifs et aveugle la supervision. Le layering ouvert couvre le quotidien ; le frontier vit ailleurs, en connaissance de cause.

Faut-il instruire le modèle ou le contraindre ?

Le contraindre. Le preset bulk réduit ses outils à ["read", "write"] au lieu de demander au modèle d’éviter les tool calls complexes : une contrainte appliquée tient là où une consigne de prompt se fait oublier sur un run long. C’est la leçon la plus transférable du layering — quand un comportement compte, applique-le, ne le demande pas. Le mécanisme et la config exacte sont dans ce TIL.

Questions fréquentes

C'est quoi le layering de modèles dans un agent de coding ?
Affecter un modèle différent à chaque type de tâche (planifier, implémenter, reviewer, traiter du volume) au lieu d'un modèle unique pour tout. Un agent multi-provider comme pi le permet nativement ; l'intérêt est d'aligner le coût et la fiabilité de chaque modèle sur ce que la tâche exige vraiment.
Pourquoi ne pas juste prendre le modèle le moins cher au token ?
Parce que le prix au token ne dit rien de la verbosité réelle ni des plafonds. opencode Go publie un chiffre plus honnête : le nombre de requêtes par tranche de 5 h. Grok 4.5 en consomme 36× plus que DeepSeek V4 Pro à budget égal — l'écart ne se voit pas sur le tarif token.
Quels benchmarks LLM sont encore fiables en 2026 ?
Presque aucun de façon indépendante. HAL est archivé, le leaderboard officiel d'Aider n'a pas bougé depuis novembre 2025, Terminal-Bench ne contient que des scores auto-rapportés. SWE-bench et LiveCodeBench tournent encore, mais leurs classements publics sont majoritairement auto-déclarés. Seul vals.ai reste un harnais indépendant à jour — et même lui sature en haut de tableau.
Comment savoir si un modèle est fiable en tool-calling ?
Aucun benchmark de qualité ne le mesure directement. Il faut croiser les sources terrain (issues GitHub des harnais, télémétrie) et surtout tester soi-même sur un vrai enchaînement d'outils. Pour un agent CLI, c'est le critère qui prime sur le score de code brut.

Aller plus loin