Редактировать файл подписки напрямую — классическая ошибка новичка: правка работает ровно до следующего обновления подписки, которое её стирает. Ответ Clash Verge — Merge и Script: ваши изменения лежат отдельно и автоматически накладываются поверх того, что присылает провайдер.

Конфиг подписки проходит через Merge и Script и превращается в итоговый
Каждая загрузка: подписка → Merge → Script → то, что реально исполняет ядро

Конвейер

При каждой загрузке конфига: текст подписки → применяется Merge (декларативно) → выполняется Script (JavaScript) → итоговый конфиг. Обновление меняет только первое звено; ваши слои сохраняются и накладываются заново.

Где редактировать: на странице «Профили» правым кликом — глобальный расширяющий конфиг (действует на все подписки) либо Merge/Script конкретной карточки (действует только на неё).

Merge: девяносто процентов задач

Merge-файл — это YAML с префиксами, описывающими способ слияния: prepend- (вставить в начало), append- (добавить в конец), поле без префикса (заменить целиком).

# мои правила первыми — высший приоритет
prepend-rules:
  - DOMAIN-SUFFIX,corp-vpn.example,DIRECT
  - PROCESS-NAME,Telegram.exe,PROXY

# заменить секцию DNS целиком
dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - https://1.1.1.1/dns-query

# добавить собственную группу
append-proxy-groups:
  - name: "Стриминг"
    type: select
    proxies: [HK-01, SG-02]

Prepend или append — не мелочь: правила, которые должны победить правила подписки (например, принудительный DIRECT для домена), идут в prepend; страховочные дополнения — в append. Сам синтаксис правил: инструкция по правилам.

Script: для динамики

Всё, что Merge не выразит — условные правки, массовая фильтрация, генерация групп, — делает Script: JavaScript-функция, получающая объединённый конфиг и возвращающая итоговый.

function main(config) {
  // выбросить «информационные» узлы (остаток трафика, дата истечения)
  config.proxies = config.proxies.filter(
    p => !/истек|остаток|трафик/i.test(p.name)
  );
  // включить UDP всем узлам vmess
  config.proxies.forEach(p => {
    if (p.type === "vmess") p.udp = true;
  });
  return config;
}

Исключение в Script срывает загрузку конфига — ядро продолжает работать на старом. После правок загляните на страницу «Логи», прежде чем считать изменение применённым.

Изменения не применяются?

  1. Точно ли правили выбранный профиль (или глобальный расширяющий конфиг);
  2. Страница «Логи»: нет ли ошибок YAML — один лишний пробел отступа рушит блок;
  3. Правый клик по профилю → «Реактивировать» — принудительная перезагрузка;
  4. Страница «Подключения» покажет, какое правило реально ловит трафик, — так проверяется порядок prepend.

Если три секции конфига пока туманны — сначала прочтите разбор структуры конфига: после него Merge выглядит очевидным.