DeepSeek Harness (dsh): установка и любая модель (2026)
DeepSeek Harness работает как веб-приложение, а не TUI. Установка, подключение любого OpenAI-совместимого шлюза и то, что ломается первым. Проверено 2026-08-14.
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.js | 24.14.1 | Пакет не объявляет поле engines, поэтому заявленного минимума нет |
| Менеджер пакетов | npm 11.11.0 через npx | pnpm нужен только для запуска из исходников |
| Диск | около 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 ID | ofox | Строчные буквы, начинается с буквы, неизменяемый |
| Display name | ofox.ai gateway | Можно изменить позже |
| Base URL | https://api.ofox.run/v1 | Можно изменить позже |
| API protocol | openai-completions | Также openai-responses и anthropic-messages |
| API key | ключ вашего шлюза | Только запись, хранится в $DSH_HOME |

Затем 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.run/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 | Что стоит объявить |
|---|---|---|
contextWindow | 262,144 токена, значение defaultContextWindow маршрута | Реальное окно каждой модели либо defaultContextWindow один раз на маршрут |
maxTokens | 32,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.run/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.6 | 0.0.1-rc.1 |
@deepseek-ai/dsh-web-app | браузерный интерфейс | 0.1.0-rc.6 | 0.0.1-rc.1 |
@deepseek-ai/dsh-headless | режим разового запуска | 0.1.0-rc.6 | 0.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.run/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
- Справочник по лаунчеру
dsh - Руководство по провайдерам моделей
- Справочник адаптера
dsh-llm-pi-ai - Каталог конфигурации плагинов
- Руководство по Python SDK
deepseek-harness-sdkна PyPI- Официальный сайт DeepSeek Harness
- Плагинное ядро Cordis
- Метаданные
@deepseek-ai/dshв registry - Журнал изменений DeepSeek API
- Обсуждения проекта
Часто задаваемые вопросы
- Что такое 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 ядра.


