Configuration, personnalisation, paramètres de plateforme et références API pour Pi.

Paramètres

Pi utilise les fichiers de paramètres JSON avec les paramètres du projet remplaçant les paramètres globaux.

Emplacement Portée
~/.pi/agent/settings.json Global (tous les projets)
.pi/settings.json Projet (répertoire actuel)

Modifiez directement ou utilisez /settings pour les options courantes.

Fiducie du projet

Au démarrage interactif, pi demande avant de faire confiance à un dossier de projet qui contient des paramètres locaux du projet, des ressources ou un projet .agents/skills et n'a aucune décision enregistrée pour le dossier ou un dossier parent dans ~/.pi/agent/trust.json. Faire confiance à un projet permet à pi de charger les ressources .pi/settings.json et .pi, d'installer les packages de projet manquants et d'exécuter des extensions de projet.

Les modes non interactifs (-p, --mode json et --mode rpc) n'affichent pas d'invite de confiance. Sans décision de confiance enregistrée applicable, ils utilisent defaultProjectTrust à partir des paramètres globaux: ask (par défaut) et never ignorent ces ressources du projet, tandis que always leur fait confiance. Passez --approve/-a ou --no-approve/-na pour remplacer la confiance du projet pour une exécution.

Si aucune extension ou décision enregistrée ne s'applique, defaultProjectTrust contrôle le comportement de repli. Réglez-le sur "ask", "always" ou "never" dans ~/.pi/agent/settings.json, ou modifiez-le avec /settings.

Les commandes pi config et package utilisent le même flux de confiance du projet, sauf que pi update ne vous invite jamais. Passez --approve pour faire confiance aux paramètres locaux du projet pour une commande ou --no-approve pour les ignorer.

Utilisez /trust en mode interactif pour enregistrer une décision d'approbation de projet pour les sessions futures, y compris l'approbation pour le dossier parent immédiat. Il écrit ~/.pi/agent/trust.json uniquement; la session en cours n'est pas rechargée, alors redémarrez pi pour que les modifications prennent effet.

Tous les paramètres

Modèle et réflexion

Paramètre Taper Défaut Description
defaultProvider chaîne - Fournisseur par défaut (par exemple, "anthropic", "openai")
defaultModel chaîne - ID de modèle par défaut
defaultThinkingLevel chaîne - "off", "minimal", "low", "medium", "high", "xhigh", "max"
hideThinkingBlock booléen false Masquer les blocs de réflexion dans la sortie
showCacheMissNotices booléen false Afficher les notifications de transcription en cas d'échecs importants du cache d'invite
thinkingBudgets objet - Budgets de jetons personnalisés par niveau de réflexion

penserBudgets

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

Interface utilisateur et affichage

Paramètre Taper Défaut Description
theme chaîne "dark" Nom du thème ("dark", "light" ou personnalisé)
externalEditor chaîne $VISUAL, puis $EDITOR, puis Bloc-notes sous Windows ou nano ailleurs Commande pour l'éditeur externe Ctrl+G; a priorité sur les variables d'environnement
quietStartup booléen false Masquer l'en-tête de démarrage
defaultProjectTrust chaîne "ask" Comportement de confiance du projet de secours: "ask", "always" ou "never". Paramètre global uniquement
collapseChangelog booléen false Afficher le journal des modifications condensé après les mises à jour
enableInstallTelemetry booléen true Envoyez un ping anonyme de version d'installation/mise à jour après la première installation ou les mises à jour détectées par le journal des modifications. Cela ne contrôle pas les vérifications de mise à jour
enableAnalytics booléen false Partage de données analytiques opt-in. Actuellement demandé uniquement lors de la première configuration expérimentale (PI_EXPERIMENTAL=1)
trackingId chaîne - Identifiant de suivi Analytics, généré lorsque enableAnalytics est activé
doubleEscapeAction chaîne "tree" Action pour la double évasion: "tree", "fork" ou "none"
treeFilterMode chaîne "default" Filtre par défaut pour /tree: "default", "no-tools", "user-only", "labeled-only", "all"
editorPaddingX nombre 0 Remplissage horizontal pour l'éditeur d'entrée (0-3)
outputPad nombre 1 Remplissage horizontal pour les messages utilisateur, les messages de l'assistant et la réflexion (0 ou 1)
autocompleteMaxVisible nombre 5 Nombre maximum d'éléments visibles dans la liste déroulante de saisie semi-automatique (3-20)
showHardwareCursor booléen false Afficher le curseur du terminal pendant que TUI le positionne pour la prise en charge IME
tuiMode chaîne "regular" Mode interactif TUI: "regular" ou expérimental "fullscreen". Les modifications de /settings s'appliquent immédiatement; --tui-mode remplace ce paramètre au démarrage
fullscreenExitOutput chaîne "transcript" Sortie de sortie plein écran: "transcript" imprime la transcription finale et l'indice de reprise, tandis que "resume-hint" restaure l'écran précédent et imprime uniquement l'indice de reprise. N'a aucun effet en mode normal TUI
fullscreenScrollbar chaîne "auto" Barre de défilement de transcription plein écran: "auto" l'affiche temporairement pendant le défilement, "always" réserve la colonne la plus à droite et la garde visible, et "hidden" la cache. N'a aucun effet en mode normal TUI

Pour VS Code, incluez --wait pour que pi reprenne après la fermeture de l'éditeur:

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

Contrôles de télémétrie et de mise à jour

enableInstallTelemetry contrôle uniquement le ping anonyme d'installation/mise à jour vers https://pi.dev/api/report-install. La désactivation de la télémétrie ne désactive pas les vérifications de mise à jour; Pi peut toujours récupérer https://pi.dev/api/latest-version pour rechercher la dernière version.

Définissez PI_SKIP_VERSION_CHECK=1 pour désactiver la vérification de mise à jour de version Pi. Utilisez --offline ou PI_OFFLINE=1 pour désactiver toutes les opérations réseau de démarrage décrites ici, y compris les vérifications de mise à jour, les vérifications de mise à jour des packages et la télémétrie d'installation/mise à jour.

Réseau

Paramètre Taper Défaut Description
httpProxy chaîne - URL du proxy HTTP appliquée comme HTTP_PROXY et HTTPS_PROXY. Paramètre global uniquement.
{
  "httpProxy": "http://127.0.0.1:7890"
}

Avertissements

Paramètre Taper Défaut Description
warnings.anthropicExtraUsage booléen true Afficher un avertissement lorsque l'authentification de l'abonnement Anthropic peut utiliser une utilisation supplémentaire payante
{
  "warnings": {
    "anthropicExtraUsage": false
  }
}

Compactage

Paramètre Taper Défaut Description
compaction.enabled booléen true Activer le compactage automatique
compaction.reserveTokens nombre 16384 Jetons réservés à la réponse LLM
compaction.keepRecentTokens nombre 20000 Jetons récents à conserver (non résumés)
{
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  }
}

Résumé de la succursale

Paramètre Taper Défaut Description
branchSummary.reserveTokens nombre 16384 Jetons réservés au branch summarization
branchSummary.skipPrompt booléen false Ignorer « Résumer la branche? » invite sur la navigation /tree (par défaut, aucun résumé)

Réessayer

Paramètre Taper Défaut Description
retry.enabled booléen true Activer les nouvelles tentatives automatiques au niveau de l'agent en cas d'erreurs passagères
retry.maxRetries nombre 3 Nombre maximal de nouvelles tentatives au niveau de l'agent
retry.baseDelayMs nombre 2000 Délai de base pour l'intervalle exponentiel au niveau de l'agent (2 s, 4 s, 8 s)
retry.provider.timeoutMs nombre SDK par défaut Fournisseur/SDK délai d'expiration de la demande en millisecondes
retry.provider.maxRetries nombre 0 Fournisseur/SDK nouvelle tentative
retry.provider.maxRetryDelayMs nombre 60000 Délai maximum demandé par le serveur avant échec (60 s)

Lorsqu'un fournisseur demande un délai de nouvelle tentative supérieur à retry.provider.maxRetryDelayMs, la demande échoue immédiatement avec une erreur informative au lieu d'attendre silencieusement. Réglez-le sur 0 pour désactiver la limite.

Conservez retry.provider.maxRetries à 0 à moins que de nouvelles tentatives au niveau du fournisseur ne soient explicitement nécessaires. Le définir au-dessus de 0 peut faire en sorte que SDK/les tentatives du fournisseur traitent les erreurs hors limite d'utilisation avant que Pi ne les voient, ce qui peut bloquer l'agent jusqu'à ce que le quota du fournisseur soit réinitialisé dans certaines circonstances.

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

Livraison des messages

Paramètre Taper Défaut Description
steeringMode chaîne "one-at-a-time" Comment les messages de pilotage sont envoyés: "all" ou "one-at-a-time"
followUpMode chaîne "one-at-a-time" Comment les messages de suivi sont envoyés: "all" ou "one-at-a-time"
transport chaîne "auto" Transport préféré pour les fournisseurs prenant en charge plusieurs transports: "sse", "websocket", "websocket-cached" ou "auto"
httpIdleTimeoutMs nombre 300000 Délai d'inactivité de l'en-tête/corps HTTP en millisecondes, également utilisé par les fournisseurs avec des délais d'inactivité de flux explicites. Réglez sur 0 pour désactiver.
websocketConnectTimeoutMs nombre 15000 Délai d'expiration de la connexion/ouverture de la liaison WebSocket en millisecondes pour les fournisseurs prenant en charge les transports WebSocket. Réglez sur 0 pour désactiver.

Terminal et images

Paramètre Taper Défaut Description
terminal.showImages booléen true Afficher les images dans le terminal (si pris en charge)
terminal.imageWidthCells nombre 60 Largeur d'image en ligne préférée dans les cellules terminales
terminal.clearOnShrink booléen false Effacer les lignes vides lorsque le contenu est réduit (peut provoquer un scintillement)
images.autoResize booléen true Redimensionnez les images à 2000x2000 maximum. S'applique aux pièces jointes @file, read et aux images renvoyées par les outils
images.blockImages booléen false Bloquer l'envoi de toutes les images à LLM

Coquille

Paramètre Taper Défaut Description
shellPath chaîne - Chemin d'accès au shell personnalisé (par exemple, pour Cygwin sous Windows); prend en charge un ~ de début pour le répertoire personnel
shellCommandPrefix chaîne - Préfixe pour chaque commande bash (par exemple, "shopt -s expand_aliases")
npmCommand chaîne[] - Commande argv utilisée pour les opérations de recherche/installation de package npm (par exemple, ["mise", "exec", "node@20", "--", "npm"])
{
  "npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}

npmCommand est utilisé pour toutes les npm opérations du gestionnaire de packages, y compris les installations, les désinstallations et les installations de dépendances à l'intérieur des packages git. Les packages npm à l'échelle de l'utilisateur sont installés sous ~/.pi/agent/npm/; Les packages npm à l'échelle du projet sont installés sous .pi/npm/. Utilisez les entrées de style argv exactement comme le processus doit être lancé. Lorsque npmCommand est configuré, les installations de dépendances de packages git utilisent plain install pour éviter les indicateurs spécifiques à npm dans les wrappers ou les gestionnaires de packages alternatifs.

Séances

Paramètre Taper Défaut Description
sessionDir chaîne - Répertoire où sont stockés les fichiers de session. Accepte les chemins absolus ou relatifs, plus ~.
{ "sessionDir": ".pi/sessions" }

Lorsque plusieurs sources spécifient un répertoire de session, la priorité est --session-dir, PI_CODING_AGENT_SESSION_DIR, puis sessionDir dans settings.json.

Modèle de cyclisme

Paramètre Taper Défaut Description
enabledModels chaîne[] - Modèles de modèle pour le cyclisme Ctrl+P (même format que le drapeau --models CLI)
{
  "enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}

Markdown

Paramètre Taper Défaut Description
markdown.codeBlockIndent chaîne " " Indentation pour les blocs de code
markdown.mermaid chaîne "streaming" Mode de rendu sirène: "off", "final" ou "streaming"

Ressources

Ces paramètres définissent où charger les extensions, les compétences, les invites et les thèmes.

Les chemins en ~/.pi/agent/settings.json se résolvent par rapport à ~/.pi/agent. Les chemins dans .pi/settings.json se résolvent par rapport à .pi. Les chemins absolus et ~ sont pris en charge.

Paramètre Taper Défaut Description
packages tableau [] npm/git packages à partir desquels charger les ressources
extensions chaîne[] [] Chemins ou répertoires de fichiers d'extension locaux
skills chaîne[] [] Chemins ou répertoires de fichiers de compétences locaux
prompts chaîne[] [] Chemins ou répertoires de modèles d'invite locaux
themes chaîne[] [] Chemins ou répertoires de fichiers de thème locaux
enableSkillCommands booléen true Enregistrez les compétences sous forme de commandes /skill:name

Les tableaux prennent en charge les modèles globaux et les exclusions. Utilisez !pattern pour exclure. Utilisez +path pour forcer l'inclusion d'un chemin exact et -path pour forcer l'exclusion d'un chemin exact.

forfaits

Le formulaire de chaîne charge toutes les ressources d'un package:

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

Le formulaire d'objet filtre les ressources à charger:

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

Voir packages.md pour les détails de gestion des packages.

Exemple

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

Remplacements de projet

Les paramètres du projet (.pi/settings.json) remplacent les paramètres globaux. Les objets imbriqués sont fusionnés:

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