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

Einstellungen

Pi verwendet JSON Einstellungsdateien, wobei die Projekteinstellungen die globalen Einstellungen überschreiben.

Standort Umfang
~/.pi/agent/settings.json Global (alle Projekte)
.pi/settings.json Projekt (aktuelles Verzeichnis)

Direkt bearbeiten oder /settings für allgemeine Optionen verwenden.

Projektvertrauen

Beim interaktiven Start fragt pi nach, bevor es einem Projektordner vertraut, der projektlokale Einstellungen, Ressourcen oder Projekt .agents/skills enthält und keine gespeicherte Entscheidung für den Ordner oder einen übergeordneten Ordner in ~/.pi/agent/trust.json hat. Durch das Vertrauen in ein Projekt kann Pi .pi/settings.json- und .pi-Ressourcen laden, fehlende Projektpakete installieren und Projekterweiterungen ausführen.

In den nicht interaktiven Modi (-p, --mode json und --mode rpc) wird keine Vertrauensaufforderung angezeigt. Ohne eine anwendbare gespeicherte Vertrauensentscheidung verwenden sie defaultProjectTrust aus den globalen Einstellungen: ask (Standard) und never ignorieren diese Projektressourcen, während always ihnen vertraut. Übergeben Sie --approve/-a oder --no-approve/-na, um die Projektvertrauenswürdigkeit für einen Lauf zu überschreiben.

Wenn keine Erweiterung oder gespeicherte Entscheidung gilt, steuert defaultProjectTrust das Fallback-Verhalten. Stellen Sie es auf "ask", "always" oder "never" in ~/.pi/agent/settings.json ein oder ändern Sie es mit /settings.

pi config- ​​und Paketbefehle verwenden denselben Projekt-Vertrauensfluss, mit der Ausnahme, dass pi update nie dazu auffordert. Übergeben Sie --approve, um projektlokalen Einstellungen für einen Befehl zu vertrauen, oder --no-approve, um sie zu ignorieren.

Verwenden Sie /trust im interaktiven Modus, um eine Projektvertrauensentscheidung für zukünftige Sitzungen zu speichern, einschließlich der Vertrauenswürdigkeit für den unmittelbar übergeordneten Ordner. Es schreibt nur ~/.pi/agent/trust.json; Die aktuelle Sitzung wird nicht neu geladen. Starten Sie daher pi neu, damit die Änderungen wirksam werden.

Alle Einstellungen

Modell & Denken

Einstellung Typ Standard Beschreibung
defaultProvider Zeichenfolge - Standardanbieter (z. B. "anthropic", "openai")
defaultModel Zeichenfolge - Standardmodell-ID
defaultThinkingLevel Zeichenfolge - "off", "minimal", "low", "medium", "high", "xhigh", "max"
hideThinkingBlock Boolescher Wert false Verstecken Sie Denkblockaden in der Ausgabe
showCacheMissNotices Boolescher Wert false Zeigen Sie Transkripthinweise für erhebliche Fehler im Prompt-Cache an
thinkingBudgets Objekt - Benutzerdefinierte Token-Budgets pro Denkebene

denkenBudgets

{
  "thinkingBudgets": {
    "minimal": 1024,
    "low": 4096,
    "medium": 10240,
    "high": 32768
  }
}

Benutzeroberfläche und Anzeige

Einstellung Typ Standard Beschreibung
theme Zeichenfolge "dark" Designname ("dark", "light" oder benutzerdefiniert)
externalEditor Zeichenfolge $VISUAL, dann $EDITOR, dann Notepad unter Windows oder nano anderswo Befehl für den externen Editor Strg+G; hat Vorrang vor Umgebungsvariablen
quietStartup Boolescher Wert false Startup-Header ausblenden
defaultProjectTrust Zeichenfolge "ask" Vertrauensverhalten des Fallback-Projekts: "ask", "always" oder "never". Nur globale Einstellung
collapseChangelog Boolescher Wert false Nach Aktualisierungen komprimiertes Änderungsprotokoll anzeigen
enableInstallTelemetry Boolescher Wert true Senden Sie nach der Erstinstallation oder nach im Änderungsprotokoll erkannten Updates einen anonymen Installations-/Update-Versions-Ping. Dadurch werden Update-Prüfungen nicht gesteuert
enableAnalytics Boolescher Wert false Opt-in-Analytics-Datenfreigabe. Wird derzeit nur beim experimentellen Erstaufbau benötigt (PI_EXPERIMENTAL=1)
trackingId Zeichenfolge - Analytics-Tracking-ID, generiert, wenn enableAnalytics aktiviert ist
doubleEscapeAction Zeichenfolge "tree" Aktion für Double-Escape: "tree", "fork" oder "none"
treeFilterMode Zeichenfolge "default" Standardfilter für /tree: "default", "no-tools", "user-only", "labeled-only", "all"
editorPaddingX Nummer 0 Horizontaler Abstand für den Eingabeeditor (0-3)
outputPad Nummer 1 Horizontaler Abstand für Benutzernachrichten, Assistentennachrichten und Gedanken (0 oder 1)
autocompleteMaxVisible Nummer 5 Maximal sichtbare Elemente im Dropdown-Menü für die automatische Vervollständigung (3–20)
showHardwareCursor Boolescher Wert false Zeigen Sie den Terminalcursor an, während TUI ihn für die IME-Unterstützung positioniert
tuiMode Zeichenfolge "regular" Interaktiver TUI-Modus: "regular" oder experimenteller "fullscreen". Änderungen von /settings gelten sofort; --tui-mode überschreibt diese Einstellung beim Start
fullscreenExitOutput Zeichenfolge "transcript" Ausgabe im Vollbildmodus beenden: "transcript" druckt das endgültige Transkript und den Lebenslaufhinweis, während "resume-hint" den vorherigen Bildschirm wiederherstellt und nur den Lebenslaufhinweis druckt. Hat im regulären TUI-Modus keine Auswirkung
fullscreenScrollbar Zeichenfolge "auto" Vollbild-Transkript-Bildlaufleiste: "auto" zeigt sie vorübergehend beim Scrollen an, "always" reserviert die Spalte ganz rechts und lässt sie sichtbar und "hidden" blendet sie aus. Hat im regulären TUI-Modus keine Auswirkung

Fügen Sie für VS-Code --wait ein, damit Pi nach dem Beenden des Editors fortgesetzt wird:

{
  "externalEditor": "code --wait"
}

Telemetrie- und Update-Prüfungen

enableInstallTelemetry steuert nur den anonymen Installations-/Update-Ping auf https://pi.dev/api/report-install. Durch die Deaktivierung der Telemetrie werden Updateprüfungen nicht deaktiviert; Pi kann weiterhin https://pi.dev/api/latest-version abrufen, um nach der neuesten Version zu suchen.

Stellen Sie PI_SKIP_VERSION_CHECK=1 ein, um die Pi Versionsaktualisierungsprüfung zu deaktivieren. Verwenden Sie --offline oder PI_OFFLINE=1, um alle hier beschriebenen Startnetzwerkvorgänge zu deaktivieren, einschließlich Updateprüfungen, Paketaktualisierungsprüfungen und Installations-/Update-Telemetrie.

Netzwerk

Einstellung Typ Standard Beschreibung
httpProxy Zeichenfolge - HTTP-Proxy-URL wird als HTTP_PROXY und HTTPS_PROXY angewendet. Nur globale Einstellung.
{
  "httpProxy": "http://127.0.0.1:7890"
}

Warnungen

Einstellung Typ Standard Beschreibung
warnings.anthropicExtraUsage Boolescher Wert true Zeigt eine Warnung an, wenn die Anthropic-Abonnementauthentifizierung möglicherweise eine kostenpflichtige zusätzliche Nutzung erfordert
{
  "warnings": {
    "anthropicExtraUsage": false
  }
}

Verdichtung

Einstellung Typ Standard Beschreibung
compaction.enabled Boolescher Wert true Aktivieren Sie die automatische Komprimierung
compaction.reserveTokens Nummer 16384 Für die LLM-Antwort reservierte Token
compaction.keepRecentTokens Nummer 20000 Kürzlich zu behaltende Token (nicht zusammengefasst)
{
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  }
}

Branchenzusammenfassung

Einstellung Typ Standard Beschreibung
branchSummary.reserveTokens Nummer 16384 Token reserviert für branch summarization
branchSummary.skipPrompt Boolescher Wert false „Zweig zusammenfassen?“ überspringen Eingabeaufforderung bei /tree Navigation (standardmäßig keine Zusammenfassung)

Wiederholen

Einstellung Typ Standard Beschreibung
retry.enabled Boolescher Wert true Aktivieren Sie automatische Wiederholungsversuche auf Agentenebene bei vorübergehenden Fehlern
retry.maxRetries Nummer 3 Maximale Wiederholungsversuche auf Agentenebene
retry.baseDelayMs Nummer 2000 Basisverzögerung für exponentielles Backoff auf Agentenebene (2 s, 4 s, 8 s)
retry.provider.timeoutMs Nummer SDK Standard Anbieter/SDK Anforderungszeitlimit in Millisekunden
retry.provider.maxRetries Nummer 0 Anbieter/SDK Wiederholungsversuche
retry.provider.maxRetryDelayMs Nummer 60000 Maximale vom Server angeforderte Verzögerung vor dem Ausfall (60 Sekunden)

Wenn ein Anbieter eine Wiederholungsverzögerung von mehr als retry.provider.maxRetryDelayMs anfordert, schlägt die Anfrage sofort mit einem informativen Fehler fehl, anstatt stillschweigend zu warten. Setzen Sie es auf 0, um das Limit zu deaktivieren.

Behalten Sie retry.provider.maxRetries bei 0, es sei denn, Wiederholungsversuche auf Anbieterebene sind ausdrücklich erforderlich. Wenn Sie den Wert über 0 setzen, kann dies dazu führen, dass SDK/Provider-Wiederholungsfehler Fehler außerhalb des Nutzungslimits behandeln, bevor Pi sie erkennt, was unter bestimmten Umständen den Agenten blockieren kann, bis das Provider-Kontingent zurückgesetzt wird.

{
  "retry": {
    "enabled": true,
    "maxRetries": 3,
    "baseDelayMs": 2000,
    "provider": {
      "timeoutMs": 3600000,
      "maxRetries": 0,
      "maxRetryDelayMs": 60000
    }
  }
}

Nachrichtenübermittlung

Einstellung Typ Standard Beschreibung
steeringMode Zeichenfolge "one-at-a-time" So werden Lenknachrichten gesendet: "all" oder "one-at-a-time"
followUpMode Zeichenfolge "one-at-a-time" So werden Folgenachrichten gesendet: "all" oder "one-at-a-time"
transport Zeichenfolge "auto" Bevorzugter Transport für Anbieter, die mehrere Transporte unterstützen: "sse", "websocket", "websocket-cached" oder "auto"
httpIdleTimeoutMs Nummer 300000 HTTP-Header/Body-Leerlauf-Timeout in Millisekunden, wird auch von Anbietern mit expliziten Stream-Leerlauf-Timeouts verwendet. Zum Deaktivieren auf 0 einstellen.
websocketConnectTimeoutMs Nummer 15000 WebSocket-Verbindungs-/Öffnungs-Handshake-Timeout in Millisekunden für Anbieter, die WebSocket-Transporte unterstützen. Zum Deaktivieren auf 0 einstellen.

Terminal & Bilder

Einstellung Typ Standard Beschreibung
terminal.showImages Boolescher Wert true Bilder im Terminal anzeigen (falls unterstützt)
terminal.imageWidthCells Nummer 60 Bevorzugte Inline-Bildbreite in Terminalzellen
terminal.clearOnShrink Boolescher Wert false Leere Zeilen löschen, wenn der Inhalt kleiner wird (kann zu Flimmern führen)
images.autoResize Boolescher Wert true Ändern Sie die Größe der Bilder auf maximal 2000 x 2000. Gilt für @file Anhänge, read und von Tools zurückgegebene Bilder
images.blockImages Boolescher Wert false Blockieren Sie das Senden aller Bilder an LLM

Hülse

Einstellung Typ Standard Beschreibung
shellPath Zeichenfolge - Benutzerdefinierter Shell-Pfad (z. B. für Cygwin unter Windows); unterstützt eine führende ~ für das Home-Verzeichnis
shellCommandPrefix Zeichenfolge - Präfix für jeden bash-Befehl (z. B. "shopt -s expand_aliases")
npmCommand string[] - Befehl argv, der für npm Paketsuch-/Installationsvorgänge verwendet wird (z. B. ["mise", "exec", "node@20", "--", "npm"])
{
  "npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}

npmCommand wird für alle npm Paketmanager-Vorgänge verwendet, einschließlich Installationen, Deinstallationen und Abhängigkeitsinstallationen innerhalb von Git-Paketen. Benutzerspezifische npm-Pakete werden unter ~/.pi/agent/npm/ installiert; Projektbezogene npm-Pakete werden unter .pi/npm/ installiert. Verwenden Sie Einträge im argv-Stil genau so, wie der Prozess gestartet werden soll. Wenn npmCommand konfiguriert ist, verwenden Git-Paketabhängigkeitsinstallationen einfaches install, um npm-spezifische Flags in Wrappern oder alternativen Paketmanagern zu vermeiden.

Sitzungen

Einstellung Typ Standard Beschreibung
sessionDir Zeichenfolge - Verzeichnis, in dem Sitzungsdateien gespeichert werden. Akzeptiert absolute oder relative Pfade plus ~.
{ "sessionDir": ".pi/sessions" }

Wenn mehrere Quellen ein Sitzungsverzeichnis angeben, ist die Priorität --session-dir, PI_CODING_AGENT_SESSION_DIR und dann sessionDir in Settings.json.

Modellradfahren

Einstellung Typ Standard Beschreibung
enabledModels string[] - Modellmuster für den Strg+P-Wechsel (gleiches Format wie --models CLI Flag)
{
  "enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}

Markdown

Einstellung Typ Standard Beschreibung
markdown.codeBlockIndent Zeichenfolge " " Einrückung für Codeblöcke
markdown.mermaid Zeichenfolge "streaming" Meerjungfrau-Rendering-Modus: "off", "final" oder "streaming"

Ressourcen

Diese Einstellungen legen fest, woher Erweiterungen, Fertigkeiten, Eingabeaufforderungen und Themen geladen werden sollen.

Pfade in ~/.pi/agent/settings.json werden relativ zu ~/.pi/agent aufgelöst. Pfade in .pi/settings.json werden relativ zu .pi aufgelöst. Absolute Pfade und ~ werden unterstützt.

Einstellung Typ Standard Beschreibung
packages Array [] npm/git-Pakete zum Laden von Ressourcen
extensions string[] [] Lokale Dateipfade oder Verzeichnisse für Erweiterungen
skills string[] [] Lokale Skilldateipfade oder -verzeichnisse
prompts string[] [] Lokale Eingabeaufforderungsvorlagenpfade oder -verzeichnisse
themes string[] [] Lokale Dateipfade oder Verzeichnisse für Designs
enableSkillCommands Boolescher Wert true Registrieren Sie Fähigkeiten als /skill:name-Befehle

Arrays unterstützen Globmuster und Ausschlüsse. Verwenden Sie !pattern zum Ausschließen. Verwenden Sie +path, um das Einschließen eines genauen Pfads zu erzwingen, und -path, um das Ausschließen eines genauen Pfads zu erzwingen.

Pakete

Die Zeichenfolgenform lädt alle Ressourcen aus einem Paket:

{
  "packages": ["pi-skills", "@org/my-extension"]
}

Das Objektformular filtert, welche Ressourcen geladen werden sollen:

{
  "packages": [
    {
      "source": "pi-skills",
      "skills": ["brave-search", "transcribe"],
      "extensions": []
    }
  ]
}

Einzelheiten zur Paketverwaltung finden Sie unter packages.md.

Beispiel

{
  "defaultProvider": "anthropic",
  "defaultModel": "claude-sonnet-4-20250514",
  "defaultThinkingLevel": "medium",
  "theme": "dark",
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  },
  "retry": {
    "enabled": true,
    "maxRetries": 3
  },
  "enabledModels": ["claude-*", "gpt-4o"],
  "warnings": {
    "anthropicExtraUsage": true
  },
  "packages": ["pi-skills"]
}

Projektüberschreibungen

Projekteinstellungen (.pi/settings.json) überschreiben globale Einstellungen. Verschachtelte Objekte werden zusammengeführt:

// ~/.pi/agent/settings.json (global)
{
  "theme": "dark",
  "compaction": { "enabled": true, "reserveTokens": 16384 }
}

// .pi/settings.json (project)
{
  "compaction": { "reserveTokens": 8192 }
}

// Result
{
  "theme": "dark",
  "compaction": { "enabled": true, "reserveTokens": 8192 }
}