Pi 구성, 확장, 플랫폼 설정 및 API 참조.

테마

pi는 테마를 만들 수 있습니다. 귀하의 설정을 위해 하나를 구축하도록 요청하십시오.

테마는 TUI의 색상을 정의하는 JSON 파일입니다.

목차

위치

Pi 다음에서 테마를 로드합니다.

  • 내장: dark, light
  • 글로벌: ~/.pi/agent/themes/*.json
  • 프로젝트: .pi/themes/*.json (프로젝트를 신뢰한 후에만)
  • 패키지: themes/ 디렉토리 또는 package.jsonpi.themes 항목
  • 설정: themes 파일 또는 디렉터리가 포함된 배열
  • CLI: --theme <path> (반복 가능)

--no-themes로 검색을 비활성화하세요.

테마 선택

/settings 또는 settings.json를 통해 테마를 선택하세요.

{
  "theme": "my-theme"
}

처음 실행 시 pi는 터미널 배경을 감지하고 기본값은 dark 또는 light입니다.

사용자 정의 테마 만들기

  1. 테마 파일을 만듭니다.
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json
  1. 필요한 모든 색상으로 테마를 정의합니다(Color Tokens 참조).
{
  "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
  "name": "my-theme",
  "vars": {
    "primary": "#00aaff",
    "secondary": 242
  },
  "colors": {
    "accent": "primary",
    "border": "primary",
    "borderAccent": "#00ffff",
    "borderMuted": "secondary",
    "success": "#00ff00",
    "error": "#ff0000",
    "warning": "#ffff00",
    "muted": "secondary",
    "dim": 240,
    "text": "",
    "thinkingText": "secondary",
    "selectedBg": "#2d2d30",
    "scrollbarThumb": "#555566",
    "userMessageBg": "#2d2d30",
    "userMessageText": "",
    "customMessageBg": "#2d2d30",
    "customMessageText": "",
    "customMessageLabel": "primary",
    "toolPendingBg": "#1e1e2e",
    "toolSuccessBg": "#1e2e1e",
    "toolErrorBg": "#2e1e1e",
    "toolTitle": "primary",
    "toolOutput": "",
    "mdHeading": "#ffaa00",
    "mdLink": "primary",
    "mdLinkUrl": "secondary",
    "mdCode": "#00ffff",
    "mdCodeBlock": "",
    "mdCodeBlockBorder": "secondary",
    "mdQuote": "secondary",
    "mdQuoteBorder": "secondary",
    "mdHr": "secondary",
    "mdListBullet": "#00ffff",
    "toolDiffAdded": "#00ff00",
    "toolDiffRemoved": "#ff0000",
    "toolDiffContext": "secondary",
    "syntaxComment": "secondary",
    "syntaxKeyword": "primary",
    "syntaxFunction": "#00aaff",
    "syntaxVariable": "#ffaa00",
    "syntaxString": "#00ff00",
    "syntaxNumber": "#ff00ff",
    "syntaxType": "#00aaff",
    "syntaxOperator": "primary",
    "syntaxPunctuation": "secondary",
    "thinkingOff": "secondary",
    "thinkingMinimal": "primary",
    "thinkingLow": "#00aaff",
    "thinkingMedium": "#00ffff",
    "thinkingHigh": "#ff00ff",
    "thinkingXhigh": "#ff0000",
    "thinkingMax": "#ff0088",
    "bashMode": "#ffaa00"
  }
}
  1. /settings를 통해 테마를 선택하세요.

핫 리로드: 현재 활성 사용자 정의 테마 파일을 편집할 때 pi는 즉각적인 시각적 피드백을 위해 자동으로 이를 다시 로드합니다.

테마 형식

{
  "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
  "name": "my-theme",
  "vars": {
    "blue": "#0066cc",
    "gray": 242
  },
  "colors": {
    "accent": "blue",
    "muted": "gray",
    "text": "",
    ...
  }
}
  • name는 필수이고 고유해야 하며 /를 포함할 수 없습니다.
  • vars는 선택사항입니다. 여기에서 재사용 가능한 색상을 정의한 다음 colors에서 참조하세요.
  • colors 51개의 필수 토큰을 모두 정의해야 합니다. thinkingMax는 선택사항이며 thinkingXhigh로 대체됩니다. scrollbarThumb는 선택사항이며 selectedBg로 대체됩니다.

$schema 필드는 편집기 자동 완성 및 유효성 검사를 활성화합니다.

컬러 토큰

모든 테마는 51개의 필수 색상 토큰을 모두 정의해야 합니다. thinkingMaxscrollbarThumb는 기존 테마와의 호환성을 위한 선택 사항입니다. 생략하면 각각 thinkingXhighselectedBg를 사용합니다.

핵심 UI(11가지 색상)

토큰 목적
accent 기본 악센트(로고, 선택한 항목, 커서)
border 일반 테두리
borderAccent 강조된 테두리
borderMuted 미묘한 테두리(편집기)
success 성공 상태
error 오류 상태
warning 경고 상태
muted 보조 텍스트
dim 3차 텍스트
text 기본 텍스트(보통 "")
thinkingText 생각 블록 텍스트

배경 및 콘텐츠(필수 11개, 선택 1개)

토큰 목적
selectedBg 선택된 라인 배경
scrollbarThumb 전체 화면 스크롤 막대 썸 배경; 선택사항, selectedBg로 대체
userMessageBg 사용자 메시지 배경
userMessageText 사용자 메시지 텍스트
customMessageBg 확장 메시지 배경
customMessageText 확장 메시지 텍스트
customMessageLabel 확장 메시지 라벨
toolPendingBg 도구 상자(보류 중)
toolSuccessBg 도구 상자(성공)
toolErrorBg 도구 상자(오류)
toolTitle 도구 제목
toolOutput 도구 출력 텍스트

Markdown (10가지 색상)

토큰 목적
mdHeading 제목
mdLink 링크 텍스트
mdLinkUrl 링크 URL
mdCode 인라인 코드
mdCodeBlock 코드 블록 내용
mdCodeBlockBorder 코드 블록 울타리
mdQuote 인용문 텍스트
mdQuoteBorder 인용구 테두리
mdHr 수평선
mdListBullet 글머리 기호 나열

도구 차이점(3가지 색상)

토큰 목적
toolDiffAdded 라인 추가
toolDiffRemoved 제거된 줄
toolDiffContext 컨텍스트 라인

구문 강조(9가지 색상)

토큰 목적
syntaxComment 댓글
syntaxKeyword 키워드
syntaxFunction 함수 이름
syntaxVariable 변수
syntaxString 문자열
syntaxNumber 숫자
syntaxType 유형
syntaxOperator 연산자
syntaxPunctuation 구두

사고 수준 경계(6개 필수, 1개 선택)

사고 수준을 나타내는 편집기 테두리 색상(미묘한 수준에서 눈에 띄는 수준까지의 시각적 계층 구조):

토큰 목적
thinkingOff 생각하다
thinkingMinimal 최소한의 사고
thinkingLow 낮은 사고
thinkingMedium 중간 사고
thinkingHigh 높은 사고
thinkingXhigh 매우 높은 사고
thinkingMax 최대 사고; 선택사항, thinkingXhigh로 대체

배쉬 모드(1색)

토큰 목적
bashMode bash 모드의 편집기 테두리(! 접두사)

HTML 내보내기(선택 사항)

export 섹션은 /export HTML 출력의 색상을 제어합니다. 생략하면 색상은 userMessageBg에서 파생됩니다.

{
  "export": {
    "pageBg": "#18181e",
    "cardBg": "#1e1e24",
    "infoBg": "#3c3728"
  }
}

색상 값

네 가지 형식이 지원됩니다.

체재 설명
마녀 "#ff0000" 6자리 16진수 RGB
256색 39 xterm 256색 팔레트 색인(0-255)
변하기 쉬운 "primary" vars 항목에 대한 참조
기본 "" 터미널의 기본 색상

256색 팔레트

  • 0-15: 기본 ANSI 색상(터미널에 따라 다름)
  • 16-231: 6×6×6 RGB 큐브(16 + 36×R + 6×G + B 여기서 R,G,B는 0-5)
  • 232-255: 그레이스케일 램프

터미널 호환성

Pi 24비트 RGB 색상을 사용합니다. 대부분의 최신 터미널은 이를 지원합니다(iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). 256색만 지원하는 구형 터미널의 경우 pi는 가장 가까운 근사값으로 돌아갑니다.

트루컬러 지원을 확인하세요.

echo $COLORTERM  # Should output "truecolor" or "24bit"

어두운 터미널: 더 높은 대비와 함께 밝고 채도가 높은 색상을 사용합니다.

밝은 터미널: 대비가 낮고 더 어둡고 차분한 색상을 사용합니다.

색상 조화: 기본 팔레트(Nord, Gruvbox, Tokyo Night)로 시작하여 vars에서 정의하고 일관되게 참조합니다.

테스트: 다양한 메시지 유형, 도구 상태, 마크다운 콘텐츠, 길게 줄 바꿈된 텍스트로 테마를 확인하세요.

VS 코드: 정확한 색상을 위해 terminal.integrated.minimumContrastRatio에서 1로 설정하세요.

내장된 테마를 확인하세요: