ai> agent CLI を操作し、メニューをたどり、結果を確認する

あらゆるターミナル
プログラムを人間のように操作する。

人が AI に指示を出す。けれどメニューやスピナー、パスワード入力欄、 そしてエージェント CLI は、素のパイプからは見えません。SmartCLI はモデルが 画面を認識し、キーを押し、結果を確認できるようにします — 人間がそうするように。

pip install smartcli-toolkit  ·  Windows · POSIX  ·  MIT
SmartCLI が agent CLI の TUI を操作する様子
課題

あなたの AI は、ターミナルの中では目が見えていません

フルスクリーンのプログラムをパイプにつないでも、何も返らないか、 ハングするだけ。SmartCLI 経由で操作すれば、モデルは意味のあるスナップショットを 読み取り、矢印キーで移動し、あらゆるステップを検証します。

  素の subprocess / pipe
$ agent-cli | cat (待機中…) 何も起きない。TUI には本物の ターミナルが必要で、描画されないか、 そのままハングしてしまう。 メニューも、矢印も、カーソルもない。
  drive-tui — 認識 → 実行
[screen 30x100] cursor=r25c6 [stable] ╭─────────────────────────╮ Agent CLI Beta 0.2 New worktree ctrl+w ╰─────────────────────────╯ keys: Down Down model tier: low · 切替済み
✗ 目が見えず、ハング  →  ✓ 認識し、操作し、確認
3つのスキル、1つのコア

操作する。設計する。描画する。

それぞれのスキルは、差し替え可能な1つの PTY + pyte スクリーンモデルの上に載る、自己完結型のツールです。

DRIVE-TUI

インタラクティブな TUI を操作する

認識 → 判断 → 実行 → 待機 → 確認。意味のあるスクリーンスナップショットを 読み取り、当てずっぽうのスリープは決してしません。画面を分類して操作します。

8 recipes · repl · menu · pager · form · wizard
CMD-ART

ターミナルのビジュアルエフェクト

テンプレートが息づく fx エンジン。純粋なフレームプロデューサーで、 自動検出され、テーマ対応、トゥルーカラー。上限つきの再生ループ。

30 effects · 8 themes · donut · cbonsai · spectrum_bars
TUI-UI

セル単位で正確な UI

tmux セーフな ANSI フレームを出力する、Web ライクなレイアウトエンジン。CSS ボックスモデル、 flex/grid に対応し、CJK も正確なので、桁がずれることはありません。

15 widgets · panel · table · meter · chart
試してみる — インストール不要

実物のエンジンで遊んでみましょう。

これらはスキルが同梱するのと同じプリミティブを、ブラウザ上でそのまま 動かしています。どんどん触ってみてください。

CMD-ART
純粋なフレームプロデューサー、30fps — fx エンジンの考え方です。
DRIVE-TUI ↑↓ 移動 · Enter/→ 開く · Esc/← 戻る · 1–9 ジャンプ
認識 → ハイライトされている行は production
TUI-UI スライダーをドラッグ
progress62%
cpu
latency
1/8 セル精度のバーと点字 — 桁ずれなし。
証明 — 実際の TUI を操作

本当に lazygit を操作する。

SmartCLI が実際の lazygit TUI を 認識 → 実行 → 確認 のループで直接操作します — 矢印キーでパネルを移動し、コミットの diff を開き、 ブランチをハイライトする、そのすべてを pyte セルグリッド(どの行が 選択されているか、alt-screen かどうか)を読み取って行います。実際のプログラムを Linux コンテナ内で直接操作してキャプチャしたもので、スクリプトではありません。 pexpect のようなバイトストリームマッチャーは「どの行がハイライトされているか」を 認識できませんが、スクリーンモデルならできます。

drive-tui が Debian 13 で実際の lazygit TUI を操作 — 認識 → 実行 → 確認 (30fps)
dialog — チェックリストフォーム: 移動、Space で行をトグル、送信
vim — モーダル編集: insert、入力、Esc、:wq
htop — ツリービュー、ソートメニューを開く、適用
ncdu — 最大のディレクトリに入って、戻る

どのクリップも SmartCLI が 実際の プログラムを操作したものです — pyte スクリーングリッドを読み取って キーを押しており、スクリプトで作った出力ではありません。pexpect のような バイトストリームマッチャーは「どの行がハイライトされているか」を認識できませんが、 スクリーンモデルならできます。

1つの API · 3つの OS

同じ ドライバー。Windows、macOS、Linux。

本当に難しく、そして守りの効く部分: 1つのライブラリが、3つの プラットフォームすべてで同じ実際の lazygit を同じ 認識 → 実行 → 確認 ループで操作します — Windows のネイティブ ConPTY、macOS の BSD pty、そして Linux pty で、 それぞれ適応型の DECCKM/SS3 矢印キーを使います。WSL も Cygwin もありません。 以下の各クリップは、その OS で実際に操作したものです。

Windows — ConPTY (pywinpty)
macOS — BSD pty (Apple Silicon)
Linux — pty.fork()

Windows は ConPTY で lazygit 0.63 を操作し、macOS は Apple Silicon の M シリーズで BSD pty を使って 操作(そこでの DECCKM/SS3 矢印キー経路は実際の ncurses に対して検証済み)、 Linux は標準ライブラリの pty.fork() で操作しました。同じ scripts/tui.py、同じ recipes、3つの OS。

実際のキャプチャ

実際に動いている fx エンジン。

以下のクリップはすべて、プロジェクト自身のパイプラインを通して フレーム単位で描画された本物のエフェクトです — 画面録画ではありません。どれも python -m fx play <name> で再現できます。

solarsystem — オーラリー: 脈打つ太陽の周りをケプラーの楕円軌道で回る惑星たち
donut — おなじみの ASCII トーラス
tunnel — デモシーン風の飛行 (シームレスループ)
fire — ヒートバッファによる炎のフィールド
rain — マトリックス風のデジタルレイン
モデル非依存

どんな AI でも、どんなエージェント CLI でも。

SmartCLI はモデルが呼び出すツールです — 操作しているモデルが何であれ、 あなたが動かすエージェント CLI が何であれ、そのまま動作します。

Claude Sonnet · Opus · Fable GPT-5.6 · 5.5 Grok 4.5
codexclaude-code grokkiro-cli gemini-cliaider
はじめる

解凍して、置くだけで、動きます。

コアは PyPI からインストールし、スキルはその場で動きます。置いただけの drive-tui フォルダは、自前のコアまで持ち歩きます。

# 共有コア、PyPI から pip install smartcli-toolkit # そして、Python の中で from smartcli_core import PtySession # または、置いたスキルフォルダが正しく繋がっているか確認 python skills/drive-tui/scripts/tui.py doctor