6 điểm bởi GN⁺ 2026-01-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • Claude Chillcô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 Chillchươ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

  • Cài đặt:
    cargo install --path crates/claude-chill  
    
  • Ví dụ chạy:
    • Chạy mặc định: claude-chill claude
    • Truyền tham số: claude-chill -- claude --verbose
    • Chỉ định kích thước lịch sử: claude-chill -H 50000 claude
    • Tắt auto-lookback: claude-chill -a 0 claude
  • Tùy chọn chính:
    • -H, --history: số dòng lịch sử tối đa (mặc định 100000)
    • -k, --lookback-key: phím chuyển chế độ lookback
    • -a, --auto-lookback-timeout: thời gian chờ auto-lookback (ms)

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

  • Claude Chill tạo terminal ảo (PTY) và chạy Claude Code như một tiến trình con
  • Cấu trúc proxy I/O:
    Terminal ⇄ claude-chill ⇄ Claude Code  
    
  • Các bước xử lý chính:
    • Đầu vào: chuyển tiếp sang Claude, chỉ chặn phím lookback
    • Đầu ra: phát hiện các sync block, còn đầu ra bất đồng bộ thì chuyển tiếp nguyên trạng
    • Theo dõi trạng thái màn hình bằng giả lập VT
    • So sánh với trạng thái trước đó để chỉ render phần chênh lệch
    • Duy trì bộ đệm lịch sử và hỗ trợ chế độ lookback
    • Chuyển tiếp các tín hiệu như SIGWINCH, SIGINT, SIGTERM sang Claude

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

 
GN⁺ 2026-01-23
Ý 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

    • Tôi thắc mắc vì sao lại thiếu giao tiếp chính thức về một vấn đề quan trọng như vậy
      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
    • Tôi đang dùng gói $200 nhưng timeout khi gọi API xảy ra khá thường xuyên
      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ể
    • Mong mọi người chú ý thêm tới issue #769
      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
    • Trước khi khuyên dùng Ghostty, tôi khuyên nên đọc bài này
      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
    • Tôi tự hỏi liệu có kế hoạch tách TUI và UI để ai cũng có thể tự tạo giao diện riêng cho mình hay không
      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

    • Nguyên nhân của vấn đề là thư viện Ink xóa toàn bộ rồi vẽ lại sau mỗi lần cập nhật
      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
    • Tôi đoán là team Claude Code đang dùng Claude Code để phát triển Claude Code, nên việc xử lý vấn đề bị chậm
      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
    • Anthropic từng nói “90% code sẽ do AI viết”, nhưng trớ trêu là ngay cả bug flicker cơ bản cũng không sửa nổi
      Các công cụ CLI khác như opencode, codex, gemini, droid... không gặp vấn đề này
    • Có vẻ team đang chống chọi với quá nhiều issue và tốc độ thay đổi mô hình quá nhanh
      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
    • Codex mượt và ổn định hơn Claude Code rất nhiều. Việc được viết bằng Rust có vẻ tạo ra khác biệt lớn
  • 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 không thấy vấn đề cuộn trong Ghostty. Chỉ tiếc là không có scrollbar
    • Tôi khuyên nên thử tmux. Dù không có cuộn mượt nhưng có nhiều tính năng nên vẫn rất đáng dùng
  • 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

    • Tôi cũng gặp y hệt. Trên macOS iTerm2 cũng vậy, và khởi động lại phiên là cách khắc phục tạm thời duy nhất
    • Trong terminal của VSCode, không chỉ Claude Code mà cả Gemini còn bị nặng hơn. Chuyển sang Ghostty thì giải quyết hoàn toàn
  • 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

    • Tôi cũng từng nghĩ vậy khi dùng trong môi trường tmux–mosh–di động
      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

    • Nhưng bản thân CC có lẽ không trực tiếp viết, mà nhiều khả năng là kết quả được tạo qua một mô hình khác (Codex, Gemini, v.v.)
  • 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”

    • Nhưng vấn đề cuộn vẫn còn tồn tại
  • 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

    • Việc Codex được viết bằng Rust rõ ràng tạo ra khác biệt lớn