Перейти к содержимому

Прокси группа Smart

Тип прокси группы Smart использует адаптивный выбор узлов на основе весов. Вместо простого round-robin или ручной сортировки она непрерывно отслеживает реальную производительность каждого узла — задержку, процент успешных подключений, объём трафика — и автоматически направляет соединения к наилучшему доступному узлу.


# Опционально: глобальные настройки LightGBM (на верхнем уровне конфига)
lgbm-auto-update: true
lgbm-update-interval: 72
lgbm-url: "https://github.com/vernesong/mihomo/releases/download/LightGBM-Model/Model.bin"
proxy-groups:
- name: Smart Group
type: smart
proxies:
- Proxy A
- Proxy B
- Proxy C
policy-priority: "Premium:0.9;SG:1.3"
uselightgbm: false
collectdata: false
sample-rate: 1
prefer-asn: true

ПараметрТипПо умолчаниюОписание
typestringДолжно быть smart
policy-prioritystring""Корректировка приоритетов узлов по regex-шаблонам
uselightgbmboolfalseВключить предсказание весов через ML-модель LightGBM
collectdataboolfalseСобирать обучающие данные в CSV для кастомной модели
sample-ratefloat1Частота сбора данных, диапазон 01 (1 = 100%)
prefer-asnboolfalseПриоритизировать поиск по ASN при выборе узла
smart-collector-sizeint100Максимальный размер файла сбора данных в МБ

Глобальные параметры LightGBM (верхний уровень)

Заголовок раздела «Глобальные параметры LightGBM (верхний уровень)»
ПараметрТипПо умолчаниюОписание
lgbm-auto-updateboolfalseАвтоматически обновлять модель LightGBM
lgbm-update-intervalint72Интервал обновления модели в часах
lgbm-urlstringURL для загрузки файла Model.bin

Корректирует вес узлов, чьи имена соответствуют regex-шаблону. Значения меньше 1 снижают приоритет, больше 1 — повышают.

policy-priority: "Premium:0.9;SG:1.3"

В этом примере узлы, соответствующие Premium, получают множитель 0.9 (ниже приоритет), а узлы SG — множитель 1.3 (выше приоритет). Несколько правил разделяются символом ;.


Группа непрерывно оценивает каждый узел по пяти факторам:

  • Процент успешных подключений — соотношение успехов и неудач; недавние ошибки имеют больший вес.
  • Производительность подключений — время установки соединения и RTT.
  • Статистика использования — объём загрузки/выгрузки и продолжительность сессий.
  • Затухание по времени — веса снижаются для узлов, которые давно не использовались.
  • Тип соединения — отдельные счётчики для UDP и TCP.

Все метрики нормализуются в базовый вес, затем корректируются правилами policy-priority и ASN-специфичными таблицами. Обновление весов происходит через взвешенное усреднение. Если качество узла деградирует более чем на 30%, его кеш-запись сбрасывается.

Выбор происходит в следующем порядке приоритетов:

  1. История по доменам — если домен назначения уже встречался, предпочитается узел с наилучшей историей для этого домена.
  2. История по ASN — если истории по домену нет, используется прошлая производительность для автономной системы (AS) назначения.
  3. Предвычисленный кеш — горячие домены заранее оцениваются в памяти (LRU) и на диске для быстрого доступа.
  4. Round-robin запасной — используется при недостатке исторических данных; случайное исследование предотвращает локальные оптимумы.

Исторические данные хранятся 14 дней. Устаревшие записи удаляются автоматически.

При превышении порога отказов вес узла штрафуется. Восстановление происходит постепенно — веса частично возвращаются через 5, 10, 15 и 30 минут, что предотвращает постоянную блокировку узла из-за временного сбоя.


При uselightgbm: true группа использует предобученную модель LightGBM для предсказания весов узлов вместо правилового алгоритма.

Расположение файла модели:

  • ~/.config/mihomo/Model.bin

Включите collectdata: true, чтобы записывать метрики подключений в ~/smart_weight_data.csv.

Используйте sample-rate для снижения нагрузки — например, sample-rate: 0.1 записывает 10% подключений.

Собранный CSV можно использовать для обучения кастомной модели с помощью LightGBM 3.3.5.