Титульная карточка для «DeepSeek Harness, on the Desktop» с надзаголовком «DeepSeek, десктопный harness», подзаголовком «Это Electron-оболочка вокруг того же Web UI. Окно — простая часть. Вся суть — в упаковке», тремя скруглёнными пилюлями с текстом «0.2.1-rc.2», «Electron + Web UI» и «Windows, macOS ×2», а также строкой футера «Проверено 21 октября 2026 года: три установщика доступны, 31 релиз на GitHub, ни одного бинарного ассета».
Guides & Insights

DeepSeek Harness Desktop App: что установщик на самом деле размещает на вашем компьютере

Автор

Rowan Sterling

Дата публикации

Новые модели · 20Все модели →
Бенчмарки: Artificial Analysis · обновляется ежедневно
Назад ко всем статьям

Настольное приложение DeepSeek Harness — это оболочка Electron, обёртывающая тот же веб-интерфейс, который вы получаете с помощью npx @deepseek-ai/dsh web, и оно поставляется в виде трёх установщиков для конкретных платформ для харнесса, текущая версия которого — 0.2.1-rc.2. Это описание звучит пренебрежительно, но пренебрежения в нём нет. Упаковать работающий интерфейс в настольный контейнер — работа на выходные; а вот упаковка его в контейнер, который располагает собственным каталогом среды выполнения, сохраняет ваши задачи активными при закрытии окна, обновляется самостоятельно по каналу без стабильных релизов и сохраняет ваши сеансы при каждой из этих операций, — это та часть, на которую уходят месяцы, и именно о ней стоит читать. Если вы хотите запускать DeepSeek-V4.1-Flash через харнесс, который живёт в окне, а не в терминале, это именно та сборка, и все интересные вопросы касаются того, что происходит вокруг окна.

Прежде чем перейти к деталям, нужно сказать две вещи. Во-первых, эта статья отменяет наше прежнее утверждение о том, что десктопного приложения не было, — это утверждение было верным на момент написания в августе 2026 года, а сейчас оно неверно. Во-вторых, это публичная предварительная версия, и на собственном сайте DeepSeek она по-прежнему обозначена именно так, а упаковка имеет те шероховатости, которые подразумевает это обозначение. Установщик работает. Распространение вокруг него тоньше, чем можно предположить.

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

Настольное приложение — это тонкий слой Electron, задача которого — запустить процесс Host и направить на него окно. Окно не создаёт собственный интерфейс чата: оно загружает упакованную Web-точку входа, встроенную в приложение, по адресу dsh-app://app/, а диалоги обновления, которые вы увидите, приходят со второго встроенного источника по адресу dsh-app://shell/. Дочерний процесс Node запускается в режиме RunAsNode Electron, чтобы запустить общий profile runner, а оболочка пересылает HTTP аутентифицированному Web Host, отбрасывая заголовки transfer-encoding, connection и keep-alive по пути. Ответы с пакетами плагинов помечаются как no-store, и это небольшая деталь с заметным следствием: измените плагин — и следующая перезагрузка покажет изменение.

Поскольку URL — это dsh-app://, а не localhost, нет фиксированного порта, который нужно запоминать, и нет коллизии портов, которую нужно обходить. Настольный Host по умолчанию слушает порт, назначенный ОС. Если вам нужен конкретный порт, его можно задать через переопределение webserver.config.port, но значение по умолчанию намеренно не является константой, и Host привязывается к 127.0.0.1. Это важно, если вы следовали более старым инструкциям: число 19387, которое упоминалось в августовских руководствах по установке, — это не порт настольного приложения, и если считать его таковым, вы отправитесь искать сервис, которого там нет.

Закрепление версий строже, чем кажется на первый взгляд. Electron и @deepseek-ai/dsh всегда имеют в точности одну и ту же версию — не диапазон, не совместимая мажорная версия, — поэтому обновление харнесса означает десктопный релиз, и не существует поддерживаемой комбинации новой dsh со старым окном. Процесс Electron захватывает блокировку единственного экземпляра на всё время жизни процесса и единолично владеет $DSH_HOME/profiles/desktop. Эта исключительность реальна: CLI не может загрузить этот профиль, а npm-установленный dsh не может его изменить. Общее у этих двух установок — это состояние, которое для вас важно: сеансы, настройки, учётные данные, рабочие пространства и хранилище, всё в $DSH_HOME. А вот что у них не общее — это исполняемые пакеты, активация плагинов, файлы блокировки или node_modules, поэтому установить плагин в десктопный профиль — не то же самое, что установить его в профиль CLI.

Три установщика, один канал обновлений, ни одного стабильного релиза

Two-column fact card titled 'Three installers, one update channel, no stable release'. The left column, headed 'Files on download.deepseek.com', lists Windows 64-bit .exe at 289.4 MB as 0.2.1-rc.2 linked from the page, macOS Apple silicon .dmg at 265.0 MB as 0.2.1-rc.2 linked from the page, and macOS Intel .dmg at 289.5 MB as 0.2.1-rc.1 'served, but no link anywhere on the page', followed by rows reading 'All three responses HTTP 200', 'All three last modified 17 Oct 2026' and 'Intel build lags by one release candidate'. The right column, headed 'Update and distribution channels', lists Windows x64 updater nightly.yml, macOS arm64 updater nightly-mac.yml, macOS x64 updater nightly-mac.yml, latest.yml any target 404, GitHub releases '31, all prerelease', release assets 0, and npm latest 0.2.1-rc.2. The footer reads 'Read on 21 October 2026. Nightly here is a channel name, not a build time: the Windows and Apple-silicon feeds both serve 0.2.1-rc.2, dated 17 October.'

Есть три установщика, и все три отвечают. Исполняемый файл для Windows 64-bit имеет размер 289,385,456 байт и отдаётся с кодом HTTP 200. Образ диска для Apple silicon имеет размер 264,990,950 байт, тоже с кодом 200. Образ диска для Intel Mac имеет размер 289,480,824 байт, тоже с кодом 200. Все три были последний раз изменены 17 октября 2026 года. Только на два из них есть ссылки со страницы загрузки. Сборка для Intel активна, доступна, и нигде на deepseek.com/en/harness/ нет ссылки, ведущей на неё — если вы на Intel Mac и следовали странице, вы могли бы с полным основанием решить, что сборки для вас нет.

Screenshot of the DeepSeek Harness page at deepseek.com/en/harness, showing the 'Preview' eyebrow, the large DeepSeek Harness wordmark, the line 'Ready to use. Right now.' with the subheading 'Everyday tasks, coding, or your own harness, it starts here', the sentence announcing the public preview and open-source release, a 'Download for Windows' button, and a product screenshot showing a session list beside a chat panel introducing the harness as built on Cordis's 'everything is a plugin' architecture.

Сборка для Intel также отстаёт на одну версию. В её канале обновлений указано 0.2.1-rc.1; в каналах Windows и Apple-silicon указано 0.2.1-rc.2. Одна версия release candidate — это ещё не большой разрыв по функциям, но это реальный сигнал о том, какие целевые платформы собираются первыми, а какие проверяются последними, и это именно то, что стоит знать, прежде чем привязывать рабочие сессии к платформе.

Каналы обновлений — это место, где история с распространением становится неполной. Фиды задаются отдельно для каждой цели, по пути /dsh-desk/feeds/<target>/ на том же хосте. Windows x64 использует nightly.yml; обе цели macOS используют nightly-mac.yml. Если запросить у любого из трёх latest.yml или latest-mac.yml, вы получите 404: стабильного канала нет, бета-канала нет, и нет способа отказаться от единственного существующего. Собственные заметки DeepSeek о публикации подтверждают такую схему, а не противоречат ей: каждый релиз публикует nightly-фид, и только стабильные релизы публикуют latest-фид, указывающий на те же артефакты. «Nightly» в этом контексте — название канала, а не периодичность сборок: оба фида — для Windows и Apple-silicon — отдают одну и ту же сборку 0.2.1-rc.2, датированную 17 октября, причём пакет для Windows имеет метку времени 09:22 UTC, а пакет для Apple-silicon — 09:57 UTC. В итоге вы получаете механизм автоматического обновления, опрос с джиттером, повторные попытки с задержкой до одного часа — и никакой возможности запросить что-либо, кроме того, что сейчас содержит канал предварительных версий.

GitHub приводит тот же довод с другой стороны. Репозиторий deepseek-ai/deepseek-harness — 256 559 звёзд и 30 921 форк на момент чтения 21 октября 2026 года — насчитывал 31 релиз на ту же дату, каждый из них был помечен как предварительный выпуск, и ни у одного из них не было прикреплено ни одного бинарного файла. На странице Releases ничего нельзя скачать. Если вам нужна сборка, вы получаете её с download.deepseek.com или из npm, где @deepseek-ai/dsh сейчас разрешает latest в 0.2.1-rc.2. Репозиторий — источник истины для списка изменений и тупик для артефакта, что достаточно необычно, чтобы сказать об этом прямо, потому что при виде 31 релиза инстинктивно ожидаешь увидеть установщик на одном из них.

Что установщик записывает и чего он отказывается касаться

Установщик Windows — это нативный пакет NSIS, а не обёртка вокруг MSI, и ведёт он себя соответствующим образом. Доступны светлая, тёмная и автоматическая цветовые схемы — выбираемые во время установки с помощью /THEME=light, /THEME=dark или /THEME=auto — изменяемый каталог назначения и область установки, ограниченная текущим пользователем. Корневые каталоги дисков отклоняются в качестве каталога назначения, а непустой каталог назначения принимается, только если он уже зарегистрирован как установка; так установщик отказывается перезаписывать постороннюю папку. При обновлении тихий режим ожидает завершения запущенного приложения до десяти секунд, а затем останавливается с кодом выхода 2, если оно всё ещё работает. Это честный сбой, а не повреждённая установка, и он проявится в любом сценарии развёртывания, в котором приложение не завершается заранее.

Деинсталлятор проводит ту границу, которую большинство деинсталляторов проводят неправильно. Он удаляет каталог userData Electron, каталог продукта в %APPDATA%, а также кэш обновлений в %LOCALAPPDATA%. Он не трогает домашний каталог harness — ~/.dsh, или тот, на который указывает DSH_HOME — где хранятся ваши сеансы, настройки, учётные данные и плагины. Передача --updated или /KEEP_APP_DATA также сохраняет данные Electron. Так что удаление и переустановка — это поддерживаемый способ исправить сломанное окно, не потеряв свою работу, и это осознанное проектное решение, а не случайность.

О поставляемых в комплекте средах выполнения стоит знать, потому что они большие и находятся вне каталога приложения. Python с numpy, pandas, python-docx, python-pptx, openpyxl, Pillow, lxml и XlsxWriter, а также Node и pnpm устанавливаются в $DSH_HOME/dsh-runtimes/dsh-primary-runtime — обычно ~/.dsh/... на обеих платформах — когда рабочая область впервые объявляет, что они ей нужны. Именно поэтому объём занимаемого дискового пространства через неделю использования не равен объёму после установки, и поэтому удаление, сохраняющее $DSH_HOME, также сохраняет несколько сотен мегабайт сред выполнения.

Настройки считываются один раз при запуске из desktop/settings.json в каталоге userData Electron, что в Windows означает %APPDATA%\@deepseek-ai\dsh-desktop\desktop\settings.json, а в macOS — ~/Library/Application Support/@deepseek-ai/dsh-desktop/desktop/settings.json. DSH_HOME не изменяет расположение этого файла — на это стоит обратить внимание, поскольку это единственный элемент конфигурации, который не зависит от переменной, от которой зависит всё остальное. Настройки обновления в этом файле задаются в миллисекундах: intervalMs по умолчанию равно 600 000, а maxBackoffMs по умолчанию равно 3 600 000 и должно быть не меньше intervalMs. Джиттер по умолчанию равен 0.2, приводится к диапазону от нуля до единицы и ограничивается снизу одной секундой, при этом никогда не превышая верхний предел задержки. Для HTTP-трафика обновлений действует тайм-аут неактивности для каждого соединения, равный 60 000 миллисекунд, хотя у активной загрузки нет ограничения общей длительности — медленное соединение не будет прервано в середине загрузки.

Закрытие окна не закрывает приложение.

На обеих платформах закрытие окна скрывает его. В macOS это Command-W; в Windows — кнопка закрытия, Alt-F4 или «Закрыть» на панели задач. Windows запрашивает подтверждение перед первым скрытием и записывает background-close-confirmed флаг в каталог userData Electron, чтобы спрашивать один раз, а не каждый раз. Кроме того, в Windows иконка в трее сохраняется на всё время работы. В macOS иконки в строке меню нет вообще, из-за чего скрытое состояние там по-настоящему незаметно — приложение работает, задачи выполняются, и ничто на экране об этом не говорит, пока вы не откроете его снова с помощью dsh://open или значка в трее, в зависимости от платформы.

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

Выход — это отдельное действие со своей логикой. Перед выходом оболочка проверяет Host на наличие работающих агентов, включая субагентов и агентов, ожидающих подтверждения, сообщений в очереди, заданий, которые выполняются или останавливаются, и запланированных напоминаний, находящихся в активном состоянии. Если ничего из этого нет, выход выполняется без запроса. Если что-то из этого есть, появляется нативный диалог подтверждения с заголовком Выйти из DeepSeek Harness? и одним из трёх пояснений в зависимости от того, что было обнаружено: задачи будут прерваны, запланированные задачи не выполнятся или и то и другое. Host, который так и не достиг состояния готовности, не мог запустить ни одной задачи, поэтому выход в этом состоянии выполняется без запроса. Различие между «закрыть» и «выйти» — в этом весь смысл дизайна, и оно сохраняется на обеих платформах, хотя только одна из них показывает постоянный значок.

Команда dsh и порядок, который имеет значение

Установщик может поместить dsh в ваш PATH, что позволяет запускать CLI в том же harness home, который использует настольное приложение. Этот элемент управления — Управление командой dsh…, и он находится сразу под Проверить обновления… в меню; доступны три действия: установить, восстановить и удалить. В macOS он записывает лаунчер в /usr/local/bin/dsh и при необходимости запросит авторизацию администратора; в Windows он регистрирует команду в PATH текущего пользователя.

Два правила о порядке действий легко упустить, а узнать о них задним числом бывает неприятно. Первое: выполните Remove перед удалением настольного приложения, поскольку деинсталлятор не удаляет регистрациюdsh. Если сначала удалить приложение, останется запись PATH, указывающая на двоичный файл, которого больше не существует. Второе: если вы перемещаете приложение в другое место, используйте Repair в macOS или Install из нового расположения в Windows, а не рассчитывайте на то, что регистрация последует за приложением.

Управление плагинами для профиля рабочей станции имеет свою особенность. Поскольку Electron единолично владеет $DSH_HOME/profiles/desktop, пока он запущен, установка в этот профиль — не то, что делается при открытом приложении. Поддерживаемая последовательность: запустить приложение рабочей станции один раз, закрыть его, а затем выполнить dsh plugin --profile desktop add <package> из командной строки. Пакет попадает в профиль рабочей станции и станет активным при следующем открытии окна.

То, что упаковка уже сообщает вам, не закончено.

Раздел README об известных ограничениях на удивление откровенен, и две его записи — это те, с которыми вы столкнётесь в первую очередь.

• Вход в аккаунт не подключён. Кнопка «Войти» отключена. Вместо этого при первом запуске открывается приветственное окно размером 600 на 700 с формой для API-ключа; «Сохранить и продолжить» записывает ключ в хранилище учётных данных среды разработки, а «Настроить позже» открывает настоящее рабочее пространство без сохранения ключа. Нажатие кнопки «Войти» там, где она появляется, открывает настроенную страницу платформы в системном браузере; хост выполняет PKCE-обмен и временный loopback-колбэк — вся инфраструктура есть, привязки аккаунта нет. На практике рассчитывайте на то, что ключ придётся принести с собой.

• Подписание релиза и нотаризация указаны как требующие производственной среды выпуска. Это осторожность README, но также и случай, когда измерение полезнее фразы. Опубликованный исполняемый файл Windows имеет действительную подпись Authenticode с цепочкой расширенной валидации: GlobalSign Root CA–R3, затем GlobalSign Code Signing Root R45 и GlobalSign GCC R45 EV CodeSigning CA 2020, вплоть до конечного сертификата, выданного Hangzhou DeepSeek Artificial Intelligence Co., Ltd., с указанием юрисдикции CN / Zhejiang / Hangzhou и категорией частной организации. Метка времени RFC-3161 на этой подписи имеет значение 2026-10-17T09:22:04Z, что совпадает с датой релиза в канале обновлений Windows с точностью до минуты, а дайджест SHA-512 загруженного файла побайтно совпадает с хешем, опубликованным в этом канале. Таким образом, сегодня в Windows бинарный файл подписан, имеет метку времени и совпадение хеша, что бы README ни говорил о том, что процесс не полностью переведён в промышленную эксплуатацию. Сторона macOS — это отдельный вопрос, и нотаризацию там мы не проверяли; не переносите результат для Windows на неё.

Отчёты о сбоях и одна деталь, которую стоит знать

Отчёты о сбоях записываются как crash-<UTC time>-<source>.log в ~/Library/Logs/DeepSeek Harness на macOS или в каталог logs по пути Electron userData в Windows; хранятся десять самых последних. Этот лимит хранения настолько мал, что это важно: если что-то раз за разом идёт не так, а вы не заглядываете в логи несколько дней, журнал, который объяснил бы первый сбой, уже исчезнет. Скопируйте каталог, если отлаживаете что-то периодически возникающее.

Путь восстановления при повреждённой конфигурации столь же конкретен. Оболочка переименовывает cordis.patch.yml в cordis.patch.yml.bak-<timestamp>, не разбирая его, поэтому файл сохраняется, а не исправляется, и приложение запускается со значениями по умолчанию. Если вы вручную редактировали этот файл, .bak — это место, куда ушли ваши правки, и его всё ещё можно прочитать.

Что это означает для прежнего совета «никакого десктопного приложения»

В августе 2026 года мы опубликовали руководство, где говорилось, что у harness нет настольного приложения и что пользователям Windows следует запускать терминальную сборку — на тот момент это было верно, а сейчас устарело. Терминальная сборка по-прежнему работает и остаётся правильным выбором для сервера, контейнера или чего-либо со скриптами. Что изменилось: настольная сборка — не игрушечная обёртка. У неё отдельный профиль, она не прерывает задачи при закрытии окна, обновляется сама и синхронизирует состояние с CLI в том направлении, которое вам полезно. Если вы откладывали настольную сборку, потому что в прошлой статье говорилось, будто её не существует, эта причина исчезла.

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

Если вы предпочитаете ничего не устанавливать

Установка обвязки ради доступа к одной модели — это слишком много лишних компонентов ради небольшой задачи, а настольное приложение представляет собой preview с единственным каналом обновлений и сборкой для Intel, на которую никто не ссылается. Если вам на самом деле нужен DeepSeek-V4.1-Flash — модель, которую обвязка использует по умолчанию, та же, поддержку которой добавляют примечания к 0.2.1-rc.2, — то конечная точка API решает это без установщика, без каталога профиля и без значка в трее, о работающем состоянии которого нужно помнить.

Screenshot of the OrcaRouter models directory showing the header '213 models, 16 providers', the search and filter controls, a 'How to call any model' panel on the right, and a grid of model cards including a DeepSeek V4.1 Flash card.

Сравнивать нужно не настольное приложение с API в абстракции. Вопрос в том, требует ли работа агента, который может держать рабочее пространство открытым при закрытом окне, запускать скрипты на вашей машине и поддерживать сеанс живым часами — в этом случае с описанными выше проблемами упаковки стоит мириться, и настольная сборка — единственный способ получить такое поведение — или же работа представляет собой поток запросов к модели, которая уже где-то обслуживается. Во втором случае каталог моделей — более короткий путь, и в этой статье нет ничего, что это меняет.

Сравнение в этой статье1

Определено по этой статье · Бенчмарки: Artificial Analysis · обновляется ежедневно