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 }
}