설정
Pi는 전역 설정을 재정의하는 프로젝트 설정과 함께 JSON 설정 파일을 사용합니다.
| 위치 | 범위 |
|---|---|
~/.pi/agent/settings.json |
글로벌(모든 프로젝트) |
.pi/settings.json |
프로젝트(현재 디렉터리) |
직접 편집하거나 일반 옵션에 /settings를 사용하세요.
프로젝트 신뢰
대화형 시작 시 pi는 프로젝트 로컬 설정, 리소스 또는 프로젝트 .agents/skills를 포함하고 ~/.pi/agent/trust.json의 폴더 또는 상위 폴더에 대해 저장된 결정이 없는 프로젝트 폴더를 신뢰하기 전에 묻습니다. 프로젝트를 신뢰하면 pi가 .pi/settings.json 및 .pi 리소스를 로드하고, 누락된 프로젝트 패키지를 설치하고, 프로젝트 확장을 실행할 수 있습니다.
비대화형 모드(-p, --mode json 및 --mode rpc)에는 신뢰 프롬프트가 표시되지 않습니다. 적용 가능한 저장된 신뢰 결정이 없으면 전역 설정에서 defaultProjectTrust를 사용합니다. ask(기본값) 및 never는 해당 프로젝트 리소스를 무시하고 always는 이를 신뢰합니다. 한 번의 실행에 대해 프로젝트 신뢰를 재정의하려면 --approve/-a 또는 --no-approve/-na를 전달합니다.
확장이나 저장된 결정이 적용되지 않는 경우 defaultProjectTrust는 대체 동작을 제어합니다. ~/.pi/agent/settings.json에서는 "ask", "always", "never"로 설정하거나 /settings로 변경하세요.
pi config 및 패키지 명령은 동일한 프로젝트 신뢰 흐름을 사용합니다. 단, pi update는 메시지를 표시하지 않습니다. 하나의 명령에 대해 프로젝트 로컬 설정을 신뢰하려면 --approve를 전달하고 이를 무시하려면 --no-approve를 전달합니다.
직계 상위 폴더에 대한 신뢰를 포함하여 향후 세션에 대한 프로젝트 신뢰 결정을 저장하려면 대화형 모드에서 /trust를 사용하세요. ~/.pi/agent/trust.json만 씁니다. 현재 세션은 다시 로드되지 않으므로 변경 사항을 적용하려면 pi를 다시 시작하세요.
모든 설정
모델과 사고
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
defaultProvider |
끈 | - | 기본 공급자(예: "anthropic", "openai") |
defaultModel |
끈 | - | 기본 모델 ID |
defaultThinkingLevel |
끈 | - | "off", "minimal", "low", "medium", "high", "xhigh", "max" |
hideThinkingBlock |
부울 | false |
출력에서 사고 블록 숨기기 |
showCacheMissNotices |
부울 | false |
중요한 프롬프트 캐시 누락에 대한 기록 알림 표시 |
thinkingBudgets |
물체 | - | 사고 수준에 따른 맞춤형 토큰 예산 |
생각예산
{
"thinkingBudgets": {
"minimal": 1024,
"low": 4096,
"medium": 10240,
"high": 32768
}
}UI 및 디스플레이
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
theme |
끈 | "dark" |
테마 이름("dark", "light" 또는 맞춤설정) |
externalEditor |
끈 | $VISUAL, $EDITOR, Windows에서는 메모장, 다른 곳에서는 nano |
Ctrl+G 외부 편집기 명령; 환경 변수보다 우선합니다. |
quietStartup |
부울 | false |
시작 헤더 숨기기 |
defaultProjectTrust |
끈 | "ask" |
대체 프로젝트 신뢰 동작: "ask", "always" 또는 "never". 전역 설정만 |
collapseChangelog |
부울 | false |
업데이트 후 요약된 변경 로그 표시 |
enableInstallTelemetry |
부울 | true |
첫 번째 설치 또는 변경 로그 감지 업데이트 후 익명의 설치/업데이트 버전 핑을 보냅니다. 업데이트 확인을 제어하지 않습니다. |
enableAnalytics |
부울 | false |
분석 데이터 공유를 선택하세요. 현재는 최초 실험 설정 중에만 요청됩니다(PI_EXPERIMENTAL=1). |
trackingId |
끈 | - | enableAnalytics가 켜져 있을 때 생성되는 Analytics 추적 식별자 |
doubleEscapeAction |
끈 | "tree" |
이중 이스케이프 작업: "tree", "fork" 또는 "none" |
treeFilterMode |
끈 | "default" |
/tree에 대한 기본 필터: "default", "no-tools", "user-only", "labeled-only", "all" |
editorPaddingX |
숫자 | 0 |
입력 편집기의 가로 패딩(0-3) |
outputPad |
숫자 | 1 |
사용자 메시지, 보조 메시지, 생각에 대한 가로 패딩(0 또는 1) |
autocompleteMaxVisible |
숫자 | 5 |
자동 완성 드롭다운에 표시되는 최대 항목(3-20) |
showHardwareCursor |
부울 | false |
TUI가 IME 지원을 위해 위치를 지정하는 동안 터미널 커서를 표시합니다. |
tuiMode |
끈 | "regular" |
대화형 TUI 모드: "regular" 또는 실험적 "fullscreen". /settings의 변경사항은 즉시 적용됩니다. --tui-mode 시작 시 이 설정을 재정의합니다. |
fullscreenExitOutput |
끈 | "transcript" |
전체 화면 종료 출력: "transcript"는 최종 기록과 이력서 힌트를 인쇄하고, "resume-hint"는 이전 화면을 복원하고 이력서 힌트만 인쇄합니다. 일반 TUI 모드에서는 효과가 없습니다. |
fullscreenScrollbar |
끈 | "auto" |
전체 화면 기록 스크롤 막대: "auto"는 스크롤하는 동안 일시적으로 표시하고, "always"는 가장 오른쪽 열을 예약하여 표시되도록 유지하며, "hidden"는 숨깁니다. 일반 TUI 모드에서는 효과가 없습니다. |
VS Code의 경우 --wait를 포함하면 편집기가 종료된 후 pi가 다시 시작됩니다.
{
"externalEditor": "code --wait"
}원격 분석 및 업데이트 확인
enableInstallTelemetry는 https://pi.dev/api/report-install에 대한 익명 설치/업데이트 핑만 제어합니다. 원격 분석을 옵트아웃해도 업데이트 확인이 비활성화되지는 않습니다. Pi는 여전히 https://pi.dev/api/latest-version를 가져와서 최신 버전을 찾을 수 있습니다.
PI_SKIP_VERSION_CHECK=1를 설정하면 Pi 버전 업데이트 확인이 비활성화됩니다. 업데이트 확인, 패키지 업데이트 확인, 설치/업데이트 원격 측정을 포함하여 여기에 설명된 모든 시작 네트워크 작업을 비활성화하려면 --offline 또는 PI_OFFLINE=1를 사용하세요.
회로망
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
httpProxy |
끈 | - | HTTP_PROXY 및 HTTPS_PROXY로 적용되는 HTTP 프록시 URL입니다. 전역 설정에만 해당됩니다. |
{
"httpProxy": "http://127.0.0.1:7890"
}경고
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
warnings.anthropicExtraUsage |
부울 | true |
Anthropic 구독 인증이 유료 추가 사용량을 사용할 수 있는 경우 경고 표시 |
{
"warnings": {
"anthropicExtraUsage": false
}
}압축
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
compaction.enabled |
부울 | true |
자동 압축 활성화 |
compaction.reserveTokens |
숫자 | 16384 |
LLM 응답용으로 예약된 토큰 |
compaction.keepRecentTokens |
숫자 | 20000 |
보관할 최근 토큰(요약되지 않음) |
{
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
}
}지점 요약
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
branchSummary.reserveTokens |
숫자 | 16384 |
branch summarization용으로 예약된 토큰 |
branchSummary.skipPrompt |
부울 | false |
"분기를 요약하시겠습니까?"를 건너뛰세요. /tree 탐색 시 프롬프트(기본값은 요약 없음) |
다시 해 보다
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
retry.enabled |
부울 | true |
일시적인 오류에 대해 자동 에이전트 수준 재시도 활성화 |
retry.maxRetries |
숫자 | 3 |
최대 에이전트 수준 재시도 횟수 |
retry.baseDelayMs |
숫자 | 2000 |
에이전트 수준 지수 백오프에 대한 기본 지연(2초, 4초, 8초) |
retry.provider.timeoutMs |
숫자 | SDK 기본값 | Provider/SDK 요청 시간 제한(밀리초) |
retry.provider.maxRetries |
숫자 | 0 |
Provider/SDK 재시도 횟수 |
retry.provider.maxRetryDelayMs |
숫자 | 60000 |
실패하기 전 최대 서버 요청 지연 시간(60초) |
공급자가 retry.provider.maxRetryDelayMs보다 긴 재시도 지연을 요청하면 조용히 기다리는 대신 정보 오류와 함께 요청이 즉시 실패합니다. 제한을 비활성화하려면 0로 설정하세요.
공급자 수준 재시도가 명시적으로 필요한 경우가 아니면 retry.provider.maxRetries를 0로 유지하세요. 0 이상으로 설정하면 SDK/공급자 재시도가 사용 제한 초과 오류를 Pi에서 확인하기 전에 처리할 수 있으며, 이로 인해 일부 상황에서 공급자 할당량이 재설정될 때까지 에이전트가 차단될 수 있습니다.
{
"retry": {
"enabled": true,
"maxRetries": 3,
"baseDelayMs": 2000,
"provider": {
"timeoutMs": 3600000,
"maxRetries": 0,
"maxRetryDelayMs": 60000
}
}
}메시지 전달
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
steeringMode |
끈 | "one-at-a-time" |
조정 메시지 전송 방법: "all" 또는 "one-at-a-time" |
followUpMode |
끈 | "one-at-a-time" |
후속 메시지 전송 방법: "all" 또는 "one-at-a-time" |
transport |
끈 | "auto" |
여러 전송을 지원하는 제공업체가 선호하는 전송: "sse", "websocket", "websocket-cached" 또는 "auto" |
httpIdleTimeoutMs |
숫자 | 300000 |
HTTP 헤더/본문 유휴 시간 제한(밀리초). 명시적인 스트림 유휴 시간 제한이 있는 공급자에서도 사용됩니다. 비활성화하려면 0로 설정하세요. |
websocketConnectTimeoutMs |
숫자 | 15000 |
WebSocket 전송을 지원하는 공급자에 대한 WebSocket 연결/열기 핸드셰이크 시간 제한(밀리초)입니다. 비활성화하려면 0로 설정하세요. |
터미널 및 이미지
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
terminal.showImages |
부울 | true |
터미널에 이미지 표시(지원되는 경우) |
terminal.imageWidthCells |
숫자 | 60 |
터미널 셀의 기본 인라인 이미지 너비 |
terminal.clearOnShrink |
부울 | false |
콘텐츠가 축소되면 빈 행 지우기(깜박임이 발생할 수 있음) |
images.autoResize |
부울 | true |
이미지 크기를 최대 2000x2000으로 조정합니다. @file 첨부파일, read 및 도구에서 반환한 이미지에 적용됩니다. |
images.blockImages |
부울 | false |
모든 이미지가 LLM으로 전송되지 않도록 차단 |
껍데기
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
shellPath |
끈 | - | 사용자 정의 셸 경로(예: Windows의 Cygwin용) 홈 디렉토리에 대해 선행 ~ 지원 |
shellCommandPrefix |
끈 | - | 모든 bash 명령의 접두사(예: "shopt -s expand_aliases") |
npmCommand |
끈[] | - | npm 패키지 조회/설치 작업에 사용되는 명령 argv(예: ["mise", "exec", "node@20", "--", "npm"]) |
{
"npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}npmCommand는 git 패키지 내부의 설치, 제거 및 종속성 설치를 포함한 모든 npm 패키지 관리자 작업에 사용됩니다. 사용자 범위 npm 패키지는 ~/.pi/agent/npm/ 아래에 설치됩니다. 프로젝트 범위 npm 패키지는 .pi/npm/ 아래에 설치됩니다. 프로세스가 시작되어야 하는 것과 똑같이 argv 스타일 항목을 사용하십시오. npmCommand가 구성되면 git 패키지 종속성 설치는 일반 install를 사용하여 래퍼 또는 대체 패키지 관리자의 npm 관련 플래그를 방지합니다.
세션
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
sessionDir |
끈 | - | 세션 파일이 저장되는 디렉터리입니다. 절대 또는 상대 경로와 ~를 허용합니다. |
{ "sessionDir": ".pi/sessions" }여러 소스가 세션 디렉터리를 지정하는 경우 settings.json에서 우선 순위는 --session-dir, PI_CODING_AGENT_SESSION_DIR, sessionDir입니다.
모델 사이클링
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
enabledModels |
끈[] | - | Ctrl+P 순환을 위한 모델 패턴(--models CLI 플래그와 동일한 형식) |
{
"enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}Markdown
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
markdown.codeBlockIndent |
끈 | " " |
코드 블록 들여쓰기 |
markdown.mermaid |
끈 | "streaming" |
인어 렌더링 모드: "off", "final" 또는 "streaming" |
자원
이러한 설정은 확장 프로그램, 스킬, 프롬프트 및 테마를 로드할 위치를 정의합니다.
~/.pi/agent/settings.json의 경로는 ~/.pi/agent를 기준으로 결정됩니다. .pi/settings.json의 경로는 .pi를 기준으로 결정됩니다. 절대 경로와 ~가 지원됩니다.
| 환경 | 유형 | 기본 | 설명 |
|---|---|---|---|
packages |
정렬 | [] |
npm/git 리소스를 로드할 패키지 |
extensions |
끈[] | [] |
로컬 확장 파일 경로 또는 디렉터리 |
skills |
끈[] | [] |
로컬 기술 파일 경로 또는 디렉터리 |
prompts |
끈[] | [] |
로컬 프롬프트 템플릿 경로 또는 디렉터리 |
themes |
끈[] | [] |
로컬 테마 파일 경로 또는 디렉터리 |
enableSkillCommands |
부울 | true |
/skill:name 명령어로 스킬 등록 |
배열은 glob 패턴과 제외를 지원합니다. 제외하려면 !pattern를 사용하세요. 정확한 경로를 강제로 포함하려면 +path를 사용하고, 정확한 경로를 강제로 제외하려면 -path를 사용하세요.
패키지
문자열 형식은 패키지에서 모든 리소스를 로드합니다.
{
"packages": ["pi-skills", "@org/my-extension"]
}개체 양식은 로드할 리소스를 필터링합니다.
{
"packages": [
{
"source": "pi-skills",
"skills": ["brave-search", "transcribe"],
"extensions": []
}
]
}패키지 관리에 대한 자세한 내용은 packages.md를 참조하세요.
예
{
"defaultProvider": "anthropic",
"defaultModel": "claude-sonnet-4-20250514",
"defaultThinkingLevel": "medium",
"theme": "dark",
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
},
"retry": {
"enabled": true,
"maxRetries": 3
},
"enabledModels": ["claude-*", "gpt-4o"],
"warnings": {
"anthropicExtraUsage": true
},
"packages": ["pi-skills"]
}프로젝트 재정의
프로젝트 설정(.pi/settings.json)은 전역 설정보다 우선 적용됩니다. 중첩된 개체가 병합됩니다.
// ~/.pi/agent/settings.json (global)
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 16384 }
}
// .pi/settings.json (project)
{
"compaction": { "reserveTokens": 8192 }
}
// Result
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 8192 }
}