# Claude Chill: 터미널에서 Claude Code의 깜빡임 현상 수정하기

> Clean Markdown view of GeekNews topic #26058. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=26058](https://news.hada.io/topic?id=26058)
- GeekNews Markdown: [https://news.hada.io/topic/26058.md](https://news.hada.io/topic/26058.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2026-01-23T13:50:40+09:00
- Updated: 2026-01-23T13:50:40+09:00
- Original source: [github.com/davidbeesley](https://github.com/davidbeesley/claude-chill)
- Points: 6
- Comments: 1

## Summary

Claude Code의 터미널 출력이 전체 화면을 반복 갱신하며 생기는 **지연·깜빡임 문제**를 줄이기 위해, **Claude Chill**은 중간에 위치한 PTY 프록시로 출력 차이만 반영합니다. VT100 기반 렌더링으로 변경된 부분만 갱신하고, 히스토리 버퍼를 유지해 스크롤백과 **‘룩백 모드’(Ctrl+6)** 를 지원합니다. Linux와 macOS에서 동작하며, 별도 설정 없이 터미널 성능과 가독성을 가볍게 개선합니다.

## Topic Body

- **Claude Chill**은 Claude Code가 터미널 전체를 반복적으로 다시 그릴 때 발생하는 **지연과 깜빡임 문제를 완화하는 PTY 프록시 도구**  
- Claude Code가 사용하는 **동기화 출력(sync blocks)** 을 가로채고, **VT100 기반 렌더링**으로 화면의 변경된 부분만 갱신  
- **히스토리 버퍼**를 유지해 스크롤백이 가능하며, **Ctrl+6** 키로 ‘룩백 모드’에 진입해 전체 출력 기록을 확인할 수 있음  
- 일정 시간 입력이 없을 경우 자동으로 히스토리를 덤프하는 **자동 룩백(auto-lookback)** 기능 제공  
- Linux와 macOS에서 동작하며, **터미널 성능과 가독성을 개선하는 경량 솔루션**  
  
---  
  
### 개요  
- **Claude Chill**은 Claude Code의 터미널 출력 문제를 해결하기 위해 만들어진 **PTY 프록시 프로그램**  
  - Claude Code는 출력 전체를 동기화 블록으로 감싸 한 번에 렌더링하지만, 이 과정에서 **수천 줄의 전체 화면 갱신**이 발생  
  - 이로 인해 **지연, 깜빡임, 스크롤백 손실** 등의 문제가 생김  
- Claude Chill은 터미널과 Claude Code 사이에 위치해 **출력 차이만 반영**하고, **히스토리 버퍼**를 유지  
  
### 주요 기능  
- **Sync 블록 가로채기**: Claude Code가 보내는 대규모 동기화 블록을 감지해 처리  
- **VT 기반 렌더링**: VT100 에뮬레이터를 사용해 화면 상태를 추적하고 변경된 부분만 출력  
- **히스토리 유지 및 룩백 모드**: 출력 내용을 버퍼에 저장해 과거 로그를 확인 가능  
  - **Ctrl+6** 키로 룩백 모드 진입  
  - Claude의 출력을 일시 중단하고 전체 히스토리를 터미널에 표시  
  - 다시 키를 누르거나 **Ctrl+C**로 종료 가능  
- **자동 룩백(auto-lookback)** : 일정 시간(기본 15초) 입력이 없으면 자동으로 히스토리를 덤프  
  - `-a 0` 옵션으로 비활성화 가능  
  - 자동 덤프 시 화면이 잠시 깜빡일 수 있음  
  
### 설치 및 사용  
- 설치:  
  ```  
  cargo install --path crates/claude-chill  
  ```  
- 실행 예시:  
  - 기본 실행: `claude-chill claude`  
  - 인자 전달: `claude-chill -- claude --verbose`  
  - 히스토리 크기 지정: `claude-chill -H 50000 claude`  
  - 자동 룩백 비활성화: `claude-chill -a 0 claude`  
- 주요 옵션:  
  - `-H, --history`: 히스토리 최대 줄 수 (기본 100000)  
  - `-k, --lookback-key`: 룩백 모드 전환 키  
  - `-a, --auto-lookback-timeout`: 자동 룩백 대기 시간(ms)  
  
### 설정 파일  
- 위치:  
  - Linux: `~/.config/claude-chill.toml`  
  - macOS: `~/Library/Application Support/claude-chill.toml`  
- 주요 항목:  
  - `history_lines`: 히스토리 최대 줄 수  
  - `lookback_key`: 룩백 모드 전환 키  
  - `refresh_rate`: 렌더링 FPS  
  - `auto_lookback_timeout_ms`: 자동 룩백 시간  
  
### 키보드 프로토콜 및 키 설정  
- **Kitty Keyboard Protocol**을 지원하는 터미널(Kitty, Ghostty, WezTerm 등)에서 자동으로 모드 전환  
  - Claude Code가 Kitty 모드를 활성화하면 Claude Chill도 자동으로 해당 인코딩을 인식  
- 키 형식: `[modifier][key]`  
  - 예: `[f12]`, `[ctrl][g]`, `[ctrl][shift][j]`  
- 기본 키 **Ctrl+6**은 ASCII 0x1E을 전송하며, 대부분의 터미널과 충돌하지 않음  
  - macOS에서는 **Ctrl+Shift+6 (Ctrl+^)** 로 동일 동작  
  
### 작동 방식  
- Claude Chill은 **가상 터미널(PTY)** 을 생성하고 Claude Code를 자식 프로세스로 실행  
- **입출력 프록시 구조**:  
  ```  
  Terminal ⇄ claude-chill ⇄ Claude Code  
  ```  
- 주요 처리 단계:  
  - 입력: Claude로 전달, 룩백 키만 차단  
  - 출력: 동기화 블록을 탐지하고 비동기 출력은 그대로 전달  
  - VT 에뮬레이션으로 화면 상태 추적  
  - 이전 상태와 비교해 **차이만 렌더링**  
  - 히스토리 버퍼 유지 및 룩백 모드 지원  
  - **SIGWINCH, SIGINT, SIGTERM** 등의 신호를 Claude로 전달  
  
### 주의 사항  
- 개인 편의를 위해 개발된 도구로, **광범위한 테스트는 진행되지 않음**  
- Linux와 macOS에서 동작 확인  
- **중요 시스템이나 인프라 환경에서는 사용을 권장하지 않음**  
- **MIT 라이선스**

## Comments



### Comment 49753

- Author: neo
- Created: 2026-01-23T13:50:40+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46699072) 
- 나는 **Claude Code의 TUI 렌더링**을 담당하고 있음  
  오랫동안 불편을 드려 죄송하지만, 오늘 모든 사용자에게 **차등 렌더러(differential renderer)** 를 배포했음  
  렌더링 시스템을 완전히 새로 작성했고, 이제 세션의 약 1/3만이 간헐적인 깜빡임을 경험함. 연속적인 깜빡임은 거의 사라졌음  
  또한 VSCode 터미널과 tmux에 **동기화 출력(DEC mode 2026)** 지원 패치를 제출했고, 이미 병합되었음  
  완전한 무깜빡임을 원한다면 Ghostty를 추천함. 관련 내용은 [이슈 #769 코멘트](https://github.com/anthropics/claude-code/issues/769#issuecomment-3667315590), [xterm.js PR #5453](https://github.com/xtermjs/xterm.js/pull/5453), [tmux PR #4744](https://github.com/tmux/tmux/pull/4744)에서 확인 가능함
  - 왜 이렇게 중요한 문제에 대해 **공식 커뮤니케이션이 부족했는지** 궁금함  
    GitHub 이슈들([#1913](https://github.com/anthropics/claude-code/issues/1913), [#826](https://github.com/anthropics/claude-code/issues/826), [#3648](https://github.com/anthropics/claude-code/issues/3648))에 매일 댓글이 달리는데, 12월 롤백 이후 Anthropic의 답변이 거의 없었음  
    기술적 난이도는 이해하지만, **소통 부족**이 사용자 신뢰를 잃게 만든 것 같음
  - $200 플랜을 쓰고 있는데 **API 요청 타임아웃**이 자주 발생함  
    에이전트는 한두 개만 돌리고 있는데도 이런 현상이 생김. 혹시 **이전 요금제의 rate limit**이 남아 있거나, **긴 컨텍스트 세션**이 원인일 수 있을지 궁금함  
    그래도 이 도구 덕분에 전에 불가능했던 앱을 만들고 있어서 정말 흥미로움
  - [이슈 #769](https://github.com/anthropics/claude-code/issues/769)에 좀 더 관심을 가져줬으면 함  
    macOS iTerm에서 창 포커스를 잃을 때마다 화면이 위로 스크롤되어 너무 불편했음
  - Ghostty를 추천하기 전에 [이 글](https://mitchellh.com/writing/ghostty-memory-leak-fix)을 읽어보길 권함  
    Ghostty 1.0부터 **메모리 누수**가 있었고, Claude Code 같은 CLI 앱이 그 조건을 자주 만들어 문제를 드러냈음  
    수정은 이미 머지되었고 1.3 릴리스에 포함될 예정임
  - 혹시 **TUI와 UI를 분리**해서 누구나 자신만의 인터페이스를 만들 수 있게 할 계획이 있는지 궁금함  
    Zed처럼 유연하게 구성할 수 있다면 훨씬 나은 경험이 될 것 같음  

- 몇 달 동안 Claude Code를 안 썼는데 **아직도 flicker가 해결되지 않았다니** 놀라움  
  오픈소스화하지 않는 이유가 경쟁 때문이 아니라 **코드베이스의 혼란스러움** 때문일지도 모른다는 생각이 듦  
  - 문제의 원인은 **Ink 라이브러리**가 매 업데이트마다 전체를 지우고 다시 그리는 방식 때문임  
    [이슈 #769](https://github.com/anthropics/claude-code/issues/769)에 관련 내용이 있음  
    나는 로컬에서 npm 패키지를 패치했지만 완벽하지 않음. 구조적으로 렌더링 방식을 바꿔야 함  
    참고로 OpenAI Codex는 **Rust + ratatui**로 작성되어 이런 문제가 없음
  - 내 추측으로는 Claude Code 팀이 **Claude Code로 Claude Code를 개발**하고 있어서 문제 해결이 느린 것 같음  
    이런 복잡한 버그는 결국 사람이 직접 주말에 앉아서 고쳐야 하는데, 에이전트만 돌리고 있는 듯함
  - Anthropic이 “90%의 코드는 AI가 쓸 것”이라 말했지만, 정작 **기본적인 flicker 버그**도 못 고치는 건 아이러니함  
    다른 CLI 도구들(opencode, codex, gemini, droid 등)은 이런 문제가 없음
  - 팀이 **너무 많은 이슈와 빠른 모델 변화** 속에서 버티고 있는 듯함  
    tmux 환경에서 직접 써봤다면 얼마나 고통스러운지 알 텐데, 그래도 조금은 이해해주고 싶음
  - Codex가 Claude Code보다 훨씬 **부드럽고 안정적**임. Rust로 작성된 게 큰 차이를 만드는 듯함  

- 나는 Claude Code를 쓰고 싶지만, **Ghostty의 스크롤백 기능**이 깨져서 사용할 수 없음  
  PTY 프록시가 출력 스트림을 가로채서 Ghostty의 내부 버퍼 접근이 막힘
  - 나는 Ghostty에서 스크롤 문제를 못 느꼈음. 다만 **스크롤바 부재**는 아쉬움  
  - tmux를 써보길 권함. 부드러운 스크롤은 없지만 **다양한 기능**이 있어서 만족스러움  

- flickering이 정확히 뭔지 궁금했음  
  가끔 Claude Code가 갑자기 위로 스크롤되어 다시 내리기 힘들고, 터미널을 재시작해야 정상으로 돌아옴  
  - 나도 같은 문제를 겪고 있음. macOS iTerm2에서도 동일하며, **세션 재시작만이 임시 해결책**임  
  - VSCode 터미널에서는 Claude Code뿐 아니라 Gemini에서도 더 심했음. Ghostty로 바꾸니 **완전히 해결**됨  

- 입력창을 **터미널 하단에 고정**하는 토글 기능이 있었으면 좋겠음  
  채팅과 입력창 사이를 계속 스크롤하는 게 번거로움
  - 나도 tmux–mosh–모바일 환경에서 쓰다가 같은 생각을 했음  
    모바일 사용성 측면에서 **게임 체인저급 기능**이 될 것 같음  

- readme.md의 포맷을 보니 **Claude Code가 직접 작성한 듯한 느낌**이 들어 흥미로움  
  - 하지만 CC 자체가 글을 쓰는 건 아니고, **다른 모델(Codex, Gemini 등)** 을 통해 작성된 결과일 가능성이 높음  

- 이번 업데이트가 **최근 몇 달간 Claude Code에 가장 큰 기여**인 듯함  
  바로 설치하고 테스트해볼 예정임  

- 관련 소식으로, “Claude Code의 터미널 렌더링을 **85% 개선**했다”는 [이전 게시글](https://news.ycombinator.com/item?id=46312507)을 봤음  
  - 하지만 여전히 **스크롤 문제**는 남아 있음  

- 드디어 flickering을 줄여줘서 고마움. **두통 유발 버그**였는데 이제 좀 살 것 같음  
  Anthropic이 이 문제를 빨리 완전히 해결해주길 바람  

- Codex는 세션이 길어져도 훨씬 **반응성이 좋음**, Claude는 시간이 지나면 버벅거림  
  - Codex가 Rust로 작성된 게 확실히 차이를 만드는 듯함
