Как исправить ошибки установки DeepSeek Harness
Решите проблемы с запуском DeepSeek Harness из-за prerelease версий. Зафиксируйте точную версию dsh, очистите кэш npx и проверьте совместимость с текущей версией Node.js.
Что на самом деле представляет собой установка DeepSeek Harness
Установка DeepSeek Harness выполняется одной командой: npx @deepseek-ai/dsh web. Здесь нет установщика и нет сервиса для настройки. Большинство проблем, с которыми сталкиваются пользователи, не связаны с установкой. Это вопросы разрешения версий: какую сборку @deepseek-ai/dsh решил запустить npx сегодня и способна ли ваша версия Node.js её выполнить. Когда процесс запускается, адрес, который он выводит, привязан к localhost, а почему веб-интерфейс отвечает только на 127.0.0.1:3080 — это отдельная проблема, не относящаяся к вопросам на этой странице.
Всё нижеизложенное основано на двух фактах. Во-первых, каждая версия @deepseek-ai/dsh, опубликованная в npm на данный момент, является предварительной. Большинство из них — релиз-кандидаты (-rc.N), а с 30 августа 2026 года появились и альфа-сборки (-alpha.N). Тег latest указывает на релиз-кандидат. По состоянию на 6 октября 2026 года это 0.2.0-rc.2, опубликованная 29 сентября 2026 года. Во-вторых, в README проекта указано, что harness находится в стадии developer preview, быстро развивается и будет содержать изменения, нарушающие обратную совместимость. Флаг, который работал на прошлой неделе, может исчезнуть на этой. Фиксируйте версию, прежде чем строить что-либо на её основе.
Сначала определимся с терминами. dsh — это инструмент командной строки DeepSeek Harness. Node.js — это среда выполнения JavaScript, необходимая для его работы. npx — это средство запуска пакетов, которое поставляется вместе с npm (node package manager); оно загружает пакет по требованию, а не устанавливает его постоянно. Если слово harness в этом предложении кажется непривычным, агентский harness — это программа, обёрнутая вокруг модели, которая управляет циклом, инструментами, правами доступа и состоянием сессии. Именно поэтому версия, которую вы не выбирали, может изменить поведение вашего агента.
Какая версия Node.js требуется для dsh?
В корневом файле package.json репозитория указана версия "engines": {"node": "^22.19.0 || >=24.0.0"}, что было проверено 6 октября 2026 года, когда репозиторий находился на версии 0.2.1-alpha.1. Таким образом, требуется Node 22.19.0 или новее в рамках ветки 22, либо Node 24 и выше. Node 20 не поддерживается.
Прежде всего проверьте, какая версия установлена у вас.
node -v
npm -vВот момент, который часто вызывает удивление. Опубликованный пакет @deepseek-ai/dsh не содержит собственного поля engines. Оно указано только в корневом файле монорепозитория, который никогда не публикуется в npm. Поэтому npm нечего проверять, он не выводит предупреждение EBADENGINE и не блокирует установку. В Node 20 процесс установки выглядит успешным, а ошибка возникает позже, когда загруженный код обращается к синтаксису или API, отсутствующим в вашей среде выполнения. Не существует единой стабильной строки ошибки для поиска, так как то, какая строка вызовет сбой первой, зависит от порядка загрузки модулей. Читайте node -v, а не текст ошибки при падении.
Если ваша версия Node слишком старая, nvm (node version manager) — наименее инвазивный способ решения проблемы на VPS, так как он устанавливается в домашний каталог и не затрагивает системный Node.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash
exec $SHELL -l
nvm install 24
nvm use 24
node -vКоманда node -v теперь должна выводить версию, начинающуюся с v24.. Если оболочка по-прежнему сообщает о старой версии, значит, функция оболочки nvm не была загружена; откройте новый сеанс входа в систему и попробуйте снова. Node 24 является активной веткой LTS (long term support) по состоянию на 6 октября 2026 года, а её новейший релиз на эту дату — 24.21.0. Это более предпочтительная цель по второй причине, описанной ниже.
Почему npx каждый день запускает разную версию?
npx @deepseek-ai/dsh web не указывает версию, поэтому npx запрашивает у реестра то, на что указывает тег latest. Этот тег перемещается, причем часто. 0.1.0-rc.8 появился 19 августа 2026 года, через два дня после 0.1.0-rc.7, а к 6 октября 2026 года latest уже сменился на 0.2.0-rc.2. Каждый раз, когда он меняется, команда, записанная в ваших заметках, начинает выполнять другой код без каких-либо запросов или списка изменений перед глазами.
Вы можете проверить каждый изменяемый компонент из командной строки.
npm view @deepseek-ai/dsh dist-tags
npm view @deepseek-ai/dsh versions --json
npm view @deepseek-ai/dsh time --jsondist-tags показывает, на что прямо сейчас указывает latest. На 6 октября 2026 года и latest, и next указывали на 0.2.0-rc.2, а третий тег, alpha, указывал на 0.2.1-alpha.1. Ни один из них не является стабильным каналом для переключения. Список versions более интересен, так как в нем есть пропуски. На 6 октября 2026 года он содержал 30 версий, от 0.0.1-rc.1 до 0.2.1-alpha.1. Линейка 0.0.1 перескакивает с -rc.2 на -rc.5, линейка 0.1.0 перескакивает с -rc.3 на -rc.6, альфа-сборки начинаются с 0.1.2-alpha.2 и 0.1.3-alpha.2, а 0.1.4 отсутствует вовсе. Номера пропущены, потому что некоторые сборки никогда не публиковались, а альфа-сборки и релиз-кандидаты перемешаны в одном списке. Попытка угадать следующий -rc.N в скрипте развертывания приведет к ошибке, поэтому читайте список, а не пытайтесь считать по порядку.
Почему npx продолжает запускать старую версию?
Это противоположная жалоба, и оба утверждения верны в зависимости от того, какую версию npm вы используете.
npx хранит собственный каталог пакетов, отдельный от кэша архивов, в папке под названием _npx внутри кэша npm. Выведите путь и изучите его содержимое.
npm config get cache
ls "$(npm config get cache)/_npx"В течение многих лет npx повторно использовал всё, что находил там для простого имени пакета, и никогда не обращался к реестру повторно. В npm 11.2.0 это изменилось. Если спецификация представляет собой простое имя или диапазон версий, npx теперь запрашивает манифест и использует кэшированную копию только в том случае, если разрешенный архив совпадает с тем, что только что вернул реестр.
Поведение зависит от вашего релиза Node, так как Node поставляется с конкретной версией npm:
- Node 20.20.2 включает npm 10.8.2.
- Node 22.19.0 включает npm 10.9.3.
- Node 22.23.3, новейший релиз 22 на 6 октября 2026 года, включает npm 10.9.9.
- Node 24.19.0 включает npm 11.17.0.
- Node 24.21.0, новейший релиз 24 на 6 октября 2026 года, включает npm 11.19.0.
Таким образом, вся линейка Node 22, официально поддерживаемая harness, поставляется с версией npm старше 11.2.0. В Node 22 простой вызов npx @deepseek-ai/dsh web продолжит запускать release candidate, который был кэширован несколько недель назад. Та же команда в Node 24 выполняет повторное разрешение при каждом запуске. Одна команда, два типа поведения, и ни один из них не выдает предупреждение. Узнайте версию инструмента:
npx @deepseek-ai/dsh --versionОчистка кэша npx
В npm 11.2.0 и новее существуют специальные подкоманды.
npm cache npx ls
npm cache npx rm --forceБез --force npm отказывается удалять всё и выводит Please use --force to remove entire npx cache. Используйте npm cache npx ls, если хотите удалить одну запись по ключу, а не все сразу.
В npm 10 эти подкоманды отсутствуют, поэтому удалите каталог вручную.
rm -rf "$(npm config get cache)/_npx"npm cache clean --force здесь не поможет. Эта команда очищает _cacache, хранилище архивов, и не затрагивает _npx. Именно из-за этого разделения npm позже добавил подкоманды npm cache npx. Очистка _npx также не несет никаких необратимых последствий: там хранятся загруженные пакеты, в то время как состояние вашего harness находится в $DSH_HOME/profiles/<name> и остается нетронутым.
Как зафиксировать конкретный релиз-кандидат?
Укажите полную строку версии, включая часть -rc.N.
npx --yes @deepseek-ai/dsh@0.1.0-rc.7 webПримеры на этой странице используют 0.1.0-rc.7. Подставьте ту сборку, которую вы фактически протестировали. На 6 октября 2026 года тег latest указывал на 0.2.0-rc.2.
--yes важен в скриптах, так как в противном случае npx выводит запрос перед установкой пакета, который он еще не видел, и ожидает ответа, который не поступит.
Точная версия также обеспечивает быстрый запуск. npx использует строку спецификации в качестве ключа для своего кэша, и при указании точной версии он сравнивает её с уже установленным идентификатором пакета, запуская его без обращения к реестру. Начиная с npm 11.2.0 и новее, использование простого имени пакета приводит к запросу манифеста при каждом запуске.
Глобальная установка фиксируется аналогичным образом и позволяет использовать короткую команду.
npm install -g @deepseek-ai/dsh@0.1.0-rc.7
dsh --versionНе найдена подходящая версия для @deepseek-ai/dsh@^0.1.0
Диапазон с кареткой или тильдой не работает с этим пакетом. npm install -g @deepseek-ai/dsh@^0.1.0 отвечает кодом ошибки ETARGET и строкой No matching version found for @deepseek-ai/dsh@^0.1.0.. Реестр работает исправно. Это правило semver: диапазон версий не соответствует предварительной версии (prerelease), если сам диапазон не указывает на неё явно. Каждая опубликованная сборка этого пакета является предварительной, будь то -rc.N или -alpha.N, поэтому ^0.1.0 не соответствует ничему. Укажите точную версию.
Это правило имеет полезный побочный эффект. Поскольку диапазоны не могут автоматически переключиться на новый релиз-кандидат, не возникает состояния «частичной фиксации», которое нужно учитывать. Вы либо используете точную версию, либо динамический тег.
Стоит ли использовать npx или установить dsh глобально?
Используйте npx для ознакомления, так как после этого не остаётся ничего, кроме кэша, который вы теперь знаете, как очистить. Используйте глобальную установку с фиксацией версии для всего, что должно работать после перезагрузки, например, для кодинг-агента, который постоянно запущен на VPS.
Эти два способа могут конфликтовать на сервере, где вы использовали оба, поэтому сравнивайте их.
which dsh
dsh --version
npx @deepseek-ai/dsh --versionwhich dsh Если команда не находится сразу после успешной глобальной установки, это почти всегда означает, что глобальный каталог bin для npm отсутствует в вашем PATH. Выполните npm prefix -g, чтобы вывести корневой каталог; исполняемые файлы находятся в папке bin внутри него.
Замечание по безопасности. npx загружает и выполняет код из реестра каждый раз, когда разрешает новую зависимость, что на сервере является реальной угрозой, а не теоретической. Фиксация версий — это часть решения. Остальное описано в том, как атаки на цепочку поставок npm достигают сервера.
Что означает developer preview для воспроизводимости
0.1.0-rc.6 была опубликована 13 августа 2026 года, а 0.1.0-rc.7 — 17 августа 2026 года. Разница составила четыре дня. С тех пор темп не снизился: в период с 19 августа по 3 октября 2026 года было выпущено еще 23 версии, включая 0.2.0-rc.1 28 сентября и 0.2.0-rc.2 на следующий день. При такой скорости инструкции, написанные месяц назад, могут описывать командную строку, которой больше не существует, и это касается данной страницы. Указывайте дату для каждого утверждения о версии, включая ваши собственные заметки.
Две привычки делают работу с preview возможной. Фиксируйте точную версию в каждой команде и каждом скрипте, чтобы при пересборке сервера получалась идентичная среда. Затем читайте справку (help) из той сборки, которую вы зафиксировали, а не из какого-либо руководства.
npx @deepseek-ai/dsh@0.1.0-rc.7 --help
npx @deepseek-ai/dsh@0.1.0-rc.7 web --dump-configВторая составляющая воспроизводимости — это профиль. dsh --profile <name> загружает профиль, хранящийся в $DSH_HOME/profiles/<name>, а профили web и headless создаются из поставляемых шаблонов при первом использовании. В этой же директории harness считывает свои настройки API-ключа, модели и конечной точки, поэтому зафиксированная версия и рабочая конфигурация — это две разные вещи, которые нужно настроить правильно. Встроенные пакеты разрешаются из текущей установки dsh, а это значит, что изменение зафиксированной версии меняет и эти пакеты. Внешние плагины ведут себя иначе. Они находятся в директории профиля, и dsh plugin --profile <name> add <package> передает свои аргументы в pnpm для их установки. Поэтому pnpm должен присутствовать в вашем PATH, и dsh прямо сообщает об этом, если его нет. Каждый добавляемый вами плагин запускается с теми же правами, что и ваш агент, поэтому стоит проверить, к чему плагин может получить доступ, прежде чем устанавливать его. Собственный файл package.json профиля фиксирует эти плагины, поэтому полная фиксация охватывает два файла, а не один.
Это разделение покажется знакомым, если вы привыкли держать инструменты Python в изолированных окружениях на сервере: инструмент и дополнения к нему фиксируются в разных местах. Как только harness запущен, следующим вопросом обычно становится сеть, а не версии. Здесь на помощь приходят доступ к веб-интерфейсу dsh на удаленном VPS и подробное руководство по установке DeepSeek Harness на VPS.
Ошибки аргументов, с которыми вы столкнетесь
Эти ошибки возникают в собственном парсере CLI, и каждая из них указывает на конкретную проблему. Формулировки в основном остаются неизменными от сборки к сборке, но не всегда, поэтому приведенные ниже сообщения были проверены для 0.2.0-rc.2 6 октября 2026 года.
error: --profile <name> is required
Вы запустили npx @deepseek-ai/dsh без подкоманды и без профиля. Базовая команда запускает профиль, поэтому ей требуется имя. dsh web работает без --profile, так как парсер считывает первое слово как имя профиля и автоматически запускает для вас встроенный профиль web.
error: --patch needs a path
Флаг --patch был передан без указания пути. Этот флаг можно повторять, и каждое его использование требует указания одного пути к файлу.
error: --dump-config and --dump-default-config are mutually exclusive
Выберите что-то одно. В 0.2.0-rc.2, в сборке latest, актуальной на 6 октября 2026 года, сообщение упоминает третий флаг и выглядит как error: --dump-config, --dump-default-config, and --dump-config-schema are mutually exclusive, поскольку к ним добавился --dump-config-schema, который выводит JSON Schema для записей профиля и патчей. --dump-default-config выводит встроенные слои пакета и не принимает --patch. --dump-config выводит итоговую конфигурацию для профиля. Все эти команды выводят данные и завершают работу, не запуская среду выполнения, что делает их безопасным способом проверки изменений в новом релиз-кандидате.
error: plugin needs pnpm arguments to forward (e.g. add <package>)
Команде dsh plugin --profile <name> не было передано аргументов для обработки. Эта подкоманда инициализирует профиль, если он отсутствует, а затем передает остальную часть командной строки в pnpm, поэтому ей требуются аргументы, такие как add @scope/dsh-plugin-example.
FAQ
Какая версия Node.js требуется для DeepSeek Harness?
Репозиторий объявляет ^22.19.0 || >=24.0.0 в корневом файле package.json, что было проверено 6 октября 2026 года, когда проект находился на версии 0.2.1-alpha.1. Таким образом, требуется Node 22.19.0 или более поздняя версия из ветки 22, либо Node 24 и новее. Node 20 работать не будет. Опубликованный пакет npm не имеет собственного поля engines, поэтому npm не выдает предупреждений и не блокирует установку, а ошибка проявляется только во время выполнения. Сначала проверьте node -v. В любом случае, Node 24 — лучший выбор, так как в него встроен npm 11, который исправляет проблему повторного использования версий в npx.
Как заставить npx использовать новейшую версию dsh вместо кэшированной?
В npm 11.2.0 и новее команда npx @deepseek-ai/dsh при каждом запуске проверяет реестр на наличие обновлений для пакета. В npm 10, который входит в состав всех релизов Node 22, это не происходит. Очистите кэш npx с помощью npm cache npx rm --force в npm 11 или удалите папку с помощью rm -rf "$(npm config get cache)/_npx" в npm 10. Затем подтвердите версию командой npx @deepseek-ai/dsh --version. Обратите внимание, что npm cache clean --force очищает другой каталог и не решит эту проблему.
Почему установка @deepseek-ai/dsh@^0.1.0 завершается ошибкой?
npm возвращает код ошибки ETARGET со строкой No matching version found for @deepseek-ai/dsh@^0.1.0.. Каждая опубликованная сборка является предварительной (prerelease), например 0.2.0-rc.2 или 0.2.1-alpha.1, а диапазон semver не соответствует предварительным версиям, если только сам диапазон не указывает на одну из них. Устанавливайте точную версию, включая суффикс. Запустите npm view @deepseek-ai/dsh versions --json, чтобы увидеть, какие версии существуют, так как в последовательности есть пропуски, где сборки не публиковались.
Стоит ли устанавливать dsh глобально или запускать через npx?
npx подходит для первого знакомства, так как в системе ничего не остается, кроме каталога кэша. Фиксированная глобальная установка, такая как npm install -g @deepseek-ai/dsh@0.1.0-rc.7, подходит для всего, что должно работать стабильно, так как версия меняется только тогда, когда вы меняете её сами. Если после глобальной установки команда dsh не найдена, значит, глобальный каталог bin npm отсутствует в вашем PATH, а npm prefix -g выведет путь к корню, где он находится.
Достаточно ли стабилен DeepSeek Harness для разработки?
Пока нет, согласно описанию самого проекта. В README указано, что проект находится на стадии предварительного просмотра для разработчиков (developer preview), быстро развивается и будет содержать изменения, нарушающие обратную совместимость. Релиз-кандидаты 0.1.0-rc.6 и 0.1.0-rc.7 были опубликованы с разницей в четыре дня в августе 2026 года, а 0.2.0-rc.1 и 0.2.0-rc.2 — с разницей в один день в сентябре 2026 года. Фиксируйте точную версию и читайте --help именно из этой сборки, а не из сторонних руководств. Ставьте даты на своих заметках, чтобы понимать, насколько они устарели.