DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-plugins

a

dsh-plugins

Discovered

DSH-плагины

Локальные плагины для DeepSeek Harness (Desktop, профиль desktop). Оба плагина — обычные DSH-бандлы: папка плагина и есть его источник, в профиль она подключается ссылкой (link:), поэтому правки подхватываются после переустановки бандла или перезапуска.

Репозиторий: https://github.com/apopov-app/dsh-plugins · npm: @apopov-app/dsh-anonymous-session, @apopov-app/dsh-locale-ru

Состав

ПапкаПакетЧто делает
anonymous-session/@apopov-app/dsh-anonymous-session 1.0.2Кнопка «Новая анонимная сессия» в левом сайдбаре: открывает стандартный интерфейс диалога в отдельном рабочем пространстве без выбора папки проекта.
locale-ru/@apopov-app/dsh-locale-ru 1.0.3Русский язык для веб-клиента: язык ru в списке языков, 66 неймспейсов и 2918 переведённых строк, плюс несколько ru-правок вёрстки.
stt-gigaam/@apopov-app/dsh-stt-gigaam 1.0.1Локальный провайдер распознавания русской речи для голосового ввода: GigaAM v3 (CTC, ONNX) через sherpa-onnx, без облака.
tts-ru/@apopov-app/dsh-tts-ru 1.0.0Локальная озвучка русских выжимок: инструмент speak_summary + переключатель-динамик, голоса Piper, без облака.

anonymous-session

  • Пункт в сайдбаре (sidebar.panellist, id anonymous-session, order −10) прямо под кнопкой «Новая сессия»; оформлен как вторая primary-кнопка в геометрии штатной (38px, тот же радиус, заливка и hover), через :has() на своей иконке. В сложенном рельсе остаётся иконкой. Клик открывает панель-стартер, которая вызывает штатный uiWorkspace.openWorkspace.
  • Host-половина готовит каталог ~/.dsh/anonymous и регистрирует рабочее пространство «Анонимные сессии» (идемпотентно, заголовок — по текущей локали). Диалог — обычный: модель, plan mode, вложения, история; папку проекта выбирать не нужно.
  • Подробности: anonymous-session/README.md.

locale-ru

  • Регистрирует язык Русский (fallback — английский) и русские словари для всех клиентских неймспейсов: сайдбар, диалог, чат, настройки, менеджер плагинов, темы, расписание, терминал, браузер, экспериментальные поверхности.
  • Добавляет ru-правила вёрстки там, где английские ширины не выдерживают русский текст: заголовок «Рабочие пространства» в сайдбаре и карточки пресетов агента в настройках.
  • Строки, которых нет в пакете (новая версия клиента), показываются по-английски.
  • Исходные словари и инструменты перегенерации лежат в locale-ru/data/ и locale-ru/tooling/. Экстрактору нужен чекаут клиента — он уже склонирован в ../core (тег dsh-v0.2.1-rc.5).
  • Подробности: locale-ru/README.md.

stt-gigaam

  • Host-only провайдер для экспериментального голосового ввода (ctx.speechToText): второй распознаватель рядом со штатным SenseVoiceSmall, с единственным языковым хинтом ru — штатный провайдер знает только zh/en/yue/ja/ko.
  • Модель: GigaAM v3 от Сбера (MIT), ONNX-конверсия для sherpa-onnx, ~214 МиБ; скачивается один раз в $DSH_HOME/speech-to-text-gigaam, проверяется по размеру и SHA-256, считается в worker-потоке (инференс ~0.3 с на 11 с речи на Apple Silicon).
  • Требует включённого бандла Voice input (Experimental) — без сервиса speechToText плагин остаётся pending. Полное описание — в stt-gigaam/README.md.

tts-ru

  • Host-плагин + клиентская половина для голосовых ответов: модель вызывает инструмент speak_summary с краткой выжимкой (2–3 предложения, до 400 символов), а Host локально синтезирует её через sherpa-onnx/Piper (голоса irina, dmitri, denis, ruslan, ~63 МБ каждый) и отдаёт WAV по авторизованному маршруту /api/tts-ru.
  • В композере — иконка-динамик (conversation.composer.dock) с переключателем режима и выбором голоса; выбор сохраняется в $DSH_HOME/tts-ru/state.json. Пока режим включён, в системный промпт добавляется секция, которая просит модель озвучивать именно выжимку, а не весь ответ.
  • Ответ модели с вызовом инструмента рендерится компактной карточкой (tool.call.toolview для speak_summary) с плеером и автоплеем.
  • Требует сетевого доступа при первой озвучке (модель голоса и espeak-ng-data скачиваются в рантайме; сами данные GPL/«unknown licence» — в репозиторий не кладём, плагин остаётся MIT). Подробности — в tts-ru/README.md.

Исходники клиента

../core — shallow-клон deepseek-harness на теге dsh-v0.2.1-rc.5, ровно той версии, что собрана в установленном Desktop-клиенте. Это не плагин: он нужен только инструментам языкового пакета (извлечение английских строк и сверка ключей при обновлении клиента) и лежит в .gitignore корня deepseek/. Если клон удалён, его можно восстановить командой из locale-ru/tooling/README.md.

Установка

Плагины ставятся штатным менеджером плагинов (в сессии агента или через Settings → Plugins нельзя указать локальный путь, поэтому используется install_bundle):

plugin_manager install_bundle /Users/ruelephant/dev-project/deepseek/plugins/anonymous-session
plugin_manager install_bundle /Users/ruelephant/dev-project/deepseek/plugins/locale-ru

Установка добавляет пакет в package.json профиля desktop, линкует папку в node_modules профиля и включает бандл. Переустановка (если плагин уже стоит):

plugin_manager remove_bundle @apopov-app/dsh-locale-ru
plugin_manager install_bundle /Users/ruelephant/dev-project/deepseek/plugins/locale-ru

После установки/обновления клиентских бандлов обновите страницу Harness (⌘R); изменения Host-половины подхватываются при следующем запуске приложения.

Установка без npm (из GitHub)

Плагины можно ставить напрямую из этого репозитория: менеджер плагинов использует pnpm и понимает git-спеки. Для монорепозитория нужен path::

SHA=$(git ls-remote https://github.com/apopov-app/dsh-plugins.git refs/heads/main | cut -f1)
dsh plugin --profile <профиль> add "git+https://github.com/apopov-app/dsh-plugins.git#${SHA}&path:/anonymous-session"
dsh plugin --profile <профиль> add "git+https://github.com/apopov-app/dsh-plugins.git#${SHA}&path:/locale-ru"

Те же строки принимает Plugins → Add plugin в Web-интерфейсе. Пинить стоит полный SHA, а не ветку: установка воспроизводима и не поменяется от новых пушей. Проверено: pnpm add ставит оба пакета из этого репозитория, dsh.bundle и клиентские бандлы на месте.

Требования

  • DeepSeek Harness Desktop, версия клиента 0.2.1-rc.5 (языковой пакет собран из dsh-v0.2.1-rc.5). Плагины не имеют зависимостей и шага сборки.
  • Node.js нужен только для инструментов перегенерации языкового пакета (см. locale-ru/tooling/README.md).

Публикация в npm

Все четыре пакета готовы к публикации под scope @apopov-app: убраны private, добавлены license, engines.dsh, файл LICENSE, ключевые слова; display-метаданные (locale meta, иконка) и files на месте. Состав пакета:

cd plugins/anonymous-session && npm pack --dry-run
cd ../locale-ru && npm pack --dry-run
cd ../stt-gigaam && npm pack --dry-run
cd ../tts-ru && npm pack --dry-run

Публикация (нужен npm-логин с доступом к scope @apopov-app; отложена, пока решается вопрос с восстановлением аккаунта):

npm login
cd plugins/anonymous-session && npm publish --access public
cd ../locale-ru && npm publish --access public
cd ../stt-gigaam && npm publish --access public
cd ../tts-ru && npm publish --access public

Пользователи ставят их как @apopov-app/dsh-anonymous-session@1.0.2, @apopov-app/dsh-locale-ru@1.0.3 @apopov-app/dsh-stt-gigaam@1.0.1 и @apopov-app/dsh-tts-ru@1.0.0 через Plugins → Add plugin, CLI dsh plugin --profile <p> add <spec> или агентский plugin_manager install_bundle.

engines.dsh у всех — >=0.2.1-rc.5 <0.3.0; после обновления Desktop-клиента поднимите диапазон и версию пакета (для языкового пакета — ещё и перегенерируйте словари, см. locale-ru/tooling/README.md). У stt-gigaam и tts-ru в зависимостях sherpa-onnx-node — при установке из npm pnpm поставит его сам; модели скачиваются при первом использовании.

Ограничения

  • Языковой пакет переводит клиентские словари. Строки, которые Host отдаёт как LocalizedText (описания инструментов и команд, заголовки плагинов из метаданных пакетов), остаются английскими — это другой канал, браузерным плагином он не переводится.
  • ru-правила вёрстки намеренно узкие: они привязаны к суффиксам CSS-классов клиента (_sectionHeader, _cardIdentity, …) и включаются только при html[lang="ru"]. При смене классов в новой версии клиента правила просто перестанут применяться — ничего не сломается, но вёрстка вернётся к исходной.
  • «Анонимность» в anonymous-session означает «без проекта, каталога и выбора папки»: сессии — обычные (пишутся в журнал, видны в сайдбаре в группе «Анонимные сессии»), рабочая папка — пустая ~/.dsh/anonymous.

Comments

Loading…