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 opi.themesentradas enpackage.json - Configuraciones:
themesmatriz 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
- Crea un archivo de tema:
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json- 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"
}
}- 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": "",
...
}
}namees obligatorio, debe ser único y no debe contener/.varses opcional. Defina colores reutilizables aquí y luego haga referencia a ellos encolors.colorsdebe definir los 51 tokens requeridos.thinkingMaxes opcional y vuelve a serthinkingXhigh;scrollbarThumbes opcional y vuelve a serselectedBg.
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 + Bdonde 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: