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 }
}