# dsh-plugin-manager > **Каждый плагин наконец говорит сам за себя** — китайские названия, понятные описания, включение/выключение в один клик и редактирование заметок прямо в интерфейсе для DeepSeek Harness. [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](../../LICENSE) [![DeepSeek Harness](https://img.shields.io/badge/DeepSeek%20Harness-Plugin-4C9AFF.svg)](https://github.com/deepseek-ai/deepseek-harness) [![version](https://img.shields.io/badge/version-v0.4.0-success.svg)](https://github.com/2768651338/dsh-plugin-manager/releases) [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6.svg)](https://www.typescriptlang.org) [![React](https://img.shields.io/badge/React-18-61DAFB.svg)](https://react.dev)
Вкладка «Менеджер плагинов» — реальный скриншот **Настройки → Плагины → Менеджер плагинов** · 165 плагинов в каталоге, один клик для переключения, заметки редактируются на месте.
[**English**](../README.md) · [**中文**](README_ZH.md) · [**Español**](README_ES.md) · [**日本語**](README_JA.md) · [**Deutsch**](README_DE.md) · [**Português**](README_PT.md) · [**한국어**](README_KO.md)
> ⚠️ Этот перевод может отставать от английской версии. Разделы само-проверки для каталога (Совместимость, Быстрый старт, Конфигурация, Права и данные, Устранение неполадок, Безопасность) ориентируются на [английскую версию](../README.md). --- > 🆕 **2026-08-14 · v0.3.0** — Доступно редактирование заметок в интерфейсе: нажмите **Редактировать заметки** на любой карточке, чтобы переименовать плагин или переписать его описание, не трогая `catalog.json`. > > 🔧 **v0.2.x** — Исправлены 404 эндпоинтов при tsx-запуске из исходников (строгая регистрация `./typert`) и доступ к инъекции cordis (канал `ctx.get`). --- ## Зачем это нужно | Боль | Раньше | С этим плагином | |------|--------|-----------------| | Список плагинов ни о чём не говорит | Только английские имена модулей, непонятно, что делает каждая строка | Китайское название + описание в одну строку + категория для каждого плагина | | Переключение вручную | Ручная правка `cordis.patch.yml` (легко сломать) | Переключатель в один клик, хирургические построчные правки, горячая перезагрузка за ~1 с | | Неизвестные плагины остаются загадкой | Только запасной текст | Добавляйте собственные заметки прямо в интерфейсе | | Ничто не защищено от случайного клика | Можно отключить любую строку | Системные строки заблокированы, строки с `!!js` помечены | ## Установка ```bash # Вариант 1: установка из GitHub (рекомендуется, тот же механизм bundle, что у dsh-navbar) dsh plugin --profile web add github:2768651338/dsh-plugin-manager#main # Вариант 2: установка из zip (скачайте со страницы Releases) # распакуйте в путь без пробелов, затем: dsh plugin --profile web add file:/<каталог-распаковки>/dsh-plugin-manager # Вариант 3: локальная сборка (клонируйте репозиторий) pnpm build # tsc + tsdown → lib/index.js (хостовая половина) и lib/client.js (браузерная половина) dsh plugin --profile web add file:./dsh-plugin-manager ``` > Затем **перезапустите DeepSeek Harness** и один раз нажмите **Ctrl+F5**. Откройте *Настройки → Плагины → Менеджер плагинов*. > Артефакты `lib/` закоммичены — установка из GitHub не требует локальной сборки. ## Возможности | Возможность | Описание | |-------------|----------| | 📚 Китайский каталог | 130+ встроенных записей (название / описание / категория) с запасным вариантом и настройкой для каждого плагина | | 🔘 Переключатель в один клик | Пишет в `~/.dsh/cordis.patch.yml` (глобальный слой); HMR-наблюдатель DSH применяет изменения за ~1 секунду; включение пишет явное `disabled: false`, перекрывающее нижние слои | | ✏️ Заметки в интерфейсе | «Редактировать заметки» на карточке меняет китайское название/описание (`~/.dsh/plugin-manager/catalog.json`) с восстановлением по умолчанию в один клик | | 🛡️ Защита | Строки загрузки/транспорта/оболочки настроек заблокированы как «Системные»; строки с `!!js`-выражениями помечены «Управляется выражением» | | 🔍 Поиск и фильтр | Поиск по названию/описанию/модулю, фильтр по категории, сводка включённых | ## Как это работает | Половина | Файл | Роль | |----------|------|------| | Хост | `lib/index.js` | Регистрирует cordis-сервис `pluginManager` (Typert-удалённый): `list` / `setEnabled` / `setOverride` / `removeOverride`. Переключатели используют хирургическое редактирование патч-файла — комментарии и `!!js`-выражения сохраняются; перед записью файл перечитывается для слияния параллельных правок. | | Хост | `lib/typert.host.js` | Экспортирует `./typert`; typert-loader регистрирует его как **строгие определения вызовов**. Ключевое исправление: при tsx-запуске из исходников шлюз и внешний плагин могут держать две копии typert-protocol — маркеры декораторов невидимы между копиями (симптом: каждый вызов возвращает 404). Строгая регистрация идёт через общий реестр и обходит проблему идентичности экземпляра модуля. | | Браузер | `lib/client.js` | Монтирует удалённое пространство имён `pluginManager` через канал `ctx.get()` без инъекции (избегает взаимоблокировки самомонтирования) и регистрирует вкладку в слоте `settings.plugins.tab`. | > Зависимости времени выполнения: `@deepseek-ai/cordis` и `@deepseek-ai/dsh-typert-protocol` разрешаются через запасные ссылки `profiles/node_modules` DSH — дополнительных загрузок pnpm не требуется. ## Свои заметки Нажмите **Редактировать заметки** на любой карточке. Сохранение с двумя пустыми полями удаляет настройку плагина. Опытные пользователи могут по-прежнему редактировать `~/.dsh/plugin-manager/catalog.json` напрямую: ```json { "@dsh-external/dsh-navbar": { "name": "对话导航条", "desc": "对话区右缘的消息节点导航" } } ``` Приоритет: файл переопределений > встроенный каталог > английское короткое имя. ## Структура проекта ```text src/ index.ts хостовая половина: PluginManagerGateway (list / setEnabled / setOverride / removeOverride) patch-file.ts хирургический редактор патч-файла (чистые функции) catalog.ts встроенный каталог + набор системной защиты types.ts общие типы данных typert-host.ts артефакт строгой регистрации эндпоинтов (./typert) client/ index.ts браузерная половина: монтирует удалённое пространство имён + регистрирует вкладку remote.ts клиентский удалённый артефакт (строгие zod-кодеки) PluginManagerTab.tsx интерфейс вкладки (список / переключатели / заметки) locales.ts словари zh/en cordis.patch.yml патч bundle (вставляет строку plugin-manager) lib/ собранные артефакты (закоммичены; установка из GitHub пропускает сборку) tests/ смоук- / сквозные тесты ``` ## Тесты ```bash node tests/patch-file.smoke.mjs # 9 смоук-тестов редактора патчей node tests/host-gateway.e2e.mjs # сквозные тесты хостового шлюза (включая содержимое файла переопределений) node tests/claims.e2e.mjs # регистрация эндпоинтов под обычным node и tsx-запуском ``` > Абсолютные пути в тестовых скриптах указывают на локальную установку DSH и нужны только для разработки; на поведение в рантайме они не влияют. ## Примечания - Отключение браузерных плагинов (ui-* / client-*) полностью применяется только после обновления страницы; - При ручной правке патч-файла сохраняйте структуру блоков строк (дефис `- ` в колонке 0); - Удаление: `dsh plugin --profile web remove @2768651338/dsh-plugin-manager`. --- ## История звёзд Star History Chart ---
Лицензия MIT © [2768651338](https://github.com/2768651338) Создано на основе публичного механизма плагинов DeepSeek Harness — не аффилировано с DeepSeek.