Настройки
Pi использует файлы настроек JSON, в которых настройки проекта переопределяют глобальные настройки.
| Расположение | Объем |
|---|---|
~/.pi/agent/settings.json |
Глобальный (все проекты) |
.pi/settings.json |
Проект (текущий каталог) |
Редактируйте напрямую или используйте /settings для общих опций.
Проект Траст
При интерактивном запуске pi спрашивает, прежде чем доверять папке проекта, которая содержит локальные настройки проекта, ресурсы или проект .agents/skills и не имеет сохраненного решения для этой папки или родительской папки в ~/.pi/agent/trust.json. Доверие к проекту позволяет pi загружать ресурсы .pi/settings.json и .pi, устанавливать недостающие пакеты проекта и выполнять расширения проекта.
В неинтерактивных режимах (-p, --mode json и --mode rpc) запрос доверия не отображается. Без применимого сохраненного решения о доверии они используют defaultProjectTrust из глобальных настроек: ask (по умолчанию) и never игнорируют эти ресурсы проекта, а always доверяют им. Нажмите --approve/-a или --no-approve/-na, чтобы отменить доверие проекта на один запуск.
Если никакое расширение или сохраненное решение не применимо, defaultProjectTrust управляет резервным поведением. Установите его на "ask", "always" или "never" в ~/.pi/agent/settings.json или измените его с помощью /settings.
pi config и команды пакета используют один и тот же поток доверия проекта, за исключением того, что pi update никогда не запрашивает. Нажмите --approve, чтобы доверять локальным настройкам проекта для одной команды, или --no-approve, чтобы игнорировать их.
Используйте /trust в интерактивном режиме, чтобы сохранить решение о доверии проекта для будущих сеансов, включая доверие к непосредственной родительской папке. Пишется только ~/.pi/agent/trust.json; текущий сеанс не перезагружается, поэтому перезапустите pi, чтобы изменения вступили в силу.
Все настройки
Модель и мышление
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
defaultProvider |
нить | - | Поставщик по умолчанию (например, "anthropic", "openai") |
defaultModel |
нить | - | Идентификатор модели по умолчанию |
defaultThinkingLevel |
нить | - | "off", "minimal", "low", "medium", "high", "xhigh", "max" |
hideThinkingBlock |
логическое значение | false |
Скрыть мыслительные блоки в выводе |
showCacheMissNotices |
логическое значение | false |
Показывать уведомления о расшифровке при значительных промахах в кэше подсказок. |
thinkingBudgets |
объект | - | Пользовательские бюджеты токенов на каждый уровень мышления |
мышлениеБюджеты
{
"thinkingBudgets": {
"minimal": 1024,
"low": 4096,
"medium": 10240,
"high": 32768
}
}Пользовательский интерфейс и дисплей
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
theme |
нить | "dark" |
Название темы ("dark", "light" или пользовательское) |
externalEditor |
нить | $VISUAL, затем $EDITOR, затем «Блокнот» в Windows или nano в другом месте. |
Команда внешнего редактора Ctrl+G; имеет приоритет над переменными среды |
quietStartup |
логическое значение | false |
Скрыть заголовок запуска |
defaultProjectTrust |
нить | "ask" |
Доверительное поведение резервного проекта: "ask", "always" или "never". Только глобальная настройка |
collapseChangelog |
логическое значение | false |
Показывать сокращенный журнал изменений после обновлений |
enableInstallTelemetry |
логическое значение | true |
Отправьте анонимный пинг версии установки/обновления после первой установки или обновлений, обнаруженных в журнале изменений. Это не контролирует проверки обновлений. |
enableAnalytics |
логическое значение | false |
Согласитесь на обмен аналитическими данными. В настоящее время запрашивается только во время первоначальной экспериментальной настройки (PI_EXPERIMENTAL=1) |
trackingId |
нить | - | Идентификатор отслеживания Google Analytics, генерируется при включении enableAnalytics. |
doubleEscapeAction |
нить | "tree" |
Действие для двойного выхода: "tree", "fork" или "none". |
treeFilterMode |
нить | "default" |
Фильтр по умолчанию для /tree: "default", "no-tools", "user-only", "labeled-only", "all" |
editorPaddingX |
число | 0 |
Горизонтальное заполнение для редактора ввода (0-3) |
outputPad |
число | 1 |
Горизонтальное заполнение для сообщений пользователя, сообщений помощника и мыслей (0 или 1) |
autocompleteMaxVisible |
число | 5 |
Максимальное количество видимых элементов в раскрывающемся списке автозаполнения (3–20) |
showHardwareCursor |
логическое значение | false |
Покажите курсор терминала, пока TUI позиционирует его для поддержки IME. |
tuiMode |
нить | "regular" |
Интерактивный режим TUI: "regular" или экспериментальный "fullscreen". Изменения из /settings вступают в силу немедленно; --tui-mode переопределяет этот параметр при запуске |
fullscreenExitOutput |
нить | "transcript" |
Вывод полноэкранного выхода: "transcript" печатает окончательную расшифровку и подсказку о возобновлении, а "resume-hint" восстанавливает предыдущий экран и печатает только подсказку о возобновлении. Не имеет эффекта в обычном режиме TUI. |
fullscreenScrollbar |
нить | "auto" |
Полоса прокрутки полноэкранной расшифровки: "auto" временно показывает ее во время прокрутки, "always" резервирует крайний правый столбец и сохраняет его видимым, а "hidden" скрывает его. Не имеет эффекта в обычном режиме TUI. |
Для VS Code добавьте --wait, чтобы число pi возобновилось после выхода из редактора:
{
"externalEditor": "code --wait"
}Телеметрия и проверка обновлений
enableInstallTelemetry контролирует только анонимный пинг установки/обновления до https://pi.dev/api/report-install. Отказ от телеметрии не отключает проверку обновлений; Pi по-прежнему может получить https://pi.dev/api/latest-version для поиска последней версии.
Установите PI_SKIP_VERSION_CHECK=1, чтобы отключить проверку обновления версии Pi. Используйте --offline или PI_OFFLINE=1, чтобы отключить все описанные здесь сетевые операции при запуске, включая проверки обновлений, проверки обновлений пакетов и телеметрию установки/обновления.
Сеть
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
httpProxy |
нить | - | URL-адрес HTTP-прокси применяется как HTTP_PROXY и HTTPS_PROXY. Только глобальная настройка. |
{
"httpProxy": "http://127.0.0.1:7890"
}Предупреждения
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
warnings.anthropicExtraUsage |
логическое значение | true |
Показывать предупреждение, когда для аутентификации подписки Anthropic может использоваться платное дополнительное использование. |
{
"warnings": {
"anthropicExtraUsage": false
}
}Уплотнение
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
compaction.enabled |
логическое значение | true |
Включить автоматическое сжатие |
compaction.reserveTokens |
число | 16384 |
Токены зарезервированы для ответа LLM |
compaction.keepRecentTokens |
число | 20000 |
Последние токены, которые нужно сохранить (не суммируются) |
{
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
}
}Резюме филиала
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
branchSummary.reserveTokens |
число | 16384 |
Токены зарезервированы для branch summarization |
branchSummary.skipPrompt |
логическое значение | false |
Пропустить «Обобщить ветку?» подсказка при навигации по /tree (по умолчанию нет сводки) |
Повторить попытку
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
retry.enabled |
логическое значение | true |
Включить автоматическую повторную попытку на уровне агента при временных ошибках |
retry.maxRetries |
число | 3 |
Максимальное количество повторных попыток на уровне агента |
retry.baseDelayMs |
число | 2000 |
Базовая задержка для экспоненциальной задержки на уровне агента (2 с, 4 с, 8 с) |
retry.provider.timeoutMs |
число | SDK по умолчанию | Тайм-аут запроса поставщика/SDK в миллисекундах |
retry.provider.maxRetries |
число | 0 |
Поставщик/SDK повторных попыток |
retry.provider.maxRetryDelayMs |
число | 60000 |
Максимальная запрашиваемая сервером задержка перед сбоем (60 с) |
Когда провайдер запрашивает задержку повтора дольше, чем retry.provider.maxRetryDelayMs, запрос немедленно завершается с ошибкой, а не молча ждет. Установите его на 0, чтобы отключить ограничение.
Оставьте retry.provider.maxRetries на 0, если повторные попытки на уровне поставщика явно не требуются. Установка значения выше 0 может привести к тому, что SDK/повторные попытки поставщика будут обрабатывать ошибки превышения лимита использования до того, как Pi увидит их, что может заблокировать агент до тех пор, пока в некоторых обстоятельствах квота провайдера не будет сброшена.
{
"retry": {
"enabled": true,
"maxRetries": 3,
"baseDelayMs": 2000,
"provider": {
"timeoutMs": 3600000,
"maxRetries": 0,
"maxRetryDelayMs": 60000
}
}
}Доставка сообщений
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
steeringMode |
нить | "one-at-a-time" |
Как отправляются управляющие сообщения: "all" или "one-at-a-time". |
followUpMode |
нить | "one-at-a-time" |
Как отправляются последующие сообщения: "all" или "one-at-a-time". |
transport |
нить | "auto" |
Предпочтительный транспорт для поставщиков, поддерживающих несколько видов транспорта: "sse", "websocket", "websocket-cached" или "auto". |
httpIdleTimeoutMs |
число | 300000 |
Тайм-аут простоя заголовка/тела HTTP в миллисекундах, также используется провайдерами с явными тайм-аутами простоя потока. Установите значение 0, чтобы отключить. |
websocketConnectTimeoutMs |
число | 15000 |
Тайм-аут подключения/открытия WebSocket в миллисекундах для поставщиков, поддерживающих транспорты WebSocket. Установите значение 0, чтобы отключить. |
Терминал и изображения
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
terminal.showImages |
логическое значение | true |
Показать изображения в терминале (если поддерживается) |
terminal.imageWidthCells |
число | 60 |
Предпочтительная ширина встроенного изображения в терминальных ячейках |
terminal.clearOnShrink |
логическое значение | false |
Очищать пустые строки при сжатии содержимого (может вызвать мерцание) |
images.autoResize |
логическое значение | true |
Измените размер изображения до максимального размера 2000x2000. Применяется к вложениям @file, read и изображениям, возвращаемым инструментами. |
images.blockImages |
логическое значение | false |
Заблокировать отправку всех изображений в LLM |
Оболочка
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
shellPath |
нить | - | Пользовательский путь к оболочке (например, для Cygwin в Windows); поддерживает ведущий ~ для домашнего каталога |
shellCommandPrefix |
нить | - | Префикс для каждой команды bash (например, "shopt -s expand_aliases") |
npmCommand |
нить[] | - | Команда argv, используемая для операций поиска/установки пакета npm (например, ["mise", "exec", "node@20", "--", "npm"]) |
{
"npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}npmCommand используется для всех операций менеджера пакетов npm, включая установку, удаление и установку зависимостей внутри пакетов git. Пакеты npm на уровне пользователя устанавливаются в ~/.pi/agent/npm/; Пакеты npm в рамках проекта устанавливаются в .pi/npm/. Используйте записи в стиле argv именно так, как должен быть запущен процесс. Когда настроен npmCommand, при установке зависимостей пакетов git используется простой install, чтобы избежать использования флагов, специфичных для npm, в оболочках или альтернативных менеджерах пакетов.
Сессии
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sessionDir |
нить | - | Каталог, в котором хранятся файлы сеанса. Принимает абсолютные или относительные пути плюс ~. |
{ "sessionDir": ".pi/sessions" }Если несколько источников указывают каталог сеанса, приоритет имеет значение --session-dir, PI_CODING_AGENT_SESSION_DIR, а затем sessionDir в файле settings.json.
Модель Велоспорт
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
enabledModels |
нить[] | - | Шаблоны моделей для циклического переключения Ctrl+P (тот же формат, что и флаг --models CLI) |
{
"enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}Markdown
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
markdown.codeBlockIndent |
нить | " " |
Отступы для блоков кода |
markdown.mermaid |
нить | "streaming" |
Режим рендеринга русалки: "off", "final" или "streaming". |
Ресурсы
Эти настройки определяют, откуда загружать расширения, навыки, подсказки и темы.
Пути в ~/.pi/agent/settings.json разрешаются относительно ~/.pi/agent. Пути в .pi/settings.json разрешаются относительно .pi. Поддерживаются абсолютные пути и ~.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
packages |
множество | [] |
npm/git пакеты для загрузки ресурсов из |
extensions |
нить[] | [] |
Пути к файлам или каталогам локальных расширений |
skills |
нить[] | [] |
Пути или каталоги локальных файлов навыков |
prompts |
нить[] | [] |
Пути или каталоги локальных шаблонов приглашений |
themes |
нить[] | [] |
Пути или каталоги к файлам локальной темы |
enableSkillCommands |
логическое значение | true |
Зарегистрируйте навыки как команды /skill:name |
Массивы поддерживают шаблоны glob и исключения. Используйте !pattern, чтобы исключить. Используйте +path, чтобы принудительно включить точный путь, и -path, чтобы принудительно исключить точный путь.
пакеты
Строковая форма загружает все ресурсы из пакета:
{
"packages": ["pi-skills", "@org/my-extension"]
}Форма объекта фильтрует, какие ресурсы загружать:
{
"packages": [
{
"source": "pi-skills",
"skills": ["brave-search", "transcribe"],
"extensions": []
}
]
}См. packages.md для получения подробной информации об управлении пакетами.
Пример
{
"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"]
}Переопределения проекта
Настройки проекта (.pi/settings.json) переопределяют глобальные настройки. Вложенные объекты объединяются:
// ~/.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 }
}