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

Переменные среды

Pi использует переменные среды тремя способами:

  • Такие переменные, как PI_OFFLINE, настраивают процесс Pi.
  • Pi устанавливает PI_CODING_AGENT, чтобы дочерние процессы могли обнаружить, что они выполняются внутри Pi.
  • Команды, выполняемые инструментом bash, вызываемым LLM, получают переменные PI_*, описывающие текущий сеанс.

Переменные ключа API поставщика документируются отдельно в Providers.

Маркер процесса

Точки входа CLI и RPC устанавливают PI_CODING_AGENT=true. Дочерние процессы наследуют его и могут использовать для обнаружения того, что они выполняются внутри Pi. Он не зависит от сеанса и не устанавливается автоматически, когда Pi встроен через SDK.

Среда сеанса Bash Tool

Команды, выполняемые инструментом bash, получают текущее состояние сеанса Pi:

Переменная Описание
PI_SESSION_ID Идентификатор текущего сеанса
PI_SESSION_FILE Абсолютный путь к файлу текущего сеанса JSONL; не настроен для эфемерных сеансов
PI_PROVIDER Текущий выбранный поставщик модели
PI_MODEL Текущий выбранный идентификатор модели
PI_REASONING_LEVEL Текущий эффективный уровень рассуждения: off, minimal, low, medium, high, xhigh или max.

Значения определяются при запуске каждой команды. Таким образом, переключение моделей или изменение уровня рассуждения влияет на следующую команду bash без перезапуска Pi. PI_PROVIDER и PI_MODEL идентифицируют выбранную модель Pi, а не другую вышестоящую модель, которую маршрутизатор может выбрать внутри себя.

Когда вас спросят, какая модель или поставщик работает, проверьте эти переменные вместо того, чтобы делать вывод из системного приглашения:

printf '%s/%s\n' "$PI_PROVIDER" "$PI_MODEL"
printf 'reasoning=%s session=%s\n' "$PI_REASONING_LEVEL" "$PI_SESSION_ID"

Файл сеанса можно проверить напрямую, если сеанс является постоянным:

if [ -n "$PI_SESSION_FILE" ]; then
  tail -n 1 "$PI_SESSION_FILE"
fi

Эти переменные вводятся в инструмент bash, вызываемый LLM. Они не вводятся в вводимые пользователем команды ! или !!.

Пользовательские инструменты Bash

Инструменты Bash, созданные с помощью createBashTool(), по умолчанию предоставляют среду сеанса при регистрации с помощью Pi. Внедрение происходит до spawnHook, поэтому перехватчик получает переменные из ctx.env:

const bashTool = createBashTool(cwd, {
  spawnHook: (ctx) => ({
    ...ctx,
    env: { ...ctx.env, CI: "1" },
  }),
});

Отключите метаданные сеанса независимо от спавна:

const bashTool = createBashTool(cwd, {
  exposeSessionEnvironment: false,
  spawnHook: (ctx) => ctx,
});

Если отключено, Pi удаляет унаследованные значения для этих переменных, поэтому вложенные процессы Pi не предоставляют устаревшие метаданные родительского сеанса.

Pi Конфигурация процесса

Эти переменные читаются самим Pi:

Переменная Описание
PI_CODING_AGENT_DIR Переопределить каталог конфигурации; по умолчанию ~/.pi/agent
PI_CODING_AGENT_SESSION_DIR Переопределить хранилище сеансов; переопределено --session-dir
PI_PACKAGE_DIR Переопределить каталог пакета, что полезно для путей к хранилищу Nix/Guix.
PI_OFFLINE Отключите сетевые операции при запуске, включая проверки обновлений, обновления пакетов и установку/обновление телеметрии.
PI_SKIP_VERSION_CHECK Отключить запрос последней версии pi.dev.
PI_TELEMETRY Переопределить заголовки телеметрии установки/обновления и атрибуции поставщика: 1/true/yes или 0/false/no
PI_CACHE_RETENTION Установите значение long для расширенного кэширования приглашений поставщика, если это поддерживается.
PI_SHARE_VIEWER_URL Переопределить базовый URL-адрес, используемый /share
PI_HARDWARE_CURSOR Установите значение 1, чтобы отобразить аппаратный курсор; см. Terminal setup
VISUAL, EDITOR Резервный вариант внешнего редактора, если externalEditor не установлено
HTTP_PROXY, HTTPS_PROXY Исходящие HTTP-запросы прокси-сервера

Учетные данные поставщика, такие как ANTHROPIC_API_KEY, OPENAI_API_KEY, а также конфигурация облачного провайдера, перечислены в Providers.