dsh-market — магазин плагинов внутри DeepSeek Harness: поиск, установка в один клик
📂 Исходный код на GitHubОткрытый (MIT) магазин плагинов внутри DeepSeek Harness: поиск и установка 4200+ плагинов из реестра awesome-dsh-plugin, скриншоты, комментарии через GitHub Discussions, избранное, группы, заметки, темы, обновления, резервные копии (JSON, WebDAV, GitHub Gist), горячее включение и выключение плагинов, диагностика загрузки и восстановление после неудачного старта. Около 8.1k звёзд на GitHub.
dsh-market — магазин плагинов внутри DeepSeek Harness
DeepSeek Harness (dsh) — агентный каркас, где почти всё является плагином: модель, инструменты, журнал сессии. Чтобы найти и поставить нужное расширение, обычно приходится листать каталоги и копировать команды руками. dsh-market решает эту задачу визуально: открывает внутри самого Harness магазин с поиском, скриншотами и установкой в один клик. Репозиторий собирает более 8 тысяч звёзд на GitHub и распространяется по лицензии MIT.
Установка
dsh plugin --profile web add dshmarket
После команды перезапустите dsh web и откройте Settings → Plugin Market. В dsh до 0.2.0 настройки лежат в боковой панели, с 0.2.1 они переехали в меню аккаунта — магазин остался отдельной вкладкой внутри. Если хотите открывать магазин в один клик, включите строку Plugin Market в боковой панели — переключатель находится на карточке самого магазина на странице Plugins.
Если хост работает под другим именем профиля, подставьте его: dsh plugin --profile <profile> add dshmarket. В официальном десктопном приложении DSH Desktop ставьте магазин через Settings → Plugins самого приложения, а не через командную строку: профиль приложения принадлежит его менеджеру плагинов, и CLI при работающем приложении его не изменит.
Минимальная версия — dsh web 0.1.0-rc.6. На более старом хосте магазин сам отключается и пишет об этом в консоль браузера, вместо того чтобы рисовать интерфейс поверх недоступных возможностей. Если пункт Plugin Market не появляется, в первую очередь проверьте версию: десктопные сборки часто привязывают свой, более старый dsh.
Что умеет магазин
Поиск и каталог. Полный community-каталог (4200+ плагинов, пополняется ежедневно) с фильтрами по категориям, числом звёзд, сортировкой «топ» и «новые». Описания двухязычные и следуют за языком интерфейса.
Учёт версии хоста. На карточках видно требование к dsh, объявленное через engines.dsh или через lockstep-зависимости @deepseek-ai/dsh-*. По желанию включается фильтр, который скрывает только подтверждённые несовместимости с текущим хостом. Записи без объявленного требования, с некорректными данными или только из GitHub остаются видимыми — магазин не гадает, что им не подойдёт.
Скриншоты. Карточки показывают скриншоты в стиле App Store: несколько снимков — автокарусель, клик — увеличение. Кадры, выбранные автором, грузятся сразу на карточке; если их нет, изображения извлекаются из README, как только вы открываете окно установки.
Комментарии. У каждой карточки открывается обсуждение плагина — то же самое, что на dshmarket.com и в каталоге awesome-dsh-plugin.com, то есть у плагина один разговор, а не три. Обсуждения идут через GitHub Discussions и giscus: чтение встроено в карточку, аккаунт GitHub нужен только для поста.
Избранное, группы, заметки. Можно закладывать плагины и темы, складывать установленные расширения в именованные группы с общим переключателем (все включены, все выключены, или как есть), и писать собственную строчку-пояснение для каждого плагина — полезно, когда на полке сорок расширений и через месяц уже непонятно, зачем каждое ставилось. Всё это хранится локально в state.json профиля и никуда не отправляется.
Темы. Отдельная вкладка с community-темами и скинами: установка, мгновенное включение, переключение в один клик. Темы взаимоисключающие, выбор переживает перезапуски, удаление возвращает прежний вид.
Установка и обновления. Установка в один клик с живым прогрессом; большинство плагинов начинает работать после обновления страницы, без перезапуска. Проверка обновлений по каждой позиции (версия npm или закреплённый коммит против HEAD), обновление по одному или всех сразу; сам магазин обновляется так же. Плагин, поставленный по ссылке на архив, обновляется только из своего источника: запись каталога с тем же именем никогда не предлагается как обновление. Рядом с ожидающим обновления плагином есть ссылка What changed — релизные заметки или список коммитов.
Резервные копии. Экспорт списка плагинов и конфигурации в читаемый JSON, импорт на другой машине, хранение на WebDAV с ежедневным автобэкапом или синхронизация через приватный GitHub Gist. Восстановление объединяется с текущим состоянием (плагины, поставленные после копии, остаются), проверяется перед записью и откатывается при сбое.
Горячее включение и выключение. Переключатель пишет строки вида - id: … и disabled: true|false в cordis.patch.yml профиля — официальный слой патчей, механизм перенесён из dsh-plugin-hub. HMR в dsh пересобирает композицию примерно за секунду, перезапуск не нужен, загрузчик применяет выбор при каждом старте.
Восстановление после сбойного старта. Загрузка dsh — «всё или ничего»: один незагружающийся плагин валит весь процесс, а интерфейс магазина гибнет вместе с хостом. Теперь при неудачном старте появляется кнопка Adjust plugins: проблемные плагины помечены красным и сняты с выбора, вы отмечаете, что включить при следующем запуске, выбор пишется в те же строки cordis.patch.yml, и старт повторяется. Механизм работает даже при упавшем хосте — его обслуживает отдельный помощник перезапуска на том же адресе.
Диагностика и порядок загрузки. Одна страница показывает стек бандлов, дубликаты загрузчиков, несовпадения версий зависимостей, переопределения и лишние каталоги на диске. Порядок community-бандлов можно таскать мышью или взять предложенный — по правилам before/after самих плагинов. Ничего не пишется, пока пробная композиция не пройдёт, а перед применением панель объясняет, что новый порядок изменит.
AI fix. Один клик копирует в буфер промпт для чинимых ошибок, построенный по данным диагностики. Промпт сначала просит агента проверить, не является ли он сам этим хостом; если да — запрещает трогать живую композицию и ядро, вместо этого пишет идемпотентные скрипты apply и rollback, которые вы запускаете в отдельном терминале.
Скорость установки
Установка предпочитает проверяемые пакеты npm, затем заранее собранные тарболы GitHub Release у автора, и только потом полную загрузку исходников с GitHub. Сборка из готовых архивов занимает секунды и не требует локальных скриптов сборки; для плагинов без готовых архивов скорость зависит от вашего канала до GitHub.
Безопасность
- Установка ограничена источниками из курируемого реестра awesome-dsh-plugin — всё остальное отклоняется.
- Скрипты сборки по умолчанию заблокированы (pnpm ≥ 10); разрешить их — осознанный выбор для конкретного пакета.
- Плагины с доступом к терминалу помечаются до установки в web-профиль.
- Точка установки принимает только same-origin POST; магазин не отправляет телеметрию никуда.
- Резервные копии могут содержать учётные данные из конфигурации профиля — интерфейс предупреждает перед экспортом и загрузкой; синхронизация по WebDAV работает только по https, не принимает адреса из частных сетей и не хранит пароль в браузере.
- Токены Gist всегда уходят напрямую в
api.github.com; публичные зеркала GitHub токены не получают.
Для развёртываний через systemd кнопка однократного перезапуска скрывается автоматически — иначе магазин вместе с замещающим процессом убил бы cgroup юнита, и служба не вернулась бы. Для pm2 и launchd такой детекции нет: там переключатель Allow restart выключается в конфигурации профиля под ключом config::
- id: dsh-market
name: dshmarket
config:
allowRestart: false
Если плагину для сборки нужен другой компилятор, переменные окружения сборки пинятся через buildEnv там же — эквивалент CC=... CXX=... dsh из терминала, без глобальных изменений.
Каталог как индекс
Тот же каталог служит индексом для механизмов самого Harness. В dsh 0.2.1+ откройте Plugins → Discover → Index sources и добавьте:
https://cdn.jsdelivr.net/npm/dsh-plugin-catalog/index.json
Это тот же список в виде индекса формата 1, раздаваемого с npm — везде грузится быстро, потому что dsh даёт источнику всего 15 секунд. Вкладка Discover и инструмент агента plugin_market ищут по этому индексу.
Каталог подтягивается живьём при каждом открытии с awesome-dsh-plugin.com/plugins.json; зеркала npm в китайском регионе читаются в первую очередь. Никакого встроенного снимка на случай сбоя намеренно нет: для каталога, который растёт каждый день, устаревший ответ — это неправильный ответ. Если хост с каталогом недоступен из вашей сети, направьте магазин на своё зеркало через переменную окружения DSHM_REGISTRY_URL.
Как добавить свой плагин
Этот репозиторий — приложение магазина, а не сам каталог. Список плагинов ведётся в реестре awesome-dsh-plugin: чтобы попасть в магазин, откройте там pull request с одной записью. Обычно сайт и магазин подхватывают её в течение суток.
Баги идут в issues — вложение лога, выгруженного кнопкой Export log, ускоряет диагностику примерно в десять раз. Идеи функционала обсуждаются на Roadmap-доске; issues оставляются только для сломанного.
Итог
dsh-market — это не просто список ссылок, а полноценный менеджер расширений для DeepSeek Harness: поиск по живому каталогу, установка и обновления в один клик, темы, резервные копии, диагностика и — что важнее всего для агентного каркаса — безопасное восстановление, когда после установки хост перестал подниматься. Если вы активно пользуетесь dsh и собираете полку плагинов, магазин превращает ручную возню с командами и конфигами в обычный интерфейс.
Источник: https://github.com/dsh-market/dsh-market