Umgebungsvariablen
Pi verwendet Umgebungsvariablen auf drei Arten:
- Variablen wie
PI_OFFLINEkonfigurieren den Pi-Prozess. - Pi setzt
PI_CODING_AGENT, damit untergeordnete Prozesse erkennen können, dass sie in Pi ausgeführt werden. - Befehle, die vom LLM-aufrufbaren bash-Tool ausgeführt werden, empfangen
PI_*Variablen, die die aktuelle Sitzung beschreiben.
Provider-API-Schlüsselvariablen werden separat in Providers dokumentiert.
Prozessmarker
Die Einstiegspunkte CLI und RPC setzen PI_CODING_AGENT=true. Untergeordnete Prozesse erben es und können damit erkennen, dass sie in Pi ausgeführt werden. Es ist nicht sitzungsspezifisch und wird nicht automatisch festgelegt, wenn Pi über SDK eingebettet wird.
Bash-Tool-Sitzungsumgebung
Befehle, die vom bash-Tool ausgeführt werden, erhalten den aktuellen Pi-Sitzungsstatus:
| Variable | Beschreibung |
|---|---|
PI_SESSION_ID |
Aktuelle Sitzungs-ID |
PI_SESSION_FILE |
Absoluter Pfad zur aktuellen Sitzungsdatei JSONL; Für kurzlebige Sitzungen deaktiviert |
PI_PROVIDER |
Aktuell ausgewählter Modellanbieter |
PI_MODEL |
Aktuell ausgewählte Modell-ID |
PI_REASONING_LEVEL |
Aktuelles Niveau des effektiven Denkens: off, minimal, low, medium, high, xhigh oder max |
Die Werte werden beim Start jedes Befehls aufgelöst. Ein Modellwechsel oder eine Änderung der Argumentationsebene wirkt sich daher auf den nächsten bash-Befehl aus, ohne dass Pi neu gestartet werden muss. PI_PROVIDER und PI_MODEL identifizieren das ausgewählte Pi Modell, nicht ein anderes Upstream-Modell, das ein Router intern auswählen kann.
Wenn Sie gefragt werden, welches Modell oder welcher Anbieter ausgeführt wird, überprüfen Sie diese Variablen, anstatt die Antwort aus der Systemeingabeaufforderung abzuleiten:
printf '%s/%s\n' "$PI_PROVIDER" "$PI_MODEL"
printf 'reasoning=%s session=%s\n' "$PI_REASONING_LEVEL" "$PI_SESSION_ID"Die Sitzungsdatei kann direkt überprüft werden, wenn die Sitzung dauerhaft ist:
if [ -n "$PI_SESSION_FILE" ]; then
tail -n 1 "$PI_SESSION_FILE"
fiDiese Variablen werden in das LLM-aufrufbare bash-Tool eingefügt. Sie werden nicht in vom Benutzer eingegebene !- oder !!-Befehle eingefügt.
Benutzerdefinierte Bash-Tools
Mit createBashTool() erstellte Bash-Tools legen die Sitzungsumgebung standardmäßig offen, wenn sie mit Pi registriert werden. Die Injektion erfolgt vor spawnHook, sodass ein Hook die Variablen in ctx.env empfängt:
const bashTool = createBashTool(cwd, {
spawnHook: (ctx) => ({
...ctx,
env: { ...ctx.env, CI: "1" },
}),
});Sitzungsmetadaten unabhängig vom Spawn-Hook deaktivieren:
const bashTool = createBashTool(cwd, {
exposeSessionEnvironment: false,
spawnHook: (ctx) => ctx,
});Wenn die Option deaktiviert ist, entfernt Pi geerbte Werte für diese Variablen, sodass verschachtelte Pi-Prozesse keine veralteten Metadaten der übergeordneten Sitzung offenlegen.
Pi Prozesskonfiguration
Diese Variablen werden von Pi selbst gelesen:
| Variable | Beschreibung |
|---|---|
PI_CODING_AGENT_DIR |
Überschreiben Sie das Konfigurationsverzeichnis. Standard ist ~/.pi/agent |
PI_CODING_AGENT_SESSION_DIR |
Sitzungsspeicher überschreiben; überschrieben durch --session-dir |
PI_PACKAGE_DIR |
Überschreiben Sie das Paketverzeichnis, nützlich für Nix/Guix-Speicherpfade |
PI_OFFLINE |
Deaktivieren Sie Startnetzwerkvorgänge, einschließlich Updateprüfungen, Paketaktualisierungen und Installations-/Update-Telemetrie |
PI_SKIP_VERSION_CHECK |
Deaktivieren Sie die Anforderung der neuesten Version pi.dev |
PI_TELEMETRY |
Überschreiben Sie Installations-/Update-Telemetrie- und Anbieterzuordnungsheader: 1/true/yes oder 0/false/no |
PI_CACHE_RETENTION |
Auf long für erweitertes Provider-Prompt-Caching setzen, sofern unterstützt |
PI_SHARE_VIEWER_URL |
Überschreiben Sie die von /share verwendete Basis-URL |
PI_HARDWARE_CURSOR |
Auf 1 einstellen, um den Hardware-Cursor anzuzeigen; siehe Terminal setup |
VISUAL, EDITOR |
Externer Editor-Fallback, wenn externalEditor nicht gesetzt ist |
HTTP_PROXY, HTTPS_PROXY |
Proxy für ausgehende HTTP-Anfragen |
Anbieteranmeldeinformationen wie ANTHROPIC_API_KEY, OPENAI_API_KEY und die Cloud-Anbieterkonfiguration werden in Providers aufgeführt.