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 (等待中…) 什么都没有。这个 TUI 需要一个真实的 终端——它根本不绘制, 要么就直接卡死。 没有菜单。没有方向键。没有光标。
  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 个方案 · repl · menu · pager · form · wizard
CMD-ART

终端视觉特效

一套活模板式的 fx 引擎:纯帧生产者, 自动发现、可换主题、真彩色。有边界的播放循环。

30 种特效 · 8 套主题 · donut · cbonsai · spectrum_bars
TUI-UI

单元格级精准的 UI

一套类 Web 的布局引擎,输出对 tmux 安全的 ANSI 帧。CSS 盒模型、 flex/grid,CJK 精准对齐,列永不错位。

15 个组件 · 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 这样的字节流匹配器无法感知"哪一行被高亮";而屏幕模型可以。

一套 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 — 黑客帝国式数字雨
模型无关

任意 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 文件夹甚至自带一份内核。

# 共享内核,来自 PyPI pip install smartcli-toolkit # 然后,在 Python 里 from smartcli_core import PtySession # 或者检查一个拖放进来的技能文件夹是否接好了 python skills/drive-tui/scripts/tui.py doctor