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

Навигация

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

Категории

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

Инструменты

DeepSeek Harness: свой провайдер через JoinGonka Gateway

DeepSeek Harness (команда dsh) — открытый агентный харнесс от DeepSeek AI: оболочка, в которой модель читает и правит файлы проекта, запускает команды, делегирует подзадачи и ведёт план, а вы следите за этим из браузера и подтверждаете рискованные шаги. Проект молодой: авторы сами называют его developer preview и прямо предупреждают, что несовместимые изменения будут. Поэтому всё ниже привязано к конкретной версии — 0.1.5-rc.2, на которой мы прошли настройку от первого экрана до ответа агента.

При первом запуске dsh просит ключ официального API своего вендора, но модельный слой у него открыт: на странице Settings → Models добавляется любой поставщик, говорящий на одном из трёх протоколов — OpenAI Chat Completions, OpenAI Responses или Anthropic Messages. JoinGonka Gateway обслуживает все три, поэтому харнесс подключается к децентрализованной сети Gonka штатными средствами, без плагинов и патчей.

Показательная деталь со страницы приложения в каталоге OpenRouter: в рейтинге моделей, через которые там работает DeepSeek Harness, за последние 30 дней второе место занимает DeepSeek V4 Flash 0731, третье — GLM 5.3 Flash (срез на 21 сентября 2026; на первом месте — анонимная тестовая модель). Обе открытые модели обслуживает сеть Gonka — вместе с MiniMax M2.7, — так что привычный набор переезжает на другой endpoint без смены модели: меняются только адрес и цена за токен.

Что такое DeepSeek Harness и как его запустить

Харнесс — это всё, что окружает модель в агентной работе: цикл «запрос → вызов инструмента → результат → следующий шаг», инструменты для файлов и терминала, права и подтверждения, журнал сессии, сжатие контекста. DeepSeek Harness собирает это из плагинов: архитектура «everything is a plugin» построена на фреймворке Cordis, и любой узел — от инструмента до адаптера модели — заменяется без правки ядра. Код открыт под лицензией MIT.

Установка не нужна — достаточно Node.js (линейка 22 начиная с 22.19 либо 24 и новее):

npx @deepseek-ai/dsh web

Команда поднимает Web UI на http://127.0.0.1:3080 и открывает его в браузере; при запуске по SSH адрес только печатается в терминале. Флаг --no-open запускает сервер без браузера, --port меняет порт. Каталог, из которого запущен dsh, становится рабочим по умолчанию, но сессию интерфейс начнёт только после явного выбора workspace.

РежимКомандаДля чего
Web UIdsh webОсновной интерфейс: сессии, настройки, подтверждения операций
Разовая задачаdsh --profile headless "task"Скрипты и CI: ответ в stdout, ход рассуждений в stderr
ACPdsh --profile acpРедакторы и клиенты с поддержкой Agent Client Protocol
SDKdsh --profile sdkКлиенты по JSON-RPC, в том числе Python SDK

Модельный слой состоит из двух адаптеров. Прямой ходит в официальный API вендора. Многопровайдерный — dsh-llm-pi-ai — построен на библиотеке pi-ai, той же, что лежит в основе терминального агента Pi; через него подключаются и встроенные поставщики из каталога, и любые свои endpoint. Поэтому имена полей в настройках — api, contextWindow, maxTokens — совпадают с теми, что знакомы по Pi.

О зрелости. README проекта начинается с предупреждения: developer preview, быстрые итерации, ломающие изменения. Отдельный документ SAFETY.md уточняет, что аудит безопасности не проводился, а агент исполняет команды, сгенерированные моделью. Практический вывод простой: запускайте dsh в контейнере, виртуальной машине или под отдельной учётной записью и держите резервные копии всего, до чего он может дотянуться.

Подключение через Web UI: Settings → Models

Шаг 1: ключ. Зарегистрируйтесь на gate.joingonka.ai/register: после подтверждения адреса на счёт придут 3M бесплатных токенов. В кабинете откройте раздел «API-ключи» и создайте ключ с префиксом jg-. Удобно завести для харнесса отдельный ключ — тогда его трафик будет виден в статистике отдельной строкой.

Шаг 2: первый экран. После уведомления о тестовом статусе (кнопка Continue) dsh предложит ввести ключ официального API («Add an API key to get started»). Он не обязателен: нажмите Configure later.

Шаг 3: провайдер. Откройте Settings → Models и выберите Add a custom provider. Поля формы:

ПолеЗначениеПримечание
Provider IDjoingonkaСтрочными латинскими буквами, начинается с буквы. Идентификатор постоянный: он попадает в запросы, сохранённые сессии и имя ссылки на ключ. Переименовать нельзя — только создать нового провайдера и удалить старого
Display nameJoinGonka GatewayЛюбая подпись для списков
Base URLhttps://gate.joingonka.ai/v1С суффиксом /v1
API protocolopenai-completionsКак выбирать протокол — в таблице ниже
API keyjg-your-keyПоле только на запись: после сохранения страница получает замаскированный дескриптор, а не сам ключ

Шаг 4: модели. В блоке Models нажмите Fetch available models: dsh запросит у шлюза список и откроет окно «Choose models to add». В нашем прогоне в нём оказались все три модели сети — MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731 и zai-org/GLM-5.3-Flash, — а после Add selected харнесс сам проставил каждой окно контекста и потолок ответа — по данным шлюза. Остаётся нажать Create provider.

Шаг 5: выбор модели. Закройте настройки, нажмите Choose workspace и добавьте каталог проекта. Модели нового провайдера появятся в селекторе; выбранная становится моделью по умолчанию для новых сессий.

Ключ dsh хранит отдельно от настроек: в файле ~/.dsh/.credentials.yaml с правами только для владельца. В settings.yaml остаётся лишь имя ссылки на него — в нашем прогоне JOINGONKA_API_KEY, по идентификатору провайдера.

Какой протокол выбрать. Шлюз говорит на всех трёх, различаются базовый адрес и побочные удобства:

API protocolBase URLКогда выбирать
openai-completionshttps://gate.joingonka.ai/v1Основной вариант: канонический путь шлюза, список моделей подтягивается кнопкой, ход рассуждений reasoning-модели приходит отдельным потоком
openai-responseshttps://gate.joingonka.ai/v1Если ваши плагины или сценарии рассчитаны на Responses API
anthropic-messageshttps://gate.joingonka.aiФормат Anthropic Messages; путь /v1/messages клиент дописывает сам

Один провайдер в dsh говорит на одном протоколе, поэтому второй протокол — это второй провайдер с другим Provider ID. Для повседневной работы достаточно первого варианта; в нашем прогоне агентный цикл с вызовом инструментов отработал на всех трёх.

Настройка файлом: settings.yaml

Форма Models пишет в обычный YAML-документ — $DSH_HOME/settings.yaml, по умолчанию ~/.dsh/settings.yaml. Его можно править напрямую: кнопка Open configuration file в шапке настроек открывает файл, а адаптеры перечитывают его при следующем запросе — перезапуск не нужен. Полный вариант для сети Gonka:

# ~/.dsh/settings.yaml
llm-pi-ai:
  providers:
    joingonka:
      displayName: JoinGonka Gateway
      apiKeyEnv: JOINGONKA_API_KEY
      api: openai-completions
      baseURL: https://gate.joingonka.ai/v1
      models:
        - id: deepseek-ai/DeepSeek-V4-Flash-0731
          name: DeepSeek V4 Flash
          contextWindow: 380000
          maxTokens: 32768
        - id: zai-org/GLM-5.3-Flash
          name: GLM-5.3 Flash
          contextWindow: 390000
          maxTokens: 8192
          reasoningEfforts:
            off: low
            high: high
        - id: MiniMaxAI/MiniMax-M2.7
          name: MiniMax M2.7
          contextWindow: 200000
          maxTokens: 8192
agent-default-model:
  provider: joingonka
  model: deepseek-ai/DeepSeek-V4-Flash-0731

Что здесь важно:

  • apiKeyEnv — не ключ, а имя ссылки на него. Значение dsh ищет по порядку: переменная окружения на момент запуска, затем .credentials.yaml (туда пишет форма), затем .env в каталоге запуска, затем ~/.dsh/.env. Если настраиваете харнесс без браузера, хватит строки JOINGONKA_API_KEY=jg-your-key в ~/.dsh/.env с правами 600. Переменную, экспортированную после старта, уже запущенный процесс не увидит.
  • contextWindow и maxTokens задавайте явно. Модели, о которой dsh ничего не знает, он приписывает 262 144 и 32 768 токенов — реальным лимитам это не соответствует. Заданный maxTokens заодно становится лимитом ответа по умолчанию для каждого запроса.
  • reasoningEfforts — уровни рассуждения для меню Effort. У модели, вписанной вручную, уровней нет, и меню для неё не появляется. У GLM-5.3 Flash переключатель двоичный: значение low выключает рассуждение, любое другое оставляет его полным. Поэтому уровню off сопоставлено low, а high уходит как есть. В нашем прогоне с off блоков рассуждения не было совсем, с high они вернулись.
  • agent-default-model — модель для новых агентов, включая режим headless. То же самое делает выбор модели в интерфейсе; сюда же можно добавить reasoningEffort.

Переключатели compat, которые документация dsh советует для строгих шлюзов (supportsDeveloperRole: false, maxTokensField: max_tokens), здесь не понадобятся: JoinGonka Gateway принимает и роль developer, и поле max_completion_tokens.

Установщик npx @joingonka/setup этот харнесс не настраивает: всё подключение сводится к форме из предыдущего раздела или к YAML-фрагменту выше.

Проверка и типовые ошибки

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

cd /path/to/project
npx @deepseek-ai/dsh --profile headless "Read calc.py and tell me in one sentence whether it has a bug."

Финальный ответ печатается в stdout, ход рассуждений — в stderr с пометкой dsh: reasoning:. Агент должен сам вызвать инструмент чтения файла и ответить по существу: в нашем прогоне каждая из трёх моделей сети назвала ошибочную строку. Значит, полный цикл «запрос → вызов инструмента → результат → ответ» через шлюз собирается корректно.

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

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

Что видноЧто это значитЧто сделать
AUTH: 401: … Invalid API keyШлюз не принял ключВведите ключ заново на странице Models или исправьте переменную, на которую ссылается apiKeyEnv
MISSING_CREDENTIAL: … no credential for provider route "joingonka"По ссылке из apiKeyEnv ничего не нашлосьСохраните ключ в форме либо задайте переменную до запуска dsh: окружение читается один раз, на старте
UNKNOWN_MODELМодели нет в списке models провайдераДобавьте её в форму или в файл либо выберите уже настроенную
400 … Model "…" not found. Available: …Идентификатор вписан неточно, чаще всего без префикса вендораСкопируйте id из перечня, который шлюз приводит в самом сообщении
429 … currently overloaded … (rate limit)У модели сейчас кончилась свободная ёмкость в сетиШтатная ситуация под нагрузкой: dsh сам повторяет запрос. Если повторы исчерпаны — переключите модель или подождите минуту; состояние видно на странице статуса
Fetch available models отвечает 401Список запрошен с неверным ключомПроверьте ключ в форме; модели можно вписать и вручную — работать они будут так же
У reasoning-модели нет меню EffortУ записи модели не объявлены уровниДобавьте reasoningEfforts в settings.yaml, как в примере выше
Ответ reasoning-модели обрывается или пустРассуждение входит в лимит ответа и съело его целикомНе занижайте maxTokens; для коротких задач выбирайте уровень off
В поле ввода надпись Select model, ввод заблокированМодель по умолчанию ссылается на удалённого провайдераВыберите другую модель в селекторе

Какую модель выбрать

Цена у всех моделей сети одна, поэтому выбор — про поведение, а не про бюджет. Ниже — лимиты и то, как модели вели себя в нашем прогоне dsh на одной и той же задаче: прочитать файл и найти в нём ошибку.

МодельИдентификаторКонтекст / ответКак ведёт себя в dsh
DeepSeek V4 Flashdeepseek-ai/DeepSeek-V4-Flash-0731380K / 32768Чистый ответ с указанием строки. Самый большой потолок ответа в сети — длинные правки и большие файлы за один ход
GLM-5.3 Flashzai-org/GLM-5.3-Flash390K / 8192Reasoning-модель: рассуждения dsh показывает отдельным потоком, ответ остаётся чистым. Рассуждение входит в лимит ответа
MiniMax M2.7MiniMaxAI/MiniMax-M2.7200K / 8192Задачу решает верно; рассуждение приходит отдельным полем reasoning_content, в тексте ответа — только сам ответ

Рекомендация по умолчанию — DeepSeek V4 Flash: агентная работа быстро упирается в объём контекста и длину правки, а здесь запас по обоим параметрам. Когда задача требует подумать над запутанной логикой, переключайтесь на GLM-5.3 Flash и держите уровень рассуждения high; для быстрых правок тот же провайдер отдаёт её с уровнем off. MiniMax M2.7 — ровный вариант для коротких задач, когда видимый ход рассуждений не мешает. Модель меняется в селекторе интерфейса или строкой model в блоке agent-default-model.

Состав сети определяется голосованием участников и со временем меняется; актуальный список вместе с лимитами всегда отдаёт GET https://gate.joingonka.ai/v1/models — им же пользуется кнопка Fetch available models.

Сколько это стоит и что учесть в работе

Агентные инструменты расходуют токены иначе, чем чат: к каждой вашей фразе харнесс добавляет системный промпт и описания всех инструментов, а затем ведёт многоходовый диалог с моделью. В нашем прогоне задача «прочитай файл и найди ошибку» заняла два-три хода и от 14 до 22 тысяч токенов, причём почти всё это вход: около семи тысяч токенов уходит с каждым ходом ещё до вашего вопроса. Это нормальная плата за автономность — и именно поэтому решает цена за токен.

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

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

Оплата идёт за фактический расход, без подписки и без квот на число запросов; остаток и расход по дням видны в кабинете.

Версия. Пока проект в статусе developer preview, после каждого обновления проверяйте, что провайдер на месте, а для воспроизводимости фиксируйте версию прямо в команде: npx @deepseek-ai/[email protected] web.

Права. Новые сессии по умолчанию работают в режиме Workspace Write — запись в пределах рабочего каталога; операции сверх политики интерфейс просит подтвердить. Режим меняется в Settings → General.

Повторы. При разовой сетевой ошибке dsh повторяет запрос сам — по документации до пяти раз, — поэтому короткий всплеск нагрузки в сети обычно проходит незаметно.

Приватность. Шлюз не хранит содержимое промптов и ответов: в статистике остаются только агрегаты расхода. Файлы проекта агент читает локально, на вашей машине.

Если нужна работа с картинками — скриншот интерфейса, схема на фото — заведите рядом второго провайдера с моделью, умеющей зрение: dsh держит несколько провайдеров одновременно, а модели сети Gonka текстовые.

DeepSeek Harness — не единственный агент, который выпускает сама лаборатория-разработчик моделей: у Z.ai, авторов GLM, есть среда ZCode, а у MiniMax — терминальный MiniMax Code. Оба подключаются к тому же шлюзу с тем же ключом.

DeepSeek Harness — открытый агентный харнесс от DeepSeek AI в статусе developer preview: Web UI, разовые прогоны, ACP и SDK поверх плагинной архитектуры. Свой endpoint подключается штатно: Settings → Models → Add a custom provider, адрес https://gate.joingonka.ai/v1, протокол openai-completions, ключ jg-…; кнопка Fetch available models сама подтягивает DeepSeek V4 Flash, GLM-5.3 Flash и MiniMax M2.7 вместе с лимитами. То же самое записывается одним блоком llm-pi-ai в ~/.dsh/settings.yaml. Для GLM-5.3 Flash объявите уровни off: low и high: high — рассуждение станет переключаемым. Запускайте харнесс в изолированной среде и фиксируйте версию, пока формат не устоялся.

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

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

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