Дата публикации
ai_products

Как запустить OpenClaw на русском без форка и боли с обновлениями

Что появилось / что изменилось

OpenClaw — популярный AI-агент с 180 000+ звёзд на GitHub. Он управляется через мессенджеры и автоматизирует рутину: от работы с файлами до расписаний задач. Но у проекта есть жёсткий минус для русскоязычных пользователей — личный кабинет полностью на английском. Официального перевода на русский нет и в roadmap он не запланирован.

Автор решил обойтись без форка и ручного мёржа при каждом апдейте и собрал отдельный «русский слой» вокруг существующей установки OpenClaw. Что изменилось:

  • Веб-интерфейс OpenClaw отображается на русском без правок в исходном коде.
  • Обновления OpenClaw продолжают прилетать как раньше — прослойка остаётся совместимой.
  • Весь backend, API, WebSocket и статика работают в исходной конфигурации.
  • Перевод хранится в одном JS-файле (~200 строк словаря), который можно обновлять отдельно.
  • Установка занимает одну команду в терминале с install-скриптом и патчем nginx.

Функциональность OpenClaw не меняется: меняется только язык интерфейса в браузере.

Как это работает

Архитектура строится вокруг reverse proxy между nginx и самим OpenClaw:

  1. Браузер пользователя подключается к nginx по HTTPS (порт 443).
  2. Раньше nginx проксировал запросы прямо на OpenClaw на порту 18789.
  3. Теперь nginx отправляет трафик на прослойку openclaw-ru-layer на порту 18790.
  4. Прослойка — это небольшой Node.js-сервер на базе http-proxy.
  5. Он передаёт все запросы к OpenClaw «как есть», включая WebSocket и API.

Ключевой трюк — обработка HTML-ответов:

  • Для URL /ru-overlay.js прослойка отдаёт локальный JS-файл с переводом.
  • Для всех остальных запросов она записывает ответ в буфер, проверяет заголовок Content-Type.
  • Если ответ — text/html, сервер подменяет финальный HTML и перед закрывающим </body> вставляет:
<script src="/ru-overlay.js"></script>
  • Заголовок Content-Length удаляется, потому что после инжекта длина страницы меняется. Если этого не сделать, браузер обрежет HTML по старому размеру.
  • WebSocket-соединения (управляют real-time чатом OpenClaw) проксируются напрямую через proxy.ws без модификации.

На стороне клиента работает ru-overlay.js:

  • В нём лежит словарь вида "Settings": "Настройки", "New conversation": "Новый диалог", "Send a message": "Отправить сообщение" и ещё около 200 строк.
  • Скрипт проходит по дереву DOM с помощью TreeWalker и заменяет текстовые узлы, если их точное содержание есть в словаре.
  • После первичного прохода запускается MutationObserver, который следит за изменениями DOM.
  • Каждый новый текст на странице, появившийся в SPA-интерфейсе OpenClaw (диалоги, модалки, переключение разделов), тоже проходит через словарь и переводится.

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

Установка сводится к трём шагам:

git clone https://github.com/perfectinn/openclaw-ru-layer
cd openclaw-ru-layer
sudo bash scripts/install.sh --patch-nginx

Скрипт ставит npm-зависимости, создаёт systemd-сервис openclaw-ru-layer.service и перенастраивает nginx с порта 18789 на 18790.

Что это значит для вас

Если вы уже используете OpenClaw, но англоязычный интерфейс тормозит работу команды, русская прослойка решает эту точку боли почти без обслуживания.

Кому это особенно полезно:

  • Продуктовым и техлидам, которые хотят отдать OpenClaw нетехническим коллегам, не упираясь в языковой барьер.
  • Командам, где важна локализация интерфейса, но нет ресурса поддерживать собственный форк OpenClaw.
  • Админам, которые отвечают за обновления: OpenClaw можно обновлять по стандартной инструкции, а русский словарь поддерживать отдельно.

Где решение уместно:

  • Внутренние панели и админки, куда сотрудники заходят регулярно.
  • Команды, которые строят процессы вокруг чатов, расписаний и автоматизации в OpenClaw.

Где осторожнее:

  • Если в OpenClaw часто меняют тексты интерфейса, придётся обновлять словарь, иначе часть строк снова станет английской.
  • Текст меняется только по точному совпадению. Сложные фразы, параметры, динамические вставки могут потребовать тонкой настройки словаря.
  • Это не отдельный русскоязычный клиент, а надстройка над существующей установкой, так что по-прежнему нужен сервер с рабочим OpenClaw и nginx.

Если вы разрабатываете свои продукты поверх OpenClaw, структура с reverse proxy и JS-оверлеем даёт понятный паттерн: можно экспериментировать с локализацией и кастомизацией интерфейса без вмешательства в основной репозиторий.

Место на рынке

Подход с русской прослойкой вокруг OpenClaw фактически создаёт ещё один слой поверх уже существующих решений для локализации:

  • В отличие от форка OpenClaw, здесь не нужно мёржить переводы при каждом апдейте. Придётся обновлять только словарь из ~200 строк и сам оверлей при изменениях интерфейса.
  • В отличие от сторонних плагинов браузера, логика живёт на сервере, под контролем админов инфраструктуры, и не зависит от настроек конкретного пользователя.

Чётких цифр по производительности автор не приводит, но архитектура минимальна: модифицируются только HTML-ответы, а JSON, файлы и WebSocket проходят через proxy без изменений. Это снижает оверхед и сохраняет поведение OpenClaw близко к исходному.

Для команд, которые уже сделали ставку на OpenClaw и не хотят ждать официальной локализации, такой подход даёт рабочий способ перейти на русский интерфейс без пересборки продукта и без ухода в отдельную ветку разработки.


Читайте также