Skip to content

dsh-model-tidy

Verified

dsh-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

中文 · English · 日本語 · Русский

Плагин для 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