Если ваши руки давно привыкли к Ctrl+Shift+G, Ctrl+T, Ctrl+Shift+T и сопротивляются переходу в другой редактор — вы, вероятно, в Eclipse. И вы точно знаете, что ваша IDE понимает код на уровне, который не снился ни одному AI-редактору. Но AI-агент об этом не в курсе, и как следствие, вынужден жечь десятки тысяч токенов на свои grep-ы.
Любая современная IDE даёт разработчику алгоритмически нетривиальный функционал: навигацию по иерархии типов, точный поиск ссылок с учётом перегрузок, инкрементальную компиляцию, рефакторинг с обновлением всех зависимостей, доступ к исходникам библиотек прямо из JAR-файлов. Вы нажимаете Ctrl+Shift+G — и за доли секунды получаете 8 точных call sites метода, а не 200 мусорных grep-совпадений.
А теперь посмотрите, что делает AI-агент, решая ту же задачу. Он грепает. Глобает по файлам. Получает 200 хитов, из которых нужны 8, и начинает вручную разбирать каждый, тратя ваш контекст и ваше время. Хочет проверить компиляцию — запускает mvn compile и грепает его логи. Хочет найти реализации интерфейса — ищет текст implements Repository, не подозревая о цепочках наследования. На эту примитивную возню невозможно смотреть — особенно когда IDE рядом уже давно всё проиндексировала.
И это не просто раздражает — это дорого. Каждый grep-запрос сжигает кэширующие токены, каждый ложный результат забивает контекстное окно мусором. На практике, если не выносить эту грязную работу в отдельные субагенты (Explore, CodeInvestigate), то основной агент не успевает сделать ничего полезного за одно контекстное окно — весь бюджет уходит на разведку, которую IDE выполнила бы мгновенно.
Когда я начал работать с Claude Code, первым порывом было поискать готовый плагин, который бы связал агента с Eclipse. Готового тогда не нашлось. И я подумал: а почему бы не написать самому?
Есть принципиальная разница между инструментом, который вы используете как чёрный ящик — не можете заглянуть внутрь, не можете расширить, ждёте обновлений от авторов — и платформой с открытым кодом и документированным API, которую можно разобрать, достроить и адаптировать под себя. Eclipse — это второе. JDT SearchEngine, рефакторинг, инкрементальный компилятор — всё доступно из Java-кода плагина. Нужно лишь выставить это наружу.
Эта статья — не реклама конкретного инструмента. Это приглашение попробовать подход: взять свою IDE и прокачать её под свои задачи, здесь и сейчас, не дожидаясь, пока кто-то сделает это за вас.
Идея простая: Eclipse-плагин поднимает HTTP-сервер на loopback при старте IDE. Node.js CLI (jdt) автоматически находит запущенный Eclipse через файлы в ~/.jdtbridge/instances/ и транслирует команды из терминала в вызовы JDT API. Агент пишет jdt refs OrderRepository save — и получает 8 точных call sites вместо 200 мусорных grep-совпадений.
Терминал / AI-агент Eclipse IDE +--------------------+ +--------------------+ | | HTTP | | | jdt CLI | ------> | JDT Bridge | | (Node.js) | JSON | плагин | | | <------ | (JDT API) | +--------------------+ +--------------------+
Так появился JDT Bridge. Установка — три команды:
git clone https://github.com/kaluchi/jdtbridge.git cd jdtbridge/cli && npm install && npm link # глобальная команда jdt jdt setup # сборка + установка в Eclipse
jdt setup делает всё сам: собирает плагин через Maven, останавливает Eclipse если запущен, устанавливает через p2, перезапускает с тем же workspace.
Агент ищет вызовы метода. Раньше: grep, 200 хитов, 5 минут разбора. Теперь:
jdt refs com.example.dao.OrderRepository save --arity 1
8 строк. Файл, номер строки, содержимое строки. Точно те вызовы, которые нужны.
Агент хочет понять класс. Открывать 600-строчный файл и читать целиком? Необязательно:
jdt ti com.example.web.OrderController
Структурный обзор: поля, методы с сигнатурами, суперклассы, номера строк. Агент сразу видит API класса и знает, куда смотреть дальше.
Агент проверяет компиляцию. Вместо mvn compile и грепа его логов:
jdt err --project my-app-server
Доли секунды. Eclipse уже всё скомпилировал — агент видит ту же картину, что и вы.
Агент читает исходник Spring-класса — тот, что лежит внутри JAR и невидим для файловой системы:
jdt src org.springframework.transaction.support.TransactionTemplate execute
Агент получает ту же «go to definition» суперсилу, которая есть у разработчика в IDE.
А вот как это выглядит в терминале — публичные update-перегрузки Spring JdbcTemplate, отфильтрованные из полного списка методов двумя grep-ами:
Исходник Spring-класса из JAR, pipe-фильтрация, номера строк — в одной команде.
Когда я начинал, MCP казался логичным выбором. Но быстро выяснилось, что CLI удобнее — и вот почему. MCP-вызов возвращает результат целиком в контекстное окно агента. CLI-вывод проходит через shell, и это всё меняет:
# В классе 65 методов, но нужны только операции с папками. # MCP: все 65 в контекст. CLI: grep оставляет 27 нужных. jdt ti com.example.dao.FileRepository | grep -i folder # «Сколько мест вызова?» — число, а не 200 строк. jdt refs com.example.core.Event dispatch | wc -l # 47 ошибок, но чиним по одной. head -5 — и контекст не засорён. jdt err --project my-server | head -5
Контекстное окно агента — конечный и дорогой ресурс. grep и head фильтруют до того, как данные попадут к агенту. Бесплатно. MCP-сообщество тоже это признаёт — token bloat от нефильтрованных результатов стал известной проблемой.
И ещё: один и тот же jdt работает и для агента, и для разработчика в терминале. Когда агент делает что-то странное, вы просто запускаете ту же команду руками и видите тот же результат. С MCP для этого пришлось бы поднимать отдельный клиент.
Инструмент разрабатывался и проверялся на одной конфигурации: Windows 11, Java 21, Maven 3.9, Eclipse 2026-03. В тот момент в цели не входило делать его переносимым — я не тестировал на Linux, не проверял на других версиях JDK, и вся механика установки через p2 director вполне может оказаться хрупкой для вашего окружения. Если вы на IntelliJ — этот инструмент не подойдёт, хотя сам подход (выставить семантику IDE через CLI) переносим.
Но в этом и суть: у вас есть весь исходный код, тесты и AI-агент. Если что-то не заработает — просто попросите агента разобраться. Он справится.
Для тех, кому интересны детали:
|
Команда |
Алиас |
Что делает |
|---|---|---|
|
|
|
Все ссылки на тип/метод/поле |
|
|
|
Обзор класса (поля, методы, сигнатуры) |
|
|
|
Исходный код (проект + библиотеки) |
|
|
|
Ошибки компиляции |
|
|
|
Реализации метода интерфейса |
|
|
|
Все подтипы и реализации |
|
|
|
Полная иерархия типов |
|
|
Запуск JUnit-тестов |
|
|
|
Поиск типов ( |
|
|
|
|
Форматирование (настройки Eclipse) |
|
|
|
Организация импортов |
|
|
Переименование через весь workspace |
Если ваш проект живёт в Eclipse и вы работаете с AI-агентами (или думаете начать) — попробуйте JDT Bridge. Установка — 3 команды, удаление — jdt setup --remove.
Буду рад вопросам и фидбеку — в комментариях или в issues. Если у вас есть свой опыт или наработки по этой теме — например, похожее решение для IntelliJ — поделитесь, интересно.
Источник


