Pi – 최소한의 터미널 코딩 하니스

5 hours ago 1

  • Pi는 터미널 기반의 미니멀 코딩 에이전트로, 사용자의 워크플로우에 맞게 확장 가능한 구조를 제공
  • TypeScript 확장, 스킬, 프롬프트 템플릿, 테마를 조합해 자신만의 개발 환경을 구성하고, 이를 npm 또는 git 패키지로 공유 가능
  • 15개 이상 AI 제공자와 수백 개 모델을 지원하며, 세션 중에도 모델을 전환하거나 사용자 정의 모델을 추가할 수 있음
  • 세션은 트리 구조의 히스토리로 저장되어 이전 지점으로 이동하거나 HTML·GitHub gist로 내보내기 가능
  • 핵심 기능을 최소화하고 확장성 중심의 설계 철학을 유지해, 개발자가 필요한 기능만 직접 구현하거나 패키지로 추가할 수 있음

Pi 개요

  • Pi는 터미널 코딩 하니스로, 사용자가 워크플로우를 바꾸지 않고 도구를 맞춤화할 수 있는 구조
    • 확장 가능한 구성요소로 TypeScript 확장, 스킬, 프롬프트 템플릿, 테마를 지원
    • 이들을 묶은 pi 패키지를 npm 또는 git을 통해 설치·공유 가능
  • 기본 설정은 강력하지만, 서브 에이전트나 플랜 모드 같은 기능은 포함하지 않음
  • 네 가지 모드(인터랙티브, print/JSON, RPC, SDK)를 제공하며, clawdbot에서 실제 통합 사례 확인 가능

모델 및 제공자

  • Anthropic, OpenAI, Google, Azure, Bedrock, Mistral, Groq, Cerebras, xAI, Hugging Face, Kimi, MiniMax, OpenRouter, Ollama15개 이상 제공자와 수백 개 모델 지원
  • API 키 또는 OAuth로 인증 가능
  • /model 명령어나 Ctrl+L로 세션 중 모델 전환, Ctrl+P로 즐겨찾기 모델 순환
  • models.json 또는 확장을 통해 사용자 정의 모델 추가 가능

세션 관리

  • 세션은 트리 구조로 저장되어, /tree 명령으로 과거 지점으로 이동 가능
  • 모든 분기가 하나의 파일에 저장되며, 메시지 유형 필터링 및 북마크 라벨링 지원
  • /export로 HTML 내보내기, /share로 GitHub gist 업로드 및 공유 URL 생성 가능

컨텍스트 엔지니어링

  • 최소한의 시스템 프롬프트와 확장성으로 컨텍스트 윈도우를 세밀하게 제어 가능
    • AGENTS.md: 프로젝트 지침을 시작 시 자동 로드
    • SYSTEM.md: 프로젝트별 기본 시스템 프롬프트 교체 또는 추가
    • Compaction: 컨텍스트 한계에 도달 시 이전 메시지를 자동 요약, 확장을 통해 주제 기반 요약이나 코드 인식 요약 구현 가능
    • Skills: 필요 시 로드되는 기능 패키지로, 프롬프트 캐시를 유지하며 점진적 기능 제공
    • Prompt templates: /name 명령으로 확장 가능한 재사용 프롬프트
    • Dynamic context: 확장을 통해 메시지 삽입, 히스토리 필터링, RAG 구현, 장기 메모리 구축 가능

메시지 큐잉

  • 에이전트가 작업 중일 때도 메시지 제출 가능
    • Enter: 현재 도구 실행 후 전달되는 steering 메시지
    • Alt+Enter: 작업 완료 후 전달되는 follow-up 메시지

확장 구조

  • Pi는 기능이 아닌 원시 구성요소(Primitives) 중심으로 설계되어, 사용자가 직접 기능을 구현 가능
    • 확장은 TypeScript 모듈 형태로, 도구, 명령, 단축키, 이벤트, 전체 TUI 접근 가능
    • 예시 확장: 서브 에이전트, 플랜 모드, 권한 게이트, 경로 보호, SSH 실행, 샌드박싱, MCP 통합, 커스텀 에디터, 오버레이
    • “Yes, Doom runs.”라는 예시처럼 게임 오버레이 확장도 존재
  • 직접 구현하지 않으려면 pi 패키지 설치로 기능 추가 가능
  • 50개 이상 확장 예시가 GitHub에 공개됨

패키지 관리

  • 확장, 스킬, 프롬프트, 테마를 패키지로 번들링하여 npm 또는 git에서 설치 가능
    • 예시: $ pi install npm:@foo/pi-tools $ pi install git:github.com/badlogic/pi-doom
    • 버전 고정(@1.2.3 또는 @tag), pi update로 전체 업데이트, pi list로 목록 확인, pi config로 설정 가능
    • pi -e 명령으로 설치 없이 테스트 가능
  • npm 검색어 pi-package 또는 Discord 채널에서 패키지 탐색 및 공유 가능

통합 모드

  • Interactive: 전체 TUI 환경
  • Print/JSON: 스크립트용 pi -p "query", 이벤트 스트림용 --mode json
  • RPC: stdin/stdout 기반 JSON 프로토콜로 비-Node 환경 통합 지원
  • SDK: 애플리케이션 내 임베딩 가능, clawdbot에서 실제 사용 예시 제공

설계 철학

  • Pi는 확장성을 극대화하여 핵심을 최소화하고, 사용자가 직접 워크플로우를 정의하도록 설계
    • MCP, 서브 에이전트, 권한 팝업, 플랜 모드, 내장 TODO, 백그라운드 bash 기능은 포함하지 않음
    • 대신 확장, 스킬, 패키지를 통해 동일 기능을 구현하거나 외부 도구와 연동 가능
    • tmux를 통한 병렬 실행 및 관찰 지원
  • 이러한 접근은 사용자 주도형 개발 환경 구성을 가능하게 함
  • 전체 철학은 관련 블로그 포스트에서 추가 설명 제공

Read Entire Article