Pi için yapılandırma, özelleştirme, platform kurulumu ve API referansları.

Temalar

pi temalar oluşturabilir. Kurulumunuz için bir tane oluşturmasını isteyin.

Temalar, TUI için renkleri tanımlayan JSON dosyalardır.

İçindekiler

Konumlar

Pi temaları şuradan yükler:

  • Dahili: dark, light
  • Küresel: ~/.pi/agent/themes/*.json
  • Proje: .pi/themes/*.json (yalnızca projeye güvenildikten sonra)
  • Paketler: themes/ dizinler veya package.json içindeki pi.themes girişler
  • Ayarlar: themes dosya veya dizin içeren dizi
  • CLI: --theme <path> (tekrarlanabilir)

--no-themes ile keşfi devre dışı bırakın.

Tema Seçme

/settings veya settings.json aracılığıyla bir tema seçin:

{
  "theme": "my-theme"
}

İlk çalıştırmada pi, terminal arka planınızı algılar ve varsayılan olarak dark veya light olur.

Özel Tema Oluşturma

  1. Bir tema dosyası oluşturun:
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json
  1. Temayı gerekli tüm renklerle tanımlayın (bkz. Color Tokens):
{
  "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
  "name": "my-theme",
  "vars": {
    "primary": "#00aaff",
    "secondary": 242
  },
  "colors": {
    "accent": "primary",
    "border": "primary",
    "borderAccent": "#00ffff",
    "borderMuted": "secondary",
    "success": "#00ff00",
    "error": "#ff0000",
    "warning": "#ffff00",
    "muted": "secondary",
    "dim": 240,
    "text": "",
    "thinkingText": "secondary",
    "selectedBg": "#2d2d30",
    "scrollbarThumb": "#555566",
    "userMessageBg": "#2d2d30",
    "userMessageText": "",
    "customMessageBg": "#2d2d30",
    "customMessageText": "",
    "customMessageLabel": "primary",
    "toolPendingBg": "#1e1e2e",
    "toolSuccessBg": "#1e2e1e",
    "toolErrorBg": "#2e1e1e",
    "toolTitle": "primary",
    "toolOutput": "",
    "mdHeading": "#ffaa00",
    "mdLink": "primary",
    "mdLinkUrl": "secondary",
    "mdCode": "#00ffff",
    "mdCodeBlock": "",
    "mdCodeBlockBorder": "secondary",
    "mdQuote": "secondary",
    "mdQuoteBorder": "secondary",
    "mdHr": "secondary",
    "mdListBullet": "#00ffff",
    "toolDiffAdded": "#00ff00",
    "toolDiffRemoved": "#ff0000",
    "toolDiffContext": "secondary",
    "syntaxComment": "secondary",
    "syntaxKeyword": "primary",
    "syntaxFunction": "#00aaff",
    "syntaxVariable": "#ffaa00",
    "syntaxString": "#00ff00",
    "syntaxNumber": "#ff00ff",
    "syntaxType": "#00aaff",
    "syntaxOperator": "primary",
    "syntaxPunctuation": "secondary",
    "thinkingOff": "secondary",
    "thinkingMinimal": "primary",
    "thinkingLow": "#00aaff",
    "thinkingMedium": "#00ffff",
    "thinkingHigh": "#ff00ff",
    "thinkingXhigh": "#ff0000",
    "thinkingMax": "#ff0088",
    "bashMode": "#ffaa00"
  }
}
  1. /settings ile temayı seçin.

Çalışırken yeniden yükleme: Şu ​​anda etkin olan özel tema dosyasını düzenlediğinizde, pi anında görsel geri bildirim için dosyayı otomatik olarak yeniden yükler.

Tema Formatı

{
  "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
  "name": "my-theme",
  "vars": {
    "blue": "#0066cc",
    "gray": 242
  },
  "colors": {
    "accent": "blue",
    "muted": "gray",
    "text": "",
    ...
  }
}
  • name gereklidir, benzersiz olmalı ve / içermemelidir.
  • vars isteğe bağlıdır. Yeniden kullanılabilir renkleri burada tanımlayın ve ardından colors'de bunlara referans verin.
  • colors gerekli 51 jetonun tamamını tanımlamalıdır. thinkingMax isteğe bağlıdır ve thinkingXhigh'ye geri döner; scrollbarThumb isteğe bağlıdır ve selectedBg'ye geri döner.

$schema alanı, düzenleyicinin otomatik tamamlamasını ve doğrulamasını sağlar.

Renk Jetonları

Her tema gerekli 51 renk jetonunun tümünü tanımlamalıdır. thinkingMax ve scrollbarThumb mevcut temalarla uyumluluk açısından isteğe bağlıdır; atlandığında sırasıyla thinkingXhigh ve selectedBg'yi kullanırlar.

Çekirdek kullanıcı arayüzü (11 renk)

Jeton Amaç
accent Birincil vurgu (logo, seçilen öğeler, imleç)
border Normal sınırlar
borderAccent Vurgulanan kenarlıklar
borderMuted İnce kenarlıklar (editör)
success Başarı durumları
error Hata durumları
warning Uyarı durumları
muted İkincil metin
dim Üçüncül metin
text Varsayılan metin (genellikle "")
thinkingText Düşünme bloğu metni

Arka Planlar ve İçerik (11 gerekli, 1 isteğe bağlı)

Jeton Amaç
selectedBg Seçilen satır arka planı
scrollbarThumb Tam ekran kaydırma çubuğu başparmak arka planı; isteğe bağlı, selectedBg'ye geri döner
userMessageBg Kullanıcı mesajı arka planı
userMessageText Kullanıcı mesaj metni
customMessageBg Uzantı mesajı arka planı
customMessageText Uzantı mesaj metni
customMessageLabel Uzantı mesaj etiketi
toolPendingBg Araç kutusu (beklemede)
toolSuccessBg Alet kutusu (başarı)
toolErrorBg Alet kutusu (hata)
toolTitle Araç başlığı
toolOutput Araç çıktı metni

Markdown (10 renk)

Jeton Amaç
mdHeading Başlıklar
mdLink Bağlantı metni
mdLinkUrl Bağlantı URL'si
mdCode Satır içi kod
mdCodeBlock Kod bloğu içeriği
mdCodeBlockBorder Kod bloğu çitleri
mdQuote Blok alıntı metni
mdQuoteBorder Blok alıntı sınırı
mdHr Yatay kural
mdListBullet Madde işaretlerini listele

Araç Farkları (3 renk)

Jeton Amaç
toolDiffAdded Eklenen satırlar
toolDiffRemoved Kaldırılan satırlar
toolDiffContext Bağlam satırları

Sözdizimi Vurgulama (9 renk)

Jeton Amaç
syntaxComment Yorumlar
syntaxKeyword Anahtar Kelimeler
syntaxFunction İşlev adları
syntaxVariable Değişkenler
syntaxString Dizeler
syntaxNumber Sayılar
syntaxType Türler
syntaxOperator Operatörler
syntaxPunctuation Noktalama

Düşünme Düzeyi Sınırları (6 gerekli, 1 isteğe bağlı)

Düşünme düzeyini gösteren düzenleyici kenarlık renkleri (inceden göze çarpana doğru görsel hiyerarşi):

Jeton Amaç
thinkingOff Düşünmek
thinkingMinimal Minimal düşünme
thinkingLow Düşük düşünme
thinkingMedium Orta düşünme
thinkingHigh Yüksek düşünme
thinkingXhigh Ekstra yüksek düşünme
thinkingMax Maksimum düşünme; isteğe bağlı, thinkingXhigh'ye geri döner

Bash Modu (1 renk)

Jeton Amaç
bashMode bash modunda düzenleyici kenarlığı (! öneki)

HTML Dışa Aktarma (isteğe bağlı)

export bölümü, /export HTML çıktısının renklerini kontrol eder. Atlanırsa renkler userMessageBg'den türetilir.

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

Renk Değerleri

Dört format desteklenir:

Biçim Örnek Tanım
Altıgen "#ff0000" 6 haneli altıgen RGB
256 renkli 39 xterm 256 renk paleti dizini (0-255)
Değişken "primary" vars girişine referans
Varsayılan "" Terminalin varsayılan rengi

256 Renk Paleti

  • 0-15: Temel ANSI renkleri (terminale bağlı)
  • 16-231: 6×6×6 RGB küp (16 + 36×R + 6×G + B burada R,G,B 0-5'tir)
  • 232-255: Gri tonlamalı rampa

Terminal Uyumluluğu

Pi 24 bit RGB renkleri kullanır. Çoğu modern terminal bunu destekler (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). Yalnızca 256 renk desteğine sahip eski terminaller için pi, en yakın yaklaşıma geri döner.

Truecolor desteğini kontrol edin:

echo $COLORTERM  # Should output "truecolor" or "24bit"

İpuçları

Koyu terminaller: Daha yüksek kontrastlı, parlak, doygun renkler kullanın.

Açık terminaller: Daha düşük kontrastlı, daha koyu, yumuşak renkler kullanın.

Renk uyumu: Temel bir paletle başlayın (Nord, Gruvbox, Tokyo Night), onu vars ile tanımlayın ve tutarlı bir şekilde referans verin.

Test: Farklı mesaj türleri, araç durumları, işaretleme içeriği ve uzun sarılmış metinlerle temanızı kontrol edin.

VS Kodu: Doğru renkler için terminal.integrated.minimumContrastRatio1 olarak ayarlayın.

Örnekler

Yerleşik temalara bakın: