Загрузка...

Oh My Pi (omp): настройка coding-агента через RouterAI (Claude, GPT, DeepSeek)

Oh My Pi (omp)

Oh My Pi, он же omp, — open-source (MIT) coding-агент для терминала от Stencil Labs, репозиторий can1357/oh-my-pi. Разработчики описывают его как «coding agent with the IDE wired in»: агент работает с LSP, умеет подключать отладчик (DAP), запускать субагентов в изолированных worktree, делать code review и коммиты. Проект активно развивается: на момент написания последний релиз — v18.12.6.

omp — форк Pi Марио Цехнера. Если вы уже настраивали минималистичный Pi по статье Вайб-кодинг в Pi, логика та же: провайдер описывается в конфигурационном файле, но у omp это models.yml, а не models.json, и в комплекте больше встроенных инструментов.

Через RouterAI omp получает Claude, GPT, DeepSeek, Gemini и другие модели из каталога по одному ключу: работа из России без VPN, оплата в рублях, один баланс на все модели.

Требования

  • macOS, Linux или Windows
  • Bun 1.3.14 или новее — только для установки через bun install -g; установщик omp.sh без подходящего Bun скачивает готовый бинарник
  • API-ключ из личного кабинета

Установка

macOS и Linux:

curl -fsSL https://omp.sh/install | sh

Windows (PowerShell):

irm https://omp.sh/install.ps1 | iex

Альтернативы — Homebrew или Bun:

brew install can1357/tap/omp
bun install -g @oh-my-pi/pi-coding-agent

Проверьте установку командой omp --version. Если после установщика команда не находится, добавьте ~/.local/bin в PATH.

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

omp умеет работать с любым OpenAI- и Anthropic-совместимым endpoint. Он описывается в файле ~/.omp/agent/models.yml. Каждый ключ под providers — это имя провайдера, которое вы выбираете сами; оно же становится первой частью селектора модели провайдер/id-модели.

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

     export ROUTERAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
    

    Замените значение на ключ из личного кабинета. Вместо профиля оболочки можно положить строку ROUTERAI_API_KEY=... в файл ~/.omp/agent/.env — omp читает его при запуске.

  2. Создайте файл ~/.omp/agent/models.yml:

     providers:
       routerai:
         baseUrl: https://routerai.ru/api/v1
         api: openai-completions
         apiKey: ROUTERAI_API_KEY
         discovery:
           type: openai-models-list
       routerai-anthropic:
         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)
             contextWindow: 1000000
             maxTokens: 32000
    

    Файл ~/.omp/agent/models.yml с провайдерами routerai и routerai-anthropic и вывод omp models routerai-anthropic

  3. Проверьте, что omp загрузил файл и видит модели:

     omp models routerai
     omp models routerai-anthropic
    

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

Поле Значение для RouterAI
baseUrl https://routerai.ru/api/v1 для openai-completions; https://routerai.ru/api (без /v1) для anthropic-messages
api openai-completions — Chat Completions; anthropic-messages — Anthropic Messages API. Есть и openai-responses, если нужен Responses API
apiKey имя переменной окружения. Если переменной с таким именем нет, omp использует значение как литеральный ключ; значение с ! в начале запускается как команда и берёт ключ из её вывода
discovery.type openai-models-list — omp сам запрашивает список моделей у GET /v1/models, вручную перечислять их не нужно; omp models refresh routerai принудительно обновляет список
models[].id точный id модели из каталога RouterAI, например anthropic/claude-sonnet-5.5
contextWindow, maxTokens для вручную описанных моделей omp по умолчанию считает 128 000 токенов контекста и 16 384 токена ответа — для моделей с большим контекстом задайте значения из каталога

Если нужен небольшой фиксированный набор, а не весь каталог, вместо discovery перечислите модели списком models — как для routerai-anthropic выше.

Выбор модели по умолчанию

При первом запуске omp показывает мастер настройки (Setup). Первый шаг — вход через аккаунты провайдеров — для RouterAI не нужен, его можно пропустить клавишей Esc. На втором шаге «Choose your default model» найдите модель провайдера routerai, например routerai/anthropic/claude-sonnet-5.5, и нажмите Enter.

Мастер настройки omp, шаг 2: выбор модели по умолчанию из списка routerai

Остальные шаги мастера (вид значков в терминале и прочее) можно пройти клавишей Enter. После них откроется основной экран: в строке состояния видны модель и текущий каталог.

Главный экран omp: модель Sonnet 5.5 в строке состояния и каталог проекта

Модель по умолчанию можно задать и без мастера — в ~/.omp/agent/config.yml:

modelRoles:
  default: routerai/anthropic/claude-sonnet-5.5
  smol: routerai/deepseek/deepseek-v4-flash

Роль default — основная модель сессии, smol — лёгкие и быстрые задачи (например, субагенты), slow — сложные рассуждения, plan — режим планирования. Во время сессии модель меняет команда /model, а при запуске — флаг --model.

Выбор модели

Все модели ниже есть в каталоге RouterAI; актуальные цены смотрите там же.

Модель Для чего
anthropic/claude-sonnet-5.5 основная модель для кода и многошаговых задач агента (default)
anthropic/claude-haiku-5.5 быстрые и недорогие правки, мелкие вопросы
anthropic/claude-opus-5.5 сложные задачи, архитектура, ревью (slow, plan)
openai/gpt-5.5 альтернатива Claude, контекст около 1M токенов
deepseek/deepseek-v4-flash дешёвая модель для рутины и субагентов (smol)

Для агентной работы нужна модель с поддержкой tool calling — иначе она сможет только отвечать текстом. Поддержку конкретной модели смотрите в каталоге.

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

Быстрый способ — разовый запрос в неинтерактивном режиме (-p): omp напечатает ответ и завершится.

omp -p --model routerai/anthropic/claude-sonnet-5.5 "Ответь одним словом: привет"

Если ответ пришёл — endpoint, ключ и модель настроены верно. Так же проверьте протокол Anthropic: omp -p --model routerai-anthropic/anthropic/claude-sonnet-5.5 "Привет".

Затем запустите omp в каталоге проекта и дайте задачу, например: «В invoices.js добавь функцию averageInvoice(invoices) и кратко опиши, что изменил». omp сам прочитает файл, внесёт правку, проверит её и покажет итог.

Сессия omp: задача про averageInvoice, вызовы инструментов, проверка результата и модель Sonnet 5.5

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

401 Unauthorized

Ключ не принят. Проверьте, что echo $ROUTERAI_API_KEY в том же терминале выводит ваш ключ. Если в apiKey указано имя переменной, которой нет в окружении, omp не сообщает об этом, а отправляет само имя как литеральный ключ — отсюда 401. Ключ можно разово передать флагом --api-key.

Model not found

Сообщение вида Model "routerai/…" not found значит, что omp не знает такую модель. Проверьте id командой omp models find <часть-названия>: id должен совпадать с каталогом, включая префикс anthropic/, openai/ и т. д., а в --model провайдер идёт первым: routerai/anthropic/claude-sonnet-5.5. Модели не загружаются и при неверном baseUrl — для openai-completions нужен ровно https://routerai.ru/api/v1, для anthropic-messages — https://routerai.ru/api.

models.yml validation failed

Если в файле ошибка схемы (например, models — не список), omp пишет models.yml validation failed — custom providers disabled и указывает поле, а модели RouterAI пропадают. Исправьте поле и снова выполните omp models routerai. Корневой объект файла принимает только ключ providers.

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

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

omp setup requires an interactive TTY

Мастер настройки работает только в интерактивном терминале. В CI и скриптах пропустите его: пропишите modelRoles в config.yml и передавайте --model.

Pi и Oh My Pi: в чём разница

  Pi Oh My Pi
Файл провайдеров ~/.pi/agent/models.json ~/.omp/agent/models.yml
Ключ из окружения "apiKey": "$ROUTERAI_API_KEY" apiKey: ROUTERAI_API_KEY (имя без $)
Субагенты и plan mode намеренно нет, собираются расширениями есть из коробки
Встроенный упор минимализм LSP, отладчик, review, коммиты, память

Протоколы и Base URL для RouterAI одинаковы. Если Pi уже настроен, перенесите провайдера в models.yml по примеру выше.

Что дальше