Configurações
Pi usa arquivos de configurações JSON com configurações de projeto substituindo configurações globais.
| Localização | Escopo |
|---|---|
~/.pi/agent/settings.json |
Global (todos os projetos) |
.pi/settings.json |
Projeto (diretório atual) |
Edite diretamente ou use /settings para opções comuns.
Confiança do Projeto
Na inicialização interativa, pi pergunta antes de confiar em uma pasta de projeto que contém configurações locais do projeto, recursos ou projeto .agents/skills e não tem decisão salva para a pasta ou pasta pai em ~/.pi/agent/trust.json. Confiar em um projeto permite que pi carregue recursos .pi/settings.json e .pi, instale pacotes de projeto ausentes e execute extensões de projeto.
Os modos não interativos (-p, --mode json e --mode rpc) não mostram um prompt de confiança. Sem uma decisão de confiança salva aplicável, eles usam defaultProjectTrust das configurações globais: ask (padrão) e never ignoram esses recursos do projeto, enquanto always confia neles. Passe --approve/-a ou --no-approve/-na para substituir a confiança do projeto em uma execução.
Se nenhuma extensão ou decisão salva se aplicar, defaultProjectTrust controla o comportamento de fallback. Defina-o como "ask", "always" ou "never" em ~/.pi/agent/settings.json ou altere-o com /settings.
Os comandos pi config e pacote usam o mesmo fluxo de confiança do projeto, exceto que pi update nunca solicita. Passe --approve para confiar nas configurações locais do projeto para um comando ou --no-approve para ignorá-las.
Use /trust no modo interativo para salvar uma decisão de confiança do projeto para sessões futuras, incluindo confiança para a pasta pai imediata. Ele escreve apenas ~/.pi/agent/trust.json; a sessão atual não é recarregada, então reinicie o pi para que as alterações tenham efeito.
Todas as configurações
Modelo e Pensamento
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
defaultProvider |
corda | - | Provedor padrão (por exemplo, "anthropic", "openai") |
defaultModel |
corda | - | ID do modelo padrão |
defaultThinkingLevel |
corda | - | "off", "minimal", "low", "medium", "high", "xhigh", "max" |
hideThinkingBlock |
booleano | false |
Ocultar blocos de pensamento na saída |
showCacheMissNotices |
booleano | false |
Mostrar avisos de transcrição para falhas significativas no cache de prompt |
thinkingBudgets |
objeto | - | Orçamentos de tokens personalizados por nível de pensamento |
pensando Orçamentos
{
"thinkingBudgets": {
"minimal": 1024,
"low": 4096,
"medium": 10240,
"high": 32768
}
}IU e exibição
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
theme |
corda | "dark" |
Nome do tema ("dark", "light" ou personalizado) |
externalEditor |
corda | $VISUAL, depois $EDITOR, depois Bloco de Notas no Windows ou nano em outro lugar |
Comando para editor externo Ctrl+G; tem precedência sobre variáveis de ambiente |
quietStartup |
booleano | false |
Ocultar cabeçalho de inicialização |
defaultProjectTrust |
corda | "ask" |
Comportamento de confiança do projeto substituto: "ask", "always" ou "never". Somente configuração global |
collapseChangelog |
booleano | false |
Mostrar changelog condensado após atualizações |
enableInstallTelemetry |
booleano | true |
Envie um ping anônimo de instalação/atualização da versão após a primeira instalação ou atualizações detectadas pelo changelog. Isso não controla verificações de atualização |
enableAnalytics |
booleano | false |
Compartilhamento de dados analíticos opcional. Atualmente solicitado apenas durante a configuração experimental inicial (PI_EXPERIMENTAL=1) |
trackingId |
corda | - | Identificador de rastreamento do Analytics, gerado quando enableAnalytics está ativado |
doubleEscapeAction |
corda | "tree" |
Ação para escape duplo: "tree", "fork" ou "none" |
treeFilterMode |
corda | "default" |
Filtro padrão para /tree: "default", "no-tools", "user-only", "labeled-only", "all" |
editorPaddingX |
número | 0 |
Preenchimento horizontal para editor de entrada (0-3) |
outputPad |
número | 1 |
Preenchimento horizontal para mensagens do usuário, mensagens do assistente e pensamentos (0 ou 1) |
autocompleteMaxVisible |
número | 5 |
Máximo de itens visíveis no menu suspenso de preenchimento automático (3-20) |
showHardwareCursor |
booleano | false |
Mostre o cursor do terminal enquanto TUI o posiciona para suporte IME |
tuiMode |
corda | "regular" |
Modo interativo TUI: "regular" ou experimental "fullscreen". As alterações de /settings aplicam-se imediatamente; --tui-mode substitui esta configuração na inicialização |
fullscreenExitOutput |
corda | "transcript" |
Saída de saída em tela cheia: "transcript" imprime a transcrição final e a dica de currículo, enquanto "resume-hint" restaura a tela anterior e imprime apenas a dica de currículo. Não tem efeito no modo TUI normal |
fullscreenScrollbar |
corda | "auto" |
Barra de rolagem de transcrição em tela cheia: "auto" mostra-a temporariamente durante a rolagem, "always" reserva a coluna mais à direita e a mantém visível e "hidden" a oculta. Não tem efeito no modo TUI normal |
Para VS Code, inclua --wait para que pi seja retomado após a saída do editor:
{
"externalEditor": "code --wait"
}Telemetria e verificações de atualização
enableInstallTelemetry controla apenas o ping anônimo de instalação/atualização para https://pi.dev/api/report-install. A desativação da telemetria não desativa as verificações de atualização; Pi ainda pode buscar https://pi.dev/api/latest-version para procurar a versão mais recente.
Defina PI_SKIP_VERSION_CHECK=1 para desativar a verificação de atualização de versão Pi. Use --offline ou PI_OFFLINE=1 para desabilitar todas as operações de inicialização da rede descritas aqui, incluindo verificações de atualização, verificações de atualização de pacotes e telemetria de instalação/atualização.
Rede
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
httpProxy |
corda | - | URL do proxy HTTP aplicado como HTTP_PROXY e HTTPS_PROXY. Somente configuração global. |
{
"httpProxy": "http://127.0.0.1:7890"
}Avisos
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
warnings.anthropicExtraUsage |
booleano | true |
Mostrar um aviso quando a autenticação de assinatura da Anthropic puder usar uso extra pago |
{
"warnings": {
"anthropicExtraUsage": false
}
}Compactação
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
compaction.enabled |
booleano | true |
Ativar compactação automática |
compaction.reserveTokens |
número | 16384 |
Tokens reservados para resposta LLM |
compaction.keepRecentTokens |
número | 20000 |
Tokens recentes para manter (não resumidos) |
{
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
}
}Resumo da filial
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
branchSummary.reserveTokens |
número | 16384 |
Tokens reservados para branch summarization |
branchSummary.skipPrompt |
booleano | false |
Pule "Resumir ramificação?" prompt na navegação /tree (o padrão é sem resumo) |
Tentar novamente
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
retry.enabled |
booleano | true |
Habilitar novas tentativas automáticas no nível do agente em erros transitórios |
retry.maxRetries |
número | 3 |
Máximo de novas tentativas no nível do agente |
retry.baseDelayMs |
número | 2000 |
Atraso base para espera exponencial em nível de agente (2s, 4s, 8s) |
retry.provider.timeoutMs |
número | SDK padrão | Tempo limite de solicitação do provedor/SDK em milissegundos |
retry.provider.maxRetries |
número | 0 |
Provedor/SDK novas tentativas |
retry.provider.maxRetryDelayMs |
número | 60000 |
Atraso máximo solicitado pelo servidor antes da falha (60s) |
Quando um provedor solicita um atraso de repetição maior que retry.provider.maxRetryDelayMs, a solicitação falha imediatamente com um erro informativo em vez de esperar silenciosamente. Defina como 0 para desativar o limite.
Mantenha retry.provider.maxRetries em 0, a menos que novas tentativas no nível do provedor sejam explicitamente necessárias. Definir acima de 0 pode fazer com que SDK/novas tentativas do provedor lide com erros de limite fora de uso antes que Pi os veja, o que pode bloquear o agente até que a cota do provedor seja redefinida em algumas circunstâncias.
{
"retry": {
"enabled": true,
"maxRetries": 3,
"baseDelayMs": 2000,
"provider": {
"timeoutMs": 3600000,
"maxRetries": 0,
"maxRetryDelayMs": 60000
}
}
}Entrega de mensagens
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
steeringMode |
corda | "one-at-a-time" |
Como as mensagens de direção são enviadas: "all" ou "one-at-a-time" |
followUpMode |
corda | "one-at-a-time" |
Como as mensagens de acompanhamento são enviadas: "all" ou "one-at-a-time" |
transport |
corda | "auto" |
Transporte preferido para provedores que suportam vários transportes: "sse", "websocket", "websocket-cached" ou "auto" |
httpIdleTimeoutMs |
número | 300000 |
Tempo limite de inatividade do cabeçalho/corpo HTTP em milissegundos, também usado por provedores com tempos limite de inatividade de fluxo explícitos. Defina como 0 para desativar. |
websocketConnectTimeoutMs |
número | 15000 |
Tempo limite de handshake de conexão/abertura do WebSocket em milissegundos para provedores que suportam transportes WebSocket. Defina como 0 para desativar. |
Terminal e imagens
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
terminal.showImages |
booleano | true |
Mostrar imagens no terminal (se compatível) |
terminal.imageWidthCells |
número | 60 |
Largura de imagem embutida preferencial em células terminais |
terminal.clearOnShrink |
booleano | false |
Limpe as linhas vazias quando o conteúdo diminuir (pode causar oscilação) |
images.autoResize |
booleano | true |
Redimensione imagens para 2.000x2.000 no máximo. Aplica-se a @file anexos, read e imagens retornadas por ferramentas |
images.blockImages |
booleano | false |
Impedir que todas as imagens sejam enviadas para o LLM |
Concha
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
shellPath |
corda | - | Caminho de shell personalizado (por exemplo, para Cygwin no Windows); suporta um ~ inicial para o diretório inicial |
shellCommandPrefix |
corda | - | Prefixo para cada comando bash (por exemplo, "shopt -s expand_aliases") |
npmCommand |
corda[] | - | Comando argv usado para operações de pesquisa/instalação de pacote npm (por exemplo, ["mise", "exec", "node@20", "--", "npm"]) |
{
"npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}npmCommand é usado para todas as operações do gerenciador de pacotes npm, incluindo instalações, desinstalações e instalações de dependências dentro de pacotes git. Pacotes npm com escopo de usuário são instalados em ~/.pi/agent/npm/; pacotes npm com escopo de projeto são instalados em .pi/npm/. Use entradas no estilo argv exatamente como o processo deve ser iniciado. Quando npmCommand é configurado, as instalações de dependência do pacote git usam install simples para evitar sinalizadores específicos de npm em wrappers ou gerenciadores de pacotes alternativos.
Sessões
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
sessionDir |
corda | - | Diretório onde os arquivos da sessão são armazenados. Aceita caminhos absolutos ou relativos, mais ~. |
{ "sessionDir": ".pi/sessions" }Quando várias fontes especificam um diretório de sessão, a precedência é --session-dir, PI_CODING_AGENT_SESSION_DIR e, em seguida, sessionDir em settings.json.
Modelo de ciclismo
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
enabledModels |
corda[] | - | Padrões de modelo para ciclismo Ctrl+P (mesmo formato do sinalizador --models CLI) |
{
"enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}Markdown
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
markdown.codeBlockIndent |
corda | " " |
Recuo para blocos de código |
markdown.mermaid |
corda | "streaming" |
Modo de renderização sereia: "off", "final" ou "streaming" |
Recursos
Essas configurações definem de onde carregar extensões, habilidades, prompts e temas.
Caminhos em ~/.pi/agent/settings.json são resolvidos em relação a ~/.pi/agent. Caminhos em .pi/settings.json são resolvidos em relação a .pi. Caminhos absolutos e ~ são suportados.
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
packages |
variedade | [] |
npm/git pacotes para carregar recursos |
extensions |
corda[] | [] |
Caminhos ou diretórios de arquivos de extensão local |
skills |
corda[] | [] |
Caminhos ou diretórios de arquivos de habilidades locais |
prompts |
corda[] | [] |
Caminhos ou diretórios de modelos de prompt locais |
themes |
corda[] | [] |
Caminhos ou diretórios de arquivos de tema local |
enableSkillCommands |
booleano | true |
Registre habilidades como comandos /skill:name |
Matrizes suportam padrões globais e exclusões. Use !pattern para excluir. Use +path para forçar a inclusão de um caminho exato e -path para forçar a exclusão de um caminho exato.
pacotes
O formulário String carrega todos os recursos de um pacote:
{
"packages": ["pi-skills", "@org/my-extension"]
}O formulário do objeto filtra quais recursos carregar:
{
"packages": [
{
"source": "pi-skills",
"skills": ["brave-search", "transcribe"],
"extensions": []
}
]
}Veja packages.md para detalhes de gerenciamento de pacotes.
Exemplo
{
"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"]
}Substituições de projeto
As configurações do projeto (.pi/settings.json) substituem as configurações globais. Objetos aninhados são mesclados:
// ~/.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 }
}