- Claude Chill là công cụ proxy PTY giúp giảm độ trễ và hiện tượng nhấp nháy xảy ra khi Claude Code liên tục vẽ lại toàn bộ terminal
- Chặn đầu ra đồng bộ (sync blocks) mà Claude Code sử dụng, và với kết xuất dựa trên VT100, chỉ cập nhật những phần thay đổi trên màn hình
- Duy trì bộ đệm lịch sử để có thể cuộn lại, đồng thời có thể vào chế độ lookback bằng phím Ctrl+6 để xem toàn bộ lịch sử đầu ra
- Cung cấp tính năng auto-lookback tự động dump lịch sử khi không có nhập liệu trong một khoảng thời gian nhất định
- Hoạt động trên Linux và macOS, là giải pháp nhẹ giúp cải thiện hiệu năng và khả năng đọc của terminal
Tổng quan
- Claude Chill là chương trình proxy PTY được tạo ra để giải quyết vấn đề đầu ra terminal của Claude Code
- Claude Code bọc toàn bộ đầu ra trong các khối đồng bộ và render cùng lúc, nhưng quá trình này gây ra làm mới toàn màn hình với hàng nghìn dòng
- Vì vậy phát sinh các vấn đề như độ trễ, nhấp nháy, mất scrollback
- Claude Chill nằm giữa terminal và Claude Code, chỉ áp dụng phần chênh lệch của đầu ra và duy trì bộ đệm lịch sử
Tính năng chính
- Chặn sync block: phát hiện và xử lý các khối đồng bộ lớn mà Claude Code gửi ra
- Kết xuất dựa trên VT: dùng trình giả lập VT100 để theo dõi trạng thái màn hình và chỉ in ra phần thay đổi
- Duy trì lịch sử và chế độ lookback: lưu nội dung đầu ra vào bộ đệm để có thể xem log trước đó
- Vào chế độ lookback bằng phím Ctrl+6
- Tạm dừng đầu ra của Claude và hiển thị toàn bộ lịch sử trong terminal
- Có thể thoát bằng cách nhấn lại phím hoặc Ctrl+C
- Auto-lookback: nếu không có nhập liệu trong một khoảng thời gian nhất định (mặc định 15 giây), lịch sử sẽ được dump tự động
- Có thể vô hiệu hóa bằng tùy chọn
-a 0
- Khi dump tự động, màn hình có thể nhấp nháy trong chốc lát
Cài đặt và sử dụng
Tệp cấu hình
- Vị trí:
- Linux:
~/.config/claude-chill.toml
- macOS:
~/Library/Application Support/claude-chill.toml
- Mục chính:
history_lines: số dòng lịch sử tối đa
lookback_key: phím chuyển chế độ lookback
refresh_rate: FPS kết xuất
auto_lookback_timeout_ms: thời gian auto-lookback
Giao thức bàn phím và thiết lập phím
- Tự động chuyển chế độ trong các terminal hỗ trợ Kitty Keyboard Protocol (Kitty, Ghostty, WezTerm, v.v.)
- Khi Claude Code kích hoạt chế độ Kitty, Claude Chill cũng tự động nhận diện kiểu mã hóa tương ứng
- Định dạng phím:
[modifier][key]
- Ví dụ:
[f12], [ctrl][g], [ctrl][shift][j]
- Phím mặc định Ctrl+6 gửi ASCII 0x1E, nên hầu như không xung đột với đa số terminal
- Trên macOS, Ctrl+Shift+6 (Ctrl+^) cho cùng hành vi
Cách hoạt động
Lưu ý
- Đây là công cụ được phát triển cho nhu cầu cá nhân, chưa được kiểm thử trên diện rộng
- Đã xác nhận hoạt động trên Linux và macOS
- Không khuyến nghị sử dụng trong các hệ thống hoặc môi trường hạ tầng quan trọng
- Giấy phép MIT
1 bình luận
Ý kiến trên Hacker News
Tôi là người phụ trách rendering TUI của Claude Code
Xin lỗi vì đã gây bất tiện trong thời gian dài, nhưng hôm nay chúng tôi đã triển khai differential renderer cho tất cả người dùng
Chúng tôi đã viết lại hoàn toàn hệ thống rendering, và giờ chỉ còn khoảng 1/3 số phiên thỉnh thoảng gặp hiện tượng nhấp nháy. Hiện tượng nhấp nháy liên tục gần như đã biến mất
Chúng tôi cũng đã gửi bản vá hỗ trợ synchronized output (DEC mode 2026) cho terminal của VSCode và tmux, và các bản vá đó đã được merge
Nếu muốn hoàn toàn không còn nhấp nháy, tôi khuyên dùng Ghostty. Có thể xem thêm tại bình luận trong issue #769, xterm.js PR #5453, tmux PR #4744
Mỗi ngày đều có bình luận mới trên các issue GitHub (#1913, #826, #3648), nhưng sau đợt rollback hồi tháng 12 thì hầu như không có phản hồi nào từ Anthropic
Tôi hiểu độ khó về mặt kỹ thuật, nhưng có vẻ thiếu giao tiếp đã làm mất niềm tin của người dùng
Dù chỉ chạy một hoặc hai agent thì hiện tượng này vẫn xuất hiện. Tôi tự hỏi liệu có phải rate limit của gói cũ vẫn còn, hoặc các phiên ngữ cảnh dài là nguyên nhân hay không
Dù vậy, công cụ này vẫn rất thú vị vì nhờ nó tôi đang tạo ra những ứng dụng trước đây là không thể
Trên macOS iTerm, mỗi lần cửa sổ mất focus thì màn hình lại cuộn lên trên, cực kỳ bất tiện
Từ Ghostty 1.0 đã có rò rỉ bộ nhớ, và các ứng dụng CLI như Claude Code thường xuyên tạo ra đúng điều kiện để làm lộ vấn đề đó
Bản sửa lỗi đã được merge và sẽ có trong bản phát hành 1.3
Nếu có thể cấu hình linh hoạt như Zed thì trải nghiệm sẽ tốt hơn rất nhiều
Tôi đã không dùng Claude Code mấy tháng, và thật ngạc nhiên là flicker vẫn chưa được giải quyết
Tôi bắt đầu nghĩ rằng lý do chưa open-source không phải vì cạnh tranh, mà có thể vì codebase quá hỗn độn
Có nói về chuyện này trong issue #769
Tôi đã tự patch gói npm ở máy local nhưng chưa hoàn hảo. Về mặt cấu trúc thì phải thay đổi cách rendering
Tham khảo thêm thì OpenAI Codex được viết bằng Rust + ratatui nên không gặp vấn đề này
Những bug phức tạp kiểu này rốt cuộc vẫn phải có con người ngồi xuống sửa trực tiếp vào cuối tuần, chứ không thể chỉ chạy agent là xong
Các công cụ CLI khác như opencode, codex, gemini, droid... không gặp vấn đề này
Nếu từng trực tiếp dùng trong môi trường tmux thì sẽ hiểu nó đau đớn tới mức nào, nhưng tôi vẫn muốn thông cảm phần nào
Tôi muốn dùng Claude Code nhưng tính năng scrollback của Ghostty bị hỏng nên không thể dùng
PTY proxy chặn luồng output nên Ghostty không truy cập được buffer nội bộ
Tôi từng thắc mắc flickering chính xác là gì
Thỉnh thoảng Claude Code đột nhiên cuộn ngược lên trên, rất khó kéo xuống lại, và phải khởi động lại terminal thì mới trở về bình thường
Sẽ hay hơn nếu có nút gạt để ghim ô nhập liệu ở đáy terminal
Việc cứ phải cuộn qua lại giữa phần chat và ô nhập liệu khá phiền
Xét về khả năng dùng trên di động, đây có thể là một tính năng thay đổi cuộc chơi
Nhìn định dạng của readme.md tôi thấy thú vị vì có cảm giác như Claude Code tự viết ra
Có vẻ bản cập nhật lần này là đóng góp lớn nhất cho Claude Code trong vài tháng gần đây
Tôi sẽ cài ngay và thử nghiệm
Tin liên quan là tôi đã thấy bài đăng trước đó nói rằng “đã cải thiện 85% khả năng rendering terminal của Claude Code”
Cuối cùng cũng giảm được flickering, cảm ơn nhé. Đây là một bug gây đau đầu, giờ thì đỡ hơn rồi
Mong Anthropic sớm giải quyết dứt điểm vấn đề này
Codex vẫn phản hồi tốt hơn nhiều ngay cả khi phiên kéo dài, còn Claude thì càng về sau càng chậm chạp