rlm-tools-bsl: MCP-сервер, помогающий AI-агенту дешево и эффективно анализировать большие конфигурации 1С

04.06.26

Разработка - Инструментарий разработчика

MCP-сервер для токен-эффективного анализа кодовых баз 1С (BSL) — 57 хелперов, SQLite-индекс, поддержка CF/EDT/CFE.

RLM (Repository-Level Machine-coding)

Это прямое взаимодействие с файлами репозитория кодовой базы на предмет получения из них точечной и сжатой информации, а также определения целевых мест для планируемых правок/доработок.

 

Как агент-анализатор работает с rlm-tools-bsl

 

У AI-кодера (Cursor, Claude, Codex, Kilo и т.д.) уже есть "глаза и руки": он "из коробки" умеет читать файлы, искать по проекту, писать нужные правки. Проблема начинается там, где проект - не аккуратный web-сервис на двадцать небольших файлов, а выгрузка большой ИБ 1С: ERP, ДО или УТ с тысячами BSL-модулей, XML-описаниями форм, ролями, подписками, расширениями и одинаковыми процедурами ПередЗаписью в сотнях объектов метаданных.

Обычный путь агента по Вашей задаче (без MCP-инструментов) в такой базе выглядит неэффективно: открыть файл, получить две тысячи строк в контекст, найти похожее имя, открыть еще десять файлов, утонуть в совпадениях, порассуждать, запутаться, проверить, снова порассуждать и т.д. Модель вроде бы работает, но быстро начинает платить токенами за воздух. Она тащит в диалог не выводы, а сырые данные.

MCP-сервер rlm-tools-bsl снимает именно эту инженерную боль. Это продукт для анализа больших кодовых BSL-баз 1С. Не "волшебный RAG", не замена архитектору и не очередной grep с красивой оберткой. Это компактная и мощная мастерская рядом с проектом: агент приходит с вопросом, запускает в песочнице короткий Python-код (по подсказкам, которые ему на старте дает сам MCP-сервер), а наружу получает только отфильтрованный результат.

 

Простая механика

Есть главный принцип: для анализа нужна только стандартная кодовая база (выгрузка исходников формата CF или EDT и она остается на сервере (или на любом хосте, куда выгружена), в контекст агента возвращается только итоговый print().

Агент начинает с rlm_start: указывает путь к исходникам или имя зарегистрированного проекта. Сервер определяет формат выгрузки 1С - CF, EDT (да, поддержаны оба формата исходников), видит соседние CFE-расширения, поднимает сессионные кэши, подключает rlm-индекс (если он построен).

Дальше агент вызывает rlm_execute, пишет и выполняет Python-код в read-only песочнице. В этой песочнице есть 57 готовых хелперов (функциональных узкоспециализированных инструментов поиска) практически на все случаи жизни: поиск модулей, извлечение процедур, чтение конкретной процедуры, граф вызовов, парсинг XML метаданных, формы, роли, подписки, движения регистров, ссылки на объекты метаданных, использования объектов в коде, полнотекстовый git_search по всем файлам через git grep и т.д.

Типичный пример:

modules = find_module("АвансовыйОтчет")

print(modules)

Потом не надо читать весь модуль:

procedures = extract_procedures(modules[0]["path"])

print([p["name"] for p in procedures])

И только когда стало ясно, что нужна ОбработкаПроведения, агент берет ровно ее:

print(read_procedure(modules[0]["path"], "ОбработкаПроведения"))

Разница в результате очень простая. Без rlm-tools-bsl агент мог бы положить в контекст 2000 строк целевого файла. С rlm он сначала увидит 15 сигнатур, затем тело одной нужной процедуры. Экономия контекста и токенов в отдельных случаях может достигать нескольких сот процентов. По моим ощущениям как разработчика - это похоже на работу с нормальным отладчиком: не дамп всего стека вызовов и потом попытки понять что к чему, а сразу точка останова в нужном месте и просмотр в табло ключевых переменных.

 

Что делает агент-анализатор

Агент, вооруженный rlm-tools-bsl, действует не как читатель папки, а как инженер-механик с набором специализированных приборов.

Сначала он сужает область: ищет объект через find_module, бизнес-имя через search, произвольную строку или GUID через git_search. Если вопрос про форму, берет parse_form. Если про права - find_roles. Если про проведение - смотрит движения, подписки, обработчики и граф вызовов. Если надо понять, где используется объект метаданных, вызывает find_references_to_object и при необходимости find_code_usages.

Важная деталь: MCP-сервер не заставляет модель заранее знать все рецепты применения хелперов. В режиме slim rlm_start (инструмент старта песочницы анализа) отдает компактную маршрутную карту по хелперам, а подробные подсказки по ним агент сам при необходимости дозагружает через rlm_help. Это экономит стартовый контекст: full-стратегия содержит около 20 тысяч символов справки, slim - в 3,5-4 раза меньше.

Получается процесс, при котором не "модель догадалась или не догадалась", а нормальный инструментальный цикл:

1. Найти кандидатов.

2. Прочитать только нужные фрагменты.

3. Проверить связи по индексам или точечным поиском.

4. Сверить вывод с метаданными.

5. Вернуть человеку короткое объяснение с путями, строками и ограничениями.

Это особенно полезно на конфигурациях, где одно имя процедуры ничего не гарантирует. Например, в релизе 1.16.0 встроенный граф вызовов получил точную привязку ребер к методу через callee_key: одноименные ОбработкаПроведения и ПередЗаписью из разных модулей разных объектов метаданных больше не склеиваются в один ложный маршрут, искомый метод можно найти точно. Очевидно, что это уже не косметические отличия, а разница между "нашел цепочку" и "нарисовал красивую неправду".

 

Что получает агент-кодер

Для разработчика 1С ценность не только в том, что агент-помощник быстрее отвечает на вопросы по коду. Главное - он увереннее готовится к предстоящим правкам кода по Вашему ТЗ.

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

Это меняет Ваш стиль работы с LLM. Агент-кодер меньше "шаманит по названиям" и уверенно отвечает на нормальные инженерные вопросы:

- где реально используется объект;

- какие расширения перехватывают типовой метод (да, rlm-tools-bsl поддерживает и перехваты любых расширений, главное чтобы исходники расширений лежали рядом с исходниками основной конфигурации - src/cf, src/cfe);

- кто вызывает процедуру и насколько точен граф;

- что лежит в форме, а что в модуле формы;

- какие места надо проверить после правки;

- где поиск неполный и нужен индекс или уточнение;

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

При этом rlm не требует от агента тащить всю кодовую базу в LLM. Большая часть тяжелой работы остается на файловой системе: SQLite-индекс, git grep, XML-парсинг, кэши сессии. Модель получает уже выжатую фактуру.

 

RLM - не замена технологии RAG, а дополнение

 

RAG (Retrieval-Augmented Generation) - подход, при котором перед генерацией ответа LLM сначала ищет релевантные фрагменты из заранее проиндексированной базы знаний (эмбеддинги, граф зависимостей, полнотекстовый поиск). Требует предварительной векторизации/индексации, инфраструктуры и обслуживания.

RLM (Repository-Level Machine-coding) — подход, при котором AI-агент исследует репозиторий напрямую: выполняет поисковые запросы, читает файлы, анализирует структуру — всё в реальном времени, без предварительной векторной индексации.

RLM не конкурирует с RAG. Это разные инструменты для разных ситуаций.

RAG - огромный дилерский центр: склад на тысячи квадратных метров, штат мастеров в одинаковой форме, найдут или привезут любую запчасть. Но пока запишут, пока примут, пока проведут регламентную диагностику - день (или больше) ушёл. И счёт в конце за работы впечатляет.

RLM - специализированный автосервис у дома: заехал без записи, мастер сразу под капот, разобрался именно с вашей проблемой и отпустил. Без редких запчастей с другого континента - но для повседневных задач быстрее, дешевле и точнее.

Фактически, rlm-tools-bsl - это специализированная автомастерская с целым набором разнообразного инструментария для анализа исходников 1С. Агент заходит в нее, ваша кодовая база уже "стоит на подъемнике", вокруг аккуратные стеллажи со всеми нужными инструментами и инструкция к каждому из них. И первым делом агент видит список всех инструментов и краткое описание каждого - для чего он и в каких случаях применять. После чего, отталкиваясь от той задачи, которую Вы ему дали, начинает "раскручивать и ковырять" ваши 1С-ные исходники (писать и выполнять внутри rlm-песочницы Python-скрипты).

 

Индексы и командная работа

 

У rlm-tools-bsl есть не только CLI rlm-bsl-index для индексов, но и удобный MCP-слой управления ими: тул rlm_projects регистрирует проекты по именам, тул rlm_index строит, обновляет, показывает статус и удаляет индексы. Это сделано не для красоты интерфейса, а для командной эксплуатации.

Тимлид может поднять один rlm-mcp-сервер (например, на том хосте, где хранятся или доступны все каталоги всех исходников всех проектов 1С), зарегистрировать на нем несколько конфигураций, построить индексы по каждой из них и выдать команде короткие имена проектов вместо абсолютных путей к самим исходникам. Чтение и анализ доступны без пароля, а мутирующие операции защищены: удаление, переименование и изменение проекта требуют пароль; build/update/drop rlm-индексов через MCP тоже требуют подтверждение паролем зарегистрированного проекта. То есть разработчик может попросить агента "проанализируй ERP", но не сможет случайно снести чужой индекс или перепривязать проект без знания явного секрета. Таким образом, rlm-сервер один, а пользователей - много.

На сильно измененной 1С:ERP 2.5 полная сборка rlm-индекса обычно занимает около 12-15 минут. Реальная цифра зависит от дисковой подсистемы, CPU и формата выгрузки. Зато дальше индекс живет как рабочий инструмент: если исходники 1С лежат под Git - инкрементальное обновление использует git-детект изменений и обычно занимает секунды или десятки секунд, а не повторяет полный обход всей конфигурации.

 

Натурное сравнение с RAG и графовыми MCP

 

E2E-сравнение MCP-серверов для 1С

 

Фактическое e2e-сравнение, проведенное в апреле 2026: 6 MCP-серверов на конфигурации 1С:Документооборот КОРП 3.0, 10 бизнес-задач на каждый сервер, всего 60 агентских запусков. Методология, промпты и результаты опубликованы тут: perform_comparison_1c_rag_mcp.

Выводы: rlm-tools-bsl не заменяет технологию RAG. В описанном тесте три сервера набрали максимум качества. Но rlm дал этот максимум с минимальным средним расходом токенов и без отдельной инфраструктуры уровня "Docker + векторная БД + LM Studio". Еще интереснее, что версия платного векторного mcp code-metadata (от 08.04) поднялась по оценке с 7/10 до 10/10 в том числе после добавления парсера кода и механизмов полнотекстового поиска, заимствованных из rlm-tools-bsl.

При этом апрельские тесты уже немного устарели. После них проект заметно прокачался: v1.10 добавила агрегирующие хелперы get_object_full_structure и find_call_hierarchy; v1.11 принесла slim-стратегию и rlm_help, чтобы агент не таскал всю справку сразу при старте; v1.12 улучшила работу с соседними CFE-расширениями и многострочными сигнатурами; v1.13 усилила инкрементальное обновление индексов через Git; v1.14 добавила поиск использований объектов метаданных прямо в коде; v1.15 включила полнотекстовый git_search по всем файлам; v1.16 сделала граф вызовов точнее за счет привязки ребер к конкретному методу. То есть, опубликованное сравнение показывает картину вида не "лучший сервер на сегодня", а нижнюю планку относительно текущей версии.

Надо отдавать себе отчет, что граница применимости данного MCP-сервера - относительно детерминированный поиск/анализ (но именно таких ситуаций 90% при разработке). Если вопрос нечеткий - что-то вроде "как вообще работает бюджетирование в ERP", то семантический поиск RAG может быть полезнее. Но за предварительную векторизацию и построение RAG - Вы заплатите большим количеством времени и необходимостью поднимать либо локальную эмбеддинговую модель, либо использовать облачную. У rlm другой подход: "вот исходники, индексы построены за 10 минут - поехали анализировать". Но если нужен полный граф зависимостей всех объектов - графовый подход естественнее. Для детерминированных задач по BSL: найти объект, прочитать процедуру, построить вызывающих, проверить ссылки, разобрать форму, найти строку в XML - RLM хорошо попадает в ежедневные рабочие задачи 1С-разработчика. В целом, если в разработке используется мощная LLM, то часть семантического анализа она уже берет на себя и вопрос "бюджетирование в ERP" сама разбивает на детерминированные подзапросы в процессе анализа, так что и в этой ситуации от rlm-подхода будет много пользы.

 

Как начать использовать

 

Сам проект: https://github.com/Dach-Coin/rlm-tools-bsl 

FAQ: FAQ  

Быстрый старт: QUICKSTART

Полный подробный мануал по установке: INSTALL

Windows-служба, установка одной командой из PyPI (нужны права администратора):

irm https://raw.githubusercontent.com/Dach-Coin/rlm-tools-bsl/master/simple-install-from-pip.ps1 -OutFile simple-install-from-pip.ps1

PowerShell -ExecutionPolicy Bypass -File .\simple-install-from-pip.ps1

 

Linux + systemd-служба:

curl -LO https://raw.githubusercontent.com/Dach-Coin/rlm-tools-bsl/master/simple-install-from-pip.sh

chmod +x simple-install-from-pip.sh && ./simple-install-from-pip.sh

 

Docker-контейнер:

cp docker-compose.example.yml docker-compose.yml

# отредактируйте REPOS_ROOT и другие переменные

docker compose up -d

Для Windows Docker Desktop однозначно не лучший вариант: файловый I/O через WSL2/Virtiofs очень медленный (проверено на практике), особенно для индексации и live-поиска. На Windows практичнее ставить пакет на хост (можно собрать его даже без прав администратора) или запускать как службу. Docker оптимален на Linux.

Если развернете сервер в Docker - получите еще оно преимущество. Каждый новый релиз я публикую пакет в PyPI (пакетных хаб Python). Внутри docker-контейнера есть логика проверки версии установленного пакета и версии пакета в PyPI. Если в PyPI версия выше - идет автоматическое обновление. Но повторюсь - не используйте в Docker Desktop, либо будьте готовы что rlm-индексы будут строиться 60 минут вместо 10 (и вырастут таймауты для поиска). Если это делается один раз и дальше будет только их инкрементное обновление (по коммитам git внутри каталога исходников) - можно смириться.

После запуска сервер подключается к AI-клиенту как HTTP MCP:

{
  "mcpServers": {
    "rlm-tools-bsl": {
      "type": "http",
      "url": "http://127.0.0.1:9000/mcp"
    }
  }
}

 

Далее можно говорить агенту в чате обычным языком: "проанализируй мой проект Тест ERP через rlm-tools-bsl, найди все ссылки на Документ.ЗаказКлиента, построй граф вызывающих для метода РассчитатьСкидкиНаценки". MCP в этом не заменяет Ваше мышление разработчика (чем качественнее постановка - тем лучше результат). Он просто убирает из работы дорогой и лишний шум: бесконечный и неэффективный анализ файлов инструментами агента "из коробки".

Работа поискового ядра в том числе оптимизирована и проверена на слабых моделях, а именно:

- Cursor и Kilo в режиме Auto;

- MiniMax m2.7

- Grok Fast

Даже слабые модели, вооруженные rlm-tools-bsl - показывают неплохое качество анализа и итоговых отчетов.

Проект под лицензией MIT, если переиспользуете идеи/код - не забывайте указывать авторство. Дальнейшее развитие также планируется, буду рад Вашим PR и ишью.

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    70073    365    170    

316

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    261070    1351    421    

1170

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    38719    107    46    

122

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    57137    114    32    

126

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

6000 руб.

25.02.2026    4037    13    1    

18

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    25621    93    46    

102

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

В крупных внедрениях 1С типовая почти всегда дополнена расширениями, а конфигуратор показывает их раздельно. «Поиск ссылок на объект» в ERP — минуты ожидания, и даже после него неясно: типовое поведение, дополнение из расширения или переопределённый обработчик. Analyzer 1C — веб-инструмент, который парсит выгрузку (основную плюс все расширения) и собирает единый граф знаний в ArangoDB. Любой межсущностный запрос — за доли секунды. Внутри: — Сквозные пометки «Доб.» / «Заимств.» / переопределения во всём UI — Импакт-анализ через подписки, регламентные задания и переопределения — Анализ запросов BSL: кто читает и пишет объект — модули, формы, СКД — Роли: матрица «роль × объект × право», RLS, программные РольДоступна, PRIV — Конструктор профилей, граф функций, обработчики обновления, XDTO, функциональные опции — Мгновенный поиск по конфигурации Разворачивается за минуту через Docker, без интернета. Любая 1С:Предприятие 8.3+.

12200 руб.

17.04.2026    6646    28    34    

43

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    53409    185    63    

217
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Korolev 66 04.06.26 12:43 Сейчас в теме
Благодарю за полезный инструмент!
starik-2005; mszsuz; Dach; +3 Ответить
2. starik-2005 3272 04.06.26 16:24 Сейчас в теме
Не читал, но вроде ниче так )))
ЗЫ: индекс строится в полтора потока. Диск юзается на 0,0001%. Наверное это все можно ускорить, "но зачем?" (с)
Прикрепленные файлы:
4. Dach 391 04.06.26 18:19 Сейчас в теме
(2) для более высокой скорости индексации запускай её через cli, а не через mcp-вызов. Архитектура самого mcp такова, что она ограничивает производительность. На очень сильно допиленной ЕРП у меня индекс строится примерно 12 минут (если других тяжёлых задач в это же время не запущено)
6. Dach 391 04.06.26 18:24 Сейчас в теме
(2) и да, там запись всех данных в одной большой транзакции, так что сначала идет очень много чтений и вычислений и только в конце - запись самих данных, так что нагрузка на диск появится только в самом конце процесса
3. allegrosoft 56 04.06.26 17:43 Сейчас в теме
Ещё есть mcp serena, в нем уже есть bsl, попробуйте сравнить. У меня в 2 раза меньше токенов ушло. Сравнивал на одной задаче.
5. Dach 391 04.06.26 18:21 Сейчас в теме
(3) в моем репо и здесь в публикации есть ссылка на объективную методологию сравнения. Можем устроить батл, если хотите. Я, правда, не знаю как ваш сервер поднять, но можем взять типовой ДО одинаковый, запустить анализ и потом обменяться отчётами и логами и сравнить
7. andrew.ab 242 04.06.26 18:45 Сейчас в теме
ещё бы кеширование добавить на случай если код поменялся, релиз и. т. п. А так каждый раз строить граф ну такое себе дело.

И как выше сказали многопоточности не хватает при чтении файлов.

И не понятно зачем граф надо было запихивать в БД? Можно в память пулять, например через редис.
8. Dach 391 04.06.26 18:50 Сейчас в теме
(7) кэширование имеется
Граф строится один раз полностью и затем инкрементально обновляется при апдейтах индексов.

Так что там нет никакого "каждый раз", с чего Вы взяли то это?

Многопоточность также там реализована, где именно ее нет?
Есть и хелперы, которые могут в несколько потоков, есть и такие алгоритмы в механизме построения индексов.

Вы бы хоть код глянули сначала, прежде чем писать советы, вот честно
JohnyDeath; top_1c; +2 Ответить
9. Dach 391 04.06.26 18:54 Сейчас в теме
(7)
Можно в память пулять, например через редис


Какой смысл? Все прекрасно помещается в 1-й статичной таблице в sqlite.
Зачем рождать еще одну зависимость и держать в памяти кучу данных, которые (скорее всего) за день потребуются 2-3 раза всего?

У меня 1-н пакет и принцип: "вот исходники 1С - поставили пакет - 10-15 минут на индексы - готово к анализу"

Редиса не хватает, ага. Может еще эластик прикрутить для полноты картины? Баланс между сложностью продукта и оптимальностью функционала соблюдается
JohnyDeath; +1 Ответить
12. Dach 391 04.06.26 19:13 Сейчас в теме
(7)
код поменялся, релиз


Как часто это происходит?
Ну и даже если и часто - что мешает за 15 минут построить/обновить rlm-индексы? Что такое 15 минут на фоне временных затрат на сам релиз или временных затрат например на векторизацию и перестроение RAG? Ответ - копейки

P.S. Инкрементный апдейт rlm-индексов делается за 10-ки секунд или быстрее
10. top_1c 4047 04.06.26 19:05 Сейчас в теме
Это завтра 100% пропиарю! Главное не забыть :))
11. пользователь 04.06.26 19:09
Сообщение было скрыто модератором.
...
13. Dach 391 04.06.26 19:18 Сейчас в теме
Коллеги пользуются rlm-tools-bsl в командной разработке ЕРП, в день около 20 коммитов в хранилище и выгрузка gitsync-ом в gitlab

На коммит повешен хук, по нему срабатывает пайплайн, одной из команд которого прописан апдейт rlm-индексов (выполняется за несколько десятков секунд).

После чего стартует агент-анализатор (OpenCode + glm 5.1) и проводит ревью новых доработок
В процессе ревью агент также подтягивает через mcp jira саму задачу и проверяет соответствие доработок тому ТЗ или ФТ, которые приложены к задаче. После чего ревью-файл прикладывается в виде комментов к коду и разработчик получает письмо с замечаниями (это уже стандартный механизм gitlab). В этой схеме rlm-tools-bsl выступает как помощник для агента-анализатора, индексы которого не надо обновлять часами (в отличии от RAG-векторов)

Все работает и качество кода у команды повысилось, количество ошибок уменьшилось. И это уже явная бизнес-польза
JohnyDeath; +1 Ответить
14. gybson 13 04.06.26 19:50 Сейчас в теме
15. Dach 391 04.06.26 20:04 Сейчас в теме
(14) ну попробуйте оба поюзать и поймете

Идеи похожие реализованы.
Там мультиязычный функционал, у меня же все-таки именно bsl-специфичный.
Там надо бинарник собирать, у меня - готовый пакет из пакетного хаба.
Там - раст, у меня - пайтон.
Там граф строится через три-ситтер AST, у меня он статичный и строится парсингом и последующей нормализацией и очисткой.
Там исходники 1С хранятся в индексах, судя по всему, а у меня - нет (оба подхода имеют и плюсы и минусы).

А по функционалу, качеству помощи, скорости, эффективности и дешевизне поиска - это так с ходу не ответить "круче или нет".

Надо делать объективное сравнение - поднимать оба сервера, брать одну и ту же модель, один и тот же харнесс, один и тот же промпт для поиска и только лишь разные MCP-помощники поиска. И проводить минимум 10 тестов, чтобы снять вопрос недетерминированности llm.

После чего сравнивать качество отчетов и затраченные токены. Только такое сравнение даст объективный ответ.

Вот методология perform_comparison_1c_rag_mcp
16. gybson 13 04.06.26 20:10 Сейчас в теме
(15) Если мне понадобится доработать, то возьму Ваш, мне питон ближе.
17. Dach 391 04.06.26 20:11 Сейчас в теме
(16) лучше начните использовать и присылайте ишью на доработку, если поймете что какого-то функционала не хватает. Так будет полезнее. Для ишью есть образец в репо
19. Sorm 107 04.06.26 20:46 Сейчас в теме
(15) Я прокомментирую

Целью своей я ставил максимально ускорение получения данных из выгрузки базы 1с для модели и максимальную экономию токенов при этом. Язык был взят сразу Rust, за его работу с памятью и масштабируемость

"Там мультиязычный функционал, у меня же все-таки именно bsl-специфичный."
Там выделен отдельный функционал под BSL-функционал, а начиналось все с универсального.

"Там надо бинарник собирать, у меня - готовый пакет из пакетного хаба". - https://github.com/Regsorm/code-index-mcp/releases/tag/v0.15.0 Релизы под все платформы

"Там - раст, у меня - пайтон." разница в этих языках какая? Пайтон - интерпретируемый язык(но может компилироваться), Rust - компилируемый. Скорости и потребление памяти - несравнимы в пользу Rust , хотя удобство поддержки и изменения кода у Rust, конечно, меньше.

"Там граф строится через три-ситтер AST, у меня он статичный и строится парсингом и последующей нормализацией и очисткой". Аналогично, я не ставил своей задачей изменения графа при изменении кода. Но можно заморочиться.

Там исходники 1С хранятся в индексах, судя по всему, а у меня - нет (оба подхода имеют и плюсы и минусы) - в базе данных SQLite, которая проиндексирована.
20. Dach 391 04.06.26 20:57 Сейчас в теме
(19) я цели ставил точно такие же, но за основу взял идеи https://github.com/stefanoshea/rlm-tools

Скорость самого языка не так важна, ИМХО, как оптимизации поисковых алгоритмов под формат 1С-исходников. Как известно, сама 1С тоже умеет довольно быстро работать, если на ней писать нормальный код (хотя она тоже интерпретируемая). На мой взгляд, python вполне ОК для такого рода задач (недаром на нем пишут множество парсеров всего подряд).

Бегло гляну код Вашего проекта, именно оптимизаций под 1С у меня сейчас объективно больше. И граф у меня почище (у Вас на текущий момент не нормализован, судя по коду, хотя могу ошибаться). Но это не значит, что завтра Вы меня не обгоните, тем более что судя по коммитам - оба проекта стартанули примерно в одно и тоже время и шли параллельно (я про Ваш ничего не знал, пока не показали ссылку). Я нормализацию графа сам только-только (на днях) добавил, если уж на то пошло.

"исходники 1С хранятся.... в базе данных SQLite, которая проиндексирована" - это значит, что как минимум, они у Вас занимают столько же места сколько сами исходники + сами индексные данные. Довольно дорого сточки зрения места и обслуживания, но зато есть плюсы - быстрое снятие блобов с самих файлов плюс инкремент потенциально дешевле.
18. Dach 391 04.06.26 20:37 Сейчас в теме
Для всех критиков, которые ни статью ни код не читали, но спрашивают "зачем":

1. Почему через MCP-тул строить индексы медленнее, чем через CLI

Не сам индексатор медленнее - медленнее контекст, в котором он крутится:
Фоновый поток + опрос (главная причина). MCP build/update не выполняется синхронно: он стартует threading.Thread и мгновенно возвращает {"started": true}. Дальше агент опрашивает статус через rlm_index(action='info'). В наблюдаемое время попадает каденс опроса (модель "подумала" → дёрнула info → подождала), а не только чистая сборка. CLI же печатает результат синхронно - вы видите ровно wall-clock сборки.

Конкуренция за GIL. Парсинг — это почти чистый Python-CPU: regex по тексту модулей (_parse_procedures_from_lines, _extract_calls_from_body, _extract_movements, _parse_regions) + xml.etree по метаданным. В процессе MCP-сервера поток сборки делит GIL с asyncio-циклом, логированием и любыми параллельными вызовами инструментов/сессий — всё это отъедает у сборки процессорное время. CLI — отдельный процесс, GIL целиком его.

(мелочь) сервер — «тёплый» тяжёлый процесс с кучей загруженных модулей и своей GC-нагрузкой.

Итог: чистое время сборки примерно должно быть примерно равно, разницу дают модель «фон + polling» и дележ GIL в живом сервере.

Через mcp-тул удобнее вызов (не надо помнить формат команды - просто промптишь в чате с агентом "построй мне индексы по проекту Тест ЕРП"). Также, если сервер поднят в докере, то хранилища индексов тоже там и сама cli индексов тоже там, поэтому иного способа кроме как вызывать через mcp-тул - нет.

2. Многопоточное чтение при сборке индексов

Да, уже используется, причём повсеместно - ThreadPoolExecutor(max_workers=min(os.cpu_count() or 4, 8)):

- основной парсинг .bsl-файлов;
- метаданные L2;
- синонимы и обход XML-метаданных;
- права ролей;
- инкрементальный update;
- sampling-проверка "свежести".

Важный нюанс: добавить ещё потоков "безболезненно" можно, но толку почти не будет. Каждый файл = маленькое чтение с диска (отпускает GIL) + много regex-парсинга (держит GIL). Потоки сейчас в основном перекрывают дисковый I/O с парсингом, а сам парсинг под GIL всё равно сериализуется. Реальный рычаг ускорения - не больше потоков, а ProcessPoolExecutor (настоящий параллелизм, но будет плата за pickling результатов и дорогой spawn процессов на Windows) либо более быстрый парсер. Чисто потоками потолок уже выбран.

В целом не вижу смысла это оптимизировать. 15 минут для огромной ЕРП и 5 минут для условного ДО - очень маленькое время, чтобы сидеть причесывать.

_________________________________

Из моих рекомендаций - если есть возможность, то храните своих 1С-исходники на linux и там же и поднимайте rlm-tools-bsl. Там реально и индексация и поиск и grep/glob/git_grep быстрее работает (по ощущениям процентов на 15-20). Особенности ФС linux (проверялось на ext4)
Для отправки сообщения требуется регистрация/авторизация