Pi Agent Theme-Anpassung

Pi Agent unterstützt die Anpassung der Farben der Terminal-Oberfläche.

Dieses Kapitel behandelt, wie man integrierte Themes verwendet und benutzerdefinierte Themes erstellt.


Theme-Übersicht

Pi Agent verwendet Theme-Dateien im JSON-Format, um alle Farben in der TUI-Oberfläche zu definieren.

Jedes Theme muss51 erforderliche Tokens + 4 optionale Tokens (thinkingMax, scrollbarThumb, searchMatchBg, searchMatchText)definieren, die Farben für verschiedene Oberflächenelemente wie Kern-UI, Nachrichtenhintergründe, Markdown-Darstellung, Syntaxhervorhebung und Editor-Ränder abdecken.


Integrierte Themes

Pi Agent wird mit zwei integrierten Themes geliefert:

Theme-NameAnwendungsfallBeschreibung
darkDunkler Terminalhintergrund (Standard)Geeignet für dunkle Terminals, die von den meisten Entwicklern verwendet werden
lightHeller TerminalhintergrundGeeignet für Terminals mit hellen Themes

Beim ersten Start erkennt Pi Agent automatisch die Hintergrundfarbe deines Terminals und wählt dark oder light aus.

Gib im interaktiven Modus /settings ein und wechsle direkt in den Theme-Optionen:

/settings

Du kannst auch das Feld theme in settings.json schreiben und den Wert von theme auf den Theme-Namen ändern:

Beispiel

{
  "theme": "light"
}

Benutzerdefinierte Themes erstellen

Erstellen Sie zuerst das Theme-Verzeichnis und die Datei:

mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json

Definieren Sie dann die Theme-Datei. Das Folgende ist ein vollständiges Beispiel für ein benutzerdefiniertes Theme:

Beispiel

{
  "name": "my-theme",
  "vars": {
    "blue": "#0066cc",
    "gray": 242,
    "orange": "#ffaa00",
    "green": "#0055AA"
  },
  "colors": {
    "accent": "blue",
    "border": "blue",
    "borderAccent": "#00ffff",
    "borderMuted": "gray",
    "success": "green",
    "error": "#ff0000",
    "warning": "#ffff00",
    "muted": "gray",
    "dim": 240,
    "text": "",
    "thinkingText": "gray",
    "selectedBg": "#2d2d30",
    "userMessageBg": "#2d2d30",
    "userMessageText": "",
    "customMessageBg": "#2d2d30",
    "customMessageText": "",
    "customMessageLabel": "blue",
    "toolPendingBg": "#1e1e2e",
    "toolSuccessBg": "#1e2e1e",
    "toolErrorBg": "#2e1e1e",
    "toolTitle": "blue",
    "toolOutput": "",
    "mdHeading": "orange",
    "mdLink": "blue",
    "mdLinkUrl": "gray",
    "mdCode": "#00ffff",
    "mdCodeBlock": "",
    "mdCodeBlockBorder": "gray",
    "mdQuote": "gray",
    "mdQuoteBorder": "gray",
    "mdHr": "gray",
    "mdListBullet": "#00ffff",
    "toolDiffAdded": "green",
    "toolDiffRemoved": "#ff0000",
    "toolDiffContext": "gray",
    "syntaxComment": "gray",
    "syntaxKeyword": "blue",
    "syntaxFunction": "#00aaff",
    "syntaxVariable": "orange",
    "syntaxString": "green",
    "syntaxNumber": "#ff00ff",
    "syntaxType": "#00aaff",
    "syntaxOperator": "blue",
    "syntaxPunctuation": "gray",
    "thinkingOff": "gray",
    "thinkingMinimal": "blue",
    "thinkingLow": "#00aaff",
    "thinkingMedium": "#00ffff",
    "thinkingHigh": "#ff00ff",
    "thinkingXhigh": "#ff0000",
    "thinkingMax": "#ff0088",
    "bashMode": "orange"
  }
}

Aktiviere dann dein Theme in settings.json:

Beispiel

{
  "theme": "my-theme"
}

Wenn du die aktuell verwendete benutzerdefinierte Theme-Datei bearbeitest, lädt Pi Agent das Theme automatisch per Hot-Reload neu, sodass du Änderungen sofort ohne weiteres Zutun siehst.


Ladeorte für Theme-Dateien

Pi Agent sucht Theme-Dateien an den folgenden Orten.

Themes, die an unterschiedlichen Orten abgelegt werden, haben unterschiedliche Sichtbarkeitsbereiche und Ladebedingungen.

OrtGeltungsbereich
Integriertdark, light immer verfügbar
~/.pi/agent/themes/*.jsonGlobale Themes, für alle Projekte verfügbar
.pi/themes/*.jsonProjektthemen, die erst geladen werden, nachdem dem Projekt vertraut wurde
Pi-Paketethemes/-Verzeichnis im Paket
--theme pathVorübergehend über die Kommandozeile geladen

Farbwertformate

Pi Agent unterstützt vier Farbwertformate:

FormatBeispielBeschreibung
Hex-Farbe"#ff0000"6-stellige hexadezimale RGB-Farbe
256-Farben-Palette39xterm-256-Farben-Palette-Index (0-255)
Variablenreferenz"blue"Verweist auf eine in vars definierte Variable
Terminal-Standardfarbe""Verwendet die Standard-Vordergrund-/Hintergrundfarbe des Terminals

Der Abschnitt vars wird verwendet, um wiederverwendbare Farbvariablen zu definieren, auf die in colors namentlich verwiesen wird.

Nachdem die Primärfarben in Variablen extrahiert wurden, erfordert eine Änderung des Farbschemas nur die Bearbeitung an einer Stelle, was die Pflege des Themes erleichtert.


Farb-Token-Kategorien

Jedes Token in colors entspricht der Farbe einer Kategorie von Elementen in der Oberfläche.

Nachfolgend sind alle Token nach Zweck in sechs Kategorien unterteilt, um das Nachschlagen zu erleichtern.

Kern-UI (11)

Diese Gruppe steuert die Farben grundlegender Oberflächenelemente wie Editor und Statusleiste.

TokenZweck
accentPrimärfarbe (Logo, ausgewählte Elemente, Cursor)
borderNormaler Rahmen
borderAccentHervorhebungsrahmen
borderMutedWeicher Rahmen für den Editorbereich
ErfolgErfolgsstatus
errorFehlerstatus
warningWarnstatus
mutedSekundärtext
dimTertiärtext (noch weniger hervorgehoben)
textStandardtextfarbe (normalerweise leer gelassen)
thinkingTextText des KI-Schlussfolgerungsprozesses

Hintergrund & Inhalt (11 erforderlich + 3 optional)

Diese Gruppe steuert den Hintergrund und den Text von ausgewählten Elementen, Nachrichtenblasen und Tool-Ausgabebereichen.

TokenZweck
selectedBgHintergrund des ausgewählten Elements (aktueller Eintrag in der Liste)
userMessageBgHintergrund der Benutzernachricht
userMessageTextText der Benutzernachricht
customMessageBgHintergrund der erweiterten Nachricht
customMessageTextText der erweiterten Nachricht
customMessageLabelTitel-Tag-Farbe für erweiterte Nachrichten
toolPendingBgHintergrund während der Tool-Ausführung
toolSuccessBgHintergrund bei erfolgreicher Tool-Ausführung
toolErrorBgHintergrund bei fehlgeschlagener Tool-Ausführung
toolTitleTiteltext der Tool-Karte
toolOutputTool-Ausgabetext
scrollbarThumbFarbe des Scrollbar-Daumens im Vollbildmodus (optional, fällt auf selectedBg zurück, wenn nicht definiert)
searchMatchBgHintergrund für Suchtreffer (optional, fällt auf selectedBg zurück, wenn nicht definiert)
searchMatchTextText für Suchtreffer (optional, fällt auf text zurück, wenn nicht definiert)

Markdown-Darstellung (10)

Diese Gruppe steuert die Farben der Markdown-Elemente in KI-Antworten.

TokenZweck
mdHeadingÜberschrift
mdLinkLinktext
mdLinkUrlLink-URL-Adresse
mdCodeInline-Code
mdCodeBlockCodeblock-Inhalt
mdCodeBlockBorderCodeblock-Rahmen
mdQuoteBlockzitat-Text
mdQuoteBorderBlockzitat-Rahmen
mdHrTrennlinie
mdListBulletListenmarker

Syntaxhervorhebung (9)

Diese Gruppe steuert die Farben der Syntaxhervorhebung innerhalb von Codeblöcken.

TokenZweck
syntaxCommentKommentar
syntaxKeywordSchlüsselwort
syntaxFunctionFunktionsname
syntaxVariableVariablenname
syntaxStringString
syntaxNumberNumber
syntaxTypeType
syntaxOperatorOperator
syntaxPunctuationInterpunktion

Rahmen der Reasoning-Stufen (7)

Diese Gruppe steuert die Indikatorfarbe der aktuellen Reasoning-Stufe am Editor-Rand.

TokenEntsprechende Stufe
thinkingOffReasoning aus
thinkingMinimalMinimales Reasoning
thinkingLowGeringes Reasoning
thinkingMediumMittleres Reasoning
thinkingHighHohes Reasoning
thinkingXhighExtrahohes Reasoning
thinkingMaxMaximales Reasoning (optional)

thinkingMax ist ein optionales Token. Wenn es nicht definiert ist, wird auf die Farbe von thinkingXhigh zurückgegriffen.

Diff & Bash-Farben (4)

Diese Gruppe steuert die Diff-Hervorhebung und die Prompt-Farben im Bash-Modus — diejenigen, die Sie beim Bearbeiten von Code am häufigsten sehen.

TokenZweck
toolDiffAddedHinzugefügte Diff-Zeilen (normalerweise grün)
toolDiffRemovedEntfernte Diff-Zeilen (normalerweise rot)
toolDiffContextDiff-Kontextzeilen (dezent halten)
bashModePrompt-Farbe im Bash-Modus

HTML-Exportfarben

Wenn Sie /export verwenden, um eine Sitzung als HTML zu exportieren, können Sie im Theme Farben für die exportierte Seite definieren:

Beispiel

{
  "export": {
    "pageBg": "#18181e",
    "cardBg": "#1e1e24",
    "infoBg": "#3c3728"
  }
}

Wenn die Exportkonfiguration weggelassen wird, leitet die exportierte Seite Farben automatisch von userMessageBg ab.


Tipps zur Theme-Erstellung

Die folgenden Tipps helfen dabei, dass sich dein benutzerdefiniertes Theme in verschiedenen Terminals konsistent verhält.

  • Dunkle Terminals: Verwende helle, gesättigte Farben mit ausreichend hohem Kontrast
  • Helle Terminals: Verwende tiefere, weichere Farben; der Kontrast kann entsprechend verringert werden
  • Farbharmonie: Orientiere dich an ausgereiften Farbschemata wie Nord, Gruvbox und Tokyo Night als Grundlage
  • Gründlich testenStelle die korrekte Darstellung über verschiedene Nachrichtentypen, Tool-Zustände, Markdown-Inhalte und langen Textumbruch hinweg sicher
Andere Erweiterungen