Cloud developer tool · 2025

Языковой сервер
для SourceCraft

Прототип Go LSP для мгновенной навигации по большим кодовым базам и любым версиям проекта в облачной IDE.

Архитектура облачного языкового сервера
РольGolang Developer
СтекGo · LSP · go-git
Масштаб~3000 строк Go
ПроверкаKubernetes · Compose

Задача

Классические языковые серверы ориентированы на локальные файлы и живое состояние. Облачной IDE нужен быстрый ответ для конкретного Git-коммита без долгого холодного старта.

  • Отделить тяжёлый анализ кода от обработки LSP-запросов
  • Поддержать definition и references для разных версий проекта
  • Сделать индекс пригодным для повторного использования

Решение

Семантическая модель

go/packages загружает проект, go/parser строит AST, а go/types связывает определения и использования.

Поисковый индекс

Из модели извлекаются компактные структуры для быстрого поиска позиций символов.

Легковесный LSP

Сервер отвечает на запросы IDE по заранее подготовленным данным.

История Git

go-git обходит коммиты и формирует индекс для каждой версии кода.

Результат

Реализованы ядро анализатора, LSP-сервер, обработчики навигации и индексация истории. Корректность и производительность проверены на крупных open-source проектах.