Retour aux articles • IA • • 3 min de lecture

RTK : compresser le terminal en Rust

Filtrer et compresser à la volée les sorties de commandes shell (git, cargo, pytest, docker) avec RTK en Rust pour économiser 65 % à 85 % de tokens.

RTK : compresser le terminal en Rust

Lorsqu’un agent de codage autonome (Claude Code, Aider, Cursor ou Antigravity) exécute une suite de tests ou inspecte l’état d’un dépôt, la sortie brute du terminal (stdout / stderr) devient rapidement la première source de pollution de la fenêtre de contexte. Une seule exécution de cargo test, pytest -vv ou docker compose logs injecte des milliers de lignes de barres de progression ANSI, de traces d’empilement redondantes et de tests réussis sans intérêt diagnostique.

RTK (Rust Token Killer) résout ce problème à la source : ce binaire léger écrit en Rust intercepte le flux standard des commandes CLI, élimine le bruit syntaxique en moins d’une milliseconde et ne transmet au LLM que la substantifique moelle (erreurs, diffs pertinents et métriques de synthèse).


Pourquoi filtrer le terminal avant l’IA ?

Plutôt que de demander au LLM de résumer lui-même un log massif (ce qui facture déjà les tokens d’entrée au prix fort), RTK agit comme un pré-processeur déterministe en amont du modèle :

Architecture & Flux : RTK : compresser le stdout CLI en Rust

Trois optimisations expliquent son efficacité en production :

  1. Suppression matérielle des séquences d’échappement ANSI/VT100 : les codes couleurs, mouvements de curseur (\x1b[2K) et barres de téléchargement qui fragmentent le segmenteur BPE (Byte-Pair Encoding) sont purgés à la volée.
  2. Repliement sémantique par outil (Tool-Aware Folding) : RTK reconnaît nativement le format de sortie de git status, git diff, cargo build/test, pytest, jest, kubectl et docker. Lorsqu’une suite de 400 tests passe avec succès et que 2 échouent, RTK remplace les 398 lignes PASS par un compteur unique et conserve uniquement la trace des 2 échecs.
  3. Déduplication de traces d’empilement (Stacktrace Fingerprinting) : les boucles d’erreurs répétitives dans les journaux applicatifs sont regroupées avec un compteur d’occurrences ([x42 lignes identiques omises]).

Mise en place avec Claude Code

L’installation s’effectue via cargo ou en déposant le binaire statique compilé dans /usr/local/bin/rtk :

# Compilation et installation du binaire Rust
cargo install --locked rtk-cli

# Exécution d'une suite de tests avec compression automatique pour l'agent
rtk run -- cargo test --workspace

# Filtrage d'un diff Git volumineux (exclusion des lockfiles et du bruit)
git diff HEAD~1 | rtk filter --mode diff --max-lines 250
Animation exécution CLI dans le terminal

–> L’intérêt d’une implémentation en Rust (regex-automata + buffers zéro-copie) est d’introduire une latence inférieure à 0,8 ms sur un flux de 1 Mo, rendant l’outil totalement transparent dans une boucle TDD interactive.


Caractéristiques

Critère / CommandeSortie Brute Standard (stdout)Pipe head/tail ClassiqueRTK (Rust Token Killer)
Suite pytest / cargo test (350 tests)~12 400 tokensPerte des erreurs en milieu de log~950 tokens (-92 %)
Garde des Stacktraces d’erreurComplète mais noyée❌ Risque de troncature✅ 100 % des échecs préservés
Nettoyage des séquences ANSI / Spinners❌ Facturé en tokens BPE❌ Non nettoyé✅ Purgé à 100 %
Surcoût CPU / Latence0 ms< 1 ms< 1 ms (Binaire natif Rust)
Adaptation au format (git, docker, k8s)AucuneAucune✅ Parseurs dédiés intégrés
CommandeDescription
`rtk run -- pytest -q`
Exécute pytest en masquant les tests réussis et en isolant uniquement les tracebacks d'échec.
`rtk run -- cargo check`
Condense les avertissements du compilateur Rust et déduplique les notes redondantes.
`git diff | rtk filter --mode diff`
Ignore les fichiers générés (lockfiles, bundles minifiés) et résume les hunks massifs.
`docker logs app 2>&1 | rtk filter --dedup`
Regroupe les lignes de logs répétitives et supprime les horodatages redondants.