Корпоративный RAG как MCP-сервис: подключаем кодовую базу к IDE
В компаниях с несколькими продуктами знания о коде и архитектуре почти неизбежно расползаются. Часть живёт в репозиториях, часть — в статьях с архитектурными решениями, часть — в корпоративной базе знаний (в нашем случае — Confluence). На небольшом масштабе это выглядит как порядок. Но по мере роста начинают проявляться системные эффекты.
Появляется дублирование функционала с разными подходами. Сложнее становится погружаться в новый продукт при кросс-командных переходах. Поиск по каждому репозиторию и каждому пространству документации по отдельности — медленный и утомительный. В итоге вопросы уходят к «знающим людям», которые постепенно превращаются в узкое горлышко.
Мы столкнулись с этим в явном виде и сформулировали задачу так: дать разработчикам и системным аналитикам быстрый и актуальный поиск по всей кодовой базе компании с возможностью диалога через универсального агента.
В этой статье я расскажу, как мы построили локальный RAG-сервис, оформили его как MCP-сервер и подключили к IDE. Подход будет полезен командам с большим количеством репозиториев, внутренней документацией и требованиями к безопасности.
Читать: https://habr.com/ru/articles/983424/?utm_campaign=983424
@a_cup_of_java | Другие наши каналы
В компаниях с несколькими продуктами знания о коде и архитектуре почти неизбежно расползаются. Часть живёт в репозиториях, часть — в статьях с архитектурными решениями, часть — в корпоративной базе знаний (в нашем случае — Confluence). На небольшом масштабе это выглядит как порядок. Но по мере роста начинают проявляться системные эффекты.
Появляется дублирование функционала с разными подходами. Сложнее становится погружаться в новый продукт при кросс-командных переходах. Поиск по каждому репозиторию и каждому пространству документации по отдельности — медленный и утомительный. В итоге вопросы уходят к «знающим людям», которые постепенно превращаются в узкое горлышко.
Мы столкнулись с этим в явном виде и сформулировали задачу так: дать разработчикам и системным аналитикам быстрый и актуальный поиск по всей кодовой базе компании с возможностью диалога через универсального агента.
В этой статье я расскажу, как мы построили локальный RAG-сервис, оформили его как MCP-сервер и подключили к IDE. Подход будет полезен командам с большим количеством репозиториев, внутренней документацией и требованиями к безопасности.
Читать: https://habr.com/ru/articles/983424/?utm_campaign=983424
@a_cup_of_java | Другие наши каналы
InfoQ Trends Reports 2025 — что важно разработчикам
InfoQ собрал серию отчетов по архитектуре, культуре, AI/ML, облакам и Java. Главные идеи: эволюция технологий, AI как соавтор в доставке ПО, роль человеческого суждения, рост платформенной инженерии и практические тренды на 1–5 лет.
Подробности: https://www.infoq.com/minibooks/2025-infoq-trends-reports-emag/
#en
@a_cup_of_java | Другие наши каналы
InfoQ собрал серию отчетов по архитектуре, культуре, AI/ML, облакам и Java. Главные идеи: эволюция технологий, AI как соавтор в доставке ПО, роль человеческого суждения, рост платформенной инженерии и практические тренды на 1–5 лет.
Подробности: https://www.infoq.com/minibooks/2025-infoq-trends-reports-emag/
#en
@a_cup_of_java | Другие наши каналы
DeepSeek в Intellij Idea через плагин Continue
Может кому пригодится, на просторах интернета не нашел, как запустить модель deepseek в idea, потому сам вместе с deepseek допиливал конфиг и обучал модель работе через инструменты плагина. Ну и попутно решил проблему с зависаниями, плагин очень любил зависнуть, приходилось ide перезапускать.
Сразу оговорюсь, решение не элегантно, я не убирал лишний код, строки и текст, я просто добился рабочего состояния и более ничего не тестировал и не трогал. Годами работы приучен "работает - не трож". Потому решение as is выкладываю. Можете сами эксперименты проводить и допиливать, мне был просто нужен рабочий инструмент, на тюнинг не осталось желания, накрыла лень и я продолжил заниматься изначальным своим проектом =)
Читать: https://habr.com/ru/articles/983430/?utm_campaign=983430
@a_cup_of_java | Другие наши каналы
Может кому пригодится, на просторах интернета не нашел, как запустить модель deepseek в idea, потому сам вместе с deepseek допиливал конфиг и обучал модель работе через инструменты плагина. Ну и попутно решил проблему с зависаниями, плагин очень любил зависнуть, приходилось ide перезапускать.
Сразу оговорюсь, решение не элегантно, я не убирал лишний код, строки и текст, я просто добился рабочего состояния и более ничего не тестировал и не трогал. Годами работы приучен "работает - не трож". Потому решение as is выкладываю. Можете сами эксперименты проводить и допиливать, мне был просто нужен рабочий инструмент, на тюнинг не осталось желания, накрыла лень и я продолжил заниматься изначальным своим проектом =)
Читать: https://habr.com/ru/articles/983430/?utm_campaign=983430
@a_cup_of_java | Другие наши каналы
Как я поучаствовал в разработке Camunda 8 или пример типичной ошибки в многопоточном коде
Зимой 2024 года мне довелось поучаствовать в разработке проекта на Camunda 8. Сразу оговорюсь: проект в итоге реализовали на другом движке. Тем не менее, команда успела сделать стенд, прогнать тесты и замерить производительность.
В этой статье я расскажу об одном эпизоде, когда мне пришлось исправить библиотеку spring-zeebe из Camunda 8, отвечающую за обвязку Job Worker на Spring.
Одной из моих задач было отладить процесс, используя локальные интеграционные тесты с Docker и библиотекой Testcontainers. Мы создали простой процесс, вызывающий наш Job Worker, подлежавший отладке. Сразу столкнулись с плавающей ошибкой: иногда тест проходил успешно, иногда — нет. Несколько тасков работали корректно, однако первый периодически игнорировался без видимых ошибок. Изначально подозревали проблему в собственном коде, проверяли конфигурацию Job Worker, благодаря чему узнали много нового о Camunda 8.
Читать: https://habr.com/ru/articles/983902/?utm_campaign=983902
@a_cup_of_java | Другие наши каналы
Зимой 2024 года мне довелось поучаствовать в разработке проекта на Camunda 8. Сразу оговорюсь: проект в итоге реализовали на другом движке. Тем не менее, команда успела сделать стенд, прогнать тесты и замерить производительность.
В этой статье я расскажу об одном эпизоде, когда мне пришлось исправить библиотеку spring-zeebe из Camunda 8, отвечающую за обвязку Job Worker на Spring.
Одной из моих задач было отладить процесс, используя локальные интеграционные тесты с Docker и библиотекой Testcontainers. Мы создали простой процесс, вызывающий наш Job Worker, подлежавший отладке. Сразу столкнулись с плавающей ошибкой: иногда тест проходил успешно, иногда — нет. Несколько тасков работали корректно, однако первый периодически игнорировался без видимых ошибок. Изначально подозревали проблему в собственном коде, проверяли конфигурацию Job Worker, благодаря чему узнали много нового о Camunda 8.
Читать: https://habr.com/ru/articles/983902/?utm_campaign=983902
@a_cup_of_java | Другие наши каналы
LLM + 1C: Почему чат-бот для учета — это плохая идея, и как реализовать AI-шлюз через OData
LLM + 1C = ? Почему чат-бот для учета — это плохая идея, и как я сделал из него «умный шлюз».
Изначально идея казалась кристально чистой: пользователь отправляет текстовый или голосовой запрос (например: «Выведи топ должников по Тверской области на текущую дату и суммы задолженности»).
Читать: https://habr.com/ru/articles/984008/?utm_campaign=984008
@a_cup_of_java | Другие наши каналы
LLM + 1C = ? Почему чат-бот для учета — это плохая идея, и как я сделал из него «умный шлюз».
Изначально идея казалась кристально чистой: пользователь отправляет текстовый или голосовой запрос (например: «Выведи топ должников по Тверской области на текущую дату и суммы задолженности»).
Читать: https://habr.com/ru/articles/984008/?utm_campaign=984008
@a_cup_of_java | Другие наши каналы
Как жёсткие правила сборки релизов упростили жизнь инженерам финтеха
Перевели инфраструктуру Java-разработки высоконагруженного финтеха с SLA 99,99% на доверенный репозиторий компонентов. Это отечественные продукт из экосистемы Axiom JDK. Делимся инженерными деталями этого перехода.
Читать: https://habr.com/ru/companies/axiomjdk/articles/983938/?utm_campaign=983938
@a_cup_of_java | Другие наши каналы
Перевели инфраструктуру Java-разработки высоконагруженного финтеха с SLA 99,99% на доверенный репозиторий компонентов. Это отечественные продукт из экосистемы Axiom JDK. Делимся инженерными деталями этого перехода.
Читать: https://habr.com/ru/companies/axiomjdk/articles/983938/?utm_campaign=983938
@a_cup_of_java | Другие наши каналы
Доступ к ChatGPT за 5 минут без VPN
Примерно год назад я написал статью ChatGPT без VPN за 10 минут (и установка нативного приложения). Хотя она актуальна до сих пор, сегодня я хочу вам рассказать про еще один способ.
Суть: мы делаем свой DNS-профиль в NextDNS или Cloudflare и автоматически актуализируем его раз в сутки.
Для этого я написал небольшую программу. Самое приятное: для ее работы вам не придется ничего устанавливать вообще.
Читать: https://habr.com/ru/articles/984224/?utm_campaign=984224
@a_cup_of_java | Другие наши каналы
Примерно год назад я написал статью ChatGPT без VPN за 10 минут (и установка нативного приложения). Хотя она актуальна до сих пор, сегодня я хочу вам рассказать про еще один способ.
Суть: мы делаем свой DNS-профиль в NextDNS или Cloudflare и автоматически актуализируем его раз в сутки.
Для этого я написал небольшую программу. Самое приятное: для ее работы вам не придется ничего устанавливать вообще.
Читать: https://habr.com/ru/articles/984224/?utm_campaign=984224
@a_cup_of_java | Другие наши каналы
Java-дайджест: январь 2026
По данным InfoQ: вышли обновления — maintenance/point-релизы для Spring gRPC, Quarkus, Gatherers4j, Keycloak, Grails и Java Operator SDK; также доступны сборки JDK 26 и 27 с исправлениями и улучшениями.
Подробности: https://www.infoq.com/news/2026/01/java-news-roundup-jan05-2026/
#en
@a_cup_of_java | Другие наши каналы
По данным InfoQ: вышли обновления — maintenance/point-релизы для Spring gRPC, Quarkus, Gatherers4j, Keycloak, Grails и Java Operator SDK; также доступны сборки JDK 26 и 27 с исправлениями и улучшениями.
Подробности: https://www.infoq.com/news/2026/01/java-news-roundup-jan05-2026/
#en
@a_cup_of_java | Другие наши каналы
❤1
Параллельные стримы и CompletableFuture: ошибки и решения
Кратко о ловушках параллелизации в Java (вложенные parallel, flatMap, потеря контекста в ForkJoinPool, OOM с CompletableFuture) и практических решениях: точечная параллелизация, разделение executors, семафоры, thenApply vs thenApplyAsync. Кейс Hugo Marques (JDK24).
Подробности: https://www.infoq.com/presentations/java-grpc-workload/
#en
@a_cup_of_java | Другие наши каналы
Кратко о ловушках параллелизации в Java (вложенные parallel, flatMap, потеря контекста в ForkJoinPool, OOM с CompletableFuture) и практических решениях: точечная параллелизация, разделение executors, семафоры, thenApply vs thenApplyAsync. Кейс Hugo Marques (JDK24).
Подробности: https://www.infoq.com/presentations/java-grpc-workload/
#en
@a_cup_of_java | Другие наши каналы
Как затащить AI в Java/Kotlin проект
Мир Enterprise-разработки на Java/Kotlin и мир нейронных сетей кажутся параллельными вселенными. С одной стороны - статическая типизация, многопоточность, Spring-контейнеры, а с другой - Python-скрипты, тензорные операции и эксперименты в Jupyter Notebook. Между ними - пропасть, через которую многие команды не решаются перешагнуть.
Однако необходимость строить этот мост возникает всё чаще. Заказчик хочет «искусственный интеллект» в новом фиче, аналитики мечтают о реализации чат-бота с преферансом и барышнями, а менеджеры слышали, что конкуренты уже всё автоматизировали. Как же совместить надежность и структуру JVM-проекта с гибкостью и мощью AI? В этой статье постараемся разобраться какие инструменты для этого есть на данный момент и как с ними работать.
Читать: https://habr.com/ru/articles/984544/?utm_campaign=984544
@a_cup_of_java | Другие наши каналы
Мир Enterprise-разработки на Java/Kotlin и мир нейронных сетей кажутся параллельными вселенными. С одной стороны - статическая типизация, многопоточность, Spring-контейнеры, а с другой - Python-скрипты, тензорные операции и эксперименты в Jupyter Notebook. Между ними - пропасть, через которую многие команды не решаются перешагнуть.
Однако необходимость строить этот мост возникает всё чаще. Заказчик хочет «искусственный интеллект» в новом фиче, аналитики мечтают о реализации чат-бота с преферансом и барышнями, а менеджеры слышали, что конкуренты уже всё автоматизировали. Как же совместить надежность и структуру JVM-проекта с гибкостью и мощью AI? В этой статье постараемся разобраться какие инструменты для этого есть на данный момент и как с ними работать.
Читать: https://habr.com/ru/articles/984544/?utm_campaign=984544
@a_cup_of_java | Другие наши каналы
❤1
От Redis к Kafka Streams: как мы проверяем сетевую доступность 200к устройств
В инфраструктуре банка мы ежедневно работаем с ~200 000 физических устройств: это IP-камеры, сетевые видеорегистраторы и другая периферия. Каждое из них должно быть проверено на доступность — не реже чем раз в 10 минут.
Требования к системе:
- не создавать бессмысленную нагрузку на инфраструктуру;
- решение должно быть горизонтально масштабируемым;
- система должна выдерживать падение pod, rebalance, сетевые сбои.
Читать: https://habr.com/ru/companies/sberbank/articles/974926/?utm_campaign=974926
@a_cup_of_java | Другие наши каналы
В инфраструктуре банка мы ежедневно работаем с ~200 000 физических устройств: это IP-камеры, сетевые видеорегистраторы и другая периферия. Каждое из них должно быть проверено на доступность — не реже чем раз в 10 минут.
Требования к системе:
- не создавать бессмысленную нагрузку на инфраструктуру;
- решение должно быть горизонтально масштабируемым;
- система должна выдерживать падение pod, rebalance, сетевые сбои.
Читать: https://habr.com/ru/companies/sberbank/articles/974926/?utm_campaign=974926
@a_cup_of_java | Другие наши каналы
Миграция проекта с Node.js на Java-стек с помощью ИИ
Один из наших проектов нужно было перенести на Kotlin, чтобы включить его в общую экосистему клиента и упростить поддержку. Мы должны были курировать процесс и следить за итоговой реализацией, в которой заказчик решил использовать ИИ.
В этой статье рассказываем о реальных возможностях нейронки для миграции бэкенда и про то, с чем лучше к ней не обращаться — чтобы не тратить ни время, ни нервы.
Читать: https://habr.com/ru/companies/dalee_group/articles/984702/?utm_campaign=984702
@a_cup_of_java | Другие наши каналы
Один из наших проектов нужно было перенести на Kotlin, чтобы включить его в общую экосистему клиента и упростить поддержку. Мы должны были курировать процесс и следить за итоговой реализацией, в которой заказчик решил использовать ИИ.
В этой статье рассказываем о реальных возможностях нейронки для миграции бэкенда и про то, с чем лучше к ней не обращаться — чтобы не тратить ни время, ни нервы.
Читать: https://habr.com/ru/companies/dalee_group/articles/984702/?utm_campaign=984702
@a_cup_of_java | Другие наши каналы
😐1
Kafka для начинающих: работа с Kafka транзакциями на практике — когда они нужны, а когда когда только вредят?
Как работать с Kafka транзакциями из Spring Boot? Когда они нужны, а когда бесполезны или даже вредны?
Простым языком и с примерами кода о Kafka транзакциях.
Читать: https://habr.com/ru/articles/981188/?utm_campaign=981188
@a_cup_of_java | Другие наши каналы
Как работать с Kafka транзакциями из Spring Boot? Когда они нужны, а когда бесполезны или даже вредны?
Простым языком и с примерами кода о Kafka транзакциях.
Читать: https://habr.com/ru/articles/981188/?utm_campaign=981188
@a_cup_of_java | Другие наши каналы
И снова про алгоритмы и структуры данных…
За годы разработки приходит понимание, что происходит в тех или иных сервисах, когда они тормозят, лагают, выдают «неожидаемое» поведение. В данной статье хочу рассмотреть проблему неправильного использования алгоритмов и архитектурных решений с бытовой, общечеловеческой стороны.
Читать: https://habr.com/ru/articles/984792/?utm_campaign=984792
@a_cup_of_java | Другие наши каналы
За годы разработки приходит понимание, что происходит в тех или иных сервисах, когда они тормозят, лагают, выдают «неожидаемое» поведение. В данной статье хочу рассмотреть проблему неправильного использования алгоритмов и архитектурных решений с бытовой, общечеловеческой стороны.
Читать: https://habr.com/ru/articles/984792/?utm_campaign=984792
@a_cup_of_java | Другие наши каналы
Реализация гексагональной архитектуры на Java
В данной статье рассматривается архитектура проекта, позволяющая модульным образом интегрировать инфраструктурные фреймворки, такие как Spring, Quarkus и Micronaut, без необходимости модификации ядра предметной области (domain) или внешних API.
Читать: https://habr.com/ru/articles/985156/?utm_campaign=985156
@a_cup_of_java | Другие наши каналы
В данной статье рассматривается архитектура проекта, позволяющая модульным образом интегрировать инфраструктурные фреймворки, такие как Spring, Quarkus и Micronaut, без необходимости модификации ядра предметной области (domain) или внешних API.
Читать: https://habr.com/ru/articles/985156/?utm_campaign=985156
@a_cup_of_java | Другие наши каналы
Project Panama: как Java научилась говорить на C! (Часть 1)
Как безопасно и эффективно вызывать C-функции из Java? Благодаря Project Panama — новому API из OpenJDK — это стало возможно без использования JNI.
В новом переводе от команды Spring АйО познакомимся с основами FFM API, посмотрим на запуск Hello World на C, роль jextract, и на то, как управлять памятью вне кучи JVM.
Читать: https://habr.com/ru/companies/spring_aio/articles/985144/?utm_campaign=985144
@a_cup_of_java | Другие наши каналы
Как безопасно и эффективно вызывать C-функции из Java? Благодаря Project Panama — новому API из OpenJDK — это стало возможно без использования JNI.
В новом переводе от команды Spring АйО познакомимся с основами FFM API, посмотрим на запуск Hello World на C, роль jextract, и на то, как управлять памятью вне кучи JVM.
Читать: https://habr.com/ru/companies/spring_aio/articles/985144/?utm_campaign=985144
@a_cup_of_java | Другие наши каналы
❤1👌1