SSD Nodes Learn 🎉 VPS от $5.50/мес
Руководства Matt ConnorАвтор: Matt Connor · Обновлено 2026-08-21

Как исправить ошибки установки DeepSeek Harness

Решите проблемы с DeepSeek Harness при запуске npx. Зафиксируйте точную версию dsh, очистите кэш npm и проверьте совместимость с вашей версией Node.js для стабильной работы.

Что на самом деле представляет собой установка DeepSeek Harness

Установка DeepSeek Harness выполняется одной командой: npx @deepseek-ai/dsh web. Здесь нет установщика и нет сервиса, который нужно настраивать. Большинство проблем, с которыми сталкиваются пользователи, не связаны с установкой. Это вопросы разрешения версий: какую сборку @deepseek-ai/dsh решил запустить npx сегодня и способна ли ваша версия Node.js её выполнить.

Всё нижеизложенное основано на двух фактах. Во-первых, каждая версия @deepseek-ai/dsh, опубликованная в npm на данный момент, является релиз-кандидатом, а тег latest указывает на одну из них. По состоянию на 18 августа 2026 года это 0.1.0-rc.7, опубликованная 17 августа 2026 года. Во-вторых, в README проекта указано, что harness находится в стадии developer preview, быстро развивается и будет содержать изменения, нарушающие обратную совместимость. Флаг, который работал на прошлой неделе, может исчезнуть на этой. Фиксируйте версию, прежде чем строить что-либо на её основе.

Сначала определимся с терминами. dsh — это инструмент командной строки DeepSeek Harness. Node.js — это среда выполнения JavaScript, необходимая для его работы. npx — это средство запуска пакетов, которое поставляется вместе с npm (node package manager); оно загружает пакет по требованию, вместо того чтобы устанавливать его постоянно.

Какая версия Node.js требуется для dsh?

Корневой файл package.json репозитория содержит объявление "engines": {"node": "^22.19.0 || >=24.0.0"}, актуальное на 18 августа 2026 года для версии 0.1.0-rc.7. Таким образом, требуется 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.19.0 является актуальным LTS-релизом (long term support) по состоянию на август 2026 года, и это предпочтительный вариант по второй причине, описанной ниже.

Почему npx каждый день запускает разную версию?

npx @deepseek-ai/dsh web не указывает версию, поэтому npx запрашивает в реестре ту версию, на которую указывает тег latest. Этот тег перемещается. Когда DeepSeek выпускает 0.1.0-rc.8, команда, сохраненная в ваших заметках, начинает выполнять другой код без предупреждения и без предварительного ознакомления с журналом изменений.

Вы можете проверить каждый динамический компонент из командной строки.

npm view @deepseek-ai/dsh dist-tags
npm view @deepseek-ai/dsh versions --json
npm view @deepseek-ai/dsh time --json

dist-tags показывает, на что в данный момент указывает latest. На 18 августа 2026 года и latest, и next указывали на 0.1.0-rc.7, поэтому отдельного стабильного канала, на который можно было бы переключиться, не существует. Список versions более интересен, так как в нем есть пропуски: 0.0.1-rc.1, 0.0.1-rc.2, 0.0.1-rc.5, 0.1.0-rc.2, 0.1.0-rc.3, 0.1.0-rc.6, 0.1.0-rc.7. В этой последовательности отсутствуют номера, так как некоторые релиз-кандидаты не были опубликованы. Попытка угадать следующий -rc.N в скрипте развертывания приведет к ошибке, поэтому читайте список, а не пытайтесь считать по порядку.

Почему npx продолжает запускать старую версию?

Это противоположная жалоба, и обе они верны в зависимости от того, какую версию npm вы используете.

npx хранит собственный каталог пакетов, отдельный от кэша tarball-архивов, в папке под названием _npx внутри кэша npm. Выведите путь и изучите его содержимое.

npm config get cache
ls "$(npm config get cache)/_npx"

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

Поведение зависит от вашего релиза Node, так как Node поставляется с конкретной версией npm:

  • Node 20.20.2 включает npm 10.8.2.
  • Node 22.19.0 включает npm 10.9.3.
  • Node 22.23.2, новейший релиз 22, включает npm 10.9.8.
  • Node 24.19.0 включает npm 11.17.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, хранилище tarball-архивов, и не затрагивает _npx. Именно из-за этого разделения в npm позже добавили подкоманды npm cache npx. Очистка _npx не влечет за собой никаких необратимых последствий: там хранятся загруженные пакеты, в то время как состояние вашего harness находится в $DSH_HOME/profiles/<name> и остается нетронутым.

Как зафиксировать конкретный release candidate?

Укажите полную версию, включая часть -rc.N.

npx --yes @deepseek-ai/dsh@0.1.0-rc.7 web

--yes важен в скриптах, так как в противном случае npx выводит запрос перед установкой пакета, который он еще не видел, и ожидает ответа, который не поступит.

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

Глобальная установка фиксирует версию таким же образом и предоставляет короткую команду для вызова.

npm install -g @deepseek-ai/dsh@0.1.0-rc.7
dsh --version

No matching version found for @deepseek-ai/dsh@^0.1.0

Диапазоны с caret или tilde не работают с этим пакетом. npm install -g @deepseek-ai/dsh@^0.1.0 возвращает код ошибки ETARGET и строку No matching version found for @deepseek-ai/dsh@^0.1.0.. С реестром всё в порядке. Это правило semver: диапазон версий не соответствует prerelease-версии, если сам диапазон не указывает на prerelease. Каждая опубликованная сборка этого пакета имеет вид -rc.N, что является prerelease, поэтому ^0.1.0 не находит соответствий. Укажите точную версию.

У этого правила есть полезный побочный эффект. Поскольку диапазоны не могут автоматически переключиться на новый release candidate, не возникает ситуации «частичной фиксации», которую нужно учитывать. Вы либо используете точную версию, либо динамический тег.

Стоит ли использовать npx или установить dsh глобально?

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

Эти два способа могут конфликтовать на одной машине, если вы использовали оба, поэтому сравнивайте их.

which dsh
dsh --version
npx @deepseek-ai/dsh --version

which dsh если команда не находится сразу после успешной глобальной установки, это почти всегда означает, что глобальный каталог бинарных файлов npm отсутствует в вашем PATH. Выполните npm prefix -g, чтобы вывести корневой путь; исполняемые файлы находятся в папке bin внутри него.

Замечание по безопасности. npx загружает и выполняет код из реестра при каждом разрешении новой зависимости, что на сервере является реальной угрозой, а не теоретической. Фиксация версий — это часть решения. Остальное описано в том, как атаки на цепочку поставок npm достигают сервера.

Что означает developer preview для воспроизводимости

0.1.0-rc.6 был выпущен 13 августа 2026 года, а 0.1.0-rc.7 — 17 августа 2026 года. Разница составляет четыре дня. При таком темпе инструкции, написанные месяц назад, могут описывать командную строку, которой больше не существует, и это касается данной страницы. Указывайте дату для каждого утверждения о версии, включая ваши собственные заметки.

Две привычки позволяют пережить стадию preview. Фиксируйте точную версию в каждой команде и каждом скрипте, чтобы пересборка сервера создавала ту же самую среду. Затем читайте вывод справки именно той версии, которую вы зафиксировали, а не любого руководства.

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-ключ, модель и настройки endpoint, поэтому зафиксированная версия и рабочая конфигурация — это две разные вещи, которые нужно настроить правильно. Встроенные пакеты разрешаются из текущей установки dsh, а это значит, что изменение зафиксированной версии меняет и эти пакеты. Внешние плагины ведут себя иначе. Они находятся в директории профиля, и dsh plugin --profile <name> add <package> передает свои аргументы в pnpm для их установки. Поэтому pnpm должен присутствовать в вашем PATH, и dsh прямо сообщает об этом, если его нет. Собственный package.json профиля фиксирует эти плагины, поэтому полная фиксация охватывает два файла, а не один.

Это разделение покажется знакомым, если вы уже держали инструменты Python в изолированных окружениях на сервере: сам инструмент и дополнения к нему фиксируются в разных местах. Как только harness запущен, следующим вопросом обычно становится сеть, а не версии; здесь вступают в силу доступ к веб-интерфейсу dsh на удаленном VPS и подробное руководство по установке DeepSeek Harness на VPS.

Ошибки аргументов, с которыми вы столкнетесь

Эти ошибки генерируются собственным парсером CLI, поэтому они стабильны во всех версиях release candidate, и каждая из них точно указывает на проблему.

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

Выберите что-то одно. --dump-default-config выводит слои поставляемого пакета и не принимает --patch. --dump-config выводит итоговую конфигурацию для профиля. Обе команды выводят данные и завершают работу без запуска harness, что делает их безопасным способом увидеть, что именно изменилось в новой версии release candidate.

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, данные актуальны на 18 августа 2026 года для версии 0.1.0-rc.7. Требуется 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.1.0-rc.7, а диапазон semver не соответствует предварительным версиям, если только сам диапазон явно не указывает на одну из них. Устанавливайте точную версию, включая суффикс -rc.N. Запустите npm view @deepseek-ai/dsh versions --json, чтобы увидеть существующие версии, так как в последовательности есть пропуски, где релиз-кандидаты не публиковались.

Стоит ли устанавливать dsh глобально или запускать через npx?

npx подходит для первого знакомства, так как в системе ничего не сохраняется, кроме директории кэша. Фиксированная глобальная установка, например npm install -g @deepseek-ai/dsh@0.1.0-rc.7, подходит для задач, которые должны работать постоянно, так как версия меняется только тогда, когда вы меняете её сами. Если после глобальной установки команда dsh не найдена, значит, глобальная директория бинарных файлов npm отсутствует в вашем PATH, а npm prefix -g выводит путь к корню, где она находится.

Достаточно ли стабилен DeepSeek Harness для разработки на его основе?

Пока нет, согласно описанию самого проекта. В README указано, что проект находится на стадии предварительного просмотра для разработчиков (developer preview), быстро развивается и будет содержать изменения, нарушающие обратную совместимость. Релиз-кандидаты 0.1.0-rc.6 и 0.1.0-rc.7 были опубликованы с разницей в четыре дня в августе 2026 года. Фиксируйте точную версию и читайте --help именно для этой сборки, а не из сторонних руководств. Ставьте даты на своих заметках, чтобы понимать, насколько они устарели.