Configuración, personalización, ajustes de plataforma y referencias de API para Pi.

Temas

pi puede crear temas. Pídale que cree uno para su configuración.

Los temas son archivos JSON que definen colores para TUI.

Tabla de contenido

Ubicaciones

Pi carga temas de:

  • Incorporado: dark, light
  • Global: ~/.pi/agent/themes/*.json
  • Proyecto: .pi/themes/*.json (solo después de que se confíe en el proyecto)
  • Paquetes: themes/ directorios o pi.themes entradas en package.json
  • Configuraciones: themes matriz con archivos o directorios
  • CLI: --theme <path> (repetible)

Desactive el descubrimiento con --no-themes.

Seleccionar un tema

Seleccione un tema a través de /settings o en settings.json:

{
  "theme": "my-theme"
}

En la primera ejecución, pi detecta el fondo de su terminal y su valor predeterminado es dark o light.

Crear un tema personalizado

  1. Crea un archivo de tema:
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json
  1. Defina el tema con todos los colores requeridos (ver 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. Seleccione el tema mediante /settings.

Recarga en caliente: Cuando editas el archivo de tema personalizado actualmente activo, pi lo recarga automáticamente para obtener información visual inmediata.

Formato del tema

{
  "$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 es obligatorio, debe ser único y no debe contener /.
  • vars es opcional. Defina colores reutilizables aquí y luego haga referencia a ellos en colors.
  • colors debe definir los 51 tokens requeridos. thinkingMax es opcional y vuelve a ser thinkingXhigh; scrollbarThumb es opcional y vuelve a ser selectedBg.

El campo $schema permite la validación y el autocompletado del editor.

Fichas de colores

Cada tema debe definir los 51 tokens de color requeridos. thinkingMax y scrollbarThumb son opcionales por compatibilidad con temas existentes; cuando se omiten, usan thinkingXhigh y selectedBg, respectivamente.

Interfaz de usuario principal (11 colores)

Simbólico Objetivo
accent Acento principal (logotipo, elementos seleccionados, cursor)
border Fronteras normales
borderAccent Bordes resaltados
borderMuted Fronteras sutiles (editor)
success Estados de éxito
error Estados de error
warning Estados de advertencia
muted Texto secundario
dim texto terciario
text Texto predeterminado (normalmente "")
thinkingText Texto de bloque de pensamiento

Fondos y contenido (11 obligatorios, 1 opcional)

Simbólico Objetivo
selectedBg Fondo de línea seleccionada
scrollbarThumb Fondo del pulgar de la barra de desplazamiento de pantalla completa; opcional, vuelve a selectedBg
userMessageBg Fondo del mensaje de usuario
userMessageText Texto del mensaje de usuario
customMessageBg Fondo del mensaje de extensión
customMessageText Texto del mensaje de extensión
customMessageLabel Etiqueta de mensaje de extensión
toolPendingBg Caja de herramientas (pendiente)
toolSuccessBg Caja de herramientas (éxito)
toolErrorBg Caja de herramientas (error)
toolTitle Título de la herramienta
toolOutput Texto de salida de herramienta

Markdown (10 colores)

Simbólico Objetivo
mdHeading Encabezamientos
mdLink Texto del enlace
mdLinkUrl URL del enlace
mdCode código en línea
mdCodeBlock Contenido del bloque de código
mdCodeBlockBorder Vallas de bloques de código
mdQuote Texto de cita en bloque
mdQuoteBorder Borde de cita en bloque
mdHr regla horizontal
mdListBullet Lista de viñetas

Diferencias de herramientas (3 colores)

Simbólico Objetivo
toolDiffAdded Líneas agregadas
toolDiffRemoved Líneas eliminadas
toolDiffContext Líneas de contexto

Resaltado de sintaxis (9 colores)

Simbólico Objetivo
syntaxComment Comentarios
syntaxKeyword Palabras clave
syntaxFunction Nombres de funciones
syntaxVariable variables
syntaxString Instrumentos de cuerda
syntaxNumber Números
syntaxType Tipos
syntaxOperator Operadores
syntaxPunctuation Puntuación

Bordes del nivel de pensamiento (6 obligatorios, 1 opcional)

Colores del borde del editor que indican el nivel de pensamiento (jerarquía visual de sutil a prominente):

Simbólico Objetivo
thinkingOff Pensando en
thinkingMinimal Pensamiento mínimo
thinkingLow pensamiento bajo
thinkingMedium Pensamiento medio
thinkingHigh pensamiento elevado
thinkingXhigh Pensamiento extra elevado
thinkingMax Pensamiento máximo; opcional, vuelve a thinkingXhigh

Modo Bash (1 color)

Simbólico Objetivo
bashMode Borde del editor en modo bash (prefijo !)

Exportación HTML (opcional)

La sección export controla los colores para la salida HTML /export. Si se omite, los colores se derivan de userMessageBg.

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

Valores de color

Se admiten cuatro formatos:

Formato Ejemplo Descripción
Maleficio "#ff0000" RGB hexadecimal de 6 dígitos
256 colores 39 Índice de paleta de 256 colores xterm (0-255)
Variable "primary" Referencia a una entrada vars
Por defecto "" Color predeterminado del terminal

Paleta de 256 colores

  • 0-15: Colores ANSI básicos (depende del terminal)
  • 16-231: cubo RGB de 6×6×6 (16 + 36×R + 6×G + B donde R,G,B son 0-5)
  • 232-255: rampa en escala de grises

Compatibilidad de terminales

Pi utiliza colores RGB de 24 bits. La mayoría de los terminales modernos lo admiten (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). Para terminales más antiguos que solo admiten 256 colores, pi vuelve a la aproximación más cercana.

Verifique el soporte de color verdadero:

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

Consejos

Terminales oscuros: Utilice colores brillantes y saturados con mayor contraste.

Terminales claros: Utilice colores más oscuros y apagados con menor contraste.

Armonía de color: Comience con una paleta base (Nord, Gruvbox, Tokyo Night), defínala en vars y haga referencia de manera consistente.

Prueba: Verifique su tema con diferentes tipos de mensajes, estados de herramientas, contenido de rebajas y texto largo y ajustado.

Código VS: Establezca terminal.integrated.minimumContrastRatio en 1 para obtener colores precisos.

Ejemplos

Vea los temas integrados: