Настройка, расширение, параметры платформы и справочник API для Pi.

Настройки

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