Розділи бази знань ▾

Навігація

▸ Почніть тут За ролями

Категорії

Інструменти 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 прямо зараз.

Отримати ключ і безкоштовні токени →