imposter 사용자 가이드
imposter는 실제 코드를 수정하거나 외부 AI 모델을 호출하지 않으면서도, 터미널 화면에 마치 최신 AI 코딩 에이전트와 페어 프로그래밍을 진행하는 듯한 생생한 작업 환경을 연출해 주는 Rust 기반 CLI 도구입니다.
동료나 상사가 지나갈 때 화면만 보면 “지금 대규모 리팩터링과 분산 트랜잭션 최적화 작업을 깊이 있게 진행하고 있구나“라는 인상을 줍니다. 실제로는 파일이 전혀 변경되지 않고, API 토큰이나 네트워크 비용도 0원입니다.
Warning
Satire / 풍자 목적 안내 본 프로젝트는 개발 문화의 단면을 유쾌하게 풍자하기 위해 만든 유머 도구입니다. 실제 업무 진척 증빙이나 성과 평가 용도로 악용해서는 안 됩니다.
핵심 차별점
1. 주요 AI 코딩 에이전트 CLI 정밀 모사
Claude Code, OpenAI Codex, OpenCode, Pi Agent, Google Antigravity 등 현존하는 주요 AI 코딩 에이전트들의 고유한 프롬프트 스타일, 박스 드로잉, 툴 실행 트리 및 상태바 레이아웃을 실제 환경과 분간하기 어려울 정도로 사실감 있게 구현했습니다.
2. 다크 모드 & 라이트 모드 동시 지원
모든 스타일은 기본 다크 모드(--dark) 외에도 밝은 배경 터미널 사용자를 위한 고대비 라이트 모드(--light) 팔레트를 완벽히 지원합니다. -i 대화형 TUI에서도 t 키 하나로 즉시 테마를 전환해 볼 수 있습니다.
3. 극단적인 최소 의존성 & 경량 설계
- 절제된 런타임 의존성: 일반 실행 시
clap,serde,tokio,rand,regex등 무거운 외부 프레임워크를 일절 사용하지 않으며, 자체 파서 및 경량 난수 엔진을 직접 구현해 사용합니다. - 초소형 바이너리 & 최소 메모리: TUI를 제외한 코어 빌드는 약 370 KB(TUI 포함 시 약 550 KB)에 불과하며, 실행 중 메모리 점유율(RSS)은 약 2 MB 내외로 극히 가볍습니다.
- 효율적인 스트리밍 I/O: 화면 전체를 강제로 덮어쓰는 대체 화면 버퍼(Alternate Screen)를 쓰지 않고, 8 KB 내부 버퍼와 단일 줄 버퍼를 재사용하여 라인 단위로 단 한 번의 시스템 호출(
write_all)을 통해 부드럽게 출력합니다.
4. 반복 없는 자연스러운 대사 전개 (Deck 시스템)
단순한 무작위 출력이 아닌, 내부 xorshift64* 의사 난수 생성기와 Fisher-Yates 알고리즘으로 셔플된 덱(Deck) 메커니즘을 사용합니다. 프롬프트, 탐색 대상 파일, 코드 패치 디프, 터미널 명령어 결과가 한 주기 동안 중복 없이 매끄럽게 교체됩니다.
5. 풍부한 대화형 TUI 마법사 (-i)
인자 없이 처음 실행하거나 -i 옵션으로 진입하면 ratatui 기반의 대화형 설정 창이 열립니다. 스타일, 테마, 개발 스택, 작업 지속 시간, 기술 용어 수준, 복잡도 등을 키보드로 편리하게 조정하고 우측 실시간 라이브 프리뷰로 즉각 확인할 수 있습니다.
빠른 시작 가이드
이 문서에서는 imposter의 다양한 설치 방법과 일상적인 기본 사용 흐름을 안내합니다.
1. 설치 방법
방법 A: crates.io를 통한 설치 (가장 권장)
Rust 개발 환경이 구축되어 있다면 다음 명령어로 간편하게 설치할 수 있습니다:
cargo install imposter
방법 B: Git 저장소에서 최신 코드 빌드
깃허브 저장소의 최신 변경 사항을 즉시 설치하려면 다음과 같이 실행합니다:
cargo install --git https://github.com/partrita/imposter-cli
방법 C: 초경량 최소 의존성 빌드 (TUI 제외)
터미널 마법사(ratatui + crossterm) 없이 순수 CLI 기능만 370 KB 안팎의 초소형 바이너리로 내려받으려면 --no-default-features 플래그를 사용합니다:
cargo install imposter --no-default-features
방법 D: 사전 빌드된 바이너리 다운로드
Rust 툴체인이 설치되어 있지 않은 환경이라면 GitHub Releases 페이지에서 본인의 운영체제 및 아키텍처에 맞는 압축 파일(tar.gz 또는 zip)을 내려받아 압축 해제 후 곧바로 실행할 수 있습니다.
- Linux: x86_64, aarch64
- macOS: Apple Silicon (M1/M2/M3/M4), Intel (x86_64)
- Windows: x86_64 MSVC (
imposter.exe)
2. 첫 실행 및 기본 사용 흐름
첫 실행과 대화형 설정
설정 파일이 없는 상태에서 인자 없이 실행하면, 사용자 친화적인 대화형 설정 창이 자동으로 열립니다:
imposter
화면에서 원하는 CLI 스타일(예: opencode, claude, antigravity), 색상 테마(다크/라이트), 개발 분야(백엔드, 프론트엔드 등)를 둘러보고 Enter 또는 Ctrl+R을 누르면 즉시 가짜 코딩 세션이 시작됩니다.
대표적인 실행 예시
# 1. 5분 동안 실행 후 깔끔하게 종료 (자동 정지 타이머)
imposter --duration 5
# 2. OpenCode 스타일로 실행
imposter --style opencode
# 3. Google Antigravity CLI 스타일을 라이트 모드로 실행
imposter --style antigravity --light
# 4. 백엔드 개발자 시나리오로 실행
imposter --dev-type backend
# 5. 주기적으로 가짜 컴파일러 경고/린트 에러를 발생시키고 스스로 수정하게 하기
imposter --alerts
# 6. 타자 지연과 프레임 대기를 모두 끄고 초고속으로 출력 (GIF 녹화 또는 CI 검증용)
imposter --fast --seed 42
세션을 중단하고 싶을 때는 언제든지 Ctrl + C를 누르면 즉시 터미널 기본 상태로 안전하게 복귀합니다. 일반 출력 모드는 터미널의 대체 화면(Alternate Screen)을 오염시키지 않으므로 흔적이 남지 않습니다.
스타일 가이드
imposter는 단일 선택자 -s, --style <이름> 옵션을 통해 화면 전체의 시각적 페르소나를 전환합니다. 각 스타일은 단순한 텍스트 흉내가 아니라, 실제 대상 AI CLI의 배너 구조, 프롬프트 입력창, 툴 실행 인라인/블록 박스, 상태 표시줄을 충실히 재현합니다.
1. 지원하는 스타일 요약
| 스타일 식별자 | 대상 CLI 에이전트 | 주요 시각적 특징 | 단축 플래그 |
|---|---|---|---|
claude (기본값) | Anthropic Claude Code v2.1 | 2단 Clawd 픽셀 마스코트 환영 박스, ❯ 프롬프트 타이핑, ⏺ 불릿과 ⎿ 들여쓰기 트리, ⏵⏵ accept edits on | --claude |
codex | OpenAI Codex (codex-rs) | 상단 >_ 헤더, › 프롬프트, • Explored / • Edited / • Ran 블록, ─ Worked for Xs ── 구분선 | - |
opencode | OpenCode TUI (anomalyco/opencode) | SolidJS 기반 TUI의 SplitBorder(┃) + 전체 폭 backgroundPanel, Thinking:, → Read 인라인 툴, $ cmd / # Todo 블록 툴, 4개 구역 상태바 | - |
pi | Pi Agent (earendil-works/pi) | ▀█▀ / █▀█ 블록 헤더, 단일 열 핫키 안내, #343541 사용자 메시지 박스 및 #283228 성공 툴 박스, footer.ts 토큰/비용 2줄 바 | - |
antigravity | Google Antigravity CLI (agy) | ···· 점선 호라이즌 배너, ○ Read(...) / ○ Edit(...) 트래젝토리 로그, 10개 구역 /statusline 실시간 HUD | - |
classic | 원작 시스템 엔지니어링 로그 | 원작 rust-stakeholder의 프로그레스 바 부팅 화면, 심볼 링커, p99 레이턴시 측정 및 네트워크 패킷 분석 로그 | --classic |
2. 색상 테마 지원: 다크 모드와 라이트 모드
각 스타일은 터미널 배경색에 맞춰 최적의 가독성을 제공하도록 두 가지 테마 팔레트를 갖추고 있습니다:
- 다크 모드 (
-t dark또는--dark) (기본값): 어두운 터미널 배경에서 눈이 피로하지 않도록 채도와 명도를 조율한 24비트 트루컬러 팔레트를 적용합니다. - 라이트 모드 (
-t light또는--light): 흰색이나 밝은 회색 계열 배경에서도 텍스트와 보더가 흐릿해지지 않도록 고대비 전경색과 파스텔톤 배경색을 적용합니다.
스타일과 테마는 자유롭게 조합할 수 있습니다:
# OpenCode 스타일을 라이트 모드로 실행
imposter -s opencode --light
# Pi 스타일을 다크 모드로 실행
imposter -s pi --dark
각 스타일별 세부 디자인과 렌더링 방식은 하위 문서에서 상세히 다룹니다.
Claude Code 스타일 (claude)
Anthropic의 공식 터미널 에이전트인 Claude Code v2.1의 시각 디자인을 정밀하게 모사한 스타일입니다. imposter의 기본 스타일이기도 합니다.
1. 주요 레이아웃 특징
상단 환영 상자 (Welcome Banner)
터미널 너비에 맞춰 2단 분할 상자를 출력합니다. 좌측에는 Claude의 상징적인 픽셀 마스코트 ‘Clawd’(▐▛███▜▌)와 모델명(Opus 4.6 · Claude Max), 작업 디렉터리가 배치되며, 우측에는 세션 시작 팁과 단축키 안내가 들어갑니다. 폭이 좁은 터미널에서는 1단 중앙 정렬 상자로 유연하게 전환됩니다.
프롬프트 타이핑 애니메이션
상하 구분선(──────────────────────────────────) 사이에 주황빛 액센트의 ❯ 프롬프트 기호와 함께, 자연스러운 타자 속도(글자당 7ms)로 사용자 질의가 타이핑됩니다.
툴 실행 및 트리 출력
- 도구 호출: 따뜻한 테라코타 주황색 액센트의 불릿(
⏺) 기호와 함께⏺ Read(...),⏺ Update(...),⏺ Bash(...)형태의 도구 실행문이 나타납니다. - 결과 트리: 도구 실행 결과는
⎿분기 기호와 함께 2칸 들여쓰기된 트리 구조로 펼쳐집니다. (예:⎿ Read 194 lines (ctrl+o to expand)) - 코드 패치 디프: 빨간색 삭제 라인(
-)과 녹색 추가 라인(+)이 줄 번호와 함께 직관적인 diff 블록으로 렌더링됩니다.
생각 중 스피너 (Simmering Spinner)
사고 과정에서는 ✻ Simmering… (esc to interrupt · 4s · ↓ 2.1k tokens) 형태의 문구가 6프레임 아스테리스크 스피너 회전 애니메이션과 함께 출력됩니다.
하단 완료 상태바
턴이 완료되면 소요 시간과 토큰 수, 예상 비용이 계산되어 출력되며, 하단에는 실제 Claude Code 특유의 키 안내문인 ⏵⏵ accept edits on (shift+tab to cycle)이 회전 힌트로 표시됩니다.
2. 실행 명령어
# 명시적 스타일 지정
imposter --style claude
# 단축 플래그 사용
imposter --claude
# 라이트 모드로 실행
imposter --claude --light
OpenAI Codex 스타일 (codex)
OpenAI의 터미널 에이전트 CLI인 codex-rs 인터페이스를 사실감 있게 모사한 스타일입니다.
1. 주요 레이아웃 특징
상단 헤더
간결하면서도 개발자 친화적인 터미널 엠블럼 >_과 함께 모델 식별자가 출력됩니다:
>_ OpenAI Codex (codex-rs) · gpt-5-codex
하단에는 세션 조작 힌트(/help for commands · ! for bash)가 간결하게 배치됩니다.
앵글 브래킷 프롬프트
Claude의 ❯와 달리, Codex 고유의 파란색 앵글 브래킷(›) 프롬프트와 함께 사용자 명령이 타이핑됩니다.
간결한 3단계 동작 블록
Codex 스타일은 복잡한 도구 호출명을 단순화하여 직관적인 3가지 동사 블록으로 정리합니다:
• Explored: 파일 읽기 및 코드베이스 검색 결과 (└ Read src/lib.rs (lines 1–140))• Edited <file> (+add -del): 파일 수정 내역 및 증감 통계, 그리고 깔끔한 인라인 디프• Ran <command>: 터미널 명령 실행 및 완료 상태 트리 (└ test result: ok. 42 passed)
사고 중 점자 스피너 (Braille Spinner)
사고 중에는 부드럽게 회전하는 점자(Braille) 10프레임 스피너(⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏)와 함께 대기 시간이 표시됩니다.
작업 시간 분할선 푸터
턴이 종료되면 좌우가 대시 라인으로 채워진 작업 시간 표시선이 나타납니다:
─ Worked for 48s ──────────────────────────────────────────────────────────
tab to switch agents · esc to interrupt
2. 실행 명령어
# Codex 스타일로 실행
imposter --style codex
# Codex 스타일을 라이트 모드로 실행
imposter -s codex --light
OpenCode 스타일 (opencode)
차세대 오픈소스 코딩 에이전트인 anomalyco/opencode v1.2+의 SolidJS 기반 @opentui/core 세션 화면을 고스란히 재현한 스타일입니다.
1. 주요 레이아웃 특징
SplitBorder와 backgroundPanel 컨테이너 구조
OpenCode 스타일의 가장 큰 시각적 정체성은 4면 박스 대신, 어두운 패널 배경색(#1a1b26, 라이트 모드 시 #e6e9ef) 위에 좌측 굵은 세로선(┃) 하나로 영역을 나누는 현대적인 분할 구조입니다:
┃
┃ # distributed-cluster 39,413 20% ($0.29)
┃
- 세션 헤더: 프로젝트 이름(
# distributed-cluster)이 굵게 표시되며, 우측 끝에는 실시간 컨텍스트 토큰 소비량과 비용 메트릭이 배치됩니다. - 사용자 질의창: 에이전트 액센트 색상의 좌측
┃보더 패널 안에서 사용자 입력 텍스트가 자연스럽게 타이핑됩니다.
추론 영역 (Thinking: ...)
턴이 시작되면 도구 호출에 앞서 OpenCode 특유의 흐린 좌측 보더와 함께 사고 전개 과정이 나타납니다:
┃ Thinking: Let me see how the sibling module solved this.
인라인 도구 및 블록 도구 분리
- 인라인 도구 (InlineTool): 파일 읽기와 검색은 3칸 들여쓰기 후 방향 화살표와 심볼로 깔끔하게 한 줄로 출력됩니다.
→ Read src/service.rs [offset=1, limit=140]✱ Glob "src/**/*metrics*" (5 matches)✱ Grep "timeout" in src (21 matches)
- 블록 도구 (BlockTool): 코드 수정, 셸 명령 실행, 할 일 목록은 각각 독립된
SplitBorder패널 컨테이너로 감싸져 출력됩니다.← Edit src/service.rs (+4 -2)헤더 아래 패널 디프┃ $ cargo test --all-features셸 실행 및 출력 블록┃ # Todo및[✓],[•]체크리스트 블록
턴 완료 배지 및 다층 푸터
턴이 마무리되면 에이전트 배지가 출력된 뒤, 하단 프롬프트 입력 바와 상태줄이 차례로 표시됩니다:
▣ Build · qwen3.5-27b · 3m 11s (2.4k tokens · 6% · $0.02)
┃
┃ Build qwen3.5-27b OpenRouter
⬝⬝⬝⬝⬝⬝⬝⬝ esc interrupt ctrl+t variants tab agents ctrl+p commands
~/code/distributed-cluster (main) • LSP • MCP 1.2.14
2. 실행 명령어
# OpenCode 스타일 실행
imposter --style opencode
# 라이트 모드로 실행
imposter --style opencode --light
Pi Agent 스타일 (pi)
earendil-works/pi (@earendil-works/pi-coding-agent)의 고유한 미니멀 터미널 인터페이스를 재현한 스타일입니다.
1. 주요 레이아웃 특징
상단 블록 로고와 핫키 목록
상단에 Pi 특유의 2단 블록 아스키 로고(▀█▀ / █▀█)와 공식 도메인(https://pi.dev)이 청록색(Teal) 액센트로 표시되며, 단일 열 형태의 상세 단축키 목록과 컨텍스트 파일([context] AGENTS.md)이 정돈되어 출력됩니다.
전체 폭 배경 박스 (Full-Width Tinted Boxes)
Pi 스타일은 각 영역마다 터미널 전체 폭을 채우는 전용 배경색 박스를 사용하는 것이 가장 큰 특징입니다:
- 사용자 메시지 박스:
#343541(라이트 모드 시#e5e7eb) 배경 박스 안에서 타이핑 효과가 진행됩니다. - 도구 성공 박스 (Tool Success):
#283228어두운 녹색 배경 박스 안에서 파일 읽기, 코드 편집, 터미널 실행이 감싸집니다. - 도구 에러 박스 (Tool Error): 린트 실패 시
#3c2828붉은색 배경 박스로 전환됩니다. - 할 일 박스 (Todo):
#282832짙은 보라빛 배경 박스 안에서 작업 목록이 표시됩니다.
사고 중 전개
도구 실행 전 Thinking... (ctrl+t to expand) 문구가 단독 줄로 표시되며 모델의 깊은 사고 과정을 암시합니다.
정밀한 footer.ts 토큰/비용 원격 메트릭 바
턴 하단에는 실제 Pi의 footer.ts 로직을 본뜬 실시간 상태선이 출력됩니다:
────────────────────────────────────────────────────────────────────────────
~/code/distributed-cluster (main)
↑1.2k ↓340 R2.8k W410 $0.042 24.1%/200k (auto) (anthropic) claude-sonnet-4-5 • high
- 업로드 토큰(
↑), 다운로드 토큰(↓), 캐시 읽기/쓰기(R/W), 계산된 비용, 200k 컨텍스트 대비 사용률(%)이 매우 사실적으로 표시됩니다.
2. 실행 명령어
# Pi 스타일 실행
imposter --style pi
# Pi 스타일 라이트 모드 실행
imposter -s pi --light
Google Antigravity 스타일 (antigravity)
Google의 차세대 AI 코딩 터미널인 Antigravity CLI (agy) 인터페이스를 사실감 있게 모사한 스타일입니다.
1. 주요 레이아웃 특징
상단 호라이즌 배너 (Horizon Dotted Banner)
Google Antigravity의 아이덴티티인 점선 호라이즌 배너와 함께 공식 환영 메시지가 푸른색 액센트로 나타납니다:
···· ······ ────────
Welcome to the Antigravity CLI. Gemini 3.1 Pro
트래젝토리(Trajectory) 궤적 기반 도구 렌더링
Antigravity는 에이전트의 행동을 시간의 흐름(Trajectory)으로 기록합니다:
- 도구 호출: 원형 불릿(
○)과 괄호 인수 형식으로 나타납니다:○ Read(src/lib.rs:1-140),○ Edit(src/api.rs). - 실행 결과:
⎿기호와 함께 접기/펼치기 단축키 힌트(ctrl+o to expand)가 붙은 트래젝토리 분기선으로 연결됩니다. - 서브에이전트 병렬 작업 블록: 복잡도(Complexity) 설정 시
○ Subagents(3 active · /agents)블록이 생성되어[research],[verify]등 다중 에이전트가 협업하는 로그가 연출됩니다.
10개 구역의 정밀한 /statusline HUD 바
턴 하단에는 실제 Antigravity CLI의 고유 상태선이 터미널 하단에 정확히 렌더링됩니다:
READY │ Gemini 3.1 Pro │ Ctx [██░░░░░░░░] 18% │ 3 agents │ 4.1k tokens │ $0.04
- 준비 상태 배지(
READY), 모델명, 10칸 텍스트 프로그레스 바 형태의 컨텍스트 점유율 게이지, 활성 서브에이전트 수, 누적 토큰이 한눈에 표시됩니다.
2. 실행 명령어
# Antigravity 스타일 실행
imposter --style antigravity
# 별칭(alias) 사용
imposter --style agy
# 라이트 모드로 실행
imposter -s antigravity --light
Classic 시스템 로그 스타일 (classic)
imposter의 모태가 된 원작 프로젝트 giacomo-b/rust-stakeholder의 고유한 시스템 엔지니어링 화면을 유지·발전시킨 레거시 모드입니다.
1. 주요 레이아웃 특징
프로그레스 바 부팅 화면
AI 에이전트와 대화하는 형태가 아니라, 대형 분산 시스템의 코어 엔진이 기동하는 듯한 프로그레스 바 애니메이션이 흐릅니다:
▸ imposter · classic system log
████████░░░ 73% analyzing workspace
정밀한 시스템 엔지니어링 메트릭 로그
초당 수만 건의 요청을 처리하는 고성능 백엔드 서버의 내부 로그가 쉴 새 없이 기록됩니다:
- 코드 파일 분석:
✓ inspected src/worker.rs (194 lines) - 레이턴시 메트릭:
✓ p99 latency 38 ms · throughput 14.2k req/s - 메모리 및 네트워크 상태:
✓ GC sweep reclaimed 412 MB in 1.4 ms
기술 전문 용어 (Jargon) 생성기
Jargon 레벨(low, medium, high, extreme)에 따라 엔터프라이즈 아키텍처 수준의 심오한 시스템 엔지니어링 용어가 무작위 셔플 덱을 통해 자연스럽게 이어집니다.
2. 실행 명령어
# Classic 스타일 실행
imposter --style classic
# 단축 플래그 사용
imposter --classic
# 극단적인 전문 용어 수준으로 실행
imposter --classic -j extreme
CLI 명령어 및 옵션 상세 안내
imposter는 별도의 무거운 인자 파서 크레이트(clap 등)에 의존하지 않고, 직접 작성한 순수 파서를 통해 가볍고 빠른 CLI 인터페이스를 제공합니다.
1. 전체 사용법 문법
imposter [OPTIONS]
2. 옵션별 상세 설명
-s, --style <NAME>
시각적 스타일(에이전트 페르소나)을 지정합니다.
- 선택 가능한 값:
claude,codex,opencode,pi,antigravity,classic - 기본값:
claude - 별칭 지원:
--claude:--style claude의 축약 플래그--classic:--style classic의 축약 플래그- 인자값으로
agy나cc,oc같은 약칭도 인식합니다.
-t, --theme <MODE>
색상 테마를 전환합니다.
- 선택 가능한 값:
dark,light - 기본값:
dark - 별칭 지원:
--dark,--light - 다크 모드는 어두운 배경에 최적화된 24비트 색상을 사용하며, 라이트 모드는 흰색 또는 밝은 회색 터미널 배경에서 글자가 선명히 보이도록 고대비 전경색과 파스텔 배경색으로 자동 보정합니다.
-d, --dev-type <TYPE>
모사할 대상 코드베이스의 기술 스택 및 개발 분야를 선택합니다. 선택된 분야에 따라 탐색하는 파일명, 임포트 경로, 디프 내용이 달라집니다.
- 선택 가능한 값:
backend: 분산 시스템, 데이터베이스 풀, gRPC 핸들러 등frontend: React, TypeScript 컴포넌트, 상태 훅, CSS 모듈 등fullstack: API 라우트, 클라이언트 번들, 통합 테스트 등data-science: 데이터 파이프라인, 전처리 스크립트, 피처 엔지니어링 등devops: Kubernetes 매니페스트, Terraform, Dockerfile 등blockchain: 스마트 컨트랙트, 가스비 최적화 등machine-learning: 모델 추론 파이프라인, 텐서 처리 등systems: 시스템 프로그래밍, 메모리 관리, 운영체제 저수준 API 등game-dev: 렌더링 루프, 물리 엔진, 엔티티 컴포넌트 시스템 등security: 취약점 점검, 암호화 알고리즘, 인증 토큰 핸들러 등
- 기본값:
backend
-T, --duration <MINUTES>
작업 세션 자동 종료 타이머를 분(Minute) 단위로 설정합니다.
- 범위:
0~999 - 기본값:
0(무한 반복,Ctrl+C또는Esc입력 시까지 계속 진행) - 세션 실행 도중 언제든
Ctrl+C또는Esc키를 누르면 세션이 안전하고 깔끔하게 즉시 종료됩니다. imposter --duration 10과 같이 지정하면 10분이 지난 뒤 현재 턴을 깔끔하게 마무리하고 정상 종료합니다.
-a, --alerts
주기적으로 컴파일러 경고나 린트 에러(cargo clippy 실패)가 발생하는 시나리오를 활성화합니다.
- 에러가 발생한 뒤 에이전트가 “원인을 분석하고 자동으로 코드를 수정하는 패치 디프“를 만들어 자체 수습하는 극적인 장면이 연출됩니다.
- 기본값은 비활성화 상태입니다.
-j, --jargon <LEVEL>
생성되는 기술 전문 용어의 난이도를 설정합니다.
- 선택 가능한 값:
low,medium,high,extreme - 기본값:
medium - 주로
classic스타일의 시스템 로그나 각 에이전트의 커밋 메시지, 상태 요약에 반영됩니다.
-c, --complexity <LEVEL>
턴의 전개 깊이와 복잡도를 조절합니다.
- 선택 가능한 값:
low,medium,high,extreme - 기본값:
medium low로 설정하면 Todo나 서브에이전트 블록이 생략되어 조용하고 빠른 단발성 턴이 진행되며,high나extreme으로 높이면 상세한 계획 수립, 체크리스트, 서브에이전트 협업 로그가 턴마다 깊이 있게 추가됩니다.
-i, --interactive
ratatui 기반의 대화형 설정 창을 엽니다. 설정 파일이 없는 최초 실행 시에도 자동으로 이 모드가 실행됩니다. (비-TTY 환경에서는 텍스트 문답 모드로 대체)
--save
현재 커맨드라인에서 전달한 인자값들을 기본값으로 설정 파일(~/.config/imposter/config.toml)에 즉시 저장합니다.
--fast
글자 타이핑 딜레이와 프레임 대기 시간을 모두 제거하여 초고속으로 출력합니다. 터미널 녹화(GIF/SVG), 스크린샷 캡처 또는 CI 파이프라인에서 빠른 검증을 수행할 때 유용합니다.
--seed <N>
의사 난수 생성기의 시드(Seed) 값을 정수로 고정합니다. 동일한 시드를 주면 언제 실행하더라도 항상 동일한 순서로 파일, 프롬프트, 도구 출력이 재현됩니다.
-h, --help / -v, --version
도움말 및 현재 설치된 바이너리의 버전 정보를 출력합니다.
대화형 TUI 설정 마법사
imposter를 옵션 없이 실행하거나 imposter -i를 입력하면, 터미널 전체 화면을 활용하는 직관적인 대화형 탭 기반 마법사(ratatui + crossterm)가 열립니다.
1. 탭 구성 안내
대화형 마법사는 3개의 탭 메뉴로 구성되어 있습니다 (Tab 또는 숫자 키 1, 2, 3으로 전환):
[1] MAIN
- 네온 글로우 애니메이션 배너: 실행 중 부드럽게 네온 펄스/색상 사이클링 파동이 흐르는 아스키 아트 로고가 표시됩니다.
- START 버튼:
Enter또는Space키를 눌러 바로 세션을 실행할 수 있는 대형 스타트 버튼이 제공됩니다.
[2] SETTINGS
- 좌측 설정 양식 (Configuration Form):
- 스타일(Persona), 모델명(Model), 재생 속도(Speed), 테마(Theme), 세션 지속 시간(Duration)을 방향키로 편리하게 변경하고, 설정을 기본값으로 저장할 수 있습니다.
- 우측 실시간 라이브 프리뷰 (Live Preview):
- 변경한 설정(스타일, 다크/라이트 테마 등)이 우측 창에 실제 CLI와 100% 동일한 서식으로 즉시 반영되어 렌더링됩니다.
[3] ABOUT
- 캐치프레이즈(“아무것도 하지 않으면서, 최신 AI 코딩 에이전트로 바이브 코딩하는 척하기”), 제작자(
deepthought), GitHub 소스코드 및 원작 크레딧 안내와 핵심 명령어/단축키 요약이 제공됩니다.
2. 키보드 단축키 안내표
| 탭 / 상황 | 단축키 | 기능 설명 |
|---|---|---|
| 공통 | Tab / BackTab | 다음 / 이전 탭 메뉴로 순환 이동 |
| 공통 | 1, 2, 3 | 원하는 탭 메뉴 번호로 즉시 전환 (1:MAIN, 2:SETTINGS, 3:ABOUT) |
| 공통 | q 또는 Esc | 마법사 즉시 종료 |
| MAIN | Enter / Space | 현재 설정값으로 가짜 세션 시작 |
| SETTINGS | ↑ / ↓ 또는 k / j | 설정 항목 간 이동 |
| SETTINGS | ← / → 또는 h / l | 선택된 항목 값 순환 (Duration은 ±5분) |
| SETTINGS | Enter | Duration/Model 항목 텍스트 편집 진입 또는 Save 실행 |
| SETTINGS | t | 다크 테마(dark)와 라이트 테마(light) 즉시 토글 |
| SETTINGS | Ctrl + S | 현재 옵션값을 기본값으로 영구 저장 (~/.config/imposter/config.toml) |
3. 비-TTY 환경에서의 동작 (Fallback)
SSH 파이프나 CI 환경처럼 터미널의 Raw Mode와 대화형 입력을 지원하지 않는 환경에서 -i를 호출할 경우, ratatui 전체 화면 대신 표준 입출력(stdin/stdout)을 통한 순차적 텍스트 질문-답변 모드로 자동 전환되어 안전하게 설정을 진행할 수 있습니다.
설정 파일 (config.toml)
imposter는 매번 긴 명령행 인자를 입력하지 않아도 되도록, 사용자가 선호하는 기본값을 파일에 저장하고 자동으로 불러옵니다.
1. 저장 경로
운영체제별 표준 설정 디렉터리에 자동으로 생성됩니다:
- Linux:
~/.config/imposter/config.toml(또는$XDG_CONFIG_HOME/imposter/config.toml) - macOS:
~/.config/imposter/config.toml(또는~/Library/Application Support/imposter/config.toml) - Windows:
%APPDATA%\imposter\config.toml(예:C:\Users\<사용자>\AppData\Roaming\imposter\config.toml)
2. 파일 형식 및 예시
표준적인 TOML 문법의 key = "value" 형식으로 구성됩니다:
# imposter 세션 기본 설정 파일
style = "opencode"
theme = "dark"
dev_type = "backend"
duration = 0
jargon = "medium"
complexity = "medium"
alerts = true
각 항목의 의미
style: 기본 실행 스타일 (claude,codex,opencode,pi,antigravity,classic)theme: 기본 색상 테마 (dark,light)dev_type: 대상 코드베이스 분야 (backend,frontend,fullstack,data-science,devops,blockchain,machine-learning,systems,game-dev,security)duration: 자동 종료 타이머 분 단위 (0은 무한 지속)jargon: 기술 전문 용어 수준 (low,medium,high,extreme)complexity: 턴 구성 복잡도 (low,medium,high,extreme)alerts: 가짜 린트/컴파일 에러 자동 복구 시나리오 활성화 여부 (true,false)
3. 초경량 전용 파서의 특징
imposter는 이 설정 파일을 읽고 쓰기 위해 serde나 무거운 toml 크레이트를 링크하지 않습니다. 내부적으로 단 40줄 내외의 자체 작성 파서를 사용하여 메모리 낭비와 컴파일 시간을 최소화했습니다.
Tip
우선순위 규칙 커맨드라인에서 직접 전달한 플래그(예:
imposter -s pi)는 설정 파일에 저장된 값보다 항상 최우선으로 적용됩니다.
내부 아키텍처 및 설계 원리
imposter는 의존성을 최소화하고, CPU 및 메모리 사용량을 극한으로 낮추면서도 끊김 없는 부드러운 텍스트 애니메이션을 제공하기 위해 세심하게 설계되었습니다.
1. 극단적인 최소 의존성 설계 (Minimal Dependencies)
일반적인 Rust CLI 프로젝트들이 의례적으로 도입하는 대형 라이브러리들을 과감히 배제했습니다:
clap,structopt대신: 170줄의 순수 문자열 기반 인자 파서 (src/cli.rs)serde,toml대신: 40줄의 정밀 설정 파서 (src/config.rs)rand크레이트 대신: 16바이트 메모리만 쓰는 고속xorshift64*PRNG (src/rng.rs)tokio, 비동기 런타임, 백그라운드 스레드 일절 없음: 단일 메인 스레드 기반 동기 I/O 루프
선택 기능인 TUI 마법사(ratatui + crossterm)는 features = ["tui"]로 격리되어 있으며, 이를 끈 --no-default-features 빌드는 바이너리 크기가 약 370 KB에 불과합니다.
2. 스트리밍 ANSI 렌더러 (src/ansi.rs)
일반적인 TUI 툴들이 터미널의 대체 화면(Alternate Screen)을 차지하고 전체 캔버스를 매 프레임 다시 그리는 것과 달리, imposter는 일반 스크롤 버퍼에 표준 텍스트를 흘려보내는 스트리밍 방식을 취합니다:
- 단일 I/O 버퍼 재사용: 8 KB 고정 크기의
BufWriter와 단일 라인 조립용String버퍼(512바이트 캐파)를 영구 재사용하여 힙 할당을 극도로 줄입니다. - 단일 시스템 콜 (
write_all): 조합된 한 라인은 단 한 번의 커널 쓰기 시스템 콜로 출력됩니다. - 상태 기반 최소 ANSI 방출: 색상이나 스타일(SGR) 코드는 이전 텍스트와 실제로 스타일이 달라질 때만 선택적으로 방출하여 대역폭 낭비를 막습니다.
- 파이프 감지 및 즉각 종료: 표준 출력이 파이프(
imposter | head)로 연결되어 있고 리더 프로세스가 닫히면, 무한 루프에 빠져 CPU를 낭비하지 않고 즉각 종료됩니다. 비-TTY 환경에서는 ANSI 색상과 타이핑 딜레이를 자동으로 비활성화합니다.
3. 셔플 덱 (Deck) 콘텐츠 관리 시스템 (src/rng.rs)
출력이 단조롭게 반복되는 것을 막기 위해 모든 대사와 파일 목록, 디프 패치는 Deck 구조체로 관리됩니다:
- 초기 기동 시 배열의 인덱스를 Fisher-Yates 알고리즘으로 셔플합니다.
- 카드를 한 장씩 뽑아 소진하듯 순서대로 반환하며, 모든 아이템이 소진되면 다시 전체를 셔플하여 새 사이클을 시작합니다.
- 따라서 사용자가 장시간 화면을 켜두더라도 동일한 프롬프트나 동일한 파일명이 연속으로 나타나지 않고 생동감 있게 변화합니다.
4. 모듈식 스타일 확장 구조 (src/style/)
모든 에이전트 스타일은 Renderer 트레이트를 기반으로 구현됩니다:
- 트레이트의 기본 메서드들이 표준 Claude 레이아웃을 기본으로 제공하므로, 새로운 스타일을 추가할 때는
skin()정의와 차별화가 필요한 레이아웃 훅(예: OpenCode의SplitBorder패널, Pi의 배경 박스, Antigravity의 10블록 HUD)만 오버라이드하면 됩니다. - 스타일 선택은
--style단일 셀렉터로 통합되어 있어 유지보수와 확장이 용이합니다.