人告诉 AI 该做什么。可菜单、加载动画、密码 输入框和 Agent CLI,对一个普通管道来说全是隐形的。SmartCLI 让 模型看见屏幕、按下按键、并确认结果——就像 真人操作那样。
把一个全屏程序接上管道,你什么也得不到,甚至直接卡死。 改用 SmartCLI 来驱动,模型就能读到语义化的屏幕快照,用方向键 移动,并逐步核验每一步。
每个技能都是构建于同一个可插拔 PTY +
pyte 屏幕模型之上的独立工具。
感知 → 决策 → 行动 → 等待 → 确认。读取语义化的屏幕 快照,绝不盲目 sleep。识别屏幕类型并驱动它。
一套活模板式的 fx 引擎:纯帧生产者,
自动发现、可换主题、真彩色。有边界的播放循环。
一套类 Web 的布局引擎,输出对 tmux 安全的 ANSI 帧。CSS 盒模型、 flex/grid,CJK 精准对齐,列永不错位。
它们运行的正是技能随附的同一批原语——实时、就在你的 浏览器里。动手玩玩看。
SmartCLI 通过它的 感知 → 行动 → 确认 循环直接驱动真实的
lazygit TUI —— 用方向键在各面板间导航、打开某次提交的 diff、高亮一个分支
—— 全都靠读取 pyte 单元格网格来完成(哪一行被选中、是否处于
alt-screen)。这是在 Linux 容器里驱动真实程序捕获的,并非脚本化输出。像
pexpect 这样的字节流匹配器无法感知"哪一行被高亮";而屏幕模型可以。
:wq每一段片段都是 SmartCLI 驱动真实程序 —— 读取 pyte 屏幕网格并按下按键,而非脚本化的输出。像 pexpect 这样的字节流匹配器无法感知"哪一行被高亮";而屏幕模型可以。
真正困难、也真正有壁垒的地方:同一个库在三个平台上都用同一套
感知 → 行动 → 确认 循环驱动同一个真实的 lazygit
—— Windows 上用原生 ConPTY、macOS 上用 BSD pty、Linux 上用
Linux pty —— 每个平台都配以自适应的 DECCKM/SS3 方向键。没有 WSL,
也没有 Cygwin。下面的每一段片段都是在对应的操作系统上真实驱动的。
Windows 在 ConPTY 下驱动了
lazygit 0.63;macOS 在 Apple Silicon M 系列上通过 BSD pty 驱动(那里的
DECCKM/SS3 方向键路径已针对真实 ncurses 验证过);Linux 则通过标准库
pty.fork()。同一个 scripts/tui.py、同样的 recipes、
三个操作系统。
下面每一段都是真实特效,逐帧经由项目自身的
流水线渲染而成——没有用屏幕录制工具。任意一个都可用
python -m fx play <name> 复现。
SmartCLI 是模型调用的一个工具——无论驱动它的是 哪个模型,也无论你运行在哪个 Agent CLI 里,它都能工作。
内核从 PyPI 安装;技能原地即可运行。一个
拖放进来的 drive-tui 文件夹甚至自带一份内核。