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 PI_CODING_AGENT para que os processos filhos possam detectar que eles são executados dentro de Pi.
  • 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 PI_CODING_AGENT=true. Os processos filhos o herdam e podem usá-lo para detectar que são executados dentro de Pi. Não é específico da sessão e não é definido automaticamente quando Pi é incorporado através de 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
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.