Variables d'environnement
Pi utilise les variables d'environnement de trois manières:
- Des variables telles que
PI_OFFLINEconfigurent le processus Pi. - Pi définit
PI_CODING_AGENTafin 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"
fiCes 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.