Variáveis de ambiente
Pi usa variáveis de ambiente de três maneiras:
- Variáveis como
PI_OFFLINEconfiguram o processo Pi. - Pi define
PI_CODING_AGENTpara 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"
fiEssas 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.