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

Навигация

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

Категории

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

Инструменты

Factory Droid + JoinGonka Gateway: BYOK на моделях сети Gonka

Factory Droid (команда droid) — терминальный кодовый агент компании Factory. Он разбирается в проекте, правит файлы, запускает команды и тесты, а крупную работу умеет сначала разложить в план. Режимов два: интерактивный droid в терминале и разовый droid exec — одна задача из скрипта или CI.

Штатно Droid работает на моделях из каталога Factory, но в нём есть BYOK: массив customModels в ~/.factory/settings.json принимает любой endpoint, говорящий на OpenAI Chat Completions. JoinGonka Gateway именно такой, поэтому подключение сводится к одной команде установщика — и агент работает на моделях децентрализованной сети Gonka: DeepSeek V4 Flash, GLM-5.3 Flash и MiniMax M2.7, все по одной цене — $0.0069 за миллион входных токенов.

Одно условие стоит знать заранее: интерактивный режим Droid требует входа в аккаунт Factory, и свои модели этого не отменяют. Разовый droid exec на моделях BYOK в нашем прогоне отработал и без входа — подробности в разделе о BYOK. Команды, файлы и сообщения ниже сверены живым прогоном Droid 0.225.1 через шлюз 23 сентября 2026. После подтверждения адреса на счёт придут 3M бесплатных токенов — их хватит, чтобы повторить всё это самому.

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

Шаг 1: поставить Droid. Официальные способы из документации Factory:

# macOS and Linux
curl -fsSL https://app.factory.ai/cli | sh

# Homebrew
brew install --cask droid

# Windows (PowerShell)
irm https://app.factory.ai/cli/windows | iex

# via npm
npm install -g droid

Скрипт кладёт бинарник в ~/.local/bin и подсказывает, как добавить каталог в PATH; на Linux документация просит поставить ещё пакет xdg-utils. Проверка — droid --version.

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

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

npx @joingonka/setup --tool droid

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

  • допишет в массив customModels файла ~/.factory/settings.json (на Windows — %USERPROFILE%\.factory\settings.json) по записи на каждую модель сети: адрес шлюза, тип провайдера generic-chat-completion-api, ключ литералом, настоящие окно контекста и потолок ответа; файл получит права 600;
  • поставит модель по умолчанию — sessionDefaultSettings.model — на DeepSeek V4 Flash, но только если она не выбрана или указывает на модель, ушедшую из сети. Модель из каталога Factory или чужую запись BYOK он не перехватывает, а подсказывает, как переключиться;
  • сохранит копию прежнего файла, а чужие записи в customModels, остальные настройки и комментарии оставит как были; файл, который не удаётся разобрать, не перезапишет, а скажет, что исправить;
  • в конце отправит живой запрос на шлюз и прямо скажет, приняты ли ключ, адрес и модель.

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

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

Перезапускать Droid не нужно: изменения в settings.json он замечает сам. Строка ! Could not verify right now с ответом 429 в конце означает занятую модель, а не ошибку настройки — конфигурация уже записана.

Ручная настройка: customModels в settings.json

Всё, что делает установщик, можно написать руками. Пользовательские настройки Droid хранятся в ~/.factory/settings.json; если файла нет, Droid создаёт его при первом запуске. Для сети Gonka нужны массив customModels и модель по умолчанию:

{
  "customModels": [
    {
      "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
      "id": "custom:deepseek-ai/DeepSeek-V4-Flash-0731",
      "displayName": "DeepSeek V4 Flash (Gonka)",
      "baseUrl": "https://gate.joingonka.ai/v1",
      "apiKey": "jg-your-key",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 32768,
      "maxContextLimit": 380000,
      "noImageSupport": true
    },
    {
      "model": "zai-org/GLM-5.3-Flash",
      "id": "custom:zai-org/GLM-5.3-Flash",
      "displayName": "GLM 5.3 Flash (Gonka)",
      "baseUrl": "https://gate.joingonka.ai/v1",
      "apiKey": "jg-your-key",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 8192,
      "maxContextLimit": 390000,
      "noImageSupport": true
    },
    {
      "model": "MiniMaxAI/MiniMax-M2.7",
      "id": "custom:MiniMaxAI/MiniMax-M2.7",
      "displayName": "MiniMax M2.7 (Gonka)",
      "baseUrl": "https://gate.joingonka.ai/v1",
      "apiKey": "jg-your-key",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 8192,
      "maxContextLimit": 200000,
      "noImageSupport": true
    }
  ],
  "sessionDefaultSettings": {
    "model": "custom:deepseek-ai/DeepSeek-V4-Flash-0731"
  }
}
ПолеЗначениеЧто важно
modelid модели сетиУходит в запрос как есть, вместе с префиксом вендора
idcustom: + id моделиПостоянное имя записи для флага -m и модели по умолчанию. Без поля Droid строит имя сам — из displayName и порядкового номера
displayNameлюбая подписьТак модель называется в списке /model
baseUrlhttps://gate.joingonka.ai/v1Обязательно с /v1 на конце: путь /chat/completions Droid дописывает сам
apiKeyваш ключ jg-…Литерал — самый надёжный вариант. Ссылка вида ${JOINGONKA_API_KEY} тоже допустима, но тогда переменная обязана быть в окружении, из которого запущен Droid, иначе запрос не уйдёт
providergeneric-chat-completion-apiТип для OpenAI Chat Completions — ровно так, строчными; на нём проверена вся эта инструкция
maxOutputTokens32768, 8192, 8192Потолок ответа каждой модели в сети
maxContextLimit380000, 390000, 200000Окно контекста модели; поле описано в схеме настроек Factory
noImageSupporttrueМодели сети текстовые, флаг отключает для записи вложение картинок

Модель по умолчанию хранится в sessionDefaultSettings.model и ссылается на запись по её id. Документация Factory упоминает ещё ключ model в корне файла, но в нашем прогоне droid exec без флага -m брал модель именно из sessionDefaultSettings — и после смены значения тоже.

Ключ лежит в файле открытым текстом: закройте файл командой chmod 600 ~/.factory/settings.json и не переносите записи с ключом в .factory/settings.json проекта — он обычно попадает в репозиторий. А если после запуска Droid файл выглядит иначе, это нормально: сохраняя любую настройку, Droid переписывает файл целиком — упорядочивает ключи, добавляет записям поле index и не сохраняет комментарии. Права 600 при этом остаются, а установщик такие записи спокойно обновляет.

BYOK в Droid: выбор модели и что требует аккаунта Factory

Свои записи Droid показывает отдельно от каталога: по документации, в интерактивном режиме команда /model выводит их в разделе Custom models, а Ctrl+N перебирает модели прямо в поле ввода. В разовом режиме модель задаёт флаг -m со значением из поля id, косые черты пишутся как есть: droid exec -m custom:zai-org/GLM-5.3-Flash "…".

Ошибётесь в имени — Droid ответит Invalid model и перечислит все модели, которые видит, включая свои в виде custom:… (display name): заодно видно, что записи загрузились. Имя в стиле документации Factory, из подписи и номера (custom:DeepSeek-V4-Flash-(Gonka)-0), при явном id не сработает — в нашем прогоне оно дало тот же Invalid model.

Что требует аккаунта Factory. Свои модели снимают вопрос оплаты токенов, но не входа в сам продукт. Вот что показал прогон Droid 0.225.1 без входа в аккаунт:

СценарийНужен ли вход в FactoryЧто было в прогоне
Интерактивный droidДаСразу после заставки — экран «Please login with your Factory account to continue» с вариантами Login и Exit; дальше без аккаунта не пройти
droid exec на моделях BYOKПо документации — да, через ключ FACTORY_API_KEYВсе три модели сети ответили; в JSON-выводе factory_credits: 0, в журнале — предупреждения о недоступных облачных функциях
Облачные функции: синхронизация сессий с веб-версией, коннекторы, лимиты тарифаДаЗапросы к API Factory получали 401 и пропускались — на работу агента это не повлияло

Для работы в интерфейсе заведите аккаунт Factory и войдите через браузер — пункт Login или команда /login; на машине без браузера документация предлагает ключ из настроек аккаунта в переменной FACTORY_API_KEY. Работа droid exec без входа удобна для пробы, но официально не описана — в CI на неё не закладывайтесь. По тарифной странице Factory, BYOK входит во все индивидуальные планы с бесплатным лимитом, а сверх лимита использование BYOK тарифицируется по условиям плана; актуальные условия — на factory.ai/pricing. Токены моделей сети при этом оплачиваются отдельно — с баланса JoinGonka.

Какую модель выбрать. Цена у всех моделей сети одна, поэтому выбор — про поведение. Так они отработали в нашем прогоне droid exec на одной задаче — прочитать файл и найти ошибку:

МодельКонтекст / ответКак ведёт себя в Droid
DeepSeek V4 Flash380K / 32768Верный ответ за два хода. Самый большой потолок ответа в сети, поэтому установщик и ставит её по умолчанию. С --auto low она же исправила файл и сама запустила его для проверки
GLM-5.3 Flash390K / 8192Верный ответ за два хода, около 20 секунд. Рассуждающая модель: часть потолка ответа уходит на рассуждения
MiniMax M2.7200K / 8192Верный ответ за два хода, 10-20 секунд. Рассуждение модели приходит отдельно от ответа, и в выводе droid exec остаётся только сам ответ

Флаг -r (уровень рассуждений) к моделям BYOK, по документации Factory, не применяется. Почему по умолчанию выбрана DeepSeek V4 Flash, разобрано в обзоре модели.

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

Положите в пустой каталог файл calc.py с очевидной ошибкой — например, площадь прямоугольника, где стороны складываются вместо умножения, — и попросите Droid её найти:

droid exec "Read the file calc.py in the current project directory and tell me in one sentence whether it has a bug."

Без флагов droid exec работает в режиме только для чтения: смотреть файлы можно, менять — нет. Агент сам вызовет инструмент чтения и ответит по существу, с указанием ошибочного выражения. С флагом -o json ответ приходит одним объектом, который удобно разбирать скриптом (вывод сокращён):

{"type":"result","subtype":"success","is_error":false,"duration_ms":2239,"num_turns":2,
 "result":"Yes, the file has a bug: the rectangle area is computed as the sum of the side lengths, but it should be their product (width * height). …",
 "usage":{"input_tokens":19016,"output_tokens":146,"factory_credits":0,"ttft_ms":747}}

Поле factory_credits: 0 подтверждает, что работа шла на вашей модели, а не в кредитах Factory. Чтобы агент мог править файлы, добавьте уровень автономности: droid exec --auto low "Fix the bug in calc.py and change nothing else." — в нашем прогоне DeepSeek V4 Flash прочитала файл, заменила сложение на умножение и сама запустила скрипт, чтобы убедиться, что выводится 12.

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

Если что-то пошло не так, учтите особенность Droid: в консоли droid exec печатает только Error during droid execution: Exec failed (в JSON — "result":"Exec failed"), а настоящая причина остаётся в журнале. Достать её можно одной командой:

grep agent_error_count ~/.factory/logs/droid-log-single.log | grep -o '"errorMessage":"[^,]*' | tail -1
Что видноЧто это значитЧто сделать
401 Invalid API keyШлюз не принял ключПроверьте apiKey в записи модели: ключ целиком, без пробелов. Если там ссылка ${…} — переменная должна быть в окружении, из которого запущен Droid
405 <html>…405 Not Allowed…В baseUrl нет суффикса /v1Адрес должен быть ровно https://gate.joingonka.ai/v1
400 Model "…" not found. Available: …Опечатка в поле model, чаще всего нет префикса вендораСкопируйте id из перечня, который шлюз приводит в самом сообщении
Invalid model: custom:… и список моделейФлаг -m или модель по умолчанию ссылаются на запись, которой нетВозьмите имя из раздела Available custom models. Моделей сети там нет — Droid не загрузил записи: проверьте синтаксис JSON
429 Model "…" is currently overloaded in the Gonka network (rate limit)У модели в сети сейчас нет свободной ёмкостиDroid повторяет запрос сам — у нас пять попыток примерно за две минуты. Не помогло — смените модель флагом -m; состояние сети — на странице статуса
402На балансе закончились средстваПополните счёт в разделе «Биллинг»; ключ при этом рабочий
«Please login with your Factory account to continue»Интерактивный режим требует аккаунта FactoryВойдите через Login или работайте через droid exec
Долгая пауза перед первым ответомОчередь к модели в час пикПодождите или смените модель флагом -m

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

Агентный инструмент тратит токены иначе, чем чат: к каждой вашей фразе Droid добавляет системный промпт, описания инструментов и снимок рабочего каталога, а задача занимает несколько ходов. В нашем прогоне каждый ход нёс около 9,5 тысячи входных токенов ещё до вашего вопроса: задача «прочитать файл и найти ошибку» заняла два хода и около 19 тысяч токенов, «исправить и проверить» — четыре хода и около 44 тысяч. Поэтому цена за токен здесь решает.

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

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

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

СпособМодель оплатыЧто ограничивает
Модели из каталога Factoryподписка на план Pro, Plus или Maxскользящие лимиты на 5 часов, 7 и 30 дней; сверх них — пул Droid Core или докупка Extra Usage
BYOK с ключом вендораза токены по прайсу вендорасчёт растёт вместе с длиной сессий; цена зависит от выбранной модели
JoinGonka Gateway (BYOK)за токены, предоплаченный балансрасход виден в кабинете, подписки и квот у шлюза нет; условия BYOK на стороне Factory — те же, что для любого своего ключа

Команда /cost в интерфейсе Droid показывает статистику сессии, а точный расход и остаток для моделей BYOK — в кабинете шлюза, в разделах «Использование» и «Биллинг». Заведите для Droid отдельный ключ — его трафик будет виден отдельной строкой.

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

Автономность. В разовом режиме Droid по умолчанию только читает, права расширяют уровни: --auto low — правки файлов, --auto medium — ещё установка зависимостей, сборка, тесты и локальные коммиты, --auto high — вплоть до push и деплоя. Флаг --skip-permissions-unsafe снимает все проверки — только для одноразовых контейнеров. В интерактивном режиме уровень переключает Ctrl+L, а стартовый задаёт sessionDefaultSettings.autonomyLevel; по умолчанию там off — всё с подтверждением.

Подпись в коммитах. Настройка includeCoAuthoredByDroid по умолчанию включена: Droid добавляет в сообщения коммитов строку соавторства. Если она не нужна, впишите "includeCoAuthoredByDroid": false в settings.json.

Где хранятся сессии. После входа в аккаунт Droid по умолчанию зеркалирует сессии CLI в веб-версию Factory — за это отвечает cloudSessionSync. Ключи BYOK, по документации, остаются локальными; если и переписка должна оставаться на машине, поставьте "cloudSessionSync": false. Шлюз со своей стороны не хранит содержимое промптов и ответов — в статистике остаются только агрегаты расхода.

Обновления. Установка скриптом обновляется сама; зафиксировать версию можно переменной FACTORY_DROID_AUTO_UPDATE_ENABLED=false или командой droid update --version <version>; сборки из npm сами не обновляются. После обновления одним droid exec проверьте, что модели сети на месте.

Картинки. Модели сети текстовые; для скриншотов держите рядом запись с моделью, которая умеет зрение, у другого провайдера.

Если работа без аккаунта вендора принципиальна. Те же модели сети подключаются к открытым терминальным агентам, которым вход не нужен, — например, к OpenCode тем же установщиком, с флагом --tool opencode.

Factory Droid подключается к JoinGonka Gateway через BYOK: команда npx @joingonka/setup --tool droid дописывает в customModels файла ~/.factory/settings.json записи DeepSeek V4 Flash, GLM-5.3 Flash и MiniMax M2.7 (provider: generic-chat-completion-api, baseUrl с /v1, ключ jg-…, явный id вида custom:<model>) и ставит DeepSeek V4 Flash в sessionDefaultSettings.model. Интерактивный режим требует аккаунта Factory; droid exec на моделях BYOK в прогоне 0.225.1 отработал и без него, с factory_credits: 0. Проверка — droid exec -o json и раздел «Использование» в кабинете, а причину сбоя Droid пишет не в консоль, а в ~/.factory/logs/droid-log-single.log.

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

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

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