Каждое обновление подписки перезаписывает профиль целиком, стирая добавленные вручную настройки DNS или TUN. Mixin решает ровно это: ваш фрагмент хранится в клиенте и вливается в каждый профиль перед применением - обновления ему не страшны.

Включение

  1. Settings → Profile Mixin, режим YAML, кнопка Edit.
  2. После сохранения включите переключатель Mixin на странице General (шаг, который все пропускают).
  3. Переактивируйте текущий профиль (клик по карточке в Profiles), чтобы слияние применилось.

Пример в режиме YAML

mixin:
  # единый DNS с fake-ip
  dns:
    enable: true
    enhanced-mode: fake-ip
    nameserver:
      - 1.1.1.1
      - 8.8.8.8
    fallback:
      - https://1.1.1.1/dns-query
  # настройки для режима TUN
  tun:
    enable: true
    stack: gvisor
    dns-hijack:
      - 198.18.0.2:53
  # закрепляем смешанный порт
  mixed-port: 7890

Верхнеуровневые ключи Mixin замещают одноимённые секции профиля (объекты сливаются по ключам, Mixin главнее). Чего не упомянули - остаётся как в подписке.

Режим JavaScript (продвинутое)

YAML замещает секции целиком; JavaScript редактирует конфиг программно - например, вставляет правила в начало списка:

module.exports.parse = ({ content }) => {
  content.rules = [
    "DOMAIN-SUFFIX,example.com,DIRECT",
    ...content.rules,
  ];
  return content;
};

Нужно обработать одну конкретную подписку, а не все? Возьмите Parsers - синтаксис похож, область действия уже.

Отладка: синтаксическая ошибка в Mixin валит загрузку профилей с YAML-ошибкой в журнале. Заглядывайте в Logs после каждой правки Mixin.