ai> 操控 agent CLI,操作它的選單,確認結果

操控任何終端機程式
像真人一樣

人告訴 AI 該做什麼。但選單、載入動畫、密碼 欄位與各種 agent CLI,對一條單純的管線來說全都是看不見的。SmartCLI 讓 模型能感知畫面、按下按鍵並確認結果 —— 就像 真人一樣。

pip install smartcli-toolkit  ·  Windows · POSIX  ·  MIT
SmartCLI driving an agent CLI TUI
問題所在

你的 AI 在終端機裡是看不見的

把一個全螢幕程式接上管線,你什麼都拿不到,不然就是卡住。 改用 SmartCLI 來操控,模型就能讀取語意化快照、用方向鍵 移動,並驗證每一個步驟。

  一般子行程 / 管線
$ agent-cli | cat (waiting…) nothing. the TUI needs a real terminal — it never draws, or it just hangs. no menu. no arrows. no cursor.
  drive-tui —— 感知 → 行動
[screen 30x100] cursor=r25c6 [stable] ╭─────────────────────────╮ Agent CLI Beta 0.2 New worktree ctrl+w ╰─────────────────────────╯ keys: Down Down model tier: low · switched
✗ 看不見又卡住  →  ✓ 已感知、已操控、已確認
三種技能,一個核心

操控。設計。渲染。

每種技能都是獨立完整的工具,建立在同一套可插拔 PTY + pyte 螢幕模型之上。

DRIVE-TUI

操控互動式 TUI

感知 → 決策 → 行動 → 等待 → 確認。讀取語意化的畫面 快照,絕不盲目 sleep。判斷畫面類型並加以操控。

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

終端機視覺特效

一套活範本式的 fx 引擎:純粹的畫格產生器, 自動探索、可套主題、支援 truecolor。有界的播放迴圈。

30 效果 · 8 主題 · donut · cbonsai · spectrum_bars
TUI-UI

逐格精準的介面

類似網頁的排版引擎,輸出 tmux 安全的 ANSI 畫格。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 —— 用方向鍵在面板間移動、開啟某個 commit 的 diff、把某個分支 反白起來 —— 這一切全靠讀取 pyte 的儲存格網格(哪一列被選取、 是不是 alt-screen)來完成。這是在 Linux 容器裡直接操控真實程式所擷取的, 不是腳本。像 pexpect 這種逐位元組串流比對器無法感知「哪一列被反白」; 畫面模型卻可以。

drive-tui 在 Debian 13 上操控真實的 lazygit TUI —— 感知 → 行動 → 確認 (30fps)
dialog —— 核取清單表單:移動、用 Space 切換各列、送出
vim —— 模式化編輯:insert、輸入、Esc、:wq
htop —— 樹狀檢視、開啟排序選單、套用
ncdu —— 進入最大的目錄,再退回來

每一段影片都是 SmartCLI 在操控真實的程式 —— 讀取 pyte 畫面網格並按下按鍵,而不是腳本產生的 輸出。像 pexpect 這種逐位元組串流比對器無法感知「哪一列被反白」;畫面模型 卻可以。

一套 API · 三種作業系統

同一個驅動程式。Windows、macOS、Linux。

真正困難、也真正站得住腳的地方:同一個函式庫在三種平台上, 都以同樣的 感知 → 行動 → 確認 迴圈操控同一個真實的 lazygit —— Windows 上用原生 ConPTY、macOS 上用 BSD pty、Linux 上用 Linux pty,各自搭配自適應的 DECCKM/SS3 方向鍵。不用 WSL,也不用 Cygwin。下面每一段影片都是在該作業系統 上真實操控的。

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, 三種作業系統。

真實錄製

fx 引擎,實際跑起來的樣子。

底下每一段片段,都是真正的特效透過專案自家管線 逐格渲染出來的 —— 沒有用螢幕錄影軟體。任何一個都能用 python -m fx play <name> 重現。

solarsystem —— 太陽系儀:行星沿克卜勒橢圓軌道繞著脈動的太陽公轉
donut —— 經典的 ASCII 甜甜圈環面
tunnel —— demoscene 穿越隧道(無縫循環)
fire —— 熱度緩衝的火焰場
rain —— Matrix 數位雨
不限模型

任何 AI,任何 agent CLI。

SmartCLI 是一個由模型呼叫的工具 —— 不論是哪個 模型在操控、你跑的是哪個 agent CLI,它都能運作。

Claude Sonnet · Opus · Fable GPT-5.6 · 5.5 Grok 4.5
codexclaude-code grokkiro-cli gemini-cliaider
開始使用

解壓縮、放進去,就能用。

核心從 PyPI 安裝;技能就地執行。一個 放進來的 drive-tui 資料夾甚至自帶一份核心。

# the shared core, from PyPI pip install smartcli-toolkit # then, in Python from smartcli_core import PtySession # or check a dropped-in skill folder is wired up python skills/drive-tui/scripts/tui.py doctor