A Anthropic resolve o problema de oscilação do terminal Claude Code: da análise da causa raiz à reconstrução do sistema de renderização. Uma apresentação do desenvolvedor do Claude Code, @trq212, detalha o antigo problema de cintilação da tela no Claude Code e como a equipe reduziu a cintilação em aproximadamente 85% ao reescrever o sistema de renderização. A causa principal do problema de oscilação da imagem é que a interface do terminal consiste em duas partes: • Área de visualização: A área inferior atualmente visível para o usuário. • Buffer de rolagem: o conteúdo histórico que foi visualizado anteriormente. Ferramentas comuns de linha de comando (como ls ou echo) exibem sua saída uma única vez e encerram, sem atualizar a interface com frequência. No entanto, o Claude Code é uma interface de usuário interativa de longa duração que pode redesenhar a área de visualização dezenas de vezes por segundo. Quando o conteúdo excede a altura da janela de visualização, a linha superior é empurrada para o buffer de rolagem, fazendo com que parte da renderização ocorra "fora da tela". Para evitar erros de renderização ou confusão quando o terminal redimensiona o conteúdo, os sistemas mais antigos exigiam a limpeza de todo o buffer de rolagem a cada vez, resultando em uma cintilação perceptível. Solução: Reescrevendo o Sistema de Renderização. Nos últimos meses, a equipe reescreveu o mecanismo de renderização do zero. As principais melhorias incluem: • Comparação de diferenças: Compara as alterações em cada célula terminal uma a uma e emite apenas as sequências de escape ANSI necessárias para atualizar as partes modificadas. Minimizar atualização em tela cheia: Realizar uma atualização completa somente quando absolutamente necessário (como quando o tamanho do terminal muda). Por que não usar o modo "tela alternativa"? Algumas aplicações de terminal (como o Emacs ou o Vim) irão alternar para o modo de "tela alternativa": • O programa tem controle total sobre a rolagem, a seleção e outras funções. • Ao sair, o conteúdo original do terminal será restaurado automaticamente. Isso pode eliminar completamente a cintilação. No entanto, a desvantagem é a perda da experiência de usuário nativa do dispositivo, por exemplo: • Busca global com Cmd+F. • Seleção de texto com o mouse. • Funcionalidade de copiar/colar, etc. A equipe valoriza muito esses recursos nativos do dispositivo, portanto, o foco principal no momento é manter o modo de tela principal. Eles podem explorar telas alternativas no futuro, mas os padrões são altos e não farão concessões facilmente. Por que o conserto está demorando tanto? As primeiras versões do código de renderização careciam de testes automatizados suficientes. Modificar uma parte frequentemente levava a erros inesperados em outras partes, atrasando o progresso. O principal avanço foi a introdução de testes baseados em propriedades: Gere milhares de estados de interface de usuário aleatórios (com diferentes larguras de terminal, comprimentos de conteúdo, casos extremos de Unicode, etc.). • Renderizar simultaneamente o mesmo estado através dos sistemas antigo e novo, e comparar automaticamente as saídas para verificar a consistência.
Carregando detalhes do thread
Buscando os tweets originais no X para montar uma leitura limpa.
Isso normalmente leva apenas alguns segundos.
