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