Documentation / Fonctionnement
Compaction des sorties et stash
Mis à jour le
Chaque sortie traitée par Tokenade suit le même circuit : les secrets sont masqués, un compacteur qui connaît la commande ou le format retire le bruit, et ce qui reste trop volumineux est replié en aperçu, tandis que l'original complet est conservé dans un stash local. L'agent voit l'aperçu et un hash qu'il peut interroger. Rien n'est perdu, et rien ne grossit.
Le circuit
- Capture.
tokenade wrapexécute la commande (ou un hook reçoit le résultat de l'outil). Plafonds de capture : 16 Mo pour stdout et 4 Mo pour stderr. - Masquage. Les identifiants et autres valeurs ressemblant à des secrets sont remplacés par
<redacted>avant tout stockage ou affichage. - Compaction. Un compacteur retire ce dont le modèle n'a pas besoin (voir plus bas).
- Repli et stash. Si le résultat dépasse encore le seuil, la sortie complète est écrite dans le stash et l'agent reçoit un aperçu replié avec un bandeau de récupération.
- Garde-fou. Si la version compactée devait être plus grosse que l'entrée, ce sont les octets bruts qui sont renvoyés.
Le choix du compacteur
Tokenade reconnaît la commande lancée et utilise un compacteur qui connaît sa sortie : git, cargo, npm, pytest, kubectl, docker, terraform et bien d'autres.
Quand la commande ne fait pas partie de celles qu'il connaît, Tokenade reconnaît plutôt le format de la sortie : JSON, YAML, CSV, XML, Markdown, diffs, traces de pile, tableaux, installations de paquets, logs, schémas, notebooks, entre autres. Le code source est renvoyé tel quel.
Vous pouvez ajouter vos propres règles en TOML ; voir compacteurs personnalisés.
Le repli et son bandeau
Quand la sortie dépasse encore le seuil après compaction, le texte complet part dans le stash et l'agent reçoit un court aperçu. Le bandeau indique combien a été replié et comment le récupérer :
Le hash compte 12 caractères hexadécimaux. Pour récupérer le détail, voir Récupérer une sortie repliée.
Seuils et limites
| Réglage | Défaut | Modifier avec |
|---|---|---|
| Seuil de stash, sortie de commande | 5 000 tokens | TOKENADE_DISCLOSE_THRESHOLD |
| Seuil de stash, lecture de fichier | 25 000 tokens | TOKENADE_READ_DISCLOSE_THRESHOLD |
| Répertoire du stash | ~/.cache/tokenade/stash/ sous Linux, le répertoire de cache de la plateforme ailleurs | TOKENADE_STASH_DIR |
| Taille maximale du stash | 2 Gio, les plus anciennes entrées supprimées d'abord | TOKENADE_STASH_MAX_DIR_BYTES |
| Fichier de stash unique | 50 Mo | |
| Durée de vie | 7 jours depuis la dernière utilisation |
Combien garder : le mode de lecture
TOKENADE_READ_MODE règle la part d'une longue liste ou lecture qui reste en clair :
| Mode | Effet |
|---|---|
aggressive | Garde moins en clair que le défaut |
task | Par défaut |
reference | Garde davantage en clair, pour configurations, schémas et diffs complets |
entropy | Garde les lignes les plus informatives, dans leur ordre d'origine |
Un repli qui applique le mode l'indique dans son bandeau, par exemple [tokenade:git-ls-files·aggressive]. Tous les compacteurs n'appliquent pas le mode. tokenade read-mode affiche le mode actif.
Déduplication
Tokenade se souvient du contenu déjà livré. Quand le même fichier ou la même sortie revient inchangé, l'agent reçoit un court renvoi §ref:HASH§ au lieu du texte complet une seconde fois. Une interrogation identique répétée, comme vérifier en boucle l'état d'une compilation, reçoit une courte note « inchangé ».
Masquage des secrets
Tokenade masque les secrets connus dans toutes les sorties qu'il traite : en-têtes Authorization, affectations api_key= et *_TOKEN=, *_KEY=, *_SECRET=, clés AWS, GitHub, Stripe et d'autres fournisseurs, clés privées, numéros de carte et chaînes à forte entropie. Le masquage a lieu avant la déduplication et le rangement : le stash ne contient jamais ce qui a été masqué. Il continue même quand la compaction est désactivée ou que votre licence n'est pas active.
Si quelque chose est passé avant une mise à jour, tokenade scrub-cache réapplique les motifs à ce qui est déjà sur disque.
Ce qui n'est jamais fait
- Une sortie n'est jamais agrandie : le garde-fou renvoie les octets bruts avec l'étiquette
passthrough_inflated. - Les codes de sortie ne sont jamais modifiés.
tokenade readsur un fichier source le renvoie inchangé.- Les économies négligeables ne sont pas comptées (voir Comment les économies sont mesurées).