人が AI に指示を出す。けれどメニューやスピナー、パスワード入力欄、 そしてエージェント CLI は、素のパイプからは見えません。SmartCLI はモデルが 画面を認識し、キーを押し、結果を確認できるようにします — 人間がそうするように。
フルスクリーンのプログラムをパイプにつないでも、何も返らないか、 ハングするだけ。SmartCLI 経由で操作すれば、モデルは意味のあるスナップショットを 読み取り、矢印キーで移動し、あらゆるステップを検証します。
それぞれのスキルは、差し替え可能な1つの PTY +
pyte スクリーンモデルの上に載る、自己完結型のツールです。
認識 → 判断 → 実行 → 待機 → 確認。意味のあるスクリーンスナップショットを 読み取り、当てずっぽうのスリープは決してしません。画面を分類して操作します。
テンプレートが息づく fx エンジン。純粋なフレームプロデューサーで、
自動検出され、テーマ対応、トゥルーカラー。上限つきの再生ループ。
tmux セーフな ANSI フレームを出力する、Web ライクなレイアウトエンジン。CSS ボックスモデル、 flex/grid に対応し、CJK も正確なので、桁がずれることはありません。
これらはスキルが同梱するのと同じプリミティブを、ブラウザ上でそのまま 動かしています。どんどん触ってみてください。
SmartCLI が実際の lazygit TUI を 認識 → 実行 → 確認
のループで直接操作します — 矢印キーでパネルを移動し、コミットの diff を開き、
ブランチをハイライトする、そのすべてを pyte セルグリッド(どの行が
選択されているか、alt-screen かどうか)を読み取って行います。実際のプログラムを
Linux コンテナ内で直接操作してキャプチャしたもので、スクリプトではありません。
pexpect のようなバイトストリームマッチャーは「どの行がハイライトされているか」を
認識できませんが、スクリーンモデルならできます。
:wqどのクリップも SmartCLI が 実際の プログラムを操作したものです — pyte スクリーングリッドを読み取って キーを押しており、スクリプトで作った出力ではありません。pexpect のような バイトストリームマッチャーは「どの行がハイライトされているか」を認識できませんが、 スクリーンモデルならできます。
本当に難しく、そして守りの効く部分: 1つのライブラリが、3つの
プラットフォームすべてで同じ実際の lazygit を同じ
認識 → 実行 → 確認 ループで操作します — Windows のネイティブ
ConPTY、macOS の BSD pty、そして Linux pty で、
それぞれ適応型の DECCKM/SS3 矢印キーを使います。WSL も Cygwin もありません。
以下の各クリップは、その OS で実際に操作したものです。
Windows は ConPTY で
lazygit 0.63 を操作し、macOS は Apple Silicon の M シリーズで BSD pty を使って
操作(そこでの DECCKM/SS3 矢印キー経路は実際の ncurses に対して検証済み)、
Linux は標準ライブラリの pty.fork() で操作しました。同じ
scripts/tui.py、同じ recipes、3つの OS。
以下のクリップはすべて、プロジェクト自身のパイプラインを通して
フレーム単位で描画された本物のエフェクトです — 画面録画ではありません。どれも
python -m fx play <name> で再現できます。
SmartCLI はモデルが呼び出すツールです — 操作しているモデルが何であれ、 あなたが動かすエージェント CLI が何であれ、そのまま動作します。
コアは PyPI からインストールし、スキルはその場で動きます。置いただけの
drive-tui フォルダは、自前のコアまで持ち歩きます。