6 pontos por GN⁺ 2026-01-23 | 1 comentários | Compartilhar no WhatsApp
  • Claude Chill é uma ferramenta de proxy PTY que reduz problemas de latência e cintilação causados quando o Claude Code redesenha repetidamente todo o terminal
  • Intercepta os blocos de saída sincronizada (sync blocks) usados pelo Claude Code e atualiza apenas as partes alteradas da tela com renderização baseada em VT100
  • Mantém um buffer de histórico para permitir scrollback e oferece um modo de revisão ativado com Ctrl+6 para ver todo o histórico de saída
  • Oferece a função auto-lookback, que despeja automaticamente o histórico quando não há entrada por um determinado tempo
  • Funciona em Linux e macOS, sendo uma solução leve para melhorar o desempenho e a legibilidade do terminal

Visão geral

  • Claude Chill é um programa proxy PTY criado para resolver problemas de saída do Claude Code no terminal
    • O Claude Code envolve toda a saída em blocos sincronizados e renderiza tudo de uma vez, mas nesse processo ocorre uma atualização de tela inteira com milhares de linhas
    • Isso causa problemas como latência, cintilação e perda de scrollback
  • O Claude Chill fica entre o terminal e o Claude Code para aplicar apenas as diferenças na saída e manter um buffer de histórico

Principais recursos

  • Interceptação de blocos sync: detecta e processa grandes blocos sincronizados enviados pelo Claude Code
  • Renderização baseada em VT: usa um emulador VT100 para rastrear o estado da tela e exibir apenas as partes alteradas
  • Preservação do histórico e modo de revisão: salva a saída em um buffer para permitir a consulta de logs anteriores
    • Entre no modo de revisão com a tecla Ctrl+6
    • Pausa a saída do Claude e mostra todo o histórico no terminal
    • Você pode sair pressionando a tecla novamente ou com Ctrl+C
  • Auto-lookback: se não houver entrada por um período definido (15 segundos por padrão), o histórico é despejado automaticamente
    • Pode ser desativado com a opção -a 0
    • Durante o despejo automático, a tela pode piscar brevemente

Instalação e uso

  • Instalação:
    cargo install --path crates/claude-chill  
    
  • Exemplos de execução:
    • Execução básica: claude-chill claude
    • Passando argumentos: claude-chill -- claude --verbose
    • Definindo o tamanho do histórico: claude-chill -H 50000 claude
    • Desativando o auto-lookback: claude-chill -a 0 claude
  • Principais opções:
    • -H, --history: número máximo de linhas do histórico (padrão: 100000)
    • -k, --lookback-key: tecla para alternar o modo de revisão
    • -a, --auto-lookback-timeout: tempo de espera do auto-lookback (ms)

Arquivo de configuração

  • Localização:
    • Linux: ~/.config/claude-chill.toml
    • macOS: ~/Library/Application Support/claude-chill.toml
  • Principais itens:
    • history_lines: número máximo de linhas do histórico
    • lookback_key: tecla para alternar o modo de revisão
    • refresh_rate: FPS de renderização
    • auto_lookback_timeout_ms: tempo do auto-lookback

Protocolo de teclado e configuração de teclas

  • Alterna automaticamente de modo em terminais que suportam o Kitty Keyboard Protocol (Kitty, Ghostty, WezTerm etc.)
    • Quando o Claude Code ativa o modo Kitty, o Claude Chill também reconhece automaticamente essa codificação
  • Formato das teclas: [modifier][key]
    • Ex.: [f12], [ctrl][g], [ctrl][shift][j]
  • A tecla padrão Ctrl+6 envia ASCII 0x1E e não entra em conflito com a maioria dos terminais
    • No macOS, o mesmo comportamento é obtido com Ctrl+Shift+6 (Ctrl+^)

Como funciona

  • O Claude Chill cria um terminal virtual (PTY) e executa o Claude Code como processo filho
  • Estrutura de proxy de entrada e saída:
    Terminal ⇄ claude-chill ⇄ Claude Code  
    
  • Principais etapas do processamento:
    • Entrada: encaminhada ao Claude, bloqueando apenas a tecla de revisão
    • Saída: detecta blocos sincronizados e encaminha saídas assíncronas normalmente
    • Rastreia o estado da tela com emulação VT
    • Compara com o estado anterior e renderiza apenas as diferenças
    • Mantém o buffer de histórico e oferece suporte ao modo de revisão
    • Encaminha sinais como SIGWINCH, SIGINT, SIGTERM ao Claude

Observações

  • É uma ferramenta desenvolvida para conveniência pessoal e não passou por testes extensivos
  • Funcionamento confirmado em Linux e macOS
  • Não é recomendada para uso em sistemas ou ambientes de infraestrutura críticos
  • Licença MIT

1 comentários

 
GN⁺ 2026-01-23
Comentários do Hacker News
  • Eu sou responsável pela renderização TUI do Claude Code
    Peço desculpas pelo incômodo por tanto tempo, mas hoje liberamos para todos os usuários o renderizador diferencial (differential renderer)
    Reescrevemos completamente o sistema de renderização e agora apenas cerca de 1/3 das sessões apresentam cintilação intermitente. A cintilação contínua praticamente desapareceu
    Também enviei patches com suporte a saída sincronizada (DEC mode 2026) para o terminal do VSCode e para o tmux, e eles já foram incorporados
    Se você quiser eliminar completamente a cintilação, recomendo o Ghostty. Mais detalhes podem ser vistos no comentário da issue #769, no PR #5453 do xterm.js e no PR #4744 do tmux

    • Fico me perguntando por que houve tão pouca comunicação oficial sobre um problema tão importante
      Há comentários todos os dias nas issues do GitHub (#1913, #826, #3648), mas desde o rollback de dezembro quase não houve respostas da Anthropic
      Entendo a dificuldade técnica, mas parece que a falta de comunicação fez os usuários perderem confiança
    • Estou no plano de $200 e tenho timeout de requisições da API com frequência
      Isso acontece mesmo rodando só um ou dois agentes. Fico me perguntando se talvez ainda exista algum rate limit do plano anterior, ou se sessões com contexto longo podem ser a causa
      Ainda assim, é muito empolgante porque essa ferramenta está me permitindo criar apps que antes eram impossíveis
    • Gostaria que dessem mais atenção à issue #769
      No macOS com iTerm, a tela rolava para cima toda vez que a janela perdia o foco, o que era extremamente incômodo
    • Antes de recomendar o Ghostty, vale ler este texto
      Desde o Ghostty 1.0 havia um vazamento de memória, e apps CLI como o Claude Code frequentemente criavam as condições para o problema aparecer
      A correção já foi mergeada e deve entrar na versão 1.3
    • Fico curioso se há planos de separar a TUI da UI, para que qualquer pessoa possa criar sua própria interface
      Se desse para montar algo mais flexível, como no Zed, a experiência provavelmente seria muito melhor
  • Faz alguns meses que não uso o Claude Code e me surpreende que o flicker ainda não tenha sido resolvido
    Isso me faz pensar que o motivo de não abrirem o código talvez não seja a concorrência, mas sim a bagunça da codebase

    • A causa do problema é que a biblioteca Ink apaga tudo e redesenha a tela inteira a cada atualização
      Há informações sobre isso na issue #769
      Eu apliquei um patch no pacote npm localmente, mas não ficou perfeito. Estruturalmente, o jeito de renderizar precisa mudar
      Para referência, o OpenAI Codex foi feito com Rust + ratatui, então esse problema não existe lá
    • Meu palpite é que a equipe do Claude Code está desenvolvendo o Claude Code com o próprio Claude Code, então a correção está demorando
      Bugs complexos como esse no fim das contas precisam que uma pessoa sente no fim de semana e corrija diretamente, mas parece que estão só rodando agentes
    • A Anthropic disse que “90% do código será escrito por IA”, mas é irônico que não consigam corrigir nem um bug básico de flicker
      Outras ferramentas CLI (opencode, codex, gemini, droid etc.) não têm esse problema
    • Parece que a equipe está aguentando uma quantidade enorme de issues e mudanças rápidas nos modelos
      Se tivessem usado isso diretamente em ambiente tmux, saberiam o quanto é doloroso, mas ainda assim dá vontade de ter um pouco de compreensão
    • O Codex é muito mais suave e estável do que o Claude Code. O fato de ter sido escrito em Rust parece fazer bastante diferença
  • Eu quero usar o Claude Code, mas não consigo por causa do scrollback quebrado do Ghostty
    O proxy de PTY intercepta o fluxo de saída e bloqueia o acesso ao buffer interno do Ghostty

    • Eu não percebi esse problema de scroll no Ghostty. Só sinto falta de uma barra de rolagem
    • Recomendo usar tmux. Não tem rolagem suave, mas oferece vários recursos e me atende bem
  • Eu estava curioso sobre o que exatamente era o flickering
    Às vezes o Claude Code rola para cima de repente, fica difícil descer de volta, e só reiniciando o terminal tudo volta ao normal

    • Eu também tenho esse mesmo problema. No macOS com iTerm2 acontece igual, e reiniciar a sessão é a única solução temporária
    • No terminal do VSCode isso era ainda pior não só com o Claude Code, mas também com o Gemini. Depois que mudei para o Ghostty, sumiu completamente
  • Seria bom ter uma opção para fixar o campo de entrada no rodapé do terminal
    Ficar rolando entre o chat e o campo de entrada o tempo todo é incômodo

    • Eu também pensei isso quando usei em ambiente tmux–mosh–mobile
      Em termos de usabilidade no celular, isso parece ser um recurso nível game changer
  • Pelo formato do readme.md, achei interessante porque parece ter sido escrito pelo próprio Claude Code

    • Mas o CC em si não escreve necessariamente o texto; é bem possível que tenha sido produzido com outro modelo (Codex, Gemini etc.)
  • Esta atualização parece ser a maior contribuição para o Claude Code nos últimos meses
    Vou instalar e testar agora mesmo

  • Como notícia relacionada, vi um post anterior dizendo que o renderizador de terminal do Claude Code teve uma melhoria de 85%

    • Mas os problemas de rolagem ainda continuam
  • Finalmente obrigado por reduzirem o flickering. Era um bug que dava dor de cabeça, então agora já parece bem melhor
    Espero que a Anthropic resolva isso por completo o quanto antes

  • O Codex continua muito mais responsivo mesmo quando a sessão fica longa; o Claude vai ficando lento com o tempo

    • O fato de o Codex ter sido escrito em Rust realmente parece fazer diferença