Configuration, personnalisation, paramètres de plateforme et références API pour Pi.

Variables d'environnement

Pi utilise les variables d'environnement de trois manières:

  • Des variables telles que PI_OFFLINE configurent le processus Pi.
  • Pi définit PI_CODING_AGENT afin que les processus enfants puissent détecter qu'ils s'exécutent à l'intérieur de Pi.
  • Les commandes exécutées par l'outil bash appelable LLM reçoivent des variables PI_* décrivant la session en cours.

Les variables clés du fournisseur API sont documentées séparément dans Providers.

Marqueur de processus

Les points d'entrée CLI et RPC définissent PI_CODING_AGENT=true. Les processus enfants en héritent et peuvent l'utiliser pour détecter qu'ils s'exécutent à l'intérieur de Pi. Il n'est pas spécifique à la session et n'est pas défini automatiquement lorsque Pi est intégré via le SDK.

Environnement de session de l'outil Bash

Les commandes exécutées par l'outil bash reçoivent l'état de session actuel Pi:

Variable Description
PI_SESSION_ID ID de session actuelle
PI_SESSION_FILE Chemin absolu vers le fichier JSONL de la session en cours; désarmé pour les sessions éphémères
PI_PROVIDER Fournisseur de modèles actuellement sélectionné
PI_MODEL ID du modèle actuellement sélectionné
PI_REASONING_LEVEL Niveau de raisonnement effectif actuel: off, minimal, low, medium, high, xhigh ou max

Les valeurs sont résolues au démarrage de chaque commande. Changer de modèle ou changer de niveau de raisonnement affecte donc la commande bash suivante sans redémarrer Pi. PI_PROVIDER et PI_MODEL identifient le modèle Pi sélectionné, et non un modèle en amont différent qu'un routeur peut choisir en interne.

Lorsqu'on vous demande quel modèle ou fournisseur est en cours d'exécution, inspectez ces variables au lieu de déduire la réponse à partir de l'invite du système:

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

Le fichier de session peut être inspecté directement lorsque la session est persistante:

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

Ces variables sont injectées dans l'outil bash appelable LLM. Ils ne sont pas injectés dans les commandes ! ou !! saisies par l'utilisateur.

Outils Bash personnalisés

Les outils Bash créés avec createBashTool() exposent l'environnement de session par défaut lorsqu'ils sont enregistrés avec Pi. L'injection a lieu avant spawnHook, donc un hook reçoit les variables en ctx.env:

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

Désactivez les métadonnées de session indépendamment du hook de spawn:

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

Lorsqu'il est désactivé, Pi supprime les valeurs héritées de ces variables afin que les processus Pi imbriqués n'exposent pas les métadonnées obsolètes de la session parent.

Pi Configuration du processus

Ces variables sont lues par Pi lui-même:

Variable Description
PI_CODING_AGENT_DIR Remplacez le répertoire de configuration; la valeur par défaut est ~/.pi/agent
PI_CODING_AGENT_SESSION_DIR Remplacer le stockage de session; remplacé par --session-dir
PI_PACKAGE_DIR Remplacer le répertoire du package, utile pour les chemins du magasin Nix/Guix
PI_OFFLINE Désactivez les opérations réseau de démarrage, y compris les vérifications de mise à jour, les mises à jour de packages et la télémétrie d'installation/mise à jour.
PI_SKIP_VERSION_CHECK Désactivez la demande de dernière version pi.dev
PI_TELEMETRY Remplacer la télémétrie d'installation/mise à jour et les en-têtes d'attribution du fournisseur: 1/true/yes ou 0/false/no
PI_CACHE_RETENTION Défini sur long pour la mise en cache étendue des invites du fournisseur lorsque cela est pris en charge
PI_SHARE_VIEWER_URL Remplacer l'URL de base utilisée par /share
PI_HARDWARE_CURSOR Réglez sur 1 pour afficher le curseur matériel; voir Terminal setup
VISUAL, EDITOR Solution de secours de l'éditeur externe lorsque externalEditor n'est pas défini
HTTP_PROXY, HTTPS_PROXY Requêtes HTTP sortantes du proxy

Les informations d'identification du fournisseur telles que ANTHROPIC_API_KEY, OPENAI_API_KEY et la configuration du fournisseur cloud sont répertoriées dans Providers.