Frondalysis - VSCode Extension
Расширение для Visual Studio Code, которое предоставляет интеграцию с LLM (Large Language Model) для помощи в разработке. Включает чат-интерфейс, инструменты для работы с файлами, систему правил и WebSocket-соединение с внешним сервером.
📋 Содержание
🛠️ Технологии
- Frontend: Vue 3, TypeScript
- Backend: WebSocket, Docker
- IDE: Visual Studio Code Extension API
🚀 Установка расширения (готовая сборка)
Перед началом убедитесь, что Visual Studio Code установлен на вашем компьютере.
- Скачайте и запустите установочный файл
.bat по ссылке.
- Скрипт автоматически установит файл расширения (
.vsce) в VS Code — после этого расширение готово к использованию.
- (Опционально) Перенесите иконку расширения в правую часть боковой панели, для удобства.
- (Опционально) Для комфортной работы рекомендуется использовать тему "Темная тема (Visual Studio)". Изменить тему можно, нажав на значок ⚙️ в левом нижнем углу → Тема → Цветовая тема.
🚀 Быстрый старт
Установка
# Клонирование репозитория из GitLab
git clone <repository-url>
# Установка зависимостей
npm install
# Сборка проекта (автоматически установит зависимости для webview-chat)
npm run build
Запуск в режиме разработки (F5)
Откройте проект в VS Code:
- Запустите VS Code
- Выберите
File → Open Folder (или Ctrl+K, Ctrl+O)
- Выберите папку с проектом из Git
Запустите расширение:
- Важно: Убедитесь, что файл
src/extension.ts открыт в редакторе (это точка входа расширения)
- Нажмите клавишу
F5 (или Ctrl+F5 для запуска без отладки)
- VS Code откроет новое окно с заголовком
[Extension Development Host]
Примечание: Если F5 не работает, возможно нужно установить Yeoman и generator-code:
# Глобальная установка (рекомендуется)
npm install -g yo generator-code
# Или локальная установка (альтернатива)
npx --package yo --package generator-code -- yo code
Найдите панель расширения:
- В новом окне VS Code найдите иконку расширения в левой боковой панели (Activity Bar)
- Иконка будет называться "Chat" или "LLM Helper"
- Нажмите на неё, чтобы открыть панель чата
Проверка работы:
- В панели чата вы должны увидеть интерфейс для общения с LLM
- Если панель пустая, проверьте консоль разработчика (
Help → Toggle Developer Tools)
Использование
- Активация: Расширение активируется при открытии панели "Chat"
- Интерфейс: Чат-панель в боковой панели VSCode
- Команды: Доступны через контекстное меню файлов и Command Palette
🏗️ Архитектура
Поток данных
Пользователь → Vue App → VSCode Webview → ChatSidebarViewProvider → WebSocket → Backend
Детальное описание потока:
- Пользователь вводит сообщение в чат-интерфейс
- Vue App (
webview-chat/) обрабатывает пользовательский ввод и отправляет сообщение
- VSCode Webview передает сообщение из Vue приложения в расширение VS Code
- ChatSidebarViewProvider (
src/features/chat/) получает сообщение и подготавливает его для отправки
- WebSocket (
src/core/websocket/) устанавливает соединение с внешним сервером
- Backend (внешний сервер) обрабатывает запрос и возвращает ответ
- Обратный поток: Backend → WebSocket → ChatSidebarViewProvider → VSCode Webview → Vue App → Пользователь
Ключевые компоненты:
- Vue App: Фронтенд интерфейс чата
- Webview: Мост между Vue и VS Code API
- ViewProvider: Управляет состоянием чата и сообщениями
- WebSocket: Сетевое соединение с LLM сервером
- Backend: Внешний сервер с LLM (например, OpenAI API)
🛠️ Разработка
Команды сборки
# Полная сборка (Vue + TypeScript)
npm run build
# Только Vue приложение (автоматически устанавливает зависимости)
npm run build:vue
# Только TypeScript
npm run compile
# Режим разработки (Vue + TypeScript watch)
npm run dev
# Только Vue в режиме разработки
npm run dev:vue
# Отслеживание изменений TypeScript
npm run watch
# Проверка кода
npm run lint
Примечание: Команда npm run build автоматически:
- Устанавливает зависимости для
webview-chat (если нужно)
- Собирает Vue приложение
- Компилирует TypeScript код расширения
Режим разработки
Вариант 1 - Простой (рекомендуется):
npm run dev
Эта команда соберет Vue приложение и запустит TypeScript в режиме watch.
Вариант 2 - Раздельный:
- TypeScript:
npm run watch (в одном терминале)
- Vue:
npm run dev:vue (в другом терминале)
- Отладка: F5 в VSCode
Workflow для разработчиков
- Создайте feature branch:
git checkout -b feature/your-feature-name
- Внесите изменения в код
- Выполните проверки:
npm run lint && npm run build
- Создайте Merge Request в GitLab
🐛 Отладка
Типичные проблемы
F5 не запускает расширение
- Убедитесь, что вы находитесь в корневой папке проекта (где находится
package.json)
- Откройте файл
src/extension.ts в редакторе
- Установите Yeoman:
npm install -g yo generator-code
- Перезапустите VS Code
WebSocket не подключается
- Проверьте
.env файл
- Убедитесь, что backend сервер запущен
- Если бекенд через Docker, то убедитесь что Docker активен
Vue приложение не загружается
- Выполните
npm run build
- Проверьте наличие файлов в
media/chat/
Команды не работают
- Проверьте активацию расширения
- Перезапустите VSCode
Логирование
- WebSocket: Все сообщения логируются в консоль VSCode
- LLM Actions: Результаты действий отображаются в уведомлениях
- Ошибки: Показываются в уведомлениях VSCode
📁 Структура проекта
llm-helper/
├─ src/ # Исходный код расширения (TypeScript)
│ ├─ commands/ # Регистрация и реализация VS Code команд
│ ├─ core/ # Базовые абстракции, типы, IPC-контракты
│ │ ├─ api/ # API клиенты и запросы
│ │ ├─ service/ # Базовые сервисы
│ │ ├─ types/ # Общие типы и интерфейсы
│ │ ├─ utils/ # Утилиты
│ │ └─ websocket/ # WebSocket соединение
│ ├─ features/ # Основные функции расширения
│ │ ├─ chat/ # Чат-функциональность
│ │ └─ diff/ # Система сравнения файлов
│ ├─ services/ # Сервисы интеграции
│ ├─ views/ # Создание и управление webview-панелями
│ └─ extension.ts # Точка входа: activate/deactivate
├─ webview-chat/ # Vue.js приложение для webview
│ ├─ src/ # Исходный код Vue приложения
│ │ ├─ components/ # Vue компоненты
│ │ ├─ types/ # TypeScript типы
│ │ └─ main.ts # Точка входа Vue
│ ├─ public/ # Статические ресурсы
│ ├─ index.html # HTML шаблон
│ ├─ vite.config.ts # Конфигурация Vite
│ ├─ tsconfig.*.json # TypeScript конфигурации
│ └─ package.json # Зависимости Vue приложения
├─ out/ # Скомпилированный JavaScript (из src/)
├─ media/ # Статические ресурсы для webview
│ ├─ chat/ # Собранные файлы Vue приложения
│ └─ icon.svg # Иконка расширения
├─ package.json # Основные зависимости и скрипты
├─ tsconfig.json # TypeScript конфигурация
├─ eslint.config.mjs # ESLint конфигурация
└─ README.md # Документация
🔄 Git Workflow
- Главная ветка:
main - стабильная версия
- Ветка разработки:
dev - основная ветка для разработки
- Фиче-ветки:
feature/название-фичи - для новых функций
- Хотфиксы:
hotfix/описание-исправления - для срочных исправлений
Workflow:
- Создайте feature branch от
dev
- Внесите изменения и закоммитьте
- Создайте Merge Request в GitLab
- После ревью и тестов - мерж в
dev
- Периодически мерж
dev в main для релизов
🔗 Полезные ссылки