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

Variáveis de ambiente

Pi usa variáveis de ambiente de três maneiras:

  • Variáveis como PI_OFFLINE configuram o processo Pi.
  • Pi define marcadores de processo para que os processos filhos possam identificar o Pi como o Agent que os iniciou.
  • Os comandos executados pela ferramenta bash que pode ser chamada por LLM recebem variáveis PI_* que descrevem a sessão atual.

As variáveis de chave API do provedor são documentadas separadamente em Providers.

Marcador de Processo

Os pontos de entrada CLI e RPC definem dois marcadores de processo:

  • AI_AGENT=pi é um marcador genérico que permite às ferramentas identificar o Pi como o Agent que iniciou o processo.
  • PI_CODING_AGENT=true é específico do Pi e permite que processos filhos detectem que estão sendo executados dentro do Pi.

Os processos filhos herdam ambos os marcadores. Eles não são específicos da sessão e não são definidos automaticamente quando o Pi é incorporado por meio do SDK.

Ambiente de sessão da ferramenta Bash

Os comandos executados pela ferramenta bash recebem o estado atual da sessão Pi:

Variável Descrição
PI_SESSION_ID ID da sessão atual
PI_SESSION_FILE Caminho absoluto para o arquivo JSONL da sessão atual; não definido para sessões efêmeras
PI_PROVIDER Provedor de modelo atualmente selecionado
PI_MODEL ID do modelo atualmente selecionado
PI_REASONING_LEVEL Nível de raciocínio efetivo atual: off, minimal, low, medium, high, xhigh ou max

Os valores são resolvidos quando cada comando é iniciado. Mudar de modelo ou alterar o nível de raciocínio afeta o próximo comando bash sem reiniciar Pi. PI_PROVIDER e PI_MODEL identificam o modelo Pi selecionado, não um modelo upstream diferente que um roteador possa escolher internamente.

Quando questionado sobre qual modelo ou provedor está em execução, inspecione essas variáveis em vez de inferir a resposta do prompt do sistema:

printf '%s/%s\n' "$PI_PROVIDER" "$PI_MODEL"
printf 'reasoning=%s session=%s\n' "$PI_REASONING_LEVEL" "$PI_SESSION_ID"

O arquivo da sessão pode ser inspecionado diretamente quando a sessão é persistente:

if [ -n "$PI_SESSION_FILE" ]; then
  tail -n 1 "$PI_SESSION_FILE"
fi

Essas variáveis são injetadas na ferramenta bash que pode ser chamada pelo LLM. Eles não são injetados nos comandos ! ou !! inseridos pelo usuário.

Ferramentas Bash personalizadas

As ferramentas Bash criadas com createBashTool() expõem o ambiente de sessão por padrão quando registradas com Pi. A injeção acontece antes de spawnHook, então um gancho recebe as variáveis em ctx.env:

const bashTool = createBashTool(cwd, {
  spawnHook: (ctx) => ({
    ...ctx,
    env: { ...ctx.env, CI: "1" },
  }),
});

Desative os metadados da sessão independentemente do gancho de geração:

const bashTool = createBashTool(cwd, {
  exposeSessionEnvironment: false,
  spawnHook: (ctx) => ctx,
});

Quando desabilitado, Pi remove valores herdados para essas variáveis, de forma que processos Pi aninhados não exponham metadados obsoletos da sessão pai.

Pi Configuração do Processo

Essas variáveis são lidas pelo próprio Pi:

Variável Descrição
PI_CODING_AGENT_DIR Substitua o diretório de configuração; o padrão é ~/.pi/agent
PI_CODING_AGENT_SESSION_DIR Substituir o armazenamento da sessão; substituído por --session-dir
PI_PACKAGE_DIR Substitua o diretório do pacote, útil para caminhos de armazenamento Nix/Guix
PI_OFFLINE Desativar operações de rede de inicialização, incluindo verificações de atualização, atualizações de pacotes e telemetria de instalação/atualização
PI_SKIP_VERSION_CHECK Desative a solicitação de versão mais recente pi.dev
PI_TELEMETRY Substituir telemetria de instalação/atualização e cabeçalhos de atribuição de provedor: 1/true/yes ou 0/false/no
PI_CACHE_RETENTION Defina como long para cache estendido de prompt do provedor onde houver suporte
PI_SHARE_VIEWER_URL Substitua o URL base usado por /share
PI_HARDWARE_CURSOR Defina como 1 para mostrar o cursor de hardware; veja Terminal setup
PI_TUI_ESC_TIMEOUT Tempo de espera após um ESC isolado antes de tratá-lo como Escape, em milissegundos; o padrão é 100 via SSH e 10 nos demais casos. Aumente-o se a entrada com Alt for interpretada incorretamente como Escape
VISUAL, EDITOR Fallback do editor externo quando externalEditor não está definido
HTTP_PROXY, HTTPS_PROXY Solicitações HTTP de saída de proxy

As credenciais do provedor, como ANTHROPIC_API_KEY, OPENAI_API_KEY, e a configuração do provedor de nuvem estão listadas em Providers.