Переменные среды
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.