dsh-model-tidy
Verifieddsh-model-tidy · v1.1.0 · MIT · Web UI
DeepSeek Harness plugin: keep the model selector tidy. Choose which models appear and what they are called, without touching any provider configuration or running session.
Install
dsh plugin add dsh-model-tidy Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-model-tidy
Плагин для DeepSeek Harness, который приводит в порядок меню выбора модели: вы решаете, какие модели показывать, даёте им понятные имена, расставляете их в удобном для себя порядке и сохраняете тарифный коэффициент, указанный провайдером. Встроена и необязательная проверка доступности — чтобы убедиться, что модель работает прямо сейчас.

Какую задачу решает
Поставьте два-три плагина-провайдера, и меню моделей превращается в стену. Бесплатный канал, рабочее приложение, пара самостоятельно настроенных шлюзов — и вот уже тридцать строк. Большинство из них вы никогда не выберете, а некоторые — один и тот же продукт, доступный через разные маршруты.
Выбор модели — это место для решения, а не склад. Там должны быть только те несколько моделей, которыми вы действительно пользуетесь, под теми именами, которые вы узнаёте, и в том порядке, который вы задали.
Что он делает
После установки в настройках DSH появляется раздел «Модели: порядок». Модели сгруппированы по провайдеру — одна карточка на провайдера — и у каждой свой переключатель:
┌─ WorkBuddy ─ 8/12 ─ [сбросить порядок] [скрыть все] [показать все] ─┐
│ ▲▼ Auto ●─── │
│ ▲▼ GLM-5.3 · x0.79 ●─── │
│ ▲▼ GLM-5.2 · x0.79 · ночная скидка ● [псевд.] ───● │
│ ▲▼ Grok-4.7 · x1.90 ───● │
└────────────────────────────────────────────────────────────────────┘
┌─ our-free-model ─ 6/6 ── [сбросить порядок] [скрыть все] [показать все] ─┐
│ ▲▼ Kilo Auto Free ●─── │
└────────────────────────────────────────────────────────────────────┘
- Один переключатель на модель. Выключен — модель исчезает из меню выбора.
- Стрелки вверх/вниз (
▲▼). Перемещают и карточки провайдеров, и модели внутри провайдера; кнопка в заголовке возвращает порядок каталога. - Псевдоним. Дайте модели понятное имя, и меню покажет её под этим именем. Тарифный суффикс провайдера остаётся в конце.
- Поиск. Фильтр по имени модели, провайдеру или псевдониму.
- Групповые действия по провайдеру. Скрыть или показать все модели одного провайдера одним нажатием.
- Общие кнопки «показать / скрыть». Две кнопки на весь каталог.
- Проверка доступности. Подтвердить, какие из показанных моделей работают прямо сейчас, — по одной точке состояния на строку.
- Восстановление. Одна кнопка очищает все псевдонимы, другая возвращает все модели.
Свой порядок моделей
В каждой строке есть пара стрелок для перестановки внутри провайдера. Порядок сохраняется явно, поэтому переживает перезапуск и переносится вместе с настройками на другую машину.
- Порядок — это не видимость. Скрытая модель сохраняет своё место в записанном порядке и возвращается туда же, когда её снова показывают.
- Новые модели встают после расставленных. Модель, которую провайдер добавит позже, не вклинится в середину выстроенной вами последовательности.
- Сортировать можно и при фильтре. Во время поиска стрелки меняют местами двух видимых соседей, поэтому нажатие всегда даёт заметный результат; строки, скрытые фильтром, сохраняют свои относительные позиции.
- Отмена в один клик. «Сбросить порядок» удаляет кастомную последовательность провайдера и возвращает порядок каталога.
Свой порядок провайдеров
У каждой карточки провайдера тоже есть пара стрелок — можно поднять часто
используемые каналы наверх. Порядок каналов хранится отдельно
(providerOrder), не зависит от сессии и переживает перезапуск.
- Перемещается только то, что вы тронули. Каналы, которые вы не переставляли, и провайдеры, зарегистрированные позже, сохраняют свои места и идут после расставленных.
- Не влияет на порядок моделей. Перестановка каналов не нарушает порядок моделей внутри какого-либо провайдера.
- Отмена в один клик. «Сбросить порядок каналов» возвращает порядок самого harness.
Проверка доступности
Меню выбора модели говорит только о том, что модель есть в списке — не о том, работает ли она сейчас. После установки нескольких провайдеров снятая с выпуска модель или мёртвый маршрут шлюза не исчезнут сами.
Нажатие «Проверить доступность» открывает диалог подтверждения — потому что это расходует небольшое число токенов — и сообщает, что будет отправлен один крошечный запрос (просится одно слово) к каждой показанной модели. Затем у каждой строки появляется точка состояния:
- зелёная = доступна
- красная = недоступна (наведите мышь, чтобы увидеть задержку и причину)
- янтарная = проверяется
- серая = не проверялась
Проверка выполняется на стороне хоста, где существуют вызовы моделей; фронтенд передаёт модели на маршрут, доступный только через loopback, порциями, а хост проверяет их ограниченным пулом (ширина 4, тайм-аут 8 секунд на модель), возвращая каждый вердикт в свою строку. Запуск можно остановить в любой момент. Скрытые модели не проверяются, а результаты живут только в памяти — доступность это истина данного момента и никогда не сохраняется в устаревший вердикт к следующей сессии.
Тарифный коэффициент переживает переименование
Провайдеры публикуют коэффициенты, дописывая их к отображаемому имени модели — GLM-5.3 · x0.79 — потому что в каталоге моделей harness нет отдельного поля для тарифа. Простая замена этого имени (а именно так обычно и делают переименование) молча выбрасывает коэффициент.
Плагин разделяет имя по тому же разделителю, что использует провайдер, и сохраняет хвост:
| имя в меню выбора | |
|---|---|
| Как опубликовано | GLM-5.3 · x0.79 |
| Переименовано в «GLM дешёвая» | GLM дешёвая · x0.79 |
| Переименовано, с акциями | GLM дешёвая · x0.79 · ночная скидка |
| Модель без коэффициента | Автоматически ← лишний разделитель не добавится |
Скрытая модель не меняет своё место
Скрытая модель отсутствует в каталоге — harness её отфильтровывает, — поэтому строку можно восстановить только из сохранённых данных. Очевидная реализация дописывает такую строку в конец, и модель при скрытии прыгает в низ группы. Плагин запоминает, где каждая строка встретилась впервые: скройте третью из пяти, и она останется третьей.
Чего он сознательно не делает
Приведение в порядок — это решение об отображении, а не изменение конфигурации.
- Конфигурация провайдеров не перезаписывается. Список скрытых моделей, таблица псевдонимов и записи о порядке живут только в собственном пространстве настроек плагина.
- Модель, скрытая или переименованная во время работы сессии, продолжает обслуживать эту сессию: маршрутизация идёт по идентификатору модели, меняется только подпись.
- После удаления плагина список полностью возвращается к исходному виду.
- Новые модели, которые начинает предлагать провайдер, видны по умолчанию. Плагин записывает, что скрыть, что переименовать и что упорядочить, но никогда — что показать.
Охват
Переключатели работают со всеми источниками моделей, а не только с провайдерами, настроенными вручную. Плагин фильтрует собственное перечисление каталога harness — ctx.llm.listModels и ctx.llm.listProviders — а это список, который читают все экраны. Модели, зарегистрированные другими плагинами через ctx.llm.registerAdapter, и провайдеры, объявленные в llm-pi-ai, попадают в тот же список, поэтому охвачены оба случая.
Ключ строки — провайдер + модель, поэтому одно и то же имя, пришедшее двумя маршрутами, остаётся двумя независимыми строками: workbuddy/gemini-3.8-flash и gemini/gemini-3.8-flash — это разные вышестоящие сервисы, у каждого свой переключатель и свой псевдоним.
Установка
dsh plugin --profile <ваш профиль> add dsh-model-tidy
Затем откройте веб-интерфейс DSH заново. В навигации настроек появится «Модели: порядок».
Для проверки доступности нужен запущенный веб-сервис хоста; в среде без него все функции упорядочивания остаются доступны, просто нет кнопки проверки.
Разработка
Шага сборки нет: обе половины поставляются как обычные файлы, которые загружает harness. Серверная половина — это модуль ES; браузерная — фабрика window.__ModuleLoader__.load, формат, который вызывает клиентская система модулей.
npm test
Запускает тринадцать наборов тестов: фильтр каталога, разделение тарифного суффикса, поведение браузерной половины, захват суффикса при переименовании, порядок строк, пользовательский порядок моделей, порядок провайдеров, упорядочивание с отрисовкой, проверку доступности, скорость проверки, отрисовку проверки, само отрисованное дерево и сосуществование с другим плагином, который оборачивает тот же метод.
npm run check:packaging проверяет, что объявленные клиентские зависимости указывают на пакеты, которые действительно поставляются с harness.
Совместимость
Разработано для DSH 0.2.0-rc.2. Требуется DSH >= 0.2.0-rc.1: начиная с этой версии в слое настроек появился сервис configForms, через который пишет раздел плагина.
Лицензия
MIT