Anthropic Fixes Claude Code 터미널 깜빡임 문제 해결: 근본 원인 분석부터 렌더링 시스템 재구축까지 Claude Code 개발자 @trq212의 발표에서는 Claude Code에서 오랫동안 지속되어 온 화면 깜빡임 문제를 자세히 설명하고, 렌더링 시스템을 재작성하여 깜빡임 현상을 약 85% 줄인 방법을 소개합니다. 화면 깜빡임 문제의 근본 원인은 터미널 인터페이스가 두 부분으로 구성되어 있기 때문입니다. • 뷰포트: 현재 사용자에게 보이는 하단 영역. • 스크롤백 버퍼: 이전에 스크롤했던 콘텐츠가 저장된 공간입니다. 일반적인 명령줄 도구(예: ls 또는 echo)는 출력을 한 번만 표시하고 종료되며 인터페이스를 자주 업데이트하지 않습니다. 그러나 Claude Code는 장시간 실행되는 대화형 UI로, 초당 수십 번씩 뷰포트를 다시 그릴 수 있습니다. 콘텐츠가 뷰포트 높이를 초과하면 맨 위 행이 스크롤 버퍼로 밀려나 일부 렌더링이 "화면 밖"에서 발생합니다. 터미널이 콘텐츠 크기를 조정할 때 렌더링 오류나 혼란을 방지하기 위해 이전 시스템에서는 매번 전체 스크롤 버퍼를 지워야 했으며, 이로 인해 눈에 띄는 깜빡임 현상이 발생했습니다. 해결책: 렌더링 시스템 재설계 지난 몇 달 동안 팀은 렌더링 엔진을 처음부터 다시 작성했습니다. 주요 개선 사항은 다음과 같습니다. • 차이점 비교: 각 터미널 셀의 변경 사항을 하나씩 비교하고, 수정된 부분을 업데이트하는 데 필요한 ANSI 이스케이프 시퀀스만 실행합니다. 전체 화면 다시 그리기 최소화: 터미널 크기가 변경되는 등 절대적으로 필요한 경우에만 전체 화면을 다시 그립니다. "대체 화면" 모드를 사용해 보는 건 어때요? Emacs나 Vim과 같은 일부 터미널 응용 프로그램은 "대체 화면" 모드로 전환됩니다. • 이 프로그램은 스크롤, 선택 및 기타 기능을 완벽하게 제어할 수 있습니다. • 종료 시, 원래 단말기 내용이 자동으로 복원됩니다. 이렇게 하면 깜빡임 현상을 완전히 없앨 수 있습니다. 하지만 단점은 기기 고유의 사용자 경험을 잃게 된다는 점입니다. 예를 들면 다음과 같습니다. • Cmd+F를 눌러 전역 검색을 하세요. • 마우스로 텍스트를 선택합니다. • 복사/붙여넣기 기능 등 개발팀은 기기 고유의 기능들을 매우 중요하게 생각하기 때문에 현재는 메인 화면 모드를 유지하는 데 주력하고 있습니다. 향후 다른 화면 모드를 검토할 수도 있지만, 높은 기준을 유지하기 위해 쉽게 타협하지는 않을 것입니다. 수리가 왜 이렇게 오래 걸리는 거죠? 초기 렌더링 코드는 자동화된 테스트가 부족했습니다. 한 부분을 수정하면 다른 곳에서 예상치 못한 오류가 발생하여 개발 속도가 느려지는 경우가 많았습니다. 핵심적인 돌파구는 속성 기반 테스트의 도입이었습니다. 터미널 너비, 콘텐츠 길이, 유니코드 예외 처리 등 다양한 요소를 적용하여 수천 개의 무작위 UI 상태를 생성합니다. • 기존 시스템과 새로운 시스템 모두에서 동일한 상태를 동시에 렌더링하고, 출력 결과를 자동으로 비교하여 일관성을 확인합니다.
스레드를 불러오는 중
깔끔한 읽기 화면을 위해 X에서 원본 트윗을 가져오고 있어요.
보통 몇 초면 완료되니 잠시만 기다려 주세요.
