Привет, Хабр!

Мы живем в удивительное время. Попросить LLM написать для нас код стало так же естественно, как гуглить ошибку. Но у этой магии есть предел. Попросите модель написать quickSort, и она справится блестяще. А теперь попросите ее: «Добавь метрики Prometheus в метод processOrder в нашем проекте».

И тут магия рушится. LLM — это гениальный, но страдающий амнезией стажер. Она знает все языки мира, но не имеет ни малейшего понятия о вашем проекте. Она не знает, какой у вас логгер, как вы обрабатываете ошибки и что у вас уже есть готовый MetricsService. В лучшем случае вы получите общий, неидиоматичный код. В худшем — сломаете половину логики.

Стандартный RAG (Retrieval-Augmented Generation) — это как дать стажеру доступ к одному файлу. Полезно, но картину целиком он все равно не увидит. А что, если мы могли бы дать ему не просто файл, а полный доступ к знаниям тимлида-архитектора? Что, если бы LLM могла видеть не просто строки кода, а всю паутину связей, зависимостей и паттернов вашего проекта?

Сегодня я расскажу о проекте code-graph-rag-mcp — это не просто очередной RAG-пайплайн. Это полноценный MCP-сервер, который строит граф знаний вашего кода и дает LLM «архитектурное зрение», превращая ее из простого кодера в настоящего цифрового ассистента.

Архитектурные решения: Почему именно так?

Чтобы построить систему, которая была бы быстрой, локальной и умной, пришлось принять несколько ключевых архитектурных решений. Давайте разберем каждое из них.

1. Почему не REST API, а MCP (Model Context Protocol)?

Можно было бы поднять обычный Express/Fastify сервер с REST-эндпоинтами. Но это плохой выбор для такой задачи.

  • Проблема: REST — это протокол без состояния (stateless). Каждый запрос — новая история. А нам нужна постоянная, «живая» связь между LLM и нашим кодом. LLM должна иметь возможность задавать уточняющие вопросы в рамках одной сессии, сохраняя контекст.

  • Решение: @modelcontextprotocol/sdk. Это специализированный протокол, созданный Anthropic именно для таких задач. Он работает поверх WebSocket или IPC, обеспечивая постоянное соединение. Это позволяет LLM не просто «дергать» эндпоинты, а вести полноценный диалог с инструментами, кэшировать результаты и строить сложные цепочки вызовов. Это нативный язык общения для Claude.

2. Почему не Neo4j, а SQLite + sqlite-vec?

Граф кода — значит, нужна графовая база данных, верно? Не всегда.

Проблема: Профессиональные графовые СУБД (Neo4j, TigerGraph) — это тяжеловесные серверные решения. Они требуют отдельной установки, настройки и потребляют много ресурсов. Для локального инструмента, который каждый разработчик запускает на своей машине, это избыточно.

  • Решение: better-sqlite3 и расширение sqlite-vec. Это гениальное в своей простоте решение:

    • Zero-Configuration: SQLite — это просто файл. Никаких серверов, портов и паролей. Запустил — и работает.

    • Производительность: better-sqlite3 — одна из самых быстрых реализаций SQLite для Node.js. Для локальных задач ее скорости более чем достаточно.

    • Все в одном: Расширение sqlite-vec добавляет векторный поиск прямо в SQLite! Нам не нужно поднимать отдельную векторную базу (Chroma, Weaviate), что радикально упрощает стек. Граф связей и семантические векторы живут в одном файле.

3. Почему не Regex, а Tree-sitter?

Как разобрать код на десятке языков и не сойти с ума?

  • Проблема: Регулярные выражения — хрупкий и ненадёжный способ парсинга кода. Они ломаются на любой нестандартной конструкции. Использовать отдельные парсеры для каждого языка (Babel для JS, AST для Python) — сложно и громоздко.

  • Решение: web-tree-sitter. Это универсальный парсер, который:

    • Сверхбыстрый: Написан на C и скомпилирован в WebAssembly.

    • Устойчив к ошибкам: Если в коде есть синтаксическая ошибка (а она есть почти всегда в процессе редактирования), Tree-sitter не падает, а строит частичное дерево. Это критически важно для инструмента, работающего в реальном времени.

    • Мультиязычный: Достаточно подключить готовую грамматику для нужного языка, и он работает. Это позволяет проекту легко поддерживать JS, TS, Python и добавлять новые языки в будущем.

4. Сердце системы: Код как граф в SQLite

А теперь самое главное. Где и как живет этот граф? Может, для этого нужна тяжелая графовая СУБД вроде Neo4j? Нет, и это осознанное решение.

  • Проблема: Профессиональные графовые СУБД — это избыточность для локального инструмента. Они требуют отдельной установки, настройки и потребляют много ресурсов.

  • Решение: Гениальная простота SQLite. Мы эмулируем графовую структуру с помощью двух обычных реляционных таблиц. Это классический подход, известный как "список смежности" (Adjacency List).

В файле project.db создаются всего две таблицы:

  1. entities (Сущности) — это УЗЛЫ (NODES) нашего графа.

    • Каждая строка в этой таблице — это отдельная сущность в коде: функция, класс, переменная, интерфейс.

    • Хранятся ее имя, тип, путь к файлу и координаты в коде.

  2. relationships (Отношения) — это РЁБРА (EDGES) нашего графа.

    • Каждая строка — это связь между двумя сущностями (sourceId → targetId).

    • Самое важное здесь — тип связи:

      • calls: функция A вызывает функцию B.

      • extends: класс Cat наследует класс Animal.

      • implements: класс UserService реализует интерфейс IUserService.

      • imports: файл A импортирует сущность из файла B.

Как этот граф строится?

Этот процесс автоматизирован с помощью агентной системы:

  1. CollectorAgent сканирует файлы, с помощью Tree-sitter парсит их в AST и находит все узлы (сущности), записывая их в таблицу entities.

  2. AnalysisAgent снова проходит по AST, но теперь ищет связи между уже найденными узлами. Находит вызов функции — создает ребро calls. Видит extends — создает ребро extends. И так далее, наполняя таблицу relationships.

В результате, без внешних зависимостей и сложных серверов, мы получаем полную, подробную и готовую к запросам карту всего нашего проекта в одном файле.

5. Семантический поиск в code-graph-rag-mcp: Поиск по смыслу, а не по словам

Представьте, что вы ищете в проекте код, отвечающий за обработку платежей. Вы можете использовать обычный поиск (Ctrl+F) по слову "payment". Но что, если разработчик назвал соответствующие функции handleTransaction, processCharge или executeOrder? Обычный поиск их не найдет.

Семантический поиск решает именно эту проблему. Он ищет код не по точному совпадению ключевых слов, а по смысловой близости (семантике).

Как это реализовано в проекте (под капотом)

Процесс состоит из трех основных этапов: векторизация, хранение и поиск.

Этап 1: Векторизация кода (Создание эмбеддингов)

За этот этап отвечает SemanticAgent.

  1. Что происходит: Агент проходит по всем сущностям в коде (функциям, классам, методам).

  2. Что он берет: Он берет не только сам код, но и, что важнее, контекстную информацию:

    • Название функции/класса (authenticateUser).

    • Комментарии и JSDoc/Docstrings (/** ... */).

    • Иногда даже имена переменных.

  3. Преобразование в векторы: Используя библиотеку @xenova/transformers (Transformers.js), агент загружает предварительно обученную языковую модель (например, all-MiniLM-L6-v2). Эта модель преобразует собранный текст в эмбеддинг — числовой вектор (например, массив из 384 чисел), который представляет семантическое значение этого фрагмента.

    • Важно: Весь этот процесс происходит полностью локально на вашей машине. Ни ваш код, ни его метаданные никуда не отправляются.

Этап 2: Хранение векторов в SQLite

Куда сохранять эти числовые векторы, чтобы по ним можно было быстро искать?

  1. Технология: Проект использует гениальное расширение для SQLite под названием sqlite-vec.

  2. Что оно делает: sqlite-vec добавляет в обычную базу данных SQLite возможность хранить векторные эмбеддинги и выполнять по ним сверхбыстрый поиск ближайших соседей (ANN, Approximate Nearest Neighbor).

  3. Преимущество: Это избавляет от необходимости поднимать отдельную векторную базу данных (Pinecone, Chroma, Weaviate). Все данные — и граф кода, и семантические векторы — лежат в одном легковесном файле project.db.

Этап 3: Выполнение поиска

Это происходит, когда вы задаете вопрос LLM.

  1. Ваш запрос: Вы пишете в Claude: "Найди код, который отвечает за аутентификацию пользователя".

  2. Действие LLM: Модель понимает, что это поисковый запрос, и вызывает инструмент semantic_search с вашим текстом в качестве аргумента.

  3. Что делает инструмент:

    • Он берет ваш запрос ("аутентификация пользователя") и с помощью той же модели из @xenova/transformers превращает его в такой же вектор.

    • Затем он выполняет SQL-запрос к sqlite-vec, говоря: "Найди мне топ-5 векторов в базе, которые наиболее близки (по косинусному расстоянию) к вектору моего запроса".

    • sqlite-vec мгновенно находит самые релевантные фрагменты кода. Это могут быть функции с именами login, verifyToken, jwtMiddleware — даже если в них нет слова "аутентификация", их семантические векторы будут близки к вектору вашего запроса.

  4. Результат: Инструмент возвращает LLM список найденных сущностей, и модель формирует для вас осмысленный ответ.

Схема работы

   Ваш запрос               Инструмент `semantic_search`          База данных SQLite
("user auth code")   ───>   1. "user auth code" → [0.1, 0.9, ...] (Вектор запроса)
                              2. ЗАПРОС К SQLITE:
                                 "Найти векторы, близкие к [0.1, 0.9, ...]"
                                                                   ▲
                                                                   │
                                 3. ПОЛУЧИТЬ РЕЗУЛЬТАТЫ:           │ (sqlite-vec)
                                    - login()                      │
                                    - verifyToken()                ▼
                                                                Хранилище векторов
                                                               (для login, verifyToken, ...)

Ключевые преимущества этого подхода

  1. Поиск по намерению: Вы можете описывать то, что ищете, своими словами, а не угадывать точные названия функций.

  2. Устойчивость к синонимам и разным формулировкам: payment, charge, transaction — для семантического поиска это близкие по смыслу понятия.

  3. Естественный язык: Позволяет LLM использовать свою сильную сторону — понимание естественного языка — для поиска по кодовой базе.

  4. Приватность и локальность: Весь процесс, от создания эмбеддингов до поиска, происходит на вашей машине.

В итоге, семантический поиск идеально дополняет графовый анализ. Если граф отвечает на вопрос "Как код устроен?", то семантический поиск отвечает на вопрос "Где в коде находится нужная мне функциональность?". Вместе они дают LLM беспрецедентную глубину понимания вашего проекта.

Итоговая архитектура

5. Почему не монолит, а многоагентная система?

Индексация большого проекта — сложный процесс. Его можно реализовать как один большой скрипт, но это плохая идея.

  • Проблема: Монолитный индексатор сложно отлаживать и масштабировать. Если на этапе анализа зависимостей произойдет сбой, весь процесс остановится.

  • Решение: Декомпозиция на агентов, каждый со своей зоной ответственности:

    • Collector Agent: «Разведчик». Быстро сканирует файлы и строит базовый AST. Его задача — собрать сырые данные.

    • Analysis Agent: «Аналитик». Берет сырые данные и обогащает их, находя связи: кто кого вызывает, кто от кого наследуется.

    • Semantic Agent: «Лингвист». Создает векторные эмбеддинги для семантического поиска.

    • Refactoring Agent: «Техлид». Ищет дубликаты, анализирует сложность и находит «узкие места». Такой подход позволяет распараллелить работу, сделать систему отказоустойчивой и легко добавлять новые виды анализа в будущем.

Итоговая архитектура

         ╔════════════════════╗      ╔════════════════════╗
         ║    Claude Desktop  ║<═════║      MCP Server    ║
         ║ (или другой клиент)║      ║ (на Node.js + SDK) ║
         ╚════════════════════╝      ╚═════════╦══════════╝
                                               ║ (Запросы через 13 инструментов)
                                               ▼
  ╔════════════════════════════════════════════════════════════════════════╗
  ║                        База знаний (Knowledge Base)                    ║
  ║                     ┌────────────────────────────────┐                 ║
  ║                     │  SQLite файл (project.db)      │                 ║
  ║                     │                                │                 ║
  ║                     │  • Граф кода (таблицы)         │                 ║
  ║                     │  • Векторы (sqlite-vec)        │                 ║
  ║                     └────────────────────────────────┘                 ║
  ╚═══════════════════════════════════════╦════════════════════════════════╝
                                          ║ (Построение и обновление)
  ┌──────────────────┐      ┌─────────────┴────────────┐      ┌──────────────────────────┐
  │   Кодовая база   ├─────▶│  Парсинг (Tree-sitter)   ├─────▶│   Агентная система       │
  │ (JS, TS, Python) │      └──────────────────────────┘      │ (Collector, Analyzer...) │
  └──────────────────┘                                        └──────────────────────────┘

13 мощных инструментов: Арсенал вашего AI-ассистента

Сервер предоставляет 13 специализированных инструментов, которые LLM может использовать для анализа вашего проекта:

  • Основные: get_entities, semantic_search, find_similar_code, get_entity_details, search_by_pattern.

  • Анализ связей: get_relationships, analyze_dependencies, get_call_graph, impact_analysis.

  • Рефакторинг: suggest_refactoring, find_duplicates, analyze_complexity, find_hotspots.

Производительность: 5.5x быстрее нативных инструментов

Метрика

Нативный Claude

MCP CodeGraph

Улучшение

Время выполнения

55.84 с

<10 с

5.5x быстрее

Потребление памяти

Зависит от процесса

~65MB

Оптимизировано

Количество функций

Базовые паттерны

13 инструментов

Комплексный анализ

Точность

На основе паттернов

Семантическая

Превосходящая

Технические характеристики:

  • Скорость индексации: 100+ файлов в секунду.

  • Время ответа на запросы: <100 мс.

Практический пример: От вопроса к инсайту за секунды

Запрос в Claude Desktop:
> «Что сломается, если я изменю интерфейс IUserService?».

Что происходит «под капотом»:

  1. LLM видит ключевые слова «изменю» и «интерфейс» и вызывает инструмент impact_analysis с аргументом IUserService.

  2. Сервер мгновенно выполняет запрос к своему графу в SQLite: «Найти все сущности, которые реализуют или напрямую зависят от IUserService».

  3. Сервер возвращает список классов (UserService, AdminController) и файлов, которые будут затронуты.

  4. LLM получает этот структурированный список и генерирует человекочитаемый ответ: «Изменение IUserService затронет класс UserService, который его реализует, и AdminController, который использует его для инъекции зависимостей. Вам потребуется обновить реализацию в этих файлах».

Это не просто поиск по тексту. Это глубокий анализ, основанный на понимании структуры кода.

Установка и интеграция

Начать работу проще простого.

Установка:

npm install -g @er77/code-graph-rag-mcp

Настройка Claude Desktop:

npx @modelcontextprotocol/inspector add code-graph-rag \
  --command "npx" \
  --args "@er77/code-graph-rag-mcp /path/to/your/codebase"

После этого просто выберите code-graph-rag в списке инструментов в Claude и начинайте задавать вопросы о своем проекте.

Заключение

Проект code-graph-rag-mcp — это шаг от «LLM как генератора текста» к «LLM как члена команды». Предоставляя модели глубокий контекст через графы знаний, мы открываем совершенно новые возможности для автоматизации рутинных задач, анализа сложных систем и безопасного рефакторинга.

Выбранный технологический стек — MCP, Tree-sitter и SQLite — не случаен. Он является результатом поиска баланса между производительностью, простотой использования и мощностью. Это локальный, приватный и невероятно быстрый инструмент, который может стать вашим незаменимым помощником в разработке.

Попробуйте сами и дайте своей LLM «суперсилу» — знание вашего кода.

Ссылка на проект

Комментарии (0)


  1. SweetDreamBoss
    17.09.2025 20:38

    Интересно, но всё таки достаточно сложный процесс для обычных обывателей, которые хотят просто ввести свой проект

    Я разработал нечто подобное, но назвал Капсула памяти, суть в том что в конце каждой сессии ты прописываешь триггер, в том же чате, и капсула обновляется учитывая сегодняшним доработки, сохраняя знания, опыт и контекст


    1. AppCrafter
      17.09.2025 20:38

      А можно подробнее?


      1. SweetDreamBoss
        17.09.2025 20:38

        Я написал статью здесь, жду когда пройдет модерацию.

        Если кратко:

        Капсула памяти Sh/AIDS v6.2 — это система сохранения и передачи контекста для ИИ, которая решает ключевую проблему «потери памяти» между сессиями(LLM).

        Ключевые преимущества:

        · Мгновенное восстановление контекста — ИИ сразу работает с вашими задачами, без повторных объяснений

        · Экономия 90% времени — исключает рутину онбординга в каждом новом диалоге

        · Персонализированные ответы — ИИ учитывает ваш стиль мышления, цели и предпочтения

        · Масштабируемость — подходит для личного использования, командной работы и бизнес-процессов

        · Повышение качества решений — за счёт полного контекста ИИ дает более точные и релевантные ответы

        Основная польза: Превращает разрозненные диалоги с ИИ в непрерывный осмысленный процесс,где каждое взаимодействие строится на основе предыдущего опыта. Это особенно ценно для сложных задач, требующих долгосрочной работы: обучение, проектирование, анализ данных и карьерное развитие.


        1. EvgeniyRasyuk Автор
          17.09.2025 20:38

          в Claude Desctop есть
          claude --continue


          1. Archangel_BasaroS
            17.09.2025 20:38

            Не совсем то , всё-равно упрётесь в контекст лимит и компакт . Я держу ВСЕ логи диалогов - фул и компакт , в папках по датам для кпждого Агента , + актуализирую документацию под каждый суб-проэкт . Каждый Агент имеет личное хранилище с данными и Своей памятью . Тогда уже который месяц не имею абсолютно никаких нареканий об забывчивости AI LLM Claude .


            1. EvgeniyRasyuk Автор
              17.09.2025 20:38

              Обязательно пришлите ссылки на свои статьи , любым доступным способом . Прям очень интересно !)


            1. zizop
              17.09.2025 20:38

              И мне :)


        1. solomonikvik
          17.09.2025 20:38

          Интересно. Но еще более интересно, почему такую же фичу не запилил тот же Anthropic, где 500 сотрудников и миллиарды инвестиций - потому что выглядит как киллер-фича


        1. AppCrafter
          17.09.2025 20:38

          Интересно будет ознакомиться


  1. Dharmendra
    17.09.2025 20:38

    идея отличная, но есть немного дегтя сугубого имхо:
    - заваливать LLM еще одной кучей тулов через MCP - путь к запутыванию модели, ей и так не просто если прицепили Jira, Github и еще парочку.
    - про rerank я что-то не нашел в статье ничего
    - использование простеньких моделей для embedding - медленно, печально, слабо и частая зарядка ноута :), а хороших - нужен хоть какой то GPU с VRAM (или mac studio m3).
    - скорость отработки через mcp - имхо, это не нативно юзать фреймворки а-ля LangChain/Graph иже с ними. Но, конечно, статья не про написание своего агента, а про юзание готового с расширением обвески-фичей. Тут наверное идея правильная от безысходности. Спасибо за идею, будем думать.



  1. folkote
    17.09.2025 20:38

    Roocode с codebase indexing делает это


    1. EvgeniyRasyuk Автор
      17.09.2025 20:38

      RAG , но не Graph


  1. vitalist84
    17.09.2025 20:38

    Странно, что такие решения до сих пор приходится делать самим на коленке. Там все грозятся, что скоро программисты будут не нужны, но при этом ИИ-агент не может сам найти, что нужно поправить в кодовой базе из тысяч файлов, приходится дотошно расписывать что и где менять, в итоге проще самому сделать, чем за руку водить такого агента. Но вот когда разберутся с этой проблемой, тогда скорость разработки сильно вырастет.


  1. vglaser
    17.09.2025 20:38

    Идея правильная. Называется это вроде codebase indexing и используется во многих агентах: Cursor, Roocode, CodeGPT, Sourcegrah Cody, MCP Agents, Trae, refact.ai. Cody использует GraphRAG вместо обычного векторного поиска. Список не полный!


  1. gsaw
    17.09.2025 20:38

    В начале статьи приводится пример с просьбой добавить метрику. Как это решение поможет решить запрос с написанием кода? Получается вторым этапом надо было бы найти все релевантные файлы и добавить в контекст модели? Другим MCP? сервером?


  1. Standby78-aaa
    17.09.2025 20:38

    Все очень интересно, но сервер зависает после запуска. Может я что то не доделал, но после выполнеия шагов из README он ни на что не реагируе (только на Ctrl+C)


    1. EvgeniyRasyuk Автор
      17.09.2025 20:38

      увидел ваш вопрос в Issues на гитхаб - возьму в работу

      • спасибо что подсветили ) - и напишите плиз что у вас за окружение windows |linux|mac какие версии node ползуете

        - обязательно поможем


    1. EvgeniyRasyuk Автор
      17.09.2025 20:38

      кста , проверьте доки - возможно там найдете ответы

      и какой агент вы используете ?


  1. ioleynikov
    17.09.2025 20:38

    Для полноценной генерации кода программ необходимо полное понимание нейросетью смысла действий каждой команды, плюс подробные знания языка программирования, библиотек фреймворков, API и много ещё чего. Простым RAG и MCP отделаться не получится. С моей точки зрения LLM могут выступить базами всех этих сложных знаний но саму генерацию кодов доверять трансформеров нельзя. Как минимум нужны системы точного логического вывода типа Prolog и некие средства автоматической трансляции, компиляции, исполнения кода для верификации и коррекции. Наверно удобно строить такую систему на базе LLVM проекта. Представление языка программирования и самой задачи может быть оформлено в виде неких фактов и правил, вывода типа экспертной системы а генерация кода, как поиск последовательности операций логического выводов.


    1. vitalist84
      17.09.2025 20:38

      Сегодня была новость, что ИИ агенты решили все задачи в международной олимпиаде по программированию (12 из 12) и сделали это лучше людей. Так что со знаниями и генераций кода у них хорошо. Проблемы как раз с интеграцией в текущий код, вот автор статьи и пытается искать решение. Ну и плюс пока это еще инструмент, а не полная замена разработчика.


      1. ioleynikov
        17.09.2025 20:38

        Если честно я очень скептически отношусь к способностям точного логического вывода текущего поколения нейросетей. Все эти задачи математических олимпиад заранее известны и наверняка использованы для обучения. Я точно знаю, что есть класс специальных вопроса на логику которые ставят в тупик любую нейросеть и преодолеть это пока нельзя. Я думал над генерацией полноценного кода и всё-таки считаю, что абсолютно необходима интеграция трансформеров с системами логического вывода классического ИИ. Это так же необходимо как две половины нашего мозга: логическая и ассоциативная.


        1. vitalist84
          17.09.2025 20:38

          А зачем нужна точная генерация кода? Почти все языки программирования позволяют решить задачу 3-10 разными способами. Разные люди выбирут разные варианты, потом будут долго спорить на код ревью какой самый верный, при этом все рабочие. Так и с нейросетью, может даже у нее где-то будет не рабочий код, но дальше либо сама через тесты поправит, либо вручную, в любом случае это сильно может ускорить разработку.

          А для полной замены возможно вообще LLM как трансформера не достаточно. Точно нужна будет верификация через компилирование и запуск тестов. Но до этого пока далеко, в ближайшие годы и без полной замены будут существенные изменения.


          1. ioleynikov
            17.09.2025 20:38

            Я имел в виду точное кодирование в логическом смысле. Оптимизация кодов это отдельная тема и она в принципе решается алгоритмическими методами. Я видел некоторые коды, генерируемые LLM . Они просто чудовищны и разумеется не работают. Если у вас есть реальные проекты ИИ кодогенерации, мы можем попробовать сотрудничать. Тема актуальная и запустить какой либо стартап скорее всего будет не сложно. Спасибо и Удачи!


            1. Axelaredz
              17.09.2025 20:38

              Странно) У меня код работает использовал локально и онлайн: Qwen 2.5-3 Coder, Qwen Code, Gemeni CLI. Местами правда по химичил с системной ролью, методами и алгоритмами.


              1. ioleynikov
                17.09.2025 20:38

                Есть разные коды, разных задач. Стандартные алгоритмы на GitHub позволяют обучить нейросети, а шаг влево, вправо или вообще что то новое и GPT пасует.


                1. funca
                  17.09.2025 20:38

                  Copilot хорошо справляется с рутиной промышленного кодинга, где большая часть работы это решение как раз типовых задач - уровня перекладывания джейсонов.

                  Часть проблем с логикой снимается при помощи классических инструментов статического код анализа и тестов. Агенты получают обратную связь и за несколько итераций выдают валидный код (ну либо не выдают, что только периодически случается).


                  1. ioleynikov
                    17.09.2025 20:38

                    Да я то согласен, что прогресс есть и ИИ автокодинг движется в правильном направлении но имел в виду общую проблему нейросетей с рассуждениями. Они пока очень не надежны. Решают только простейшие задачи и не обладают полноценным дедуктивным логическим выводом. Это общая беда всех генеративных трансформеров + галлюцинации. Я категорический поборник интеграции нейрокомпьютинга и классических методов логического вывода ИИ.


                    1. funca
                      17.09.2025 20:38

                      Согласен, галлюцинации и разные глупости это обратная сторона креативности - творческие люди тем же страдают. С математической логикой проблема ещё в том, что их на самом деле не одна, а много - в итоге при одинаковых вводных можно получать абсолютно разные результаты.

                      С математикой я часто использую хак через кодинг: вместо решения задачи напрямую, прошу сеть сгенерировать программу, которая посчитает и выдаст ответ. Вероятно, они могут генерировать код и на Prolog?


                      1. ioleynikov
                        17.09.2025 20:38

                        я экспериментировал с Google Gemini.Модель генерирует только самые простейшие коды на Prolog но может быть очень полезна для представления фактов и не сложных правил из баз знаний LLM. Саму постановку маломальский сложной задачи в виде кода нейросеть не сгенерит.


  1. PKLab
    17.09.2025 20:38

    Попробовал ваше решение, пока начало пути, не юзабельно когда в проекте зоопарк языков. Остаюсь пока на sourcebot, он крутится также локально, есть mcp


    1. EvgeniyRasyuk Автор
      17.09.2025 20:38

      а можно ссылку на ресурс ?


      1. PKLab
        17.09.2025 20:38

        https://www.sourcebot.dev/ - работает локально в докере, из lmstudio и mcp натравил на sourcebot чтобы работать из одного окна.


    1. holgw
      17.09.2025 20:38

      Выглядит интересно, довольно просто локально развертывается с подключением к lm studio. А можете вкратце описать для каких кейсов используете?


      1. PKLab
        17.09.2025 20:38

        быстрые ответы на вопросы в старых и больших монолитах и малоизвестных мне проектах на которых я каждый день не кодирую, но так или иначе нужны в работе


  1. Axelaredz
    17.09.2025 20:38

    Эм... Разве не проще поставить https://lmstudio.ai/,
    скачать любимую модель для кода и Embedding модель например Nomic, которая как раз занимается индексированием файлов проекта.

    На вкладке «Разработка» запустить в режиме сервера, в Settings проставив галочки, стартануть нужные ии модели.

    В любимой IDE поставить расширение наподобие https://www.continue.dev/, добавить нового провайдера ИИ в лице LM-Studio.

    Среда разработки с ИИ, знающим, как устроен проект, готова.


    1. EvgeniyRasyuk Автор
      17.09.2025 20:38

      Спасибо , не знал про такие возможности . Обязательно попробую


  1. apcs660
    17.09.2025 20:38

    Можно больше одного агента подцепить и заставить работать как ансамбль, ACP в помощь, а уже к модели MCP. Мультиагентные системы это то к чему придем рано или поздно.


  1. Format-X22
    17.09.2025 20:38

    Попросить LLM написать для нас код стало так же естественно, как гуглить ошибку.

    Нет.


  1. Mindik
    17.09.2025 20:38

    попытался покрутить, но уперся в

    "method": "find_similar_code",

    "error": "Failed to initialize embedding model: TypeError: this.hashText is not a function"