DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Locale Ru — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
L

@local/dsh-locale-ru

Locale Ru

Russian language pack for DeepSeek Harness: ru locale, UI dictionaries, plugin and bundle text, Russian desktop-shell menu.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:ExAleks/dsh-locale-ru#d6b4cf1acf736132a8851623dab3fbdef93e07f1
READMECompatibilityVersions
Settings → General with the Russian language selectedPlugins page with Russian cardsThe app shell in Russian

Compatibility and provenance

Locale Ru is published as @local/dsh-locale-ru and currently resolves to version 0.2.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/4/2026

Versions

0.2.1stable
10/4/2026
0.1.0stable
10/3/2026

Related plugins

Loading related plugins…

Latest
0.2.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/8/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in ui-customization.

Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH skill center: browse loaded skills by source (bundled / project / user / custom / runtime), enable or disable, create and delete, in a web GUI panel.Remote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and rClient Ui Task Board@linxin666/dsh-client-ui-task-boardHost-authoritative task board for the DSH Web GUI with real session execution, Host cron scheduling, and optional cross-platform idle-sleep protection; mounted without DSH source changes.Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。

README

DSH Locale RU

Неофициальный русский языковой пакет для DeepSeek Harness (DSH). Unofficial Russian language pack for the DeepSeek Harness (DSH) desktop app.

  • 2425 из 2428 строк словарей интерфейса — 57 namespace (вся обвязка продукта)
  • 297 строк манифестов: названия и описания плагинов и бандлов
  • язык «Русский» появляется в Настройки → Общие → Язык, переключение мгновенное, без перезапуска
  • непереведённое автоматически падает на английский, поэтому словарь можно дополнять частями
  • уведомление о начисленном бонусе собирается по-русски из структурированных полей платформы
  • нативное меню приложения (Application, Edit и всё внутри), диалог выхода, окно приветствия и экраны обновления — отдельным опциональным патчем шелла, см. Нативное меню
  • основная часть — обычный клиентский плагин-бандл DSH: включается, выключается и удаляется как любой другой

Требования

  • установленный DeepSeek Harness Desktop 0.2.0-rc.2 (пакет собран и проверен на нём);
  • для сборки из исходников — Node.js (подойдёт Node из поставки DSH: resources\runtime\primary-runtime\dependencies\node\bin\node.exe).

Установка

git clone https://github.com/ExAleks/dsh-locale-ru.git
dsh plugin --profile <профиль> add "<путь к клонированному каталогу>"

dsh plugin add добавляет зависимость в package.json профиля и вписывает бандл в dsh.profile.bundles. То же самое можно сделать из GUI: Плагины → Добавить плагин и указать абсолютный путь к каталогу.

Затем в интерфейсе: Настройки → Общие → Язык → Русский. Если страница была открыта до установки — обновите её (Ctrl+R). Выбор языка сохраняется в настройках хоста, а не в браузере.

Дальше по желанию — патч нативного меню: он трогает файлы установки, поэтому вынесен отдельно.

Удалить пакет: на странице Плагины или командой dsh plugin --profile <профиль> remove @local/dsh-locale-ru. Язык при этом исчезает из списка, а интерфейс возвращается к английскому.

Нативное меню (Electron-шелл)

Меню Application / Edit, диалог выхода, окно приветствия и экраны обновления рисует не веб-интерфейс, а сам Electron-шелл: его словари сообщений лежат внутри app.asar, поддерживают только en и zh, а выбор языка зашит в resolveDesktopLocale(). Ни клиентский, ни host-плагин до этого кода не достаёт — плагины работают в другом процессе, а app.asar занят запущенным приложением.

Патч добавляет в шелл русскую таблицу (desktop-shell/ru.json, 164 сообщения) и учит резолвер отдавать её для русского языка.

# 1. собрать патченный архив рядом с исходным (установка не меняется, всё проверяется)
node tools/patch-desktop-locale.mjs --asar "<DSH>/resources/app.asar"

# 2. применить при закрытом приложении — скрипт сам ждёт закрытия и делает бэкап
tools\apply-desktop-menu.cmd apply

# откат
tools\apply-desktop-menu.cmd revert

На Windows <DSH> — это %LOCALAPPDATA%\Programs\DeepSeek Harness, шаг 2 удобно делать двойным кликом по apply-desktop-menu.cmd. На macOS и Linux шага 2 нет: закройте приложение и замените resources/app.asar собранным архивом вручную (cp), сохранив копию оригинала для отката.

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

Что важно знать:

  • Патч трогает файлы установки: resources/app.asar заменяется, оригинал остаётся рядом как app.asar.backup — откат одной командой. После каждого обновления DSH патч слетает и применяется заново.
  • Инструмент проверяет безопасность сам: читает fuse-биты Electron и отказывается патчить, если включена проверка целостности app.asar (в текущих сборках выключена); сверяет ключи сообщений с установленной версией и отказывается работать, если продукт их переименовал; проверяет синтаксис каждого файла перед записью и пересобирает архив с побайтовой сверкой всех 12 967 записей.
  • Перевод не разрушающий: русские сообщения накладываются поверх английских, поэтому непереведённые пункты меню и диалогов остаются английскими, а не пустыми.
  • Язык выбирается штатно: русский — если в настройках выбран «Русский» или системный язык русский; для en и zh поведение не меняется.
  • Проверить результат, не запуская приложение: node tools/verify-desktop-patch.mjs --asar "<DSH>/resources/app.asar".

Сборка из исходников

Весь инструментарий — на Node.js, без зависимостей. ref/ в репозитории нет: он генерируется из вашей установки.

# 1. вытащить встроенные словари и манифесты из установленного DSH
node tools/asar-extract.mjs --asar "<DSH>/resources/app.asar" --out ref \
  --filter "node_modules/@deepseek-ai/[^/]+/(lib/client\.js|package\.json|locale/[a-z-]+\.json)$"
node tools/extract-locales.mjs ref/dsh/node_modules/@deepseek-ai ref/locales.json
node tools/collect-manifest-text.mjs ref/dsh/node_modules/@deepseek-ai ref/manifest-texts.json

# 2. собрать и проверить артефакт
node tools/build-locale-ru.mjs ref/locales.json translations/ru.json \
  translations/package-text.ru.json translations/server-messages.ru.json \
  ref/manifest-texts.json client.js @local/dsh-locale-ru
node tools/test-locale-pack.mjs . ref/locales.json

# 3. проверить, что client.js соответствует исходникам (DSH не нужен)
node tools/verify-in-sync.mjs .

Как переводить

ФайлЧто внутри
translations/ru.jsonсловари интерфейса: namespace → ключ → русский текст. Ключи должны совпадать с ключами встроенных английских словарей
translations/package-text.ru.json«точная английская строка → русская» для названий и описаний плагинов и бандлов
translations/server-messages.ru.jsonшаблоны для текста, который приходит с сервера (сейчас — уведомление о начисленном бонусе)
desktop-shell/ru.jsonсообщения Electron-шелла по ключам: меню, диалоги выхода, приветствие, обновления
client.jsсобранный артефакт, генерируется сборкой — руками не править

Сборка падает, если ключа нет во встроенном английском словаре или разошёлся набор {плейсхолдеров} — опечатка не уедет в интерфейс. После правки: пересборка + verify-in-sync.mjs (и test-locale-pack.mjs, если DSH установлен). Затем Ctrl+R: URL модуля содержит rev-хеш содержимого, поэтому страница забирает свежую версию.

Как устроено

  • Плагин. package.json объявляет dsh.bundle.patch (патч-строка в композиции профиля) и dsh.client (браузерная половина), cordis.patch.yml вставляет строку locale-ru, client.js регистрируется через window.__ModuleLoader__.load.
  • Язык и словари. ctx.locale.addLanguage({ id: 'ru', label: 'Русский', fallback: 'en' }) добавляет язык в каталог, ctx.locale.register(namespace, 'ru', {...}) — словари. Поиск идёт по цепочке ru → en → common → сам ключ.
  • Тексты манифестов. Названия и описания плагинов и бандлов приходят из locale/en.json и package.json самих пакетов (там только en и zh), а resolveText словари языковых пакетов не смотрит. Поэтому пакет на время своей загрузки оборачивает этот резолвер: срабатывает только при активном русском и только на точное совпадение с известной строкой, отдаёт приоритет пакетному ru, всё остальное пропускает без изменений и снимает обёртку при выгрузке.
  • Тексты с сервера. Уведомление о начисленном бонусе приходит с платформы готовой английской фразой (msg), хотя рядом лежат структурированные amount, currency и expires_at, а язык запроса клиент уже передаёт. Пока активен русский, пакет перехватывает чтение этого списка и собирает фразу сам: сумма, валюта и дата в русском формате с часовым поясом. Если полей нет или дата нечитаемая, остаётся текст сервера — ничего не додумывается.
  • Шелл. Патч вставляет const ru = {...} перед резолвером в lib/main.js, lib/preload-app.cjs и lib/preload-welcome.cjs, а resolveDesktopLocale() начинает возвращать русские сообщения поверх английских для языка ru.

Инструменты

СкриптНазначение
asar-extract.mjsчтение app.asar без зависимостей: --list, --out с фильтром по путям, --grep с поиском по содержимому
extract-locales.mjsсобирает все встроенные словари (ref/locales.json)
collect-manifest-text.mjsсобирает display-тексты пакетов (ref/manifest-texts.json)
build-locale-ru.mjsсборка client.js с проверкой ключей и плейсхолдеров
test-locale-pack.mjsтест артефакта против установленного DSH
verify-in-sync.mjsофлайн-проверка «client.js == исходники» (используется в CI)
extract-desktop-messages.mjsвытаскивает словари сообщений шелла из его lib/main.js
patch-desktop-locale.mjsвставляет русскую таблицу в шелл и пересобирает app.asar (--dry-run, --revert, --force)
verify-desktop-patch.mjsпроверяет резолвер локали в собранном архиве без запуска Electron
apply-desktop-menu.cmdприменяет и откатывает патч шелла: ждёт закрытия приложения, делает бэкап, перезапускает
show-locales.mjsпечатает английские строки выбранных namespace
audit-client-entries.mjsсверяет клиентские точки входа из манифестов с просканированными
make-ru-work.mjs, merge-ru.mjsнарезка заданий на перевод и слияние с проверками
make-pkgtext-work.mjs, merge-pkgtext.mjsто же для текстов манифестов

Структура репозитория

client.js                        собранный браузерный артефакт плагина
index.js, cordis.patch.yml       host-половина и патч-строка бандла
locale/ru.json, locale/en.json   название и описание пакета для карточки плагина
translations/                    словари интерфейса, тексты манифестов, серверные шаблоны
desktop-shell/ru.json            сообщения Electron-шелла для патча меню
tools/                           извлечение, сборка, тесты, патч шелла
.github/workflows/check.yml      CI: манифест, JSON, синтаксис, соответствие артефакта исходникам

Что не локализуется

  • короткие имена модулей (persona, tool-bash, tool-fs-search) — это идентификаторы, продукт показывает их намеренно;
  • окно аккаунта — встроенная страница платформы, её язык задаётся отдельно (en_US/zh_CN);
  • остальные тексты с сервера: уведомление о бонусе пакет собирает сам (см. Как устроено), но произвольный текст платформы, например сообщения об ошибках аккаунта, приходит готовым и не переводится;
  • контент агента — заголовки сессий, сообщения, код, вывод команд;
  • нативное меню без патча шелла остаётся английским: до кода шелла плагин не достаёт.

Совместимость и обновления

Пакет собран под DSH 0.2.0-rc.2 (Desktop). Словари сверяются с установленной сборкой: после обновления DSH пересоберите ref/locales.json и запустите сборку — она сообщит о расхождениях, а непереведённое просто останется английским. Патч шелла устроен так же (patch-desktop-locale.mjs сверяет ключи и откажется работать при переименовании сообщений) и требует повторного применения после каждого обновления.

Что нового

0.2.1

  • apply-desktop-menu.cmd больше не запускает приложение: процесс из консольного окна привязан к нему, и закрытие окна закрывало DSH. Теперь скрипт применяет патч, печатает путь к приложению и оставляет запуск пользователю.

0.2.0

  • русское нативное меню и диалоги шелла: 164 сообщения, патч app.asar с проверками, бэкапом и откатом;
  • уведомление о начисленном бонусе собирается из структурированных полей платформы, а не показывается английской фразой сервера;
  • asar-extract.mjs получил режим --grep, добавлены инструменты для шелла, CI проверяет и их.

0.1.0

  • первый выпуск: язык «Русский», 2425 строк словарей в 57 namespace, 297 строк манифестов, покрытие 99,9 %;
  • сборка со сверкой ключей и плейсхолдеров, тест артефакта и офлайн-проверка синхронности в CI.

English

Unofficial Russian language pack for the DeepSeek Harness desktop app. It ships as an ordinary DSH client plugin bundle and adds a Русский (ru, English fallback) language with Russian dictionaries for 57 namespaces (2425 of 2428 UI strings), Russian titles and descriptions for plugin and bundle cards, and a Russian bonus notification recomposed from the platform's structured fields.

git clone https://github.com/ExAleks/dsh-locale-ru.git
dsh plugin --profile <profile> add "<path to the clone>"

Then pick Settings → General → Language → Русский. The native Application / Edit menu and the shell dialogs live inside app.asar and cannot be reached from a plugin, so an optional installer patch under tools/ adds a Russian message table to the Electron shell (with a backup, verification and one-command revert); see the sections above for the exact commands. The committed artifact is CI-checked against its translation sources with tools/verify-in-sync.mjs.

Лицензия и правовая оговорка

MIT — см. LICENSE.

Неофициальный проект, не связан с DeepSeek. Права на DeepSeek Harness и его строки интерфейса принадлежат их владельцам; здесь публикуются только переводы и код плагина. Файлы, извлечённые из установки (ref/), в репозиторий не попадают.