사람이 AI에게 할 일을 지시합니다. 하지만 메뉴, 스피너, 비밀번호 입력란, 에이전트 CLI는 단순한 파이프에는 보이지 않습니다. SmartCLI는 모델이 화면을 인식하고, 키를 누르고, 결과를 확인하게 해줍니다 — 사람이 하는 방식 그대로.
전체 화면 프로그램에 파이프를 연결하면 아무것도 나오지 않거나 멈춥니다. SmartCLI로 조작하면 모델이 의미 있는 스냅샷을 읽고, 방향키로 이동하며, 단계마다 검증합니다.
각 스킬은 하나의 플러그형 PTY +
pyte 화면 모델 위에서 독립적으로 동작하는 도구입니다.
인식 → 판단 → 조작 → 대기 → 확인. 무작정 sleep을 넣지 않고 의미 있는 화면 스냅샷을 읽습니다. 화면을 분류하고 조작합니다.
살아 있는 템플릿형 fx 엔진: 순수 프레임 프로듀서,
자동 탐색, 테마 지원, 트루컬러. 경계가 명확한 재생 루프.
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 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, 세 가지 OS.
아래의 모든 클립은 프로젝트 자체 파이프라인을 통해 프레임 단위로
렌더링한 진짜 이펙트입니다 — 화면 녹화가 아닙니다. 무엇이든
python -m fx play <name>로 재현할 수 있습니다.
SmartCLI는 모델이 호출하는 도구입니다 — 어떤 모델이 조작하든, 어떤 에이전트 CLI에서 실행하든 동작합니다.
코어는 PyPI에서 설치하고, 스킬은 그 자리에서 실행됩니다.
넣어둔 drive-tui 폴더는 자체 코어까지 함께 담고 있습니다.