# Вайб-кодинг в Pi: Настройка pi coding agent через RouterAI (Claude, GPT-6, DeepSeek, GLM)

## Pi (pi coding agent)

[Pi](https://pi.dev) — минималистичный open-source (MIT) agent harness для работы в терминале: пакет `@earendil-works/pi-coding-agent`, репозиторий [earendil-works/pi](https://github.com/earendil-works/pi). Из коробки Pi читает и правит файлы, запускает команды и ведёт сессии, а всё остальное — расширения, skills, prompt templates и темы — вы подключаете сами или ставите готовыми Pi-пакетами. Намеренно нет sub-agents и plan mode: их предлагается собрать под себя.

Pi можно запускать интерактивно, в режимах `print` и `json` для автоматизации, через RPC или встраивать как TypeScript SDK. Через RouterAI Pi получает доступ к моделям Claude, GPT, DeepSeek, GLM и другим из [каталога](/models) по одному ключу: работа из России без VPN, оплата в рублях, один баланс на все модели.

## Требования

- macOS, Linux или Windows
- Node.js 22.19 или новее (установщики Pi могут поставить его сами)
- API-ключ из [личного кабинета](/settings/keys "личного кабинета")

## Установка

Установщик для macOS и Linux — он фиксирует версии зависимостей, а обновляется Pi командой `pi update`:

```bash
curl -fsSL https://pi.dev/install.sh | sh
```

Windows (PowerShell):

```powershell
powershell -c "irm https://pi.dev/install.ps1 | iex"
```

Или через npm (транзитивные зависимости при этом не фиксируются):

```bash
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
```

Проверьте установку:

```bash
pi --version
```

![Первый запуск pi в каталоге проекта: версия 1.4.0, поле ввода, папка и модель в футере](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/e45f546fc312892efa430be3d5516a34.png)

## Подключение к RouterAI

Pi не знает про RouterAI «из коробки», но умеет работать с любым OpenAI-совместимым или Anthropic-совместимым endpoint. Он описывается в файле `models.json` в каталоге конфигурации Pi (по умолчанию `~/.pi/agent`, путь меняется переменной `PI_CODING_AGENT_DIR`).

1. Сохраните ключ в переменную окружения, например в `~/.bashrc` или `~/.zshrc`, и перезапустите терминал:

    ```bash
    export ROUTERAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
    ```

    Замените значение на ключ из [личного кабинета](/settings/keys "личного кабинета").

2. Создайте файл `~/.pi/agent/models.json`:

    ```json
    {
      "$schema": "https://pi.dev/schemas/models.schema.json",
      "providers": {
        "routerai": {
          "name": "RouterAI",
          "baseUrl": "https://routerai.ru/api/v1",
          "api": "openai-completions",
          "apiKey": "$ROUTERAI_API_KEY",
          "models": [
            { "id": "anthropic/claude-sonnet-5.5", "name": "Claude Sonnet 5.5", "reasoning": true, "input": ["text", "image"], "contextWindow": 1000000, "maxTokens": 32000 },
            { "id": "deepseek/deepseek-v4.1-flash", "name": "DeepSeek V4.1 Flash", "contextWindow": 1048576, "maxTokens": 32000 }
          ]
        }
      }
    }
    ```

3. Запустите Pi в каталоге проекта и откройте выбор модели командой `/model`. Pi перечитывает `models.json` при каждом открытии `/model`, перезапуск не нужен.

![Файл ~/.pi/agent/models.json с провайдером routerai: baseUrl, api, apiKey и список models](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/75ade4c866ff9b3a0d1217156cfde4e4.png)

Что означают поля:

| Поле | Значение для RouterAI |
| --- | --- |
| `baseUrl` | `https://routerai.ru/api/v1` — без `/chat/completions` на конце |
| `api` | `openai-completions` (Chat Completions); для Claude через Messages API — `anthropic-messages` |
| `apiKey` | `$ИМЯ_ПЕРЕМЕННОЙ` — ключ из окружения; можно и литерал, и `!команда`, но хранить ключ открытым текстом в файле не стоит |
| `models[].id` | id модели из [каталога RouterAI](/models "каталога RouterAI"), например `anthropic/claude-sonnet-5.5` |
| `contextWindow`, `maxTokens` | по умолчанию Pi считает 128 000 и 16 384 токенов — для моделей с большим контекстом укажите значения явно |
| `reasoning`, `input` | `true`, если модель поддерживает thinking; `["text", "image"]` — если принимает картинки |

### Claude через Anthropic Messages API

Для моделей `anthropic/*` можно подключить нативный протокол Anthropic. Добавьте в `providers` второй провайдер; обратите внимание, что здесь Base URL без `/v1`:

```json
"routerai-claude": {
  "name": "RouterAI (Anthropic API)",
  "baseUrl": "https://routerai.ru/api",
  "api": "anthropic-messages",
  "apiKey": "$ROUTERAI_API_KEY",
  "models": [
    { "id": "anthropic/claude-sonnet-5.5", "name": "Claude Sonnet 5.5 (Messages)", "reasoning": true, "input": ["text", "image"], "contextWindow": 1000000, "maxTokens": 32000 }
  ]
}
```

## Выбор модели

Команда `/model` открывает поиск по доступным моделям; `Ctrl+S` на модели сохраняет её как модель по умолчанию для новых сессий, `Ctrl+P` переключает модели по кругу, `/thinking` задаёт уровень рассуждений. Модель можно задать и при запуске: `pi --model routerai/deepseek/deepseek-v4.1-flash`. Список подключённых моделей — `pi --list-models routerai`.

![Окно /model в Pi: провайдер routerai и модели Claude Sonnet 5.5, GPT-6 Sol, DeepSeek V4.1 Flash, GLM 5.3](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/ac1fd5990bb4d3a1ea2ee45abbf8c587.png)

| Модель | Для чего |
| --- | --- |
| `anthropic/claude-sonnet-5.5` | основная модель для кода и многошаговых задач агента |
| `anthropic/claude-haiku-5.5` | быстрые и недорогие правки, мелкие вопросы |
| `openai/gpt-6-sol` | альтернатива Claude для сложных задач, большой контекст |
| `deepseek/deepseek-v4.1-flash` | дешёвая модель для рутинной работы и экспериментов |
| `z-ai/glm-5.3` | модель семейства GLM с контекстом 1M токенов — ещё один вариант для кода |

Актуальные цены и список — в [каталоге RouterAI](/models "каталоге RouterAI"). Любой другой id из каталога добавляется в `models` так же, как в примере выше.

## Проверка подключения

Быстрый способ — разовый запрос в режиме `print` (результат печатается в stdout, Pi завершается):

```bash
pi --model routerai/deepseek/deepseek-v4.1-flash --no-session -p "Ответь одним словом: привет"
```

Если ответ пришёл — endpoint, ключ и модель настроены верно. Затем проверьте работу с инструментами в интерактивном режиме:

```bash
cd /path/to/project
pi
```

Дайте задачу, например: «Создай файл `hello.py`, который печатает `Hello, RouterAI!`, и запусти его». Pi покажет каждый вызов `write` и `bash` и итоговый вывод.

![Сессия Pi с моделью RouterAI в футере: задача про hello.py, вызовы write и bash и результат Hello, RouterAI!](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/9fa04b2c35f1c42495f71cfa6c4a4b28.png)

Для проверки endpoint независимо от Pi:

```bash
curl https://routerai.ru/api/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ROUTERAI_API_KEY" \
  -d '{"model": "deepseek/deepseek-v4.1-flash", "messages": [{"role": "user", "content": "Привет!"}]}'
```

## Решение проблем

### 401 Unauthorized

Ключ не принят. Проверьте, что `echo $ROUTERAI_API_KEY` в том же терминале, где запускается `pi`, выводит ваш ключ — переменная должна быть в окружении процесса Pi. Если переменной нет, Pi предложит выполнить `/login`. Ключ можно разово передать флагом `--api-key`, но только вместе с `--model`.

### 404 page not found

В `baseUrl` указан лишний путь. Для `openai-completions` нужен ровно `https://routerai.ru/api/v1`, Pi сам добавит `/chat/completions`. Для `anthropic-messages` — `https://routerai.ru/api` без `/v1`.

### 400 Model not found / модель не появляется в `/model`

Проверьте, что `id` в `models.json` совпадает с id из [каталога](/models "каталога") (включая префикс `anthropic/`, `openai/` и т. д.). В `--model` провайдер указывается первым: `routerai/anthropic/claude-sonnet-5.5`. Модели из `models.json` видны в `/model` только тогда, когда Pi может получить ключ — проверьте переменную окружения.

### Модель отвечает, но не правит файлы

Pi — агент, ему нужен tool calling (вызов функций). Если выбранная модель его не поддерживает, она сможет только отвечать текстом. Для агентной работы берите модели из таблицы выше; поддержку конкретной модели смотрите в [каталоге](/models "каталоге").

### Контекст «обрезается» раньше времени

Для кастомных моделей Pi по умолчанию считает контекст 128 000 токенов и 16 384 токенов ответа. Задайте `contextWindow` и `maxTokens` по данным каталога.

## VS Code и OpenClaw

У Pi есть сторонние обёртки для VS Code. Например, [Pi Coding Agent UI](https://marketplace.visualstudio.com/items?itemName=yesho.pi-coding-agent-vscode) — форк [frostime/pi-vscode-ui](https://github.com/frostime/pi-vscode-ui) — запускает установленный `pi` и использует ту же конфигурацию `~/.pi/agent`, поэтому провайдер RouterAI из `models.json` подхватится без дополнительной настройки. Это неофициальные расширения: проверяйте их актуальность перед установкой.

Pi используется и как основа других инструментов: в README проекта в качестве примера интеграции указан OpenClaw. Как настроить OpenClaw с RouterAI, web-поиском и Telegram, — в статье [OpenClaw через RouterAI](/pages/openclaw-web-telegram-routerai-claude-gpt-5-deepseek-mistral).

## Что дальше

- [Каталог моделей](/models "Каталог моделей") — выберите модель под задачу
- [Вайб-кодинг в Claude Code](/pages/vibe-coding-claude-code) и [в OpenCode](/pages/vibe-coding-opencode) — другие CLI-агенты с RouterAI
- [Аутентификация](/docs/guides/overview/authentication "Аутентификация") — управление API-ключами и безопасность
- [Документация Pi: выбор модели и models.json](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/models.md) — расширенные настройки провайдера
