- Claude Chill เป็น เครื่องมือพร็อกซี PTY ที่ช่วยบรรเทาปัญหาความหน่วงและอาการหน้าจอกะพริบ ที่เกิดขึ้นเมื่อ Claude Code วาดทั้งหน้าจอของเทอร์มินัลใหม่ซ้ำ ๆ
- ดักจับ เอาต์พุตแบบซิงโครไนซ์ (sync blocks) ที่ Claude Code ใช้งาน และใช้ การเรนเดอร์แบบอิง VT100 เพื่ออัปเดตเฉพาะส่วนที่เปลี่ยนบนหน้าจอ
- มี บัฟเฟอร์ประวัติ เพื่อให้ย้อนดู scrollback ได้ และสามารถเข้าสู่ โหมด lookback ด้วยปุ่ม Ctrl+6 เพื่อดูประวัติเอาต์พุตทั้งหมดได้
- มีฟีเจอร์ auto-lookback ที่จะดัมป์ประวัติโดยอัตโนมัติเมื่อไม่มีการป้อนข้อมูลในช่วงเวลาที่กำหนด
- ทำงานได้บน Linux และ macOS และเป็น โซลูชันขนาดเบาที่ช่วยปรับปรุงประสิทธิภาพและความอ่านง่ายของเทอร์มินัล
ภาพรวม
- Claude Chill เป็น โปรแกรมพร็อกซี PTY ที่สร้างขึ้นเพื่อแก้ปัญหาเอาต์พุตเทอร์มินัลของ Claude Code
- Claude Code จะครอบเอาต์พุตทั้งหมดด้วย sync blocks แล้วเรนเดอร์ทีเดียว แต่ในกระบวนการนี้จะเกิด การรีเฟรชทั้งหน้าจอหลายพันบรรทัด
- ส่งผลให้เกิดปัญหาอย่าง ความหน่วง อาการกะพริบ และการสูญเสีย scrollback
- Claude Chill วางตัวอยู่ระหว่างเทอร์มินัลกับ Claude Code เพื่อ สะท้อนเฉพาะความแตกต่างของเอาต์พุต และคง บัฟเฟอร์ประวัติ เอาไว้
ความสามารถหลัก
- ดักจับ sync blocks: ตรวจจับและประมวลผล sync blocks ขนาดใหญ่ที่ Claude Code ส่งออกมา
- การเรนเดอร์แบบอิง VT: ใช้อีมูเลเตอร์ VT100 เพื่อติดตามสถานะหน้าจอและแสดงผลเฉพาะส่วนที่เปลี่ยน
- เก็บประวัติและโหมด lookback: บันทึกเอาต์พุตไว้ในบัฟเฟอร์เพื่อให้ตรวจสอบล็อกย้อนหลังได้
- เข้าสู่โหมด lookback ด้วยปุ่ม Ctrl+6
- หยุดเอาต์พุตจาก Claude ชั่วคราวและแสดงประวัติทั้งหมดในเทอร์มินัล
- กดปุ่มเดิมอีกครั้งหรือออกด้วย Ctrl+C ได้
- auto-lookback: หากไม่มีการป้อนข้อมูลตามเวลาที่กำหนด (ค่าเริ่มต้น 15 วินาที) จะดัมป์ประวัติให้อัตโนมัติ
- ปิดใช้งานได้ด้วยตัวเลือก
-a 0
- ระหว่างการดัมป์อัตโนมัติ หน้าจออาจกะพริบชั่วคราว
การติดตั้งและการใช้งาน
ไฟล์ตั้งค่า
- ตำแหน่ง:
- Linux:
~/.config/claude-chill.toml
- macOS:
~/Library/Application Support/claude-chill.toml
- รายการหลัก:
history_lines: จำนวนบรรทัดสูงสุดของประวัติ
lookback_key: ปุ่มสลับโหมด lookback
refresh_rate: FPS ของการเรนเดอร์
auto_lookback_timeout_ms: เวลาสำหรับ auto-lookback
โปรโตคอลคีย์บอร์ดและการตั้งค่าปุ่ม
- รองรับ 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+^)
วิธีการทำงาน
ข้อควรระวัง
- เป็นเครื่องมือที่พัฒนาขึ้นเพื่อความสะดวกส่วนตัว จึง ยังไม่ได้ผ่านการทดสอบอย่างกว้างขวาง
- ยืนยันการทำงานบน Linux และ macOS
- ไม่แนะนำให้ใช้งานในระบบสำคัญหรือสภาพแวดล้อมโครงสร้างพื้นฐาน
- สัญญาอนุญาต MIT
1 ความคิดเห็น
ความเห็นจาก Hacker News
ฉันเป็นคนรับผิดชอบ การเรนเดอร์ TUI ของ Claude Code
ต้องขออภัยที่ทำให้ใช้งานไม่สะดวกมาเป็นเวลานาน แต่วันนี้เราได้ปล่อย differential renderer ให้ผู้ใช้ทุกคนแล้ว
เราเขียนระบบเรนเดอร์ใหม่ทั้งหมด และตอนนี้มีเพียงราว 1/3 ของเซสชันเท่านั้นที่ยังเจออาการกะพริบเป็นครั้งคราว อาการกะพริบต่อเนื่องแทบหายไปแล้ว
นอกจากนี้ยังได้ส่งแพตช์รองรับ synchronized output (DEC mode 2026) ไปยัง VSCode terminal และ tmux และถูกรวมเข้าไปแล้ว
ถ้าต้องการให้ไม่กะพริบเลย แนะนำ Ghostty ดูรายละเอียดได้ใน คอมเมนต์ issue #769, xterm.js PR #5453, tmux PR #4744
มีคอมเมนต์เข้ามาทุกวันใน GitHub issues (#1913, #826, #3648) แต่หลังการ rollback ในเดือนธันวาคม แทบไม่มีคำตอบจาก Anthropic เลย
เข้าใจว่ามันยากในเชิงเทคนิค แต่ดูเหมือนว่า การสื่อสารที่ไม่เพียงพอ ทำให้ผู้ใช้เริ่มเสียความเชื่อมั่น
ทั้งที่รันเอเจนต์แค่หนึ่งหรือสองตัวก็ยังเป็นอยู่ เลยสงสัยว่าอาจยังมี rate limit ของแพลนก่อนหน้า ค้างอยู่ หรือ เซสชันที่มีคอนเท็กซ์ยาว เป็นต้นเหตุหรือเปล่า
ถึงอย่างนั้นเครื่องมือนี้ก็ยังน่าตื่นเต้นมาก เพราะช่วยให้สร้างแอปที่เมื่อก่อนทำไม่ได้
บน macOS iTerm ทุกครั้งที่หน้าต่างเสียโฟกัส หน้าจอจะเลื่อนขึ้น ทำให้ใช้งานลำบากมาก
Ghostty มี memory leak มาตั้งแต่เวอร์ชัน 1.0 และแอป CLI อย่าง Claude Code มักสร้างเงื่อนไขที่ทำให้ปัญหานี้โผล่ออกมาชัดเจน
ตอนนี้แก้ไขถูก merge แล้ว และจะรวมอยู่ในรีลีส 1.3
ถ้าจัดองค์ประกอบได้ยืดหยุ่นแบบ Zed ก็น่าจะเป็นประสบการณ์ที่ดีกว่ามาก
ฉันไม่ได้ใช้ Claude Code มาหลายเดือนแล้ว แต่ก็ยังตกใจที่ ปัญหา flicker ยังไม่ถูกแก้
เลยคิดว่าเหตุผลที่ไม่เปิดซอร์สอาจไม่ใช่เพราะการแข่งขัน แต่อาจเป็นเพราะ โค้ดเบสที่ยุ่งเหยิง ก็ได้
มีรายละเอียดอยู่ใน issue #769
ฉันแพตช์แพ็กเกจ npm ในเครื่องตัวเองแล้ว แต่ก็ยังไม่สมบูรณ์ ต้องเปลี่ยนวิธีเรนเดอร์ในระดับโครงสร้าง
ส่วน OpenAI Codex เขียนด้วย Rust + ratatui เลยไม่มีปัญหาแบบนี้
บั๊กซับซ้อนแบบนี้สุดท้ายคนก็ต้องนั่งลงมาแก้เองในช่วงสุดสัปดาห์ แต่ดูเหมือนทีมจะปล่อยให้เอเจนต์ทำงานเป็นหลัก
เครื่องมือ CLI อื่น ๆ (opencode, codex, gemini, droid ฯลฯ) ไม่มีปัญหาแบบนี้
ถ้าได้ลองใช้เองในสภาพแวดล้อม tmux ก็คงรู้ว่ามันทรมานแค่ไหน แต่ก็ยังอยากเข้าใจทีมอยู่บ้าง
ฉันอยากใช้ Claude Code แต่ใช้ไม่ได้เพราะ ฟังก์ชัน scrollback ของ Ghostty พัง
PTY proxy ไปดัก output stream เลยทำให้เข้าถึงบัฟเฟอร์ภายในของ Ghostty ไม่ได้
ตอนแรกสงสัยว่า flickering คืออะไรแน่
บางครั้ง Claude Code จะเลื่อนหน้าจอขึ้นเองกะทันหัน แล้วเลื่อนกลับลงมายาก ต้องรีสตาร์ตเทอร์มินัลถึงจะกลับมาปกติ
อยากให้มีฟังก์ชันสลับเพื่อ ตรึงช่องป้อนไว้ที่ด้านล่างของเทอร์มินัล
การต้องเลื่อนขึ้นลงระหว่างแชตกับช่องป้อนข้อความตลอดเวลามันยุ่งยาก
ถ้ามองเรื่องการใช้งานบนมือถือ มันน่าจะเป็น ฟีเจอร์ระดับ game changer เลย
พอดูฟอร์แมตของ readme.md แล้วรู้สึกน่าสนใจ เพราะ เหมือน Claude Code เป็นคนเขียนเอง
อัปเดตครั้งนี้น่าจะเป็น ผลงานที่สำคัญที่สุดของ Claude Code ในช่วงหลายเดือนที่ผ่านมา
จะติดตั้งแล้วลองทดสอบทันที
ข่าวที่เกี่ยวข้องคือเคยเห็น โพสต์ก่อนหน้านี้ ที่บอกว่า “ปรับปรุงการเรนเดอร์เทอร์มินัลของ Claude Code ได้ 85%”
ในที่สุดก็ช่วยลด flickering ได้สักที ขอบคุณมาก นี่เป็น บั๊กที่ทำให้ปวดหัว มานาน และตอนนี้ก็พอหายใจหายคอได้บ้างแล้ว
หวังว่า Anthropic จะแก้ปัญหานี้ให้หมดจดได้เร็ว ๆ
Codex ยัง ตอบสนองได้ดีกว่ามาก แม้เซสชันจะยาวขึ้น ส่วน Claude จะเริ่มหน่วงเมื่อเวลาผ่านไป