Перейти к содержанию

Работа в удалённых окружениях

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

Отдельная настройка для этого обычно не нужна — достаточно установить Koda в нужном месте и проверить доступ к сервису изнутри окружения.

Что выбрать

У каждого окружения — своя страница, а внутри неё есть отдельные разделы для VS Code и JetBrains IntelliJ.

  • WSL


    Проект лежит в Linux-окружении внутри Windows, а Koda работает там же — в WSL.

    Подробнее

  • Dev Containers


    Проект открыт в контейнере, описанном спецификацией containers.dev и файлом devcontainer.json.

    Подробнее

  • Remote SSH


    Проект лежит на удалённой машине, к которой вы подключаетесь по SSH.

    Подробнее

  • GitHub Codespaces


    Проект разворачивается в облачном окружении GitHub, настроенном тем же файлом devcontainer.json.

    Подробнее

Общие принципы

Независимо от окружения и IDE действуют несколько правил:

  • Koda нужно установить на той стороне, где открыт проект, а не только на своём компьютере.
  • Файлы, терминал и поиск работают в окружении проекта.
  • Индекс кодовой базы и настройки хранятся на стороне проекта, в каталоге ~/.koda этого окружения.
  • Изнутри окружения должен быть доступ к api.kodacode.ru — иначе Koda не сможет обращаться к моделям.
  • Настройки, сделанные на вашем компьютере, не переносятся в удалённое окружение автоматически.

Как это устроено в JetBrains

В IDE на платформе JetBrains IntelliJ удалённая работа строится на Remote Development. На удалённой стороне запускается бэкенд IDE: он читает и индексирует проект, собирает, запускает и отлаживает код. На вашем компьютере работает JetBrains Client — тонкий клиент, который даёт полный доступ ко всем функциям IDE, но не хранит исходный код.

JetBrains Gateway — это лёгкий лаунчер: он связывает удалённый сервер с вашим компьютером, скачивает нужные компоненты на бэкенд и открывает проект в JetBrains Client.

Зачем это нужно:

  • работать с проектом на другой операционной системе, чем ваша;
  • использовать более мощное железо, чем ваш компьютер;
  • держать на ноутбуке только клиент, не размещая исходный код локально;
  • работать откуда угодно, оставляя код на серверах компании.

Открыть JetBrains Gateway можно одним из способов:

  • из JetBrains Toolbox App — он управляет версиями IDE и вашими проектами;
  • из окна приветствия IntelliJ IDEA — раздел Remote Development;
  • как отдельное приложение, скачанное с сайта JetBrains.

В IntelliJ IDEA функция Remote Development работает через плагин Remote Development Gateway. В IntelliJ IDEA Ultimate он идёт в комплекте и включён по умолчанию.

Через эти точки входа доступны разные окружения:

  • удалённый хост по SSH — см. страницу «Remote SSH»;
  • Dev Container, запущенный на удалённой машине — см. страницу «Dev Containers»;
  • WSL — поддерживается в JetBrains Gateway нативно, см. страницу «WSL»;
  • облачные среды разработки — GitHub Codespaces, Google Cloud, Gitpod, Amazon CodeCatalyst, Coder и другие, — см. страницу «GitHub Codespaces».

Koda в этом случае устанавливается в бэкенд IDE — туда же, где работает бэкенд и лежит проект.

Плагины в бэкенд

Плагин Koda ставится в бэкенд IDE — из JetBrains Marketplace так же, как любой другой плагин. При установке плагина в настройках видно, где он установлен: на удалённом хосте, в JetBrains Client или в обоих местах. Плагины в бэкенд ставятся для каждого проекта отдельно: при подключении к новому проекту нужный плагин нужно установить заново. Если бэкенд был настроен вручную, плагин можно добавить и из командной строки: bin/remote-dev-server.sh installPlugins <путь к проекту> <ID плагина>.

Бэкенд и контроль

В JetBrains Client на главной панели инструментов видно имя бэкенда и показатели памяти и задержки. По клику на имя бэкенда открывается окно управления, где можно проверить состояние удалённого сервера:

  • Performance — загрузка процессора, потребление памяти и диска, а также задержка (ping) между клиентом и сервером;
  • Ports — список проброшенных портов;
  • Output — последние строки лога с удалённого сервера, что помогает увидеть ошибки;
  • Settings — увеличение размера кучи (heap) и перезапуск бэкенда.

При первом открытии проекта IntelliJ IDEA предложит добавить SDK проекта — его можно настроить в диалоге Project Structure, и он будет скачан на удалённый сервер. Память бэкенда (-Xmx) настраивается в файле idea64.vmoptions на удалённом сервере, после чего бэкенд нужно перезапустить.