Загрузка...

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

Pi (pi coding agent)

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

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

Требования

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

Установка

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

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

Windows (PowerShell):

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

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

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

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

pi --version

Первый запуск pi в каталоге проекта: версия 1.4.0, поле ввода, папка и модель в футере

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

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

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

     export ROUTERAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
    

    Замените значение на ключ из личного кабинета.

  2. Создайте файл ~/.pi/agent/models.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

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

Поле Значение для RouterAI
baseUrl https://routerai.ru/api/v1 — без /chat/completions на конце
api openai-completions (Chat Completions); для Claude через Messages API — anthropic-messages
apiKey $ИМЯ_ПЕРЕМЕННОЙ — ключ из окружения; можно и литерал, и !команда, но хранить ключ открытым текстом в файле не стоит
models[].id id модели из каталога 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:

"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

Модель Для чего
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. Любой другой id из каталога добавляется в models так же, как в примере выше.

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

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

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

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

cd /path/to/project
pi

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

Сессия Pi с моделью RouterAI в футере: задача про hello.py, вызовы write и bash и результат Hello, RouterAI!

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

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 из каталога (включая префикс anthropic/, openai/ и т. д.). В --model провайдер указывается первым: routerai/anthropic/claude-sonnet-5.5. Модели из models.json видны в /model только тогда, когда Pi может получить ключ — проверьте переменную окружения.

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

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

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

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

VS Code и OpenClaw

У Pi есть сторонние обёртки для VS Code. Например, Pi Coding Agent UI — форк frostime/pi-vscode-ui — запускает установленный pi и использует ту же конфигурацию ~/.pi/agent, поэтому провайдер RouterAI из models.json подхватится без дополнительной настройки. Это неофициальные расширения: проверяйте их актуальность перед установкой.

Pi используется и как основа других инструментов: в README проекта в качестве примера интеграции указан OpenClaw. Как настроить OpenClaw с RouterAI, web-поиском и Telegram, — в статье OpenClaw через RouterAI.

Что дальше