pi.dev
Service

pi.dev

2026.02.11
·Web·by 네루
#Agent#CLI#Extensibility#LLM#TypeScript

핵심 포인트

  • 1Pi는 사용자의 워크플로우에 맞춰 최소한의 기능만을 제공하며 TypeScript 확장 기능을 통해 무한한 커스터마이징이 가능한 터미널 코딩 도구입니다.
  • 2이 도구는 15개 이상의 LLM 공급자와 수백 가지 모델을 지원하며, 트리 구조의 세션 기록과 AGENTS.md, SYSTEM.md를 활용한 고급 문맥 엔지니어링 기능을 제공합니다.
  • 3pi는 서브 에이전트나 플랜 모드 같은 기능을 직접 포함하지 않고 사용자가 확장 기능 또는 패키지를 통해 구축하도록 유도하며, 인터랙티브, Print/JSON, RPC, SDK의 네 가지 통합 모드를 제공합니다.

pi는 적응성과 확장성에 중점을 둔 미니멀한 터미널 코딩 하네스입니다. 이 도구는 기본적으로 서브 에이전트(sub-agents)나 플랜 모드(plan mode)와 같은 특정 기능들을 생략하고, 대신 사용자 또는 커뮤니티가 이러한 기능들을 확장(extensions)으로 직접 구축하거나 설치하도록 장려합니다.

핵심 방법론 및 기술적 특징:

  1. 확장성 (Extensibility): pi의 핵심 철학은 "기능이 아닌 기본 요소(primitives, not features)"를 제공하는 것입니다. 사용자는 TypeScript 모듈 형태의 확장 기능을 통해 도구(tools), 명령어(commands), 키보드 단축키(keyboard shortcuts), 이벤트(events), 그리고 전체 TUI(Text-based User Interface)에 접근하여 원하는 기능을 직접 구현할 수 있습니다. 예를 들어, 서브 에이전트, 플랜 모드, 커스텀 에디터, 심지어 게임(Doom) 실행까지도 확장 기능을 통해 구현 가능합니다. 이러한 확장은 ~/.pi/agent/, 상위 디렉터리, 현재 디렉터리 등에서 AGENTS.md 파일을 통해 로드됩니다.
  1. 모듈성 (Packages): 확장 기능(extensions), 스킬(skills), 프롬프트 템플릿(prompt templates), 테마(themes) 등은 패키지(packages)로 번들링되어 npm 또는 Git을 통해 설치 및 공유될 수 있습니다. 이를 통해 기능의 재사용성과 배포가 용이합니다. 버전 핀(pin) 기능도 제공됩니다.
  1. 컨텍스트 엔지니어링 (Context Engineering):
    • pi는 최소한의 시스템 프롬프트(system prompt)를 사용하여 컨텍스트 창(context window)에 들어가는 내용을 정밀하게 제어할 수 있게 합니다.
    • SYSTEM.md 파일을 통해 기본 시스템 프롬프트를 프로젝트별로 교체하거나 추가할 수 있습니다.
    • 압축 (Compaction): 컨텍스트 한계에 도달하면 오래된 메시지를 자동으로 요약합니다. 이 기능은 확장을 통해 완전히 커스터마이징될 수 있으며, 주제 기반 압축, 코드 인식 요약, 또는 다른 요약 모델 사용 등을 구현할 수 있습니다.
    • 스킬 (Skills): 지침과 도구를 포함하는 온디맨드(on-demand) 역량 패키지입니다. 이는 프롬프트 캐시(prompt cache)를 과도하게 사용하지 않으면서 점진적인 정보 공개(progressive disclosure)를 가능하게 합니다.
    • 프롬프트 템플릿 (Prompt templates): 재사용 가능한 Markdown 파일 형태의 프롬프트로, /name 입력 시 확장됩니다.
    • 동적 컨텍스트 (Dynamic context): 확장은 각 턴(turn) 전에 메시지를 주입하거나, 메시지 기록을 필터링하거나, RAG(Retrieval Augmented Generation)를 구현하거나, 장기 기억(long-term memory)을 구축할 수 있습니다.
  1. 세션 관리 (Session Management): 세션은 트리(tree) 구조로 저장되며, tree 명령어를 통해 이전 지점으로 이동하여 작업을 계속할 수 있습니다. 모든 브랜치(branches)는 단일 파일에 저장되며, 메시지 유형별 필터링, 북마크(bookmarks) 기능, HTML 내보내기(/export), GitHub gist 공유(/share) 기능 등을 제공합니다.
  1. 큐잉 (Queuing): 에이전트가 작업 중일 때 메시지를 제출하여 작업을 제어할 수 있습니다. Enter는 스티어링 메시지(steering message)를 전송하여 현재 도구 사용을 중단시키고 즉시 전달되지만, Alt+Enter는 팔로우업(follow-up) 메시지를 전송하여 에이전트가 현재 작업을 완료할 때까지 기다립니다.
  1. 제공자 및 모델 (Providers & Models): Anthropic, OpenAI, Google, Azure, Mistral, Groq, Hugging Face 등 15개 이상의 제공자와 수백 개의 모델을 지원합니다. API 키 또는 OAuth를 통해 인증하며, 세션 중에도 /model, Ctrl+L 등으로 모델을 전환할 수 있습니다. models.json 파일이나 확장을 통해 커스텀 제공자와 모델을 추가할 수 있습니다.
  1. 통합 모드 (Integration Modes):
    • 인터랙티브 (Interactive): 완전한 TUI 경험을 제공합니다.
    • 인쇄/JSON (Print/JSON): pi -p "query"는 스크립트 실행에, --mode json은 이벤트 스트림(event streams)에 사용됩니다.
    • RPC (Remote Procedure Call): stdin/stdout을 통한 JSON 프로토콜을 사용하여 비-Node 환경과의 통합을 지원합니다.
    • SDK (Software Development Kit): 애플리케이션에 pi를 임베드할 수 있습니다.

pi의 철학은 강력한 확장성을 통해 사용자의 워크플로우를 강요하지 않고, 사용자가 직접 도구를 자신의 방식에 맞게 조정할 수 있도록 하는 것입니다. 서브 에이전트, 플랜 모드, 권한 팝업(permission popups), 내장된 TODO 목록, 백그라운드 bash 실행 등 다른 도구들이 기본적으로 포함하는 많은 기능들은 확장을 통해 구현되거나 서드파티 패키지로 설치될 수 있습니다. 이는 코어(core)를 미니멀하게 유지하면서도 높은 유연성을 제공합니다.