Configuração, personalização, ajustes de plataforma e referências de API para Pi.

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 }
}