·5 мин. чтения

OMP (oh-my-pi) агент — настройка с PlusVibe

Как подключить агента oh-my-pi (omp) к PlusVibe API: models.yml, роли моделей в config.yml, проверка и разбор ошибки 403 из-за вспомогательной модели.

OMP (oh-my-pi) агент — настройка с PlusVibe

oh-my-pi (команда в терминале — omp) — открытый кодинг-агент для терминала под лицензией MIT. Он вырос из агента Pi Марио Цехнера и добавил к нему встроенные Python и Bun, языковые серверы, отладчик, субагентов и разбиение изменений на атомарные коммиты. На 24 сентября 2026 года у репозитория больше 33 тысяч звёзд на GitHub.

→ GitHub: can1357/oh-my-pi

Агенту нужна языковая модель, и omp умеет работать с любым OpenAI-совместимым API. Ниже — как направить его на PlusVibe: два файла конфигурации, одна переменная окружения. Настройку мы проверили на omp 18.3.0 живыми запросами.

Установка

Linux и macOS — скрипт с официального сайта:

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

Другие варианты из README проекта:

brew install can1357/tap/omp               # Homebrew
bun install -g @oh-my-pi/pi-coding-agent   # Bun
irm https://omp.sh/install.ps1 | iex       # Windows, PowerShell

Проверка: omp --version.

Шаг 1. Ключ PlusVibe

Зарегистрируйтесь на plusvibeapi.ru/register, создайте ключ вида sk-pv-… и положите его в переменную окружения:

echo 'export PLUSVIBE_API_KEY=sk-pv-ВАШ_КЛЮЧ' >> ~/.bashrc   # или ~/.zshrc
source ~/.bashrc

Шаг 2. Провайдер в models.yml

Свои провайдеры omp читает из файла ~/.omp/agent/models.yml. Есть два рабочих варианта.

Вариант А: список моделей с сервера (рекомендуем)

providers:
  plusvibe:
    baseUrl: https://plusvibeapi.ru/v1
    apiKey: PLUSVIBE_API_KEY
    api: openai-completions
    discovery:
      type: openai-models-list

omp сам запросит /v1/models и покажет модели каталога. Если у ключа задан список разрешённых моделей, мы отдаём только их — агент не увидит того, что ваш ключ вызвать не может. Это защищает от главной ошибки из раздела ниже.

Вариант Б: модели вручную

providers:
  plusvibe:
    baseUrl: https://plusvibeapi.ru/v1
    apiKey: PLUSVIBE_API_KEY
    api: openai-completions
    models:
      - id: anthropic/claude-sonnet-5
        name: Claude Sonnet 5
        contextWindow: 1000000
        maxTokens: 64000
      - id: z-ai/glm-5.3-flash
        name: GLM-5.3 Flash
        contextWindow: 1048000
        maxTokens: 128000

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

  • baseUrl — адрес PlusVibe вместе с /v1.
  • apiKey — omp сначала ищет переменную окружения с таким именем и только если её нет, отправляет строку как есть. Поэтому здесь имя переменной, а не сам ключ.
  • api: openai-completions — формат Chat Completions, в нём у нас работают все текстовые модели каталога.
  • id — идентификатор модели ровно так, как он указан на /models. Размер контекста и лимит ответа тоже берите оттуда.

Проверьте, что провайдер виден:

omp models plusvibe

Шаг 3. Роли моделей в config.yml

Главная особенность omp — роли. Агент отправляет разные задачи разным моделям: default — обычные ходы, smol — дешёвые субагенты, slow — глубокие рассуждения, plan — режим планирования, commit — сообщения коммитов, tiny — фоновые мелочи вроде названия сессии. Роли задаются в ~/.omp/agent/config.yml, модель указывается как провайдер/id:

modelRoles:
  default: plusvibe/anthropic/claude-sonnet-5
  slow: plusvibe/anthropic/claude-sonnet-5
  plan: plusvibe/anthropic/claude-sonnet-5
  smol: plusvibe/z-ai/glm-5.3-flash
  tiny: plusvibe/z-ai/glm-5.3-flash
  commit: plusvibe/z-ai/glm-5.3-flash

Это важнее, чем кажется. Когда мы проверяли эту настройку, один вызов omp -p с коротким вопросом дал два запроса к API: основной ответ ушёл в claude-sonnet-5, а вспомогательный — в glm-5.3-flash, назначенную на фоновые роли. В выводе omp -p второго запроса не видно — он есть только в истории запросов в кабинете.

Шаг 4. Проверка

cd ~/my-project
omp -p "Ответь одним словом: работает?"

Флаг -p отвечает на один вопрос и завершает работу. Если ответ пришёл, запустите интерактивный режим командой omp. Сменить модель внутри сессии можно командой /model, там же в разделе ролей назначаются модели для smol, slow и остальных.

История запросов — в кабинете, в разделе «Использование»: там видно, какие модели на самом деле вызывает агент, включая запросы, завершившиеся ошибкой.

Цены на модели из примера

МодельВходВыход
claude-sonnet-544 ₽/1M220 ₽/1M
glm-5.3-flash9,51 ₽/1M31,7 ₽/1M
gpt-5.6-luna3,78 ₽/1M22,63 ₽/1M
claude-opus-4.8151,99 ₽/1M758,7 ₽/1M

Цены подставляются из каталога в момент открытия страницы. Все модели и варианты — на /models. Если нужна дешёвая модель для роли smol, кроме GLM-5.3 Flash подойдёт gpt-5.6-luna; для сложного рефакторинга роль slow можно отдать claude-opus-4.8.

Частые ошибки

403 «Модель недоступна для этого API-ключа»

Реальный случай нашего клиента: основная модель в omp работала, а в журнале ошибок раз за разом появлялись отказы по gpt-6-sol. У ключа был задан список разрешённых моделей, и агент использовал эту модель для вспомогательной роли, которой в списке не было.

Так получается, когда роль не назначена явно: omp сам выбирает для неё модель по встроенному списку приоритетов из тех, что знает. Мы воспроизвели это на ключе, которому разрешена только claude-sonnet-5: в config.yml задана лишь роль default, а в models.yml вручную перечислены две модели. Основной ответ пришёл, а фоновый запрос omp отправил в z-ai/glm-5.3-flash и получил 403. В выводе omp -p ошибки не было — она видна только в истории запросов в кабинете.

Как исправить — любой из трёх способов:

  1. Назначьте все роли явно в config.yml — моделями, которые разрешены ключу, как в шаге 3.
  2. Используйте вариант А из шага 2. Со списком моделей с сервера omp видит только разрешённые модели. На том же ограниченном ключе этот вариант прошёл без единого 403.
  3. Расширьте список ключа. В кабинете откройте ключ и добавьте нужную модель в поле «Разрешённые модели». Пустое поле — все модели разрешены.

401 «Отсутствует или неверный API-ключ»

Обычная причина — переменная PLUSVIBE_API_KEY не видна процессу omp: терминал открыт до того, как вы её добавили, или она записана не в тот файл профиля. Тогда omp отправляет вместо ключа саму строку PLUSVIBE_API_KEY. Проверьте echo $PLUSVIBE_API_KEY в том же терминале, где запускаете агента.

Модель не найдена

Если в id опечатка, API ответит «модель «…» не найдена» и подскажет правильный формат. В config.yml надёжнее указывать модель полностью, с именем провайдера впереди: plusvibe/anthropic/claude-sonnet-5. Точные идентификаторы для вашего ключа покажет omp models plusvibe — копируйте их оттуда.

Агент неверно оценивает размер контекста

В варианте А omp берёт лимиты из собственного справочника моделей, и они могут отличаться от наших. Реальные значения смотрите на странице модели в /models и при необходимости задайте их через modelOverrides в models.yml:

providers:
  plusvibe:
    # ... как в варианте А
    modelOverrides:
      anthropic/claude-opus-4.8:
        contextWindow: 200000

Итог

omp подключается к PlusVibe штатным способом: провайдер в models.yml, роли в config.yml, ключ в переменной окружения. Главное, что стоит запомнить, — агент ходит не в одну модель, а в несколько. Назначьте все роли явно или берите список моделей с сервера, и ограничения ключа не будут мешать работе.

Если вы запускаете несколько агентов параллельно, посмотрите нашу настройку Orca — omp входит в список поддерживаемых там агентов. Сравнить с другими терминальными агентами можно по материалам про Claude Code и Hermes Agent.

oh-my-pi + PlusVibe: весь каталог в одном провайдере

Claude, GPT, GLM и другие модели для каждой роли агента. Оплата в рублях.

Получить ключ →
oh-my-piomp агентomp настройкаoh-my-pi models.ymlomp в Россиикодинг-агент в терминалеomp PlusVibeomp ошибка 403

Попробуйте PlusVibe API

OpenAI-совместимый API: GPT, Claude, Gemini, видео и изображения — один рублёвый ключ. Работает из России без VPN, оплата рублями.

Читайте также

OMP (oh-my-pi) агент — настройка с PlusVibe | PlusVibe API