Umgebungsvariablen
Pi verwendet Umgebungsvariablen auf drei Arten:
- Variablen wie
PI_OFFLINEkonfigurieren den Pi-Prozess. - Pi setzt Prozessmarker, damit untergeordnete Prozesse Pi als startenden Agenten identifizieren können.
- 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 zwei Prozessmarker:
AI_AGENT=piist ein allgemeiner Marker, mit dem Tools Pi als den Agenten identifizieren können, der den Prozess gestartet hat.PI_CODING_AGENT=trueist Pi-spezifisch und ermöglicht es untergeordneten Prozessen zu erkennen, dass sie in Pi ausgeführt werden.
Untergeordnete Prozesse erben beide Marker. Sie sind nicht sitzungsspezifisch und werden nicht automatisch gesetzt, wenn Pi über das 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 |
PI_TUI_ESC_TIMEOUT |
Wartezeit nach einem einzelnen ESC, bevor es als Escape behandelt wird, in Millisekunden; standardmäßig 100 über SSH und sonst 10. Erhöhen Sie den Wert, wenn Alt-Tasteneingaben fälschlich als Escape erkannt werden |
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.