pi 에이전트를 위한 터미널 사용자 인터페이스 (TUI) 프론트엔드
요약
Bubble Tea로 구축된 pitago는 pi 에이전트를 위한 세련되고 기능적인 터미널 사용자 인터페이스(TUI) 프론트엔드입니다. 이 도구는 JSONL을 통해 백엔드와 통신하며, 모델 변경, 복사, 테마 전환 등 다양한 내장 명령어를 제공하여 개발자 경험을 향상시킵니다.
핵심 포인트
- pi 에이전트를 위한 TUI 프론트엔드를 제공합니다.
- 다양한 내장 명령어(`/model`, `/yank`, `/theme` 등)를 통해 기능을 확장했습니다.
- 세션 관리, 컨텍스트 압축(`compact`), 실행 추적(`trajectory`) 등의 고급 기능을 지원합니다.
demo.web.mp4
Bubble Tea로 구축된 pi 에이전트를 위한 세련된 터미널 사용자 인터페이스(TUI) 프론트엔드입니다. pi --mode rpc는 백엔드(다중 프로바이더, 도구, 세션, 압축) 역할을 하며, pitago는 JSONL을 통해 통신하는 풍부한 터미널 인터페이스를 제공합니다.
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/cavaldos/pitago/main/script/install.sh | bash
# Windows (PowerShell)
...
소스 코드로부터 빌드:
git clone https://github.com/cavaldos/pitago.git
cd pitago
script/build.sh # bin/pitago를 출력합니다 (버전은 git tag/commit을 기본으로 합니다)
...
| 플랫폼 | 명령어 |
|---|---|
| macOS / Linux | rm ~/.local/bin/pitago (또는 이전에 sudo로 설치했다면 /usr/local/bin/pitago) |
| ... |
go run ./src # 이 디렉토리에서 시작합니다
go run ./src ~/Code/workspace # 또는 다른 디렉토리를 엽니다 (플래그 우선)
go run ./src -c # 가장 최근 세션을 재개합니다
...
/를 입력하여 명령어 팝업을 열 수 있습니다. 내장 명령어는 로컬에서 가로채져 RPC를 통해 재구현되며, 확장/프롬프트/스킬 명령어는 pi의 get_commands로부터 오며 서버 측에서 실행됩니다.
| 명령어 | 동작 |
|---|---|
/model · /recent | 모델 변경 · 최근 모델 선택기 |
/yank /copy /copy-md /copy-tables /copy-code | 마지막 어시스턴트 답변 복사 (전체 또는 의미 단위) |
/sidebar · `/mouse [on | off]` |
/theme [name] | 테마 전환 — 선택기 사용, 또는 직접 적용 (pitago --theme one-dark) |
| `/pet [name | ascii |
/plugins | 사이드바에 설치된 pi 플러그인 접거나 펼치기 |
/thinking | 사고 수준 토글 |
/mcp | MCP 서버 관리자: 서버 추가/제거, 서버별 로그인, 도구, 재연결, 노출, 활성화/비활성화 |
/tree | 메시지 이동, 항목 복사, 여기서 포크(fork)할 수 있는 세션 트리 |
| `/trajectory [all | tools |
/notification [filter] | 알림 기록 (시간 + 정보/오류, 최신순) |
/settings | 에이전트 설정, ~/.pi/agent/settings.json에 저장됨 |
/pitago-setting | Pitago 허브: 에이전트, 스킬, 프롬프트, 확장 기능, 플러그인, MCP, 작업, 테마, 로그인 |
/login · /logout | API 키 및 pi OAuth/구독 관리 |
/live | 실행 중인 pi 세션에 읽기 전용으로 연결 |
/reload | 확장 기능 다시 로드 |
/new · /resume · /session | 새 세션 · 재개 선택기 · 세션 관리 |
/compact [instructions] | 현재 컨텍스트 압축 (LLM 호출, 시간이 걸릴 수 있음) |
/update | GitHub 릴리스 확인 및 최신 버전 설치 |
/quit | 종료 |
| Key | 동작 |
|---|---|
Enter | 전송 (idle 상태) / 안내 (running 중일 때) |
Esc×2 | 현재 진행 중인 턴 취소 (3초 이내 두 번 누름 — 첫 번째 누름만 작동) |
Ctrl+C | 입력 내용 지우기 — 텍스트, 회상된 메시지, 이미지 트레이; 빈 입력 상태에서는 종료 (3초 이내 두 번 누름) |
Ctrl+N | 새 세션 시작 |
Ctrl+P / Ctrl+R / Alt+1…5 | 모델 순환 · 최근 모델 선택기 · 최근 모델로 이동 |
Ctrl+T | 사고 수준(thinking level) 순환 (선택기 없음) |
Ctrl+E | 사이드바 숨기기/보이기 (채팅만 깔끔하게 드래그하여 선택하려면 숨김 처리 권장) |
Ctrl+Y / Ctrl+O | 마지막 어시스턴트 답변 붙여넣기 · 모든 메시지에 대한 선택기(picker) 붙여넣기 |
Ctrl+V | 텍스트 붙여넣기 — 또는 스크린샷 데이터 (pngpaste/wl-paste/xclip) |
Ctrl+G | 도구 출력 확장/축소: 작성된 콘텐츠, 읽은 결과, 차이점(diffs) 보기 |
Backspace | 빈 입력 + 이미지 트레이 → 마지막 [Image N] 칩 제거 |
↓ (+트레이) | 커서가 이미지 트레이로 이동 · ←→ 칩 선택 · ⌫ 삭제 · Esc 입력창으로 돌아가기 |
Tab | /command 또는 @file 완성하기 (complete) |
@ | 파일 언급하기 (fuzzy finder; @*.png/.jpg/.gif/.webp는 비전(vision) 전송도 수행함) |
↑↓ PgUp PgDn | 빈 입력 상태: 전송된 메시지 회상 (Esc로 지움) · 그렇지 않은 경우 채팅 스크롤 |
Tab | 플랜 모드 토글 (팔레트에서 / 완성, @은 파일 완성) |
End | 최신 메시지로 이동 — 단축키가 같은 힌트 칩이 스크롤된 상단에 떠다니며(클릭하여 이동 가능) 표시됨 |
Alt+… 또는 Ctrl+↑↓ PgUp PgDn Home End | 사이드바 스크롤 |
Mouse wheel | 사이드바를 호버하여 스크롤하거나, 그렇지 않으면 채팅을 스크롤함; --mouse=false는 비활성화함 |
!를 입력하면 빈 입력창에서 편집기를 로컬 셸(local shell)로 전환합니다: Enter가 해당 라인을 실행하고, Esc는 모드를 벗어나 프로세스를 종료합니다. 셸 모드에서 입력된 내용은 절대로 pi에 도달하지 않습니다 — 어떤 턴이나 세션 기록으로도 남지 않으며 — 따라서 명령어는 모델의 것이 아니라 사용자의 것입니다. (!cmd를 입력해도 변경 없이 pi로 전송됩니다.)
| Key | 동작 |
|---|---|
! (빈 입력) | 셸 모드 진입 |
Enter | 라인 실행; 출력은 bash 블록으로 채팅창에 표시됨 (stderr 포함, 비정상 종료 시 표시) |
↑↓ / Shift+↑↓ | 이전 셸 명령어 불러오기 (Esc로 초기화) — pi에게 메시지가 전송되지 않음 |
Esc | 셸 모드 종료, 셸 종료, 불러온 명령어 폐기 |
Ctrl+V | 명령어 붙여넣기 (편집기의 다른 키는 계속 작동함: 채팅 스크롤, Ctrl+C로 지우기/종료, 사이드바) |
세션의 현재 작업 디렉터리(cwd)를 사용하여 모든 라인마다 오래 유지되는 셸이 실행되므로, cd, export 및 셸 변수는 명령어 사이에 지속됩니다. 프로그램은 $SHELL입니다 (설정 /settings → Pitago → 셸 바이너리에서 재정의: $SHELL 또는 절대 경로). 명령어는 한 번에 하나씩 실행되며, Ctrl+C는 실행 중인 명령을 중단하는 대신 라인을 지웁니다 — 명령어는 완료될 때까지 계속 진행됩니다. 블록은 명령어 출력의 처음 2000바이트를 유지합니다 (pi가 자체 !cmd에 사용하는 예산이며, 전사(transcript)가 표시하는 것보다 훨씬 많으므로), 따라서 한 번 말이 많은 명령어 때문에 나중에 타이핑 속도가 느려지는 것을 방지할 수 있습니다.
pi의 자체 !cmd 이스케이프 (명령어당 새로운 프로세스, 출력은 모델에 보임)는 영향을 받지 않습니다.
| 동작 | 방법 |
|---|---|
| 드래그 선택 | 마우스로 채팅창 내부를 드래그 — 선택 영역은 채팅 패널에 고정되며, 가장자리는 자동 스크롤됩니다 |
| ... | |
| 전체 메시지 복사 시 원본 Markdown, 테이블, 펜스 코드 언어 및 링크가 유지됩니다. 부분적인 드래그 선택은 ANSI/OSC 시퀀스가 없는 보이는 텍스트를 복사합니다. |
go vet ./... # vet
go build -o /tmp/pitago ./src # build
go test ./... # test
...
A 태그는 크로스 빌드(linux-amd64, darwin-amd64/arm64, windows-amd64)를 수행하고 GitHub 릴리스에 게시합니다: script/release.sh v0.0.1.
.app은 얇은 MVC 셸이며, components는 순수한 뷰 프리미티브를 담고 있고, ext와 pitago는 별도의 순수 도메인 계층이며, builtin은 RPC 위의 명령어 표면(command surface)이고, pirpc/update는 백엔드 에지입니다. script/check-layers.sh`가 단방향 임포트 그래프를 강제합니다.
| Doc | What |
|---|---|
| resources/doc/ARCHITECTURE.md | 디렉토리 맵 및 임포트 규칙 |
| ... |
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기