Прокси группа Smart
Тип прокси группы Smart использует адаптивный выбор узлов на основе весов. Вместо простого round-robin или ручной сортировки она непрерывно отслеживает реальную производительность каждого узла — задержку, процент успешных подключений, объём трафика — и автоматически направляет соединения к наилучшему доступному узлу.
Конфигурация
Заголовок раздела «Конфигурация»# Опционально: глобальные настройки LightGBM (на верхнем уровне конфига)lgbm-auto-update: truelgbm-update-interval: 72lgbm-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Параметры
Заголовок раздела «Параметры»Параметры группы
Заголовок раздела «Параметры группы»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
type | string | — | Должно быть smart |
policy-priority | string | "" | Корректировка приоритетов узлов по regex-шаблонам |
uselightgbm | bool | false | Включить предсказание весов через ML-модель LightGBM |
collectdata | bool | false | Собирать обучающие данные в CSV для кастомной модели |
sample-rate | float | 1 | Частота сбора данных, диапазон 0–1 (1 = 100%) |
prefer-asn | bool | false | Приоритизировать поиск по ASN при выборе узла |
smart-collector-size | int | 100 | Максимальный размер файла сбора данных в МБ |
Глобальные параметры LightGBM (верхний уровень)
Заголовок раздела «Глобальные параметры LightGBM (верхний уровень)»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
lgbm-auto-update | bool | false | Автоматически обновлять модель LightGBM |
lgbm-update-interval | int | 72 | Интервал обновления модели в часах |
lgbm-url | string | — | URL для загрузки файла Model.bin |
policy-priority
Заголовок раздела «policy-priority»Корректирует вес узлов, чьи имена соответствуют regex-шаблону. Значения меньше 1 снижают приоритет, больше 1 — повышают.
policy-priority: "Premium:0.9;SG:1.3"В этом примере узлы, соответствующие Premium, получают множитель 0.9 (ниже приоритет), а узлы SG — множитель 1.3 (выше приоритет). Несколько правил разделяются символом ;.
Принцип работы
Заголовок раздела «Принцип работы»Расчёт весов
Заголовок раздела «Расчёт весов»Группа непрерывно оценивает каждый узел по пяти факторам:
- Процент успешных подключений — соотношение успехов и неудач; недавние ошибки имеют больший вес.
- Производительность подключений — время установки соединения и RTT.
- Статистика использования — объём загрузки/выгрузки и продолжительность сессий.
- Затухание по времени — веса снижаются для узлов, которые давно не использовались.
- Тип соединения — отдельные счётчики для UDP и TCP.
Все метрики нормализуются в базовый вес, затем корректируются правилами policy-priority и ASN-специфичными таблицами. Обновление весов происходит через взвешенное усреднение. Если качество узла деградирует более чем на 30%, его кеш-запись сбрасывается.
Выбор узла
Заголовок раздела «Выбор узла»Выбор происходит в следующем порядке приоритетов:
- История по доменам — если домен назначения уже встречался, предпочитается узел с наилучшей историей для этого домена.
- История по ASN — если истории по домену нет, используется прошлая производительность для автономной системы (AS) назначения.
- Предвычисленный кеш — горячие домены заранее оцениваются в памяти (LRU) и на диске для быстрого доступа.
- Round-robin запасной — используется при недостатке исторических данных; случайное исследование предотвращает локальные оптимумы.
Исторические данные хранятся 14 дней. Устаревшие записи удаляются автоматически.
Обработка сбоев
Заголовок раздела «Обработка сбоев»При превышении порога отказов вес узла штрафуется. Восстановление происходит постепенно — веса частично возвращаются через 5, 10, 15 и 30 минут, что предотвращает постоянную блокировку узла из-за временного сбоя.
Машинное обучение (LightGBM)
Заголовок раздела «Машинное обучение (LightGBM)»При 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.