DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Locale Ru — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
L

@local/dsh-locale-ru

Locale Ru

DeepSeek Harness 的俄语语言包:ru 本地化、界面词典、插件和捆绑包文本、俄语桌面外壳菜单。

插件会安装到这里;不确定时保持 web。

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

兼容性与来源证明

Locale Ru 以 @local/dsh-locale-ru 发布,当前版本为 0.2.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/4

版本

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

相关插件

正在加载相关插件…

最新版
0.2.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/8
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。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/), в репозиторий не попадают.