6 ポイント 投稿者 GN⁺ 2026-01-23 | 1件のコメント | WhatsAppで共有
  • 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ライセンス

1件のコメント

 
GN⁺ 2026-01-23
Hacker Newsのコメント
  • 私は Claude CodeのTUIレンダリング を担当している
    長らくご不便をおかけして申し訳ないが、本日すべてのユーザーに 差分レンダラー(differential renderer) を展開した
    レンダリングシステムを全面的に書き直し、現在はセッションの約1/3のみが断続的なちらつきを経験する状態になった。連続的なちらつきはほぼなくなった
    また、VSCodeターミナルとtmuxに 同期出力(DEC mode 2026) サポートのパッチを提出し、すでにマージされている
    完全にちらつきのない環境を望むならGhosttyを勧める。関連情報は issue #769 comment, xterm.js PR #5453, tmux PR #4744 で確認できる

    • なぜこれほど重要な問題について 公式コミュニケーションが不足していたのか 気になる
      GitHub issue(#1913, #826, #3648)には毎日コメントが付いているのに、12月のロールバック以降Anthropicからの返答はほとんどなかった
      技術的な難しさは理解するが、コミュニケーション不足 がユーザーの信頼を失わせたように思う
    • $200プランを使っているが APIリクエストのタイムアウト が頻繁に発生する
      エージェントは1つか2つしか動かしていないのにこうなる。もしかすると 以前の料金プランのrate limit が残っているのか、あるいは 長いコンテキストのセッション が原因なのか気になる
      それでもこのツールのおかげで以前は不可能だったアプリを作れており、本当に面白い
    • issue #769 にもう少し注意を向けてほしい
      macOSのiTermでウィンドウのフォーカスを失うたびに画面が上へスクロールしてしまい、とても不便だった
    • Ghosttyを勧める前に この記事 を読むことを勧める
      Ghostty 1.0以降 メモリリーク があり、Claude CodeのようなCLIアプリがその条件を頻繁に作り出して問題が表面化していた
      修正はすでにマージされており、1.3リリースに含まれる予定だ
    • もしかして TUIとUIを分離 して、誰でも自分専用のインターフェースを作れるようにする計画はあるのだろうか
      Zedのように柔軟に構成できれば、はるかに良い体験になりそうだ
  • 数か月Claude Codeを使っていなかったが、まだflickerが解決していなかったとは 驚いた
    オープンソース化しない理由は競争上の問題ではなく、コードベースの混沌 にあるのかもしれないと思った

    • 問題の原因は Inkライブラリ が更新のたびに全体を消して描き直す方式だからだ
      issue #769 に関連情報がある
      私はローカルでnpmパッケージにパッチを当てたが完璧ではない。構造的にレンダリング方式を変える必要がある
      ちなみにOpenAI Codexは Rust + ratatui で書かれているのでこの問題がない
    • 私の推測では、Claude Codeチームは Claude CodeでClaude Codeを開発 しているので問題解決が遅いのだと思う
      こういう複雑なバグは結局、人が週末に腰を据えて直接直さないといけないのに、エージェントばかり回しているように見える
    • Anthropicは「90%のコードはAIが書く」と言ったが、肝心の 基本的なflickerバグ すら直せないのは皮肉だ
      他のCLIツール(opencode, codex, gemini, droid など)にはこうした問題がない
    • チームは 多すぎるissueと急速なモデル変化 の中で踏ん張っているように見える
      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%改善 した」という 以前の投稿 を見た

    • それでもまだ スクロールの問題 は残っている
  • ついにflickeringを減らしてくれてありがとう。頭痛を引き起こすバグ だったので、これで少しは助かる
    Anthropicがこの問題を早く完全に解決してくれることを願う

  • Codexはセッションが長くなってもずっと 応答性が高く、Claudeは時間が経つともたつく

    • CodexがRustで書かれていることが、やはり違いを生んでいるようだ