Konfiguration, Anpassung, Plattform-Einrichtung und API-Referenzen für Pi.

Umgebungsvariablen

Pi verwendet Umgebungsvariablen auf drei Arten:

  • Variablen wie PI_OFFLINE konfigurieren 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=pi ist ein allgemeiner Marker, mit dem Tools Pi als den Agenten identifizieren können, der den Prozess gestartet hat.
  • PI_CODING_AGENT=true ist 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"
fi

Diese 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.