Claude Chill : corriger le scintillement de Claude Code dans le terminal
(github.com/davidbeesley)- Claude Chill est un outil proxy PTY qui atténue les problèmes de latence et de scintillement causés lorsque Claude Code redessine de façon répétée l’intégralité du terminal
- Il intercepte les sorties synchronisées (
sync blocks) utilisées par Claude Code et, grâce à un rendu basé sur VT100, ne met à jour que les parties modifiées de l’écran - Il conserve un tampon d’historique pour permettre le scrollback, avec un mode lookback accessible via Ctrl+6 pour consulter l’historique complet des sorties
- Il propose une fonction auto-lookback qui exporte automatiquement l’historique après une certaine période d’inactivité
- Il fonctionne sous Linux et macOS et constitue une solution légère pour améliorer les performances et la lisibilité du terminal
Aperçu
- Claude Chill est un programme proxy PTY conçu pour résoudre les problèmes de sortie terminal de Claude Code
- Claude Code encapsule toute la sortie dans des blocs synchronisés pour effectuer un rendu en une seule fois, mais ce processus provoque des rafraîchissements plein écran de plusieurs milliers de lignes
- Cela entraîne des problèmes de latence, scintillement et perte du scrollback
- Claude Chill se place entre le terminal et Claude Code pour n’appliquer que les différences de sortie et conserver un tampon d’historique
Fonctionnalités principales
- Interception des blocs sync : détecte et traite les gros blocs synchronisés envoyés par Claude Code
- Rendu basé sur VT : utilise un émulateur VT100 pour suivre l’état de l’écran et n’afficher que les parties modifiées
- Conservation de l’historique et mode lookback : stocke la sortie dans un tampon pour permettre la consultation des anciens journaux
- Entrée dans le mode lookback avec la touche Ctrl+6
- Met temporairement en pause la sortie de Claude et affiche l’historique complet dans le terminal
- On peut quitter en appuyant à nouveau sur la touche ou avec Ctrl+C
- Auto-lookback : si aucune saisie n’est détectée pendant un certain temps (15 secondes par défaut), l’historique est exporté automatiquement
- Peut être désactivé avec l’option
-a 0 - Lors d’un export automatique, l’écran peut scintiller brièvement
- Peut être désactivé avec l’option
Installation et utilisation
- Installation :
cargo install --path crates/claude-chill - Exemples d’exécution :
- Exécution de base :
claude-chill claude - Passage d’arguments :
claude-chill -- claude --verbose - Définir la taille de l’historique :
claude-chill -H 50000 claude - Désactiver l’auto-lookback :
claude-chill -a 0 claude
- Exécution de base :
- Options principales :
-H, --history: nombre maximal de lignes d’historique (100000 par défaut)-k, --lookback-key: touche de bascule du mode lookback-a, --auto-lookback-timeout: délai d’attente avant l’auto-lookback (ms)
Fichier de configuration
- Emplacement :
- Linux :
~/.config/claude-chill.toml - macOS :
~/Library/Application Support/claude-chill.toml
- Linux :
- Principales entrées :
history_lines: nombre maximal de lignes d’historiquelookback_key: touche de bascule du mode lookbackrefresh_rate: FPS de renduauto_lookback_timeout_ms: délai de l’auto-lookback
Protocole clavier et configuration des touches
- Bascule automatiquement de mode dans les terminaux prenant en charge le Kitty Keyboard Protocol (Kitty, Ghostty, WezTerm, etc.)
- Si Claude Code active le mode Kitty, Claude Chill reconnaît automatiquement cet encodage lui aussi
- Format des touches :
[modifier][key]- Exemples :
[f12],[ctrl][g],[ctrl][shift][j]
- Exemples :
- La touche par défaut Ctrl+6 envoie ASCII 0x1E et n’entre en conflit avec presque aucun terminal
- Sur macOS, Ctrl+Shift+6 (Ctrl+^) produit le même comportement
Fonctionnement
- Claude Chill crée un terminal virtuel (PTY) et lance Claude Code comme processus enfant
- Architecture proxy d’entrée/sortie :
Terminal ⇄ claude-chill ⇄ Claude Code - Principales étapes de traitement :
- Entrée : transmise à Claude, seule la touche lookback est interceptée
- Sortie : détection des blocs synchronisés, la sortie asynchrone est transmise telle quelle
- Suivi de l’état de l’écran via l’émulation VT
- Rendu des seules différences après comparaison avec l’état précédent
- Conservation du tampon d’historique et prise en charge du mode lookback
- Transmission à Claude des signaux comme SIGWINCH, SIGINT, SIGTERM
Points d’attention
- Outil développé pour un usage personnel, sans campagne de tests étendue
- Fonctionnement vérifié sur Linux et macOS
- Son utilisation n’est pas recommandée sur des systèmes ou infrastructures critiques
- Licence MIT
1 commentaires
Avis sur Hacker News
Je suis responsable du rendu TUI de Claude Code
Désolé pour la gêne occasionnée pendant si longtemps, mais aujourd’hui nous avons déployé à tous les utilisateurs un rendu différentiel (differential renderer)
Nous avons entièrement réécrit le système de rendu, et désormais seule environ 1/3 des sessions subit encore des scintillements intermittents. Les scintillements continus ont quasiment disparu
J’ai aussi soumis des correctifs pour la prise en charge de la sortie synchronisée (mode DEC 2026) dans le terminal VSCode et tmux, et ils ont déjà été fusionnés
Si vous voulez une expérience totalement sans scintillement, je recommande Ghostty. Plus d’infos dans le commentaire de l’issue #769, la PR xterm.js #5453 et la PR tmux #4744
Des commentaires sont postés chaque jour sur les issues GitHub (#1913, #826, #3648), mais depuis le rollback de décembre, il n’y a presque pas eu de réponse d’Anthropic
Je comprends la difficulté technique, mais ce manque de communication a sans doute entamé la confiance des utilisateurs
Ça arrive alors que je ne fais tourner qu’un ou deux agents. Je me demande s’il pourrait rester une limite de débit de l’ancien forfait, ou si des sessions à long contexte pourraient en être la cause
Malgré ça, je trouve l’outil vraiment passionnant, car il me permet de créer des applis qui étaient impossibles auparavant
Sur macOS avec iTerm, l’écran remontait à chaque perte de focus de la fenêtre, ce qui était vraiment pénible
Il y avait une fuite mémoire depuis Ghostty 1.0, et des applis CLI comme Claude Code réunissaient souvent les conditions qui faisaient apparaître le problème
Le correctif a déjà été fusionné et sera inclus dans la version 1.3
Si c’était configurable de manière aussi flexible que Zed, l’expérience serait bien meilleure
Cela fait des mois que je n’ai pas utilisé Claude Code, et je suis surpris de voir que le flicker n’est toujours pas réglé
Je me dis que si ce n’est pas open source, ce n’est peut-être pas à cause de la concurrence, mais plutôt à cause du désordre de la base de code
Il y a des détails à ce sujet dans l’issue #769
J’ai patché le paquet npm en local, mais ce n’est pas parfait. Il faut changer en profondeur la manière de faire le rendu
À titre de comparaison, OpenAI Codex est écrit en Rust + ratatui, donc il n’a pas ce problème
Ce genre de bug complexe finit par nécessiter qu’une personne s’y mette directement un week-end, mais on dirait qu’ils se contentent de lancer des agents
D’autres outils CLI (opencode, codex, gemini, droid, etc.) n’ont pas ce problème
S’ils l’avaient utilisé eux-mêmes dans un environnement tmux, ils sauraient à quel point c’est pénible, mais j’ai quand même envie d’être un peu compréhensif
J’aimerais utiliser Claude Code, mais je ne peux pas à cause de la fonction de scrollback de Ghostty qui est cassée
Le proxy PTY intercepte le flux de sortie, ce qui bloque l’accès de Ghostty à son tampon interne
Je me demandais ce que signifiait exactement le flickering
Parfois, Claude Code se met soudainement à faire défiler l’écran vers le haut, puis il devient difficile de redescendre, et il faut redémarrer le terminal pour revenir à la normale
J’aimerais qu’il y ait une option pour ancrer le champ de saisie en bas du terminal
C’est pénible de devoir sans cesse faire défiler entre le chat et la zone de saisie
Du point de vue de l’usage mobile, ce serait une fonctionnalité qui changerait complètement la donne
En voyant le format de readme.md, c’est intéressant, on a l’impression que Claude Code l’a écrit lui-même
Cette mise à jour semble être la plus grosse amélioration apportée à Claude Code ces derniers mois
Je vais l’installer et la tester immédiatement
À ce propos, j’ai vu un précédent post affirmant que le rendu terminal de Claude Code avait été amélioré de 85 %
Merci d’avoir enfin réduit le flickering. C’était un bug qui donnait la migraine, donc ça va vraiment faire du bien
J’espère qu’Anthropic réglera rapidement ce problème de façon définitive
Codex reste beaucoup plus réactif même quand les sessions s’allongent, alors que Claude devient poussif avec le temps