Набор LSP-инструментов для Roo-Code — Custom Tools для навигации по коду с использованием Language Server Protocol через VSCode API.
Проект предоставляет инструменты, которые позволяют код-агентам использовать семантический анализ кода через LSP вместо текстового поиска. Это повышает точность навигации по кодовой базе и устраняет проблему "галлюцинаций" LLM при работе с координатами в файлах.
Основное преимущество — инструменты *_by_name, которые позволяют находить определения, объявления и типы по имени символа, а не по координатам строки и символа.
Версия: 0.1
⚠️ Внимание: Проект находится в исследовательской фазе. Мажорная версия "0" означает, что ведётся активная разработка и эксперименты. На данный момент проект доказывает техническую возможность интеграции код-агента с LSP и не готов к полноценному использованию в продакшене.
| Раздел | Описание |
|---|---|
| 📋 Обзор проекта | Описание инструментов, их параметры и возможности |
| 🚀 Установка и запуск | Требования, установка зависимостей, сборка |
| 📚 Использование | Примеры использования инструментов |
| 🧪 Тестовый фреймворк | Документация тестового фреймворка |
| Инструмент | Описание |
|---|---|
go_to_definition |
Навигация к определению по координатам |
go_to_definition_by_name |
Навигация к определению по имени |
go_to_declaration_by_name |
Навигация к объявлению (интерфейс/абстрактный класс) |
go_to_type_definition_by_name |
Навигация к определению типа |
tommorow |
Тестовый инструмент |
📖 Подробная документация инструментов: docs/overview.md
| Проблема | Описание |
|---|---|
🟡 Проблемы тестирования go-to-declaration-by-name |
Custom tool go-to-declaration-by-name имеет проблемы тестирования в текущем окружении |
- Совершенствование system prompt и описаний инструментов (tool prompts), чтобы код-агент когда это уместно использовал custom tools вместо стандартных
search_filesиcodebase_search - Отладка и обкатка написанных инструментов на реальных задачах
- Изоляция: использование отдельного экземпляра VS Code вместо установленного в системе
- Поддержка C++: настройка
clangdи написание тестов для C++ файлов - Рефакторинг: подготовка окружения для тестирования LSP-команд рефакторинга
- (Опционально) Поддержка других языков программирования
Разработка дополнительных custom tools:
-
Дополнительные инструменты навигации по коду
find_references_by_name— поиск всех ссылок на символ по имениget_document_symbols— дерево символов документаget_call_hierarchy— иерархия вызововget_type_hierarchy— иерархия типов
-
Инструменты для предоставления советов по исправлению кода
get_diagnostics— получение диагностических сообщенийget_code_actions— получение доступных code actions
-
Инструменты для выполнения рефакторинга средствами LSP
rename_symbol— переименование символаorganize_imports— организация импортовextract_function— извлечение в функциюextract_variable— извлечение в переменную
- Реализовать логирование вызовов инструментов для сбора статистики:
- Время каждого вызова инструмента
- Однозначность определения файла для перехода (нашлось ли определение, сколько вариантов)
- Параметры вызова (symbol_name, symbol_kind, file_path)
- Результат выполнения (успех/неудача, количество найденных определений)
- Создать систему сбора метрик для тестирования гипотез эффективности работы различных подходов
- Подготовка аналитики для оптимизации промптов и алгоритмов поиска
| Метрика | Значение |
|---|---|
| Активных инструментов | 5 |
| Планируемых инструментов | 10+ |
| Тест-кейсов | 45+ |
| Поддерживаемых языков | TypeScript (расширяемо) |
MIT
- Roo-Code — AI-ассистент для разработки
- LSP Specification — спецификация Language Server Protocol
- VSCode Extension API — документация VSCode Extension API