DeepSeek Harness (dsh): установка и любая модель (2026)

DeepSeek Harness работает как веб-приложение, а не TUI. Установка, подключение любого OpenAI-совместимого шлюза и то, что ломается первым. Проверено 2026-08-14.

DeepSeek Harness (dsh): установка и любая модель (2026)

DeepSeek выпустила собственный агентный харнесс 2026-08-13, и первая неожиданность в том, что он открывается в браузере, а не в терминале.

Что вы получаете:  агентный харнесс, где каждая возможность это сменный плагин
Время:             около 2 минут на холодную установку, около 25 с на тёплый headless-прогон
Что нужно:         Node.js, один ключ API, временная директория
Установка:         npx @deepseek-ai/dsh web  →  http://127.0.0.1:3080
Проверенная версия: 0.1.0-rc.6, macOS, Node 24.14.1, 2026-08-14
Лицензия:          MIT, TypeScript, на плагинном ядре Cordis
Статус:            developer preview; в README обещаны ломающие изменения
Другие модели:     да, через кастомного провайдера или две переменные окружения

Впервые это имя появилось в журнале изменений DeepSeek от 2026-07-31: согласно его же сноске, результаты V4-Flash в Code Agent получены «с использованием DeepSeek Harness minimal mode (будет выпущен вскоре) в качестве фреймворка». Нигде не сказано, что устанавливаемый сегодня rc это именно та сборка, но проект действительно вышел в открытый доступ. Всё описанное ниже выполнено на чистой машине 2026-08-14, а не переписано из README.

Что можно и чего нельзя после установки?

Вы получаете работающего локального агента с браузерным интерфейсом, скриптуемый headless-режим и любую модель, доступную по HTTP. Вы не получаете терминального интерфейса, стабильного API и того, что на этой неделе стоит направлять на продакшен-код.

Работает уже сегодня:

  • Локальное веб-приложение на 127.0.0.1:3080 с сессиями, рабочими областями и запросом разрешения перед привилегированными операциями.
  • dsh --profile headless "ваша задача" для разовых скриптовых прогонов, которые печатают финальный ответ и завершаются.
  • Любая конечная точка OpenAI-совместимая, OpenAI-Responses или Anthropic-Messages в качестве источника моделей.
  • Python SDK на PyPI со встроенным рантаймом, так что вызывающей машине Node.js не нужен.
  • Плагинная система, где модели, инструменты, навыки, сессии, песочницы, хранилище, планировщик и сам интерфейс заменяемы.

Не работает сегодня:

  • Нет интерактивного TUI. Лаунчер это CLI, но интерактивная поверхность находится в браузере.
  • Нет стабильных интерфейсов. README заглавными буквами предупреждает о нарушающих совместимость изменениях.
  • Нет релизов и тегов в репозитории на 2026-08-14, поэтому «последняя версия» это то, что разрешит npx.
  • Нет GitHub issues. Трекер отключён, сообщения об ошибках идут в Discussions или Discord.

Стоит ли устанавливать DeepSeek Harness уже сейчас?

Ставьте, если хотите строить на плагинной архитектуре. Пропустите, если нужен агент, который делает работу сегодня.

Когда стоит:

  • Вы пишете плагин для агента или оцениваете архитектуры харнессов, и композиция Cordis это и есть причина вашего интереса.
  • Вам нужен эталонный фреймворк самой DeepSeek, чтобы воспроизвести её постановку бенчмарка Code Agent.
  • Вы запускаете агентов в браузерной или общей серверной среде, где веб-интерфейс это преимущество, а не компромисс.

Когда не стоит:

  • Вы работаете по SSH на удалённой машине. Это самая громкая претензия в обсуждениях самого проекта, TUI, который бы на неё ответил, нет, а раздача интерфейса на 0.0.0.0 требует ещё и объявить trustedHosts, иначе слой API отклонит каждый запрос, пришедший не через loopback.
  • Вам нужен харнесс, который не сломается под вами. Developer preview без тегов и с быстрой сменой rc это его противоположность.
  • Вам просто хочется моделей DeepSeek внутри агента, которому вы уже доверяете. Тогда направьте свой существующий инструмент на API DeepSeek: ничего из этой статьи для этого не требуется.

Правило остановки: если вам нужны были только модели DeepSeek в кодовом агенте, дочитайте раздел про переменные окружения ниже и возвращайтесь к тому, чем пользовались.

Что нужно перед установкой?

Node.js, ключ и директория, в которую не жалко писать.

ТребованиеЧто использовали мыПримечания
Node.js24.14.1Пакет не объявляет поле engines, поэтому заявленного минимума нет
Менеджер пакетовnpm 11.11.0 через npxpnpm нужен только для запуска из исходников
Дискоколо 1 ГБ в кэше npxОпубликованный tarball тянет 61 прямую зависимость
ОЗУ1.1 ГБ резидентно в простоеИзмерено при одной открытой сессии без запущенных задач
Ключ APIлюбой DeepSeek-совместимый ключЛибо любой провайдер, добавленный вручную

Одно решение стоит принять до старта: директория, из которой вы запускаете, становится корнем рабочей области по умолчанию. Начинайте во временной копии, а не в репозитории, который вам дорог.

Как установить DeepSeek Harness?

Одна команда, затем около двух минут тишины.

Шаг 1: запустите профиль web

mkdir ~/dsh-scratch && cd ~/dsh-scratch
npx @deepseek-ai/dsh web

Ожидаемый результат, в итоге:

dsh web: http://127.0.0.1:3080

Эта единственная строка и есть весь вывод в консоль при успешном первом запуске, если не считать одного предупреждения npm об устаревании. У нас от команды до открытого порта прошло примерно две минуты, в течение которых процесс занимал одно ядро на 100% и не печатал ничего. Индикатора прогресса нет. Если вы убьёте его на 60-й секунде, решив, что он завис, вы поспешили на 60 секунд.

Шаг 2: закройте уведомление первого запуска

Приложение открывается уведомлением о внутреннем тестировании, где сказано, что DeepSeek Harness 0.1 «остаётся в тестировании для разработчиков Harness». Пройдите его.

Шаг 3: введите или пропустите ключ DeepSeek

Онбординг просит ключ API DeepSeek и предлагает Configure later. Выбирайте «позже», если планируете использовать другого провайдера, чему и посвящён следующий раздел.

Шаг 4: убедитесь, куда всё легло

ls ~/.dsh
# profiles  storages

$DSH_HOME по умолчанию равен ~/.dsh:

ПутьСодержимое
$DSH_HOME/profiles/<name>/по директории на профиль, для web и headless создаются автоматически
$DSH_HOME/profiles/<name>/package.jsonманифест профиля с упорядоченным списком dsh.profile.bundles
$DSH_HOME/profiles/<name>/cordis.patch.ymlваш собственный слой патчей, применяется после всех bundle
$DSH_HOME/storages/состояние сессий и рабочих областей
$DSH_HOME/settings.yamlнаписанные вручную настройки моделей, файл не создаётся, пока вы его не напишете
$DSH_HOME/.credentials.yamlключи API, пишутся страницей Models и никогда не возвращаются в браузер

Порядок композиции стоит узнать до того, как что-то править: сначала патч каждого bundle в порядке dsh.profile.bundles, затем cordis.patch.yml профиля, затем $DSH_HOME/cordis.patch.yml, затем наложения --patch. Смотрите результат через --dump-config, а не угадывайте.

Как добавить кастомного провайдера?

Settings → Models → Add a custom provider, либо две переменные окружения, если нужно лишь перенаправить маршрут DeepSeek.

Форма запрашивает пять полей:

ПолеПримерОграничение
Provider IDofoxСтрочные буквы, начинается с буквы, неизменяемый
Display nameofox.ai gatewayМожно изменить позже
Base URLhttps://api.ofox.ai/v1Можно изменить позже
API protocolopenai-completionsТакже openai-responses и anthropic-messages
API keyключ вашего шлюзаТолько запись, хранится в $DSH_HOME

Страница Settings Models в DeepSeek Harness: сверху встроенная карточка DeepSeek с подписью deepseek-official, ниже форма кастомного провайдера, где в Provider ID указано ofox, а в Base URL адрес API ofox

Затем Fetch available models опрашивает base URL и ключ, введённые в форме, и позволяет выбрать из полученного. Обнаружение вызывает OpenAI-совместимый GET /models; если ваша конечная точка его не отдаёт, вводите идентификаторы вручную.

Как бы вы ни заполнили список, он и есть весь маршрут. Список models заменяет каталог маршрута, а не дополняет его, и модель, не настроенная в маршруте, падает с UNKNOWN_MODEL ещё до того, как запрос покинет машину. Варианта «просто отправить как есть» у кастомного провайдера нет.

Неизменяемость provider ID кусается сильнее всего. Запросы, сохранённые сессии, значения моделей по умолчанию и ссылки на учётные данные завязаны на него, поэтому переименование означает создание нового провайдера и удаление старого, а любая сессия, записанная под старым ID, продолжит указывать на него.

То же самое в $DSH_HOME/settings.yaml, если кликать не хочется:

llm-pi-ai:
  providers:
    ofox:
      apiKeyEnv: OFOX_API_KEY
      api: openai-completions
      baseURL: https://api.ofox.ai/v1
      models:
        - id: deepseek/deepseek-v4-pro
        - id: anthropic/claude-opus-5

Почему введённая вручную модель отказывается принимать изображения?

Потому что модель, введённая вручную, считается текстовой, пока вы не скажете иначе, а поля для этого в форме нет.

Спросить у конечной точки, какие модальности она принимает, нельзя, поэтому dsh исходит из узкого варианта и отклоняет вложение до отправки, называя модель. Исправление живёт только в settings.yaml:

llm-pi-ai:
  providers:
    ofox:
      models:
        - id: deepseek/deepseek-v4-pro
        - id: anthropic/claude-opus-5
          input: [text, image]

Если изображения принимают все добавленные вами модели, задайте на маршруте defaultInput: [text, image]. Это запасное значение, а не переопределение: у каталожного провайдера оно отвечает только за модели, которых каталог не описывает, поэтому оно не отнимет изображения у модели, которая их поддерживает.

Что ещё молча предполагается для модели, введённой вручную?

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

Что вы не объявилиЧто предполагает dshЧто стоит объявить
contextWindow262,144 токена, значение defaultContextWindow маршрутаРеальное окно каждой модели либо defaultContextWindow один раз на маршрут
maxTokens32,768 выходных токеновРеальный предел каждой модели
reasoningEffortsмодель не рассуждает вовсеСоответствие уровней, которые вы хотите предложить, написанию, ожидаемому конечной точкой, например high: high
compat.thinkingFormatугадывается по URL конечной точкиДиалект, на котором на самом деле говорит ваш шлюз

Последний пункт самый неочевидный для тех, кто работает через шлюз. Формат запроса на размышление отличается у разных вендоров, а нижележащая библиотека выводит его из URL. URL приватного шлюза не сообщает ничего, поэтому к конечной точке с диалектом DeepSeek за вашим собственным доменом обратятся на диалекте OpenAI, если не указать иное. Оба переключателя compat существуют только для openai-completions; остальные два протокола несут форму рассуждения в себе.

Значение контекстного окна по умолчанию кусается позже: 262,144 больше, чем у большинства моделей, на которые вы его направите, так что длинная сессия соберёт запрос, который конечная точка затем отклонит или обрежет, а у харнесса не было повода предупредить заранее.

Как направить dsh на шлюз, не трогая конфигурацию?

Экспортируйте две переменные, и встроенный маршрут DeepSeek последует за ними. Для этого маршрута apiKeyEnv по умолчанию равен DEEPSEEK_API_KEY, а base URL сначала откатывается к $DEEPSEEK_BASE_URL и только потом к публичному API.

export DEEPSEEK_API_KEY="your-gateway-key"
export DEEPSEEK_BASE_URL="https://api.ofox.ai/v1"
npx @deepseek-ai/dsh --profile headless "Reply with exactly this and nothing else: dsh-ofox-ok"

Это реальный прогон от 2026-08-14: он напечатал dsh-ofox-ok и завершился с кодом 0 за 24 секунды на тёплом кэше. Ни файла настроек, ни интерфейса, ни записи о провайдере. Работает это потому, что шлюз принимает те же идентификаторы моделей, которые отправляет маршрут DeepSeek: мы подтвердили, что и deepseek-v4-flash, и версия с пространством имён deepseek/deepseek-v4-flash разрешаются на одной и той же конечной точке.

Это самый быстрый способ ответить на вопрос «работает ли моя конечная точка с этой штукой» до того, как вкладываться в настройку.

Есть ли CLI или TUI?

Есть CLI-лаунчер и режим headless. Интерактивного TUI нет.

Режимы запуска самого лаунчера:

КомандаЧто делает
dsh --profile <name>Запускает именованный профиль из $DSH_HOME/profiles/<name>
dsh --profile headless "job"Выполняет одну новую сохраняемую сессию, печатает финальный ответ, завершается
dsh webПсевдоним для --profile web
dsh plugin --profile <name> <pnpm args>Управляет плагинами профиля, передавая всё в pnpm

Флаги лаунчера идут первыми, и первый нераспознанный токен начинает аргументы самого приложения, поэтому dsh --profile web --port 8080 отдаёт --port веб-приложению, а не лаунчеру.

headless это режим, о котором стоит знать, потому что большая часть шума про отсутствующий TUI исходит из предположения, что терминального пути нет вовсе. Он есть, просто он не интерактивный. Для CI, cron и скриптовых прогонов такая форма и так подходит лучше.

«Дайте что-нибудь, кроме браузера» это самое громкое в обсуждениях проекта, которых к 2026-08-14 накопилось 622. У лидера 74 голоса, и он просит отдельный клиент плюс CLI плюс расширение для VS Code; тема, где просят именно TUI, вторая с 24 голосами. Ничто про самого агента не набирает больше голосов, чем вопрос о том, в чём он работает.

Слепым пятном для DeepSeek это тоже не является: в репозитории лежит внутренняя архитектурная заметка от 2026-07-22 о сервисе интерактивного терминального расширения, то есть подготовка началась за три недели до публичного релиза.

Есть ли программный интерфейс?

Есть, и его легко пропустить, потому что это не пакет для Node. Команда pip install deepseek-harness-sdk (0.1.0rc6, Python 3.10 и новее) ставит харнесс вместе с рантаймом, так что системный Node.js на машине не нужен вовсе, а в репозитории лежит готовый пример на JSON-RPC, принимающий рабочую директорию, каталог сессий и промпт. Он читает DEEPSEEK_API_KEY и DEEPSEEK_BASE_URL так же, как лаунчер, поэтому приём с двумя переменными, описанный выше, работает и здесь. Список платформ уже, чем у CLI: Linux x64, Linux arm64 или macOS 14 и новее на arm64.

Что на самом деле можно заменить?

Список bundle в package.json вашего профиля, где «всё является плагином» перестаёт быть лозунгом.

Профиль задаёт упорядоченный список bundle, и три поставляемых публикуются на npm отдельно:

BundleРольЧто ставит dsh 0.1.0-rc.6Тег latest на npm
@deepseek-ai/dsh-baseобщее ядро: цикл агента, инструменты, сессии, хранилище0.1.0-rc.60.0.1-rc.1
@deepseek-ai/dsh-web-appбраузерный интерфейс0.1.0-rc.60.0.1-rc.1
@deepseek-ai/dsh-headlessрежим разового запуска0.1.0-rc.60.0.1-rc.1

Четвёртый столбец это ловушка, а не любопытный факт. Лаунчер зависит от ^0.1.0-rc.6 для всех трёх, поэтому путь через npx даёт дерево с согласованными версиями. Но на npm тег latest у этих bundle всё ещё указывает на 0.0.1-rc.1, опубликованный 2026-08-10, за три дня до публикации репозитория; текущие сборки лежат под тегом next. Установите один вручную через npm i @deepseek-ai/dsh-base, и вы без предупреждения получите сборку, выпущенную до релиза.

Добавление стороннего плагина идёт через лаунчер, а не через менеджер пакетов, который вы запускаете сами. Согласно документации лаунчера, dsh plugin --profile <name> передаёт всё последующее в pnpm внутри директории этого профиля, так что знакомый синтаксис pnpm работает как есть:

dsh plugin --profile web add <package-name>

Плагин попадает в собственный node_modules профиля и разрешается после поставляемых bundle.

Экосистема поднялась быстрее, чем стабилизировался сам софт. Тема dsh-plugin на GitHub насчитывала 775 репозиториев 2026-08-14, примерно через четырнадцать часов после публикации репозитория, увеличившись более чем вдвое с 337 за те часы, что мы писали этот материал. Качество неровное, официального там ничего нет, и немало сделано ради звёзд, так что относитесь к теме как к каталогу, а не как к рекомендации.

Что люди сделали первым делом, по-прежнему показательно. Самый популярный настоящий плагин это визуальный мост для текстовых моделей с 760 звёздами, второй визуальный набор инструментов набрал 569. Это ровно тот пробел, который создаёт текстовое значение по умолчанию для всех, кто заводит текстовую модель через кастомного провайдера. На другом конце рейтинга снова претензия к интерфейсу: набор плагинов и тем для Web UI с 650 звёздами, а сделанные сообществом TUI начинаются с 292.

Что ломается при установке и как это чинить?

Шесть отказов, о которых стоит знать: четыре наши и два, о которых сообщили другие в первый же день.

СимптомПричинаРешение
Две минуты без вывода после npx ... webХолодная установка плюс первый запуск без отчёта о прогрессеДождитесь строки dsh web: http://127.0.0.1:3080, прежде чем считать процесс зависшим
MISSING_CREDENTIAL: llm-deepseek: no API key for provider route "deepseek-official"headless поднимает маршрут DeepSeek независимо от наличия других провайдеровЭкспортируйте DEEPSEEK_API_KEY либо сначала сделайте свой провайдер выбором по умолчанию в веб-приложении
Вложение отклонено с указанием моделиВведённые вручную модели по умолчанию текстовыеДобавьте этой модели input: [text, image] в $DSH_HOME/settings.yaml
Переименование провайдера теряет прежние сессииProvider ID неизменяем, а сессии его записываютВыбирайте ID один раз; единственное переименование это создать новый и удалить старый
Cannot find package '@deepseek-ai/cordis-plugin-group'dsh-app-boot импортирует пакет, не объявляя егоВ Discussions есть обходной путь через глобальную установку: поставьте @deepseek-ai/dsh и этот пакет глобально, чтобы плоский node_modules их разрешил
Cannot find package '@deepseek-ai/dsh-client-ui-directory-picker-native' при работе из исходниковДерево плагинов не может загрузить нативный выбор директории при pnpm dsh webВ Discussions сообщают, что та же копия запустилась, когда Node стартовали с --expose-internals; путь через npx не затронут

Заполняйте поле ключа API только после того, как решили, какому провайдеру он принадлежит. Ключи уходят в $DSH_HOME/.credentials.yaml, а страница получает обратно лишь замаскированный дескриптор. Это правильная практика, но она же означает, что прочитать ключ из интерфейса для проверки не выйдет.

Как команде совместно использовать конфигурацию dsh?

Делитесь профилем, а не учётными данными. Профиль это директория с package.json, называющим его bundle, и cordis.patch.yml с переопределениями, и ни в одном из них нет секретов.

Рабочее разделение для команды на инструменте уровня preview:

  • Коммитьте директорию профиля: список bundle, зависимости плагинов и слой патчей с вашими маршрутами моделей и значениями разрешений по умолчанию.
  • Никогда не коммитьте $DSH_HOME/.credentials.yaml. Используйте apiKeyEnv в settings.yaml, чтобы каждый разработчик передавал свой ключ через окружение.
  • Ничего не фиксируйте, ждите изменений. Тегов, к которым можно привязаться, нет, поэтому запишите проверенную вами версию rc в собственный README и перепроверяйте после каждого обновления.
  • Направьте всех на одну конечную точку, чтобы список моделей, расходы и лимиты были общими, а не у каждого разработчика своими.

Последний пункт это то, что большинство команд делает неправильно на любом харнессе, не только на этом.

Как направить dsh и остальных ваших агентов на один ключ?

Каждый агентный харнесс заставляет настраивать доступ к моделям отдельно. Claude Code хочет свои переменные окружения, Codex CLI хочет блок провайдера в config.toml, Cline хочет свою панель настроек, а dsh хочет либо кастомного провайдера, либо DEEPSEEK_BASE_URL. Четыре инструмента, четыре места для ротации ключа, четыре разных каталога моделей, которые надо держать в согласии.

Поскольку все четверо говорят по HTTP с OpenAI-совместимой или Anthropic-совместимой конечной точкой, решение везде одно: дайте им один base URL и один ключ, и пусть отличается только строка модели. Ровно для этого и нужен агрегирующий шлюз, и именно поэтому в форме кастомного провайдера в dsh ровно такие поля.

В ofox конечная точка это https://api.ofox.ai/v1 с openai-completions, и на 2026-08-14 один и тот же ключ достаёт до 129 моделей, включая DeepSeek V4 Pro, DeepSeek V4 Flash, Claude Opus 5 и Kimi K3. Об аналогичной настройке в остальных трёх инструментах читайте в нашем руководстве по кастомным провайдерам Codex CLI и в разборе настройки Cursor, Claude Code и Cline.

Что стоит знать, прежде чем направлять его на реальный репозиторий?

То, что это preview и что сообщество нашло ошибки в границах разрешений в первый же день.

В обсуждениях проекта в течение суток после релиза появилось несколько независимых сообщений о файловой песочнице и модели разрешений, затрагивающих границы workspace-write, гонки при обработке путей и потоки подтверждений. Мы ни одно из них здесь не воспроизводим, и ни одно не удивительно для софта, который авторы явно называют developer preview с обещанием ломающих изменений.

Практический вывод не «этот инструмент небезопасен», а «модель разрешений этого инструмента ещё не обкатана». Отсюда две привычки:

  • Запускайте из временной директории, поскольку вызывающая директория становится корнем рабочей области.
  • Оставьте режим разрешений по умолчанию и читайте запросы на подтверждение, а не прокликивайте их.

Обе дешёвые. Альтернатива это обнаружить границу на репозитории, который был вам нужен.

Как он смотрится рядом с харнессами, которыми вы уже пользуетесь?

Другая форма, та же работа, несравнимо меньший пробег. Claude Code и Codex CLI ориентированы на терминал и прошли месяцы закалки; dsh ориентирован на браузер, ему один день, и он устроен так, чтобы не нравящиеся вам части можно было заменить, а не форкать.

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

Для выбора среди зрелых вариантов мы провели такое сравнение в обзоре харнессов для кодовых агентов, а поле терминальных агентов конкретно в материале Claude Code vs Codex CLI vs Cursor. Если вы здесь в основном ради выбора модели DeepSeek под тот харнесс, на котором остановитесь, эту развилку напрямую разбирает материал V4 Pro против V4 Flash.

Источники

Часто задаваемые вопросы

Что такое DeepSeek Harness?
Открытый агентный харнесс от самой DeepSeek, выпущен 2026-08-13, команда называется dsh. Написан на TypeScript под лицензией MIT, построен на плагинном ядре Cordis, и каждая возможность является плагином, включая интерфейс. В журнале изменений DeepSeek от 2026-07-31 не выпущенный на тот момент DeepSeek Harness minimal mode указан как фреймворк, на котором получены результаты V4-Flash в Code Agent.
Есть ли у DeepSeek Harness CLI или TUI?
На 2026-08-14 есть CLI-лаунчер, но интерактивного TUI нет. Команда dsh --profile headless "ваша задача" выполняет одну сохраняемую сессию, печатает финальный ответ и завершается, что и нужно для скриптов и CI, а для программного доступа есть Python SDK на PyPI. Интерактивная работа происходит в веб-приложении на 127.0.0.1:3080. Самый популярный запрос в обсуждениях проекта это интерфейс, отличный от браузера.
Есть ли Python SDK для DeepSeek Harness?
Есть. Команда pip install deepseek-harness-sdk устанавливает версию 0.1.0rc6, требуется Python 3.10 или новее. Рантайм харнесса поставляется в комплекте, поэтому системный Node.js на машине не нужен. В репозитории есть готовый пример на JSON-RPC, принимающий рабочую директорию, каталог сессий и промпт. Поддерживаются Linux x64, Linux arm64 и macOS 14 или новее на arm64.
Может ли DeepSeek Harness работать с моделями, отличными от DeepSeek?
Да. Settings → Models → Add a custom provider принимает provider ID, base URL, протокол API (openai-completions, openai-responses или anthropic-messages), ключ и список моделей. Для встроенного маршрута DeepSeek интерфейс можно вообще не открывать: достаточно экспортировать DEEPSEEK_BASE_URL с адресом совместимого шлюза.
Сколько памяти потребляет DeepSeek Harness?
Около 1.1 ГБ резидентной памяти на macOS при одной простаивающей сессии, измерено на 0.1.0-rc.6 2026-08-14. Холодный старт от npx до открытого порта занял примерно две минуты при 100% загрузке одного ядра, и до строки с портом в консоли нет никакого вывода о прогрессе.
Готов ли DeepSeek Harness к продакшену?
Нет, и об этом сказано прямо. README называет проект developer preview и заглавными буквами предупреждает о нарушающих совместимость изменениях, а веб-приложение открывается уведомлением о внутреннем тестировании. Относитесь к нему как к тому, что оценивают на временной копии, а не направляют на важный вам репозиторий.
Где DeepSeek Harness хранит конфигурацию?
В $DSH_HOME, по умолчанию ~/.dsh. Профили лежат в $DSH_HOME/profiles/<name>, хранилище сессий в $DSH_HOME/storages, написанные вручную настройки моделей в $DSH_HOME/settings.yaml, а ключи API в $DSH_HOME/.credentials.yaml. Страница Models записывает ключи туда и никогда не возвращает их в браузер.
Почему dsh headless сообщает MISSING_CREDENTIAL, хотя provider настроен?
Потому что объявление провайдера не делает его выбором по умолчанию. Профиль headless загружает маршрут deepseek-official, пока вы не смените модель по умолчанию, поэтому он требует DEEPSEEK_API_KEY даже при полностью настроенном другом провайдере. Либо задайте значение по умолчанию в веб-приложении, либо направьте сам маршрут DeepSeek на ваш шлюз.
Поддерживает ли DeepSeek Harness MCP и плагины от других агентов?
Плагины и есть вся архитектура, а сообщество собирает свои в теме dsh-plugin на GitHub. Мосты от сообщества появились в течение суток, включая тот, что переносит конфигурацию Claude Code, Codex, OpenCode и Pi в dsh, но ничего из этого не является официальным и ничто не может считаться стабильным, пока движутся API ядра.