Разделы базы знаний ▾

Навигация

▸ Начните здесь По ролям

Категории

Инструменты 52
Глоссарий 12

Инструменты

omp (Oh My Pi) + JoinGonka Gateway: агент с ролями моделей

omp (Oh My Pi) — терминальный coding-агент, форк минималистичного Pi, в который добавили всё, чего не хватало для большой работы: языковые серверы (LSP) на каждой записи файла, управление настоящим отладчиком, субагентов в изолированных рабочих копиях, постоянные ячейки Python и JavaScript. Ядро написано на Rust, и один и тот же бинарник работает на macOS, Linux и Windows.

Провайдеры в omp описываются декларативно: любой endpoint, говорящий на OpenAI Chat Completions, добавляется десятком строк в ~/.omp/agent/models.yml. JoinGonka Gateway именно такой, поэтому подключение сводится к одной команде установщика или к двум коротким YAML-файлам. После этого агент работает на моделях децентрализованной сети Gonka — DeepSeek V4 Flash, GLM-5.3 Flash и MiniMax M2.7 — по единой цене: $0.0069 за миллион входных токенов.

Главное отличие omp от родителя — роли моделей: обычные ходы, глубокий разбор, режим планирования и фоновые мелочи можно отдать разным моделям и подстраховать цепочкой запасных. Ниже — быстрый путь, ручная настройка, таблица «какую модель на какую роль» и разбор ошибок. Команды и сообщения сверены живым прогоном omp 18.2.8 через шлюз 21 сентября 2026. После подтверждения адреса на счёт придут 3M бесплатных токенов — их хватит, чтобы повторить всё это самому.

Быстрый старт: установка и одна команда

Шаг 1: поставить omp. Официальные способы из README проекта:

# macOS and Linux
curl -fsSL https://omp.sh/install | sh

# Homebrew
brew install can1357/tap/omp

# via Bun (requires Bun 1.3.14 or newer)
bun install -g @oh-my-pi/pi-coding-agent

# Windows (PowerShell)
irm https://omp.sh/install.ps1 | iex

Шаг 2: получить ключ. Зарегистрируйтесь на gate.joingonka.ai/register, подтвердите адрес и создайте ключ с префиксом jg- в разделе «API-ключи». Один ключ и один баланс действуют для всех моделей сети.

Шаг 3: запустить установщик.

npx @joingonka/setup --tool omp

Установщик спросит ключ — в аргументах командной строки он не передаётся, чтобы не осесть в истории оболочки, — и сделает четыре вещи:

  • пропишет провайдера joingonka в ~/.omp/agent/models.yml: адрес шлюза, протокол openai-completions, ключ литералом и три модели сети с настоящими окнами контекста и потолками ответа; файл получит права 600;
  • поставит модель по умолчанию — modelRoles.default в ~/.omp/agent/config.yml — на DeepSeek V4 Flash, но только если роль пуста или указывает на модель, ушедшую из сети: чужой выбор он не перехватывает, а подсказывает, как переключиться;
  • перед записью сделает резервную копию прежнего файла, а остальные провайдеры, роли и комментарии оставит как были;
  • в конце отправит живой запрос на шлюз и прямо скажет, приняты ли ключ, адрес и модель.

Другую модель по умолчанию задаёт флаг --model с сокращением deepseek, glm или minimax — явно указанная модель записывается всегда. Для дотфайлов и серверов есть режим без вопросов, ключ в нём берётся из переменной окружения:

JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool omp --model glm --non-interactive

Нестандартное расположение конфигов установщик учитывает сам: именованный профиль (OMP_PROFILE) и перенесённый каталог агента (PI_CODING_AGENT_DIR). Наследный models.json он переносит в models.yml так же, как сделал бы сам omp, — прежние провайдеры не пропадут. А если рядом лежит старый settings.json без config.yml, установщик не станет создавать config.yml, чтобы omp не пропустил собственный перенос настроек: он попросит один раз запустить omp и повторить команду.

Ручная настройка: два YAML-файла

Всё, что делает установщик, можно написать руками. Файлов два, и у каждого своя работа: models.yml описывает провайдеров и модели, config.yml хранит настройки — в том числе то, какая модель стоит на какой роли.

# ~/.omp/agent/models.yml
providers:
  joingonka:
    baseUrl: https://gate.joingonka.ai/v1
    api: openai-completions
    apiKey: jg-your-key
    models:
      - id: deepseek-ai/DeepSeek-V4-Flash-0731
        name: DeepSeek V4 Flash (Gonka)
        input: [text]
        contextWindow: 380000
        maxTokens: 32768
        reasoning: true
      - id: zai-org/GLM-5.3-Flash
        name: GLM-5.3 Flash (Gonka)
        input: [text]
        contextWindow: 390000
        maxTokens: 8192
        reasoning: true
      - id: MiniMaxAI/MiniMax-M2.7
        name: MiniMax M2.7 (Gonka)
        input: [text]
        contextWindow: 200000
        maxTokens: 8192
# ~/.omp/agent/config.yml
modelRoles:
  default: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
ПолеЗначениеЧто важно
baseUrlhttps://gate.joingonka.ai/v1Обязательно с /v1 на конце: путь /chat/completions omp дописывает сам
apiopenai-completionsТранспорт Chat Completions — на нём проверена вся эта инструкция
apiKeyваш ключ jg-…omp сначала ищет переменную окружения с таким именем и, не найдя, берёт строку как сам ключ. Значение, которое начинается с !, — команда, чей вывод станет ключом
contextWindow, maxTokensпо списку моделей вышеБез них omp подставит 128000 и 16384 — моделям сети это не соответствует. По окну контекста агент считает, когда пора сжимать историю
input[text]Модели сети принимают текст
reasoningtrueОтметка рассуждающей модели: установщик ставит её DeepSeek V4 Flash и GLM-5.3 Flash, запись MiniMax M2.7 обходится без неё

Ключ литералом — самый беспроблемный вариант: omp стартует из любого окружения, а файл достаточно закрыть командой chmod 600 ~/.omp/agent/models.yml. Хотите держать ключ вне файла — впишите в apiKey имя переменной, например JOINGONKA_API_KEY, и экспортируйте её в оболочке, откуда запускаете omp: именно такой порядок разрешения ключа описан в документации проекта.

Необязательное поле cost (цена за миллион токенов) нужно только для оценки стоимости сессии в интерфейсе omp. Установщик вписывает туда живую цену шлюза на момент установки; в ручном конфиге поле можно опустить — к вашему счёту эта оценка отношения не имеет, фактический расход показывает кабинет.

Селектор модели записывается как provider/model-id. Имя провайдера отделяется по первой косой черте, поэтому идентификаторы сети с собственной косой чертой пишутся как есть: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731. Вместо правки config.yml роль можно назначить из интерфейса — командой /model внутри сессии или в мастере omp setup.

Роли моделей: какую модель на какую работу

В omp модель выбирается не одна на всё, а по ролям — это и есть главный рычаг настройки. Встроенные роли для диалога: default, smol, slow, plan, commit, task, tiny, memory, advisor и vision. Назначать все не нужно: незаданные smol и slow сначала берут модель роли default, субагенты без роли task работают на модели текущей сессии, commit и tiny идут следом за smol. Конфигурация из одной строки default — полностью рабочая.

Делить роли между моделями сети стоит не ради экономии — цена у DeepSeek V4 Flash, GLM-5.3 Flash и MiniMax M2.7 одна, — а ради поведения и ёмкости: рассуждающая модель лучше планирует, модель с длинным ответом лучше пишет, а фоновые мелочи незачем ставить в одну очередь с основной задачей.

РольЧто на ней выполняетсяМодель сетиПочему
defaultобычные ходы агента: чтение, правки, командыDeepSeek V4 FlashКонтекст 380K и потолок ответа 32768 — запас для длинных сессий с инструментами; её же ставит установщик
smol, task, commitбыстрые подзадачи, субагенты, разбор изменений для коммитовне задавать — по наследованию придут к DeepSeek V4 FlashВсе они вызывают инструменты, а отдельная «дешёвая» модель при единой цене ничего не экономит
slowглубокий разбор: запутанная логика, поиск причиныGLM-5.3 FlashРассуждает перед ответом; потолок ответа 8192, и часть его уходит на рассуждения — для длинного текста верните DeepSeek V4 Flash
planрежим планированияGLM-5.3 FlashПлан — короткий текст, в котором ход мысли важнее объёма
tinyзаголовки сессий и служебная классификация — короткие запросы без инструментовMiniMax M2.7У модели самая большая ёмкость в сети, и фон не спорит за слоты с основной задачей
advisorвторая модель, которая читает каждый ход основной и вставляет замечанияGLM-5.3 Flash, по желаниюСоветнику полезно отличаться от исполнителя; включается командой /advisor on
visionзадачи с картинкамине задаватьМодели сети текстовые: роль оставьте провайдеру с vision-моделью
# ~/.omp/agent/config.yml
modelRoles:
  default: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
  slow: joingonka/zai-org/GLM-5.3-Flash
  plan: joingonka/zai-org/GLM-5.3-Flash
  tiny: joingonka/MiniMaxAI/MiniMax-M2.7

retry:
  fallbackChains:
    default:
      - joingonka/zai-org/GLM-5.3-Flash

Блок retry.fallbackChains — страховка на час пик: когда основная модель упорно отвечает 429, omp передаёт остаток хода следующей записи цепочки, а после паузы возвращается к основной. Ключом цепочки может быть роль, конкретная модель или весь провайдер (joingonka/*).

На один запуск роль переопределяется флагом: omp --model slow запускает сессию на модели роли slow, а --smol, --slow и --plan подменяют модель самой роли. Внутри сессии Ctrl+P листает модели ролей, а /model открывает выбор; во вкладке Roles там же назначаются роли и их запасные.

К значению роли можно дописать уровень размышлений — :low, :medium, :high. Это синтаксис omp, а как уровень понимает конкретная модель, зависит от неё самой: у GLM-5.3 Flash, например, это двоичный переключатель — подробности в обзоре модели. И ещё одна полезная деталь: роли можно переопределить для одного репозитория файлом <repo>/.omp/config.yml с тем же блоком modelRoles. Провайдеры и ключи при этом остаются в домашнем каталоге, так что ключ в репозиторий не попадёт.

Проверка: что должно произойти

Сначала убедитесь, что omp видит провайдера:

omp models joingonka

В ответ приходит таблица из трёх строк с окнами контекста и потолками ответа из models.yml, округлёнными до тысяч (вывод сокращён: у omp есть ещё колонки thinking и images):

joingonka (3)
model                                context  max-out
deepseek-ai/DeepSeek-V4-Flash-0731      380K      33K
MiniMaxAI/MiniMax-M2.7                  200K     8.2K
zai-org/GLM-5.3-Flash                   390K     8.2K

Затем — разовый прогон без интерфейса. Положите в пустой каталог файл с очевидной ошибкой и попросите её найти:

omp -p "Read calc.py and tell me in one sentence whether it has a bug."

Агент должен сам вызвать инструмент чтения и ответить по существу — с указанием выражения, где ошибка. В нашем прогоне 21 сентября 2026 этот цикл — запрос, вызов инструмента, результат, ответ — чисто прошли DeepSeek V4 Flash и GLM-5.3 Flash; про MiniMax M2.7 — последняя строка таблицы ниже.

Третья проверка — со стороны шлюза: в кабинете в разделе «Использование» запрос появится в разбивке «По моделям», а в блоке «По ключам» обновится время последнего запроса. Если там пусто, omp ходит к другому провайдеру: посмотрите, что стоит на ролях, командой omp config get modelRoles.

Если что-то пошло не так, диагноз обычно читается прямо из сообщения:

Что видноЧто это значитЧто сделать
Bun runtime must be >= 1.3.14omp поставлен через Bun, а сам Bun старыйОбновите Bun (bun upgrade) или поставьте готовый бинарник: curl -fsSL https://omp.sh/install | sh -s -- --binary
401 Invalid API keyШлюз не принял ключПроверьте apiKey: ключ целиком, без пробелов и кавычек-опечаток. Если там имя переменной — она должна быть экспортирована в той оболочке, откуда запущен omp
405 Not Allowed и HTML-страница nginxВ baseUrl потерялся суффиксАдрес должен заканчиваться на /v1
404 Invalid URL (POST /v1/v1/chat/completions)В baseUrl лишний хвостОставьте ровно https://gate.joingonka.ai/v1 — остальное omp допишет сам
400 Model … not found. Available: …Опечатка в id моделиШлюз сам перечисляет доступные идентификаторы; полный список — GET https://gate.joingonka.ai/v1/models
Warning: models.yml validation failed — custom providers disabled, затем No models matching "joingonka"Файл не прошёл проверку: опечатка в имени обязательного поля или битый YAML. omp при этом продолжает работать на встроенных моделяхПричина названа строкой ниже предупреждения; исправьте поле и повторите omp models joingonka
429У ключа исчерпан минутный лимит запросов либо у модели в час пик закончилась ёмкостьomp сам повторяет запрос с нарастающей паузой. Затянулось — смените модель через /model или настройте retry.fallbackChains; состояние сети видно на странице статуса
402На балансе закончились средстваПополните счёт в разделе «Биллинг»; ключ при этом рабочий
Ход завершился, а видимого ответа нет (в режиме -p — пустая строка)Наблюдали 21 сентября 2026 на MiniMax M2.7 в ходах после вызова инструмента: ответ пришёл внутри блока рассуждений, и omp показал его как размышлениеПоставьте на роли с инструментами DeepSeek V4 Flash или GLM-5.3 Flash, а MiniMax M2.7 оставьте для коротких задач без инструментов

Сколько это стоит

Агентный инструмент тратит токены иначе, чем чат: к каждой вашей фразе omp добавляет системный промпт и описания инструментов, а задача обычно занимает несколько ходов. В нашем прогоне даже с единственным включённым инструментом чтения каждый ход нёс около 3,5 тысячи входных токенов; с полным набором будет больше. Поэтому цена за токен здесь решает.

Через JoinGonka Gateway токены стоят $0.0069 за миллион на входе и $0.021 за миллион на выходе — цена одинакова для всех моделей сети и подставляется на этой странице из живого источника.

СценарийРасходЧерез Gateway
Разовая задача: прочитать файл, найти ошибкуот 7K токеновдоли цента
День активной работы3-7M токеновединицы центов
Месяц активной разработки~150M токеновоколо доллара

Оценки в правой колонке — по ценам на сентябрь 2026. Для сравнения — как вообще можно платить за модели в omp:

СпособМодель оплатыЧто ограничивает
Подписка на coding plan (вход через /login)фиксированная сумма в месяцквоты и окна обновления лимитов на стороне вендора
Ключ вендора напрямуюза токены по прайсу вендорасчёт растёт вместе с длиной сессий; цена зависит от выбранной модели
JoinGonka Gatewayза токены, предоплаченный балансрасход виден в кабинете; подписки и месячных квот нет

Строка состояния omp показывает оценку стоимости сессии. Считается она по полю cost из models.yml: установщик вписывает туда цену шлюза на момент установки, а долларовая цена в сети плавает вместе с курсом GNK, поэтому оценка — ориентир. Точный расход и остаток — в кабинете, в разделах «Использование» и «Биллинг». Почему выбор по умолчанию пал на DeepSeek V4 Flash, подробно разобрано в обзоре модели.

Что учесть в работе

Режим подтверждений. По умолчанию omp работает в режиме yolo: сам одобряет чтение, запись и запуск команд. На своём проекте это удобно, на чужом коде — повод ужесточить режим или уйти в контейнер:

omp config set tools.approvalMode write

В режиме write агент спрашивает разрешение только на исполнение команд, в always-ask — ещё и на запись. На один запуск то же задаёт флаг --approval-mode. Это свойство самого omp, от провайдера модели оно не зависит.

Pi и omp — родственники с разными конфигами. Настройка одного инструмента второму не передаётся: каталоги, форматы и имена полей у них свои.

Piomp
Каталог настроек~/.pi/agent~/.omp/agent
Провайдерыmodels.jsonmodels.yml
Модель по умолчаниюsettings.json: defaultProvider и defaultModelconfig.yml: modelRoles.default
Выбор модели под задачу/model в сессиироли modelRoles и цепочки retry.fallbackChains
Проверкаpi --list-modelsomp models joingonka
Установщик--tool pi--tool omp

Несколько окружений. Именованный профиль (omp --profile work или переменная OMP_PROFILE) переносит все настройки в ~/.omp/profiles/<name>/agent — удобно развести рабочие и личные ключи. Текущий каталог агента печатает omp config path.

Если агент нужен в редакторе. omp умеет работать внутри Zed по протоколу ACP — это тот же агент с теми же настройками, второй раз провайдера и роли прописывать не нужно.

omp подключается к JoinGonka Gateway одной командой — npx @joingonka/setup --tool omp — или двумя файлами: провайдер joingonka в ~/.omp/agent/models.yml (baseUrl с /v1, api: openai-completions, ключ jg-…, модели с честными contextWindow и maxTokens) и modelRoles.default в config.yml. Дальше работает главный рычаг omp — роли: DeepSeek V4 Flash на обычные ходы, GLM-5.3 Flash на разбор и планирование, MiniMax M2.7 на фоновые мелочи, цепочка fallbackChains на час пик. Проверка — omp models joingonka и раздел «Использование» в кабинете; цена у всех моделей сети одна, поэтому роли выбираются по поведению, а не по бюджету.

Хотите узнать больше?

Изучите другие разделы или начните зарабатывать GNK прямо сейчас.

Получить ключ и бесплатные токены →