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

Ajustes

Pi utiliza archivos de configuración JSON con la configuración del proyecto anulando la configuración global.

Ubicación Alcance
~/.pi/agent/settings.json Global (todos los proyectos)
.pi/settings.json Proyecto (directorio actual)

Edite directamente o use /settings para opciones comunes.

Confianza del proyecto

En el inicio interactivo, pi pregunta antes de confiar en una carpeta de proyecto que contiene configuraciones, recursos o proyecto local del proyecto .agents/skills y no tiene ninguna decisión guardada para la carpeta o una carpeta principal en ~/.pi/agent/trust.json. Confiar en un proyecto permite a pi cargar recursos .pi/settings.json y .pi, instalar paquetes de proyecto faltantes y ejecutar extensiones de proyecto.

Los modos no interactivos (-p, --mode json y --mode rpc) no muestran un mensaje de confianza. Sin una decisión de confianza guardada aplicable, usan defaultProjectTrust de la configuración global: ask (predeterminado) y never ignoran esos recursos del proyecto, mientras que always confía en ellos. Pase --approve/-a o --no-approve/-na para anular la confianza del proyecto durante una ejecución.

Si no se aplica ninguna extensión o decisión guardada, defaultProjectTrust controla el comportamiento de reserva. Configúrelo en "ask", "always" o "never" en ~/.pi/agent/settings.json, o cámbielo con /settings.

Los comandos pi config y del paquete usan el mismo flujo de confianza del proyecto, excepto que pi update nunca lo solicita. Pase --approve para confiar en la configuración local del proyecto para un comando o --no-approve para ignorarlos.

Utilice /trust en modo interactivo para guardar una decisión de confianza del proyecto para sesiones futuras, incluida la confianza para la carpeta principal inmediata. Escribe solo ~/.pi/agent/trust.json; la sesión actual no se recarga, así que reinicie pi para que los cambios surtan efecto.

Todas las configuraciones

Modelo y pensamiento

Configuración Tipo Por defecto Descripción
defaultProvider string - Proveedor predeterminado (por ejemplo, "anthropic", "openai")
defaultModel string - ID de modelo predeterminado
defaultThinkingLevel string - "off", "minimal", "low", "medium", "high", "xhigh", "max"
hideThinkingBlock boolean false Ocultar bloques de pensamiento en la salida
showCacheMissNotices boolean false Mostrar avisos de transcripción en caso de errores significativos en la caché de avisos
thinkingBudgets object - Presupuestos de tokens personalizados por nivel de pensamiento

thinkingBudgets

{
  "thinkingBudgets": {
    "minimal": 1024,
    "low": 4096,
    "medium": 10240,
    "high": 32768
  }
}

Interfaz de usuario y pantalla

Configuración Tipo Por defecto Descripción
theme string "dark" Nombre del tema ("dark", "light" o personalizado)
externalEditor string $VISUAL, luego $EDITOR, luego Bloc de notas en Windows o nano en otro lugar Comando para Ctrl+G editor externo; tiene prioridad sobre las variables de entorno
quietStartup boolean false Ocultar encabezado de inicio
defaultProjectTrust string "ask" Comportamiento de confianza del proyecto alternativo: "ask", "always" o "never". Sólo configuración global
collapseChangelog boolean false Mostrar registro de cambios condensado después de las actualizaciones
enableInstallTelemetry boolean true Envíe un ping anónimo de instalación/actualización de la versión después de la primera instalación o de las actualizaciones detectadas por el registro de cambios. Esto no controla las comprobaciones de actualizaciones.
enableAnalytics boolean false Opte por compartir datos analíticos. Actualmente solo se solicita durante la configuración experimental por primera vez (PI_EXPERIMENTAL=1)
trackingId string - Identificador de seguimiento de análisis, generado cuando enableAnalytics está activado
doubleEscapeAction string "tree" Acción para doble escape: "tree", "fork" o "none"
treeFilterMode string "default" Filtro predeterminado para /tree: "default", "no-tools", "user-only", "labeled-only", "all"
editorPaddingX number 0 Relleno horizontal para el editor de entrada (0-3)
outputPad number 1 Relleno horizontal para mensajes de usuario, mensajes de asistente y pensamiento (0 o 1)
autocompleteMaxVisible number 5 Máximo de elementos visibles en el menú desplegable de autocompletar (3-20)
showHardwareCursor boolean false Muestre el cursor del terminal mientras TUI lo posiciona para soporte IME
tuiMode string "regular" Modo interactivo TUI: "regular" o experimental "fullscreen". Los cambios de /settings se aplican inmediatamente; --tui-mode anula esta configuración al inicio
fullscreenExitOutput string "transcript" Salida de salida en pantalla completa: "transcript" imprime la transcripción final y la sugerencia de reanudación, mientras que "resume-hint" restaura la pantalla anterior e imprime solo la sugerencia de reanudación. No tiene ningún efecto en el modo normal TUI
fullscreenScrollbar string "auto" Barra de desplazamiento de transcripción de pantalla completa: "auto" la muestra temporalmente mientras se desplaza, "always" reserva la columna más a la derecha y la mantiene visible, y "hidden" la oculta. No tiene ningún efecto en el modo normal TUI

Para VS Code, incluya --wait para que pi se reanude después de que salga el editor:

{
  "externalEditor": "code --wait"
}

Comprobaciones de telemetría y actualización.

enableInstallTelemetry solo controla el ping anónimo de instalación/actualización a https://pi.dev/api/report-install. La exclusión voluntaria de la telemetría no deshabilita las comprobaciones de actualizaciones; Pi aún puede recuperar https://pi.dev/api/latest-version para buscar la última versión.

Configure PI_SKIP_VERSION_CHECK=1 para deshabilitar la verificación de actualización de la versión Pi. Utilice --offline o PI_OFFLINE=1 para deshabilitar todas las operaciones de red de inicio que se describen aquí, incluidas las comprobaciones de actualización, las comprobaciones de actualización de paquetes y la telemetría de instalación/actualización.

Red

Configuración Tipo Por defecto Descripción
httpProxy string - La URL del proxy HTTP se aplica como HTTP_PROXY y HTTPS_PROXY. Sólo configuración global.
{
  "httpProxy": "http://127.0.0.1:7890"
}

Advertencias

Configuración Tipo Por defecto Descripción
warnings.anthropicExtraUsage boolean true Mostrar una advertencia cuando la autenticación de suscripción de Anthropic pueda utilizar un uso adicional pago
{
  "warnings": {
    "anthropicExtraUsage": false
  }
}

Compactación

Configuración Tipo Por defecto Descripción
compaction.enabled boolean true Habilitar la autocompactación
compaction.reserveTokens number 16384 Tokens reservados para la respuesta LLM
compaction.keepRecentTokens number 20000 Tokens recientes para conservar (no resumidos)
{
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  }
}

Resumen de ramas

Configuración Tipo Por defecto Descripción
branchSummary.reserveTokens number 16384 Tokens reservados para el resumen de ramas
branchSummary.skipPrompt boolean false Saltar "¿Resumir rama?" mensaje en /tree navegación (el valor predeterminado es sin resumen)

Reintentos

Configuración Tipo Por defecto Descripción
retry.enabled boolean true Habilite el reintento automático a nivel de agente en caso de errores transitorios
retry.maxRetries number 3 Número máximo de reintentos a nivel de agente
retry.baseDelayMs number 2000 Retraso base para retroceso exponencial a nivel de agente (2s, 4s, 8s)
retry.provider.timeoutMs number SDK predeterminado Proveedor/SDK tiempo de espera de solicitud en milisegundos
retry.provider.maxRetries number 0 Proveedor/SDK reintentos
retry.provider.maxRetryDelayMs number 60000 Retraso máximo solicitado por el servidor antes de fallar (60 s)

Cuando un proveedor solicita un retraso de reintento superior a retry.provider.maxRetryDelayMs, la solicitud falla inmediatamente con un error informativo en lugar de esperar en silencio. Configúrelo en 0 para desactivar el límite.

Mantenga retry.provider.maxRetries en 0 a menos que se necesiten explícitamente reintentos a nivel de proveedor. Configurarlo por encima de 0 puede hacer que SDK/los reintentos del proveedor manejen errores de límite de uso antes de que Pi los vea, lo que puede bloquear al agente hasta que se restablezca la cuota del proveedor en algunas circunstancias.

{
  "retry": {
    "enabled": true,
    "maxRetries": 3,
    "baseDelayMs": 2000,
    "provider": {
      "timeoutMs": 3600000,
      "maxRetries": 0,
      "maxRetryDelayMs": 60000
    }
  }
}

Entrega de mensajes

Configuración Tipo Por defecto Descripción
steeringMode string "one-at-a-time" Cómo se envían los mensajes de dirección: "all" o "one-at-a-time"
followUpMode string "one-at-a-time" Cómo se envían los mensajes de seguimiento: "all" o "one-at-a-time"
transport string "auto" Transporte preferido para proveedores que admiten múltiples transportes: "sse", "websocket", "websocket-cached" o "auto"
httpIdleTimeoutMs number 300000 Tiempo de espera de inactividad del encabezado/cuerpo HTTP en milisegundos, también utilizado por proveedores con tiempos de espera de inactividad de flujo explícitos. Establezca en 0 para desactivar.
websocketConnectTimeoutMs number 15000 Tiempo de espera del protocolo de enlace de apertura/conexión de WebSocket en milisegundos para proveedores que admiten transportes de WebSocket. Establezca en 0 para desactivar.

Terminales e imágenes

Configuración Tipo Por defecto Descripción
terminal.showImages boolean true Mostrar imágenes en la terminal (si es compatible)
terminal.imageWidthCells number 60 Ancho de imagen en línea preferido en celdas terminales
terminal.clearOnShrink boolean false Borrar filas vacías cuando el contenido se reduce (puede causar parpadeo)
images.autoResize boolean true Cambiar el tamaño de las imágenes a 2000x2000 máx. Se aplica a los archivos adjuntos @file, read y a las imágenes devueltas por las herramientas
images.blockImages boolean false Bloquear todas las imágenes para que no se envíen a LLM

Shell

Configuración Tipo Por defecto Descripción
shellPath string - Ruta de shell personalizada (por ejemplo, para Cygwin en Windows); admite un ~ inicial para el directorio de inicio
shellCommandPrefix string - Prefijo para cada comando bash (por ejemplo, "shopt -s expand_aliases")
npmCommand string[] - Comando argv utilizado para npm operaciones de búsqueda/instalación de paquetes (por ejemplo, ["mise", "exec", "node@20", "--", "npm"])
{
  "npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}

npmCommand se usa para todas las operaciones del administrador de paquetes npm, incluidas instalaciones, desinstalaciones e instalaciones de dependencia dentro de paquetes git. Los paquetes npm de ámbito de usuario se instalan en ~/.pi/agent/npm/; Los paquetes npm con alcance de proyecto se instalan en .pi/npm/. Utilice entradas de estilo argv exactamente como se debe iniciar el proceso. Cuando se configura npmCommand, las instalaciones de dependencia de paquetes git usan install simple para evitar indicadores específicos de npm en contenedores o administradores de paquetes alternativos.

Sesiones

Configuración Tipo Por defecto Descripción
sessionDir string - Directorio donde se almacenan los archivos de sesión. Acepta rutas absolutas o relativas, más ~.
{ "sessionDir": ".pi/sessions" }

Cuando varias fuentes especifican un directorio de sesión, la prioridad es --session-dir, PI_CODING_AGENT_SESSION_DIR y luego sessionDir en settings.json.

Ciclo de modelos

Configuración Tipo Por defecto Descripción
enabledModels string[] - Patrones de modelo para ciclos Ctrl+P (mismo formato que la bandera --models CLI)
{
  "enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}

Markdown

Configuración Tipo Por defecto Descripción
markdown.codeBlockIndent string " " Sangría para bloques de código
markdown.mermaid string "streaming" Modo de renderizado Mermaid: "off", "final" o "streaming"

Recursos

Estas configuraciones definen desde dónde cargar extensiones, habilidades, indicaciones y temas.

Las rutas en ~/.pi/agent/settings.json se resuelven en relación con ~/.pi/agent. Las rutas en .pi/settings.json se resuelven en relación con .pi. Se admiten rutas absolutas y ~.

Configuración Tipo Por defecto Descripción
packages array [] npm/git paquetes desde los que cargar recursos
extensions string[] [] Rutas o directorios de archivos de extensión locales
skills string[] [] Rutas o directorios de archivos de habilidades locales
prompts string[] [] Rutas o directorios de plantillas de mensajes locales
themes string[] [] Rutas o directorios de archivos de temas locales
enableSkillCommands boolean true Registrar habilidades como comandos /skill:name

Las matrices admiten patrones globales y exclusiones. Utilice !pattern para excluir. Utilice +path para forzar la inclusión de una ruta exacta y -path para forzar la exclusión de una ruta exacta.

paquetes

El formulario de cadena carga todos los recursos de un paquete:

{
  "packages": ["pi-skills", "@org/my-extension"]
}

El formulario de objeto filtra qué recursos cargar:

{
  "packages": [
    {
      "source": "pi-skills",
      "skills": ["brave-search", "transcribe"],
      "extensions": []
    }
  ]
}

Consulte packages.md para obtener detalles sobre la administración de paquetes.

Ejemplo

{
  "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"]
}

Anulaciones de proyectos

La configuración del proyecto (.pi/settings.json) anula la configuración global. Los objetos anidados se fusionan:

// ~/.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 }
}