dsh-plugins
DiscoveredDSH-плагины
Локальные плагины для 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, idanonymous-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…