Как я сделал 100% русификатор Google AntiGravity 2.0 с живым автообновлением через MCP и CDP

—

от автора

Сейчас я активно осваиваю и глубоко изучаю Google AntiGravity 2.0 — одну из популярных агентных IDE нового поколения с поддержкой субагентов, фоновых автоматизаций, встроенного браузера и MCP-серверов.

При всей мощи AntiGravity из коробки в ней есть две ощутимые проблемы для русскоязычных разработчиков:

  1. Весь интерфейс, настройки, карточки плагинов, статусы инструментов и системные меню доступны только на английском языке.

  2. При каждом официальном обновлении самой AntiGravity архив resources/app.asar полностью перезаписывается, стирая любые ручные правки, а окно приложения на конфигурациях с несколькими мониторами постоянно теряет свою позицию и режим развёрнутости на весь экран.

Чтобы решить это раз и навсегда, я разработал открытый проект antigravity-features-v2 — автономную систему полной русской локализации и улучшения интерфейса Google AntiGravity 2.0, которую сама же AntiGravity умеет устанавливать себе по одному промпту в чате и дальше обновлять на лету.

💡 Принимаю пожелания на расширение функционала! Я развиваю экосистему вокруг AntiGravity 2.0. Если вам не хватает какой-то функции, интеграции, кастомного MCP-сервера, навыка (Skill) или вы хотите доработать что-то под свои задачи — прямо в верхнюю панель IDE (в карточку иконки i) я встроил кнопку «💬 Предложить идею / Заказать доработку». Пишите, что нравится, чего не хватает и что бы вы хотели улучшить!


⚡ Установка за 10 секунд (2 способа на выбор)

Способ 1. Попросить саму AntiGravity установить русификатор себе (Self-Install Prompt)

Просто откройте чат в вашей AntiGravity, вставьте туда этот текст и нажмите Enter:

text

Установи полный русификатор и MCP-сервер автообновления AntiGravity 2.0 из репозитория https://github.com/WiseYaroslav28/antigravity-features-v2 — выполни в PowerShell команду:

irm https://raw.githubusercontent.com/WiseYaroslav28/antigravity-features-v2/main/install.ps1 | iex

Агент сам скачает проект, пропишет его в ваш локальный mcp_config.json, соберёт патч app.asar и сразу же переведёт открытое окно IDE на русский язык!

Способ 2. Одной строкой в PowerShell (даже без установленного Git)

Откройте PowerShell и выполните:

powershellirm https://raw.githubusercontent.com/WiseYaroslav28/antigravity-features-v2/main/install.ps1 | iex

irm https://raw.githubusercontent.com/WiseYaroslav28/antigravity-features-v2/main/install.ps1 | iex


🔄 Как работают обновления: почему переводы применяются «на лету», и что происходит при обновлении самой AntiGravity?

В проекте разделены два типа обновлений, и важно понимать, как работает каждый из них:

1. Обновления перевода и словаря — применяются «на лету» (без перезапуска IDE)

Раньше для применения правок требовалось перезапускать AntiGravity, потому что код локализации читался только на старте окна из preload.js. Я изменил архитектуру: теперь патчер открывает локальный отладочный порт Chromium (--remote-debugging-port=9222), а скрипт локализации (localization_injected.js) написан идемпотентно — при повторном выполнении в том же окне он аккуратно останавливает старый MutationObserver, обновляет словари в памяти и мгновенно переводит все узлы DOM. Поэтому, когда я выкладываю новую версию перевода на GitHub:

  • Фоновый MCP-сервер или кнопка в меню i скачивает свежий localization_injected.js,

  • Выполняет его прямо в открытом окне через Chrome DevTools Protocol (CDP),

  • И все новые переводы применяются мгновенно прямо на глазах — без перезагрузки окна и без прерывания работы агентов!

2. Официальные обновления самой Google AntiGravity — автоматическая пересборка патча через MCP

Что происходит, когда Google выпускает новую версию самой AntiGravity и она обновляется самостоятельно?

  1. Официальный установщик заменяет файл resources/app.asar на чистый оригинальный архив (на английском языке).

  2. Но наш MCP-сервер никуда не пропадает! Его регистрация хранится в вашем профиле пользователя (%USERPROFILE%\.gemini\config\mcp_config.json), который официальные обновления AntiGravity не затрагивают.

  3. Как только вы запускаете обновившуюся AntiGravity, она штатно поднимает MCP-сервер antigravity-features-v2 (node index.js).

  4. На первой же секунде старта MCP-сервер сверяет контрольную сумму SHA-256 файла app.asar, видит, что сама AntiGravity обновилась, и автоматически в фоне запускает auto_patcher.cjs, собирая новый app.asar.patched специально под свежую версию IDE, после чего взводит фоновый страж exit_patcher.cjs.

  5. Важный нюанс про системный трей Windows: пока процесс Antigravity.exe запущен, операционная система Windows держит файл app.asar заблокированным для перезаписи. А при обычном нажатии на крестик (✕) в углу окна AntiGravity не выключается полностью, а сворачивается в системный трей (около часов). Поэтому после официального обновления самой IDE достаточно сделать одно из двух:

    • Либо нажать кнопку «⚡ Перезапустить AntiGravity» в карточке иконки i (скрипт сам корректно выгрузит все процессы из трея, подменит app.asar и запустит IDE заново),

    • Либо полностью выйти из AntiGravity через правый клик по иконке в системном трее → «Выход» (Quit). Как только процесс выгрузится из трея, фоновый exit_patcher.cjs в ту же секунду автоматически заменит app.asar на пропатченный, и следующий запуск снова будет на 100% русским!


🖥 Умное сохранение геометрии окна и поддержка 1 / 2+ мониторов (Patch V3)

Ещё одна болезнь штатной AntiGravity на Windows (особенно когда у основного монитора масштабирование 150%, а у второго — 100%) — окно либо сбрасывается при закрытии, либо открывается «почти во весь экран, но не развёрнутым».

В Window Geometry Patch V3 (dist/utils.js + dist/main.js + dist/ipcHandlers.js) я полностью переписал логику управления окном:

  • Никаких чужих пресетов и чужих проектов: в репозитории на GitHub нет никаких преднастроенных координат или чужих баз данных — папка backups/ полностью исключена из Git. У каждого нового пользователя файл состояния antigravity-window-state.json создаётся с нуля исключительно под его монитор(ы), а история проектов берётся только из его собственной локальной базы.

  • Точная привязка к монитору по центру окна: при закрытии окна (как на крестик ✕, так и через «Выход» в трее) сохраняются точные координаты, монитор и флаг isMaximized. Если вы перенесли окно со второго монитора на первый (или наоборот) и закрыли его развёрнутым на весь экран — при следующем запуске оно откроется на том же самом мониторе и строго развёрнутым на весь экран.

  • Автоматическая защита для 1 монитора и отключённых экранов: если у пользователя всего один монитор или второй монитор был физически отключён, патч через screen.getDisplayNearestPoint автоматически определяет ближайший доступный активный монитор, центрирует окно в пределах его рабочей области (workArea) и восстанавливает статус развёрнутости на весь экран.


🧠 Архитектура изнутри

  1. Двунаправленный DOM-транслятор (localization_injected.js):

    • Переключатель EN | RU в верхней панели переключает язык интерфейса за 0 мс без перезагрузки страницы (все исходные строки сохраняются в data-original-*).

    • Жёсткие фильтры shouldIgnore и isFileName гарантируют, что редактор кода Monaco, терминал xterm, пути к файлам и блоки кода остаются неприкосновенными.

    • Умная склейка разрозненных текстовых узлов React ("Show " + 533 + " more..." → "Показать ещё 533...", 100 + "% left" → "100% осталось", 498 + " of " + 500 → "498 из 500").

  2. Безопасный патчер с проверкой синтаксиса движком V8 (auto_patcher.cjs):

    • Перед упаковкой app.asar каждый изменённый файл проходит компиляцию new vm.Script() в памяти V8 — это на 100% исключает риск поломки IDE при обновлении.

  3. Индикатор статуса и обратной связи (i рядом с EN | RU):

    • В обычном состоянии иконка i спокойного серого цвета и не отвлекает от работы.

    • Когда на GitHub выходит новая версия перевода — точка над i загорается жёлто-оранжевым цветом.

    • Внутри карточки i доступна кнопка «💬 Предложить идею / Заказать доработку», которая открывает форму на GitHub без какого-либо сбора персональных данных или телеметрии внутри самой IDE.


💬 Обратная связь и доработки для пожелании и доработок

Я продолжаю активно исследовать внутреннее устройство Google AntiGravity 2.0 и регулярно выпускаю обновления. Если вы:

  • нашли непереведённую фразу или баг в интерфейсе,

  • хотите предложить идею для нового функционала,

  • или хотите заказать индивидуальную доработку, плагин, автоматизацию или MCP-интеграцию под свои задачи —

нажмите кнопку «💬 Предложить идею / Заказать доработку» в окне информации i внутри AntiGravity или создайте обращение напрямую в репозитории: 👉 Создать заявку / Предложить идею на GitHub

🔗 Ссылки

ссылка на оригинал статьи https://habr.com/ru/articles/1104106/