Каталог/RLM Tools BSL
RL

RLM Tools BSL

Beta
@Dach-CoinIDE / EDTДобавлен: 09 мая 2026 г.

MCP-сервер для токен-эффективного анализа больших кодовых баз 1С/BSL через локальный индекс и sandboxed Python executor. Вместо RAG он дает агенту пять верхнеуровневых MCP-инструментов и 55 helper-функций внутри сессии анализа, чтобы выполнять точечные проверки по CF/EDT/MDO, XML и BSL и возвращать компактный результат. Поддерживает HTTP и STDIO, но операции изменения проекта/индекса защищаются project password, а optional LLM helpers могут отправлять контекст внешним провайдерам.

4
views
0
comments
bslcode-analysissqlitecfedtmdopythontoken-efficient

MCP tools

rlm_projectsrlm_indexrlm_startrlm_executerlm_end

Описание

MCP-сервер для токен-эффективного анализа больших кодовых баз 1С/BSL через локальный индекс и sandboxed Python executor. Вместо RAG он дает агенту пять верхнеуровневых MCP-инструментов и 55 helper-функций внутри сессии анализа, чтобы выполнять точечные проверки по CF/EDT/MDO, XML и BSL и возвращать компактный результат. Поддерживает HTTP и STDIO, но операции изменения проекта/индекса защищаются project password, а optional LLM helpers могут отправлять контекст внешним провайдерам.

README

rlm-tools-bsl

<p align="center"> <img src="https://raw.githubusercontent.com/Dach-Coin/rlm-tools-bsl/master/docs/assets/rlm-tools-bsl-cover.png" alt="rlm-tools-bsl — мастерская для AI-агентов, работающих с 1С" width="720"> </p>

CI PyPI Python 3.10+ Coverage License: MIT

MCP-сервер для токен-эффективного анализа кодовых баз 1С (BSL).

Адаптация open-source проекта rlm-tools под специфику платформы 1С:Предприятие — большие кодовые базы, форматы исходников (CF/EDT), структура метаданных, кириллический код, XML-описания объектов.

Установка

Windows — установка + служба одной командой (PowerShell от имени администратора):

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

Скрипт установит пакет из PyPI, зарегистрирует Windows-службу, запустит сервер и проверит health. Повторный запуск — обновление до последней версии.

Если служба не запускается (ошибка 1053 и т.п.) — см. Диагностика Windows-службы.

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

Контейнер автоматически обновляется из PyPI при каждом старте. Для запуска из локальных исходников: uv build перед docker compose up -d --build. Подробности: docs/INSTALL.md

Windows + Docker Desktop: не рекомендуется — I/O через WSL2/Virtiofs в 5-10x медленнее нативного. Индексирование и работа хелперов будут значительно тормозить. Используйте установку на хост (pip/служба). Docker оптимален для Linux.

Из исходников (для разработки)

Требования: Python 3.10+, uv (пакетный менеджер). LLM-ключи опциональны — без них работает базовый функционал.

Windows (PowerShell от имени администратора)

git clone https://github.com/Dach-Coin/rlm-tools-bsl.git
cd rlm-tools-bsl
PowerShell -ExecutionPolicy Bypass -File .\simple-install.ps1

Скрипт идемпотентен: повторный запуск после git pull останавливает службу, очищает stale-артефакты, пересобирает пакет и перезапускает сервер.

Linux

git clone https://github.com/Dach-Coin/rlm-tools-bsl.git
cd rlm-tools-bsl
chmod +x simple-install.sh && ./simple-install.sh

Скрипты установят пакет, зарегистрируют службу, запустят сервер и проверят доступность endpoint'а.

Конфиг для AI-клиента

После установки добавьте в .claude.json / mcp.json:

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

"type": "http" обязателен для большинства клиентов (Claude Code, Kilo Code, Roo Code, Cursor). Подключение по stdio тоже работает, но HTTP рекомендуется.

Подробная инструкция (конфигурация сервиса, .env, stdio, разработка): docs/INSTALL.md

Все сценарии развёртывания и пример настройки с нуля: docs/QUICKSTART.md

Часто задаваемые вопросы (расширения CFE, пароли, Docker, расход токенов, несколько проектов): docs/FAQ.md


Основная философия и предназначение продукта

Получить для AI-ассистента поиск по кодовой базе BSL, сопоставимый по качеству с RAG, но при этом без самого RAG и при масштабной экономии токенов и контекста на анализ

RAG и RLM — что это

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

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

Зачем нужен RLM поверх встроенных готовых инструментов AI-ассистентов

AI-ассистенты (Claude Code, Cursor, Windsurf и др.) уже умеют читать файлы и искать по коду через встроенные grep/read/glob. Но каждый вызов возвращает сырые данные целиком прямо в контекстное окно агента: полные файлы, длинные списки совпадений, деревья каталогов. На больших конфигурациях 1С (20 000+ файлов) контекст забивается за несколько запросов.

rlm-tools-bsl решает эту проблему: агент отправляет Python-скрипт на сервер (хост, где открыт проект), скрипт выполняется в песочнице, а в контекст возвращается только print() — компактный отфильтрованный результат вместо сырых данных.

Пример: вместо того чтобы прочитать файл на 2000 строк целиком (2000 строк в контекст), агент вызывает extract_procedures(path) и получает список из 15 сигнатур. Затем read_procedure(path, "ОбработкаПроведения") — и получает тело одной нужной процедуры. Типичная экономия — 25-95% контекста.

RLM — не замена RAG, а дополнение

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

RAG — это ткацкий станок на фабрике: мощный, производительный, выдаёт ткани и одежду промышленного качества. Но требует помещения, настройки, обслуживания и времени на запуск.

RLM — это домашняя швейная машинка: компактная, всегда под рукой, можно взять с собой. Не заменит фабрику, но и не требует её. Подшить, перекроить, разобраться в выкройке — быстро и без подготовки.

Или, если ближе автомобильная аналогия:

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

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

Используйте оба подхода там, где каждый сильнее.

Когда использовать

Кейс 1: «Разберись в новой конфигурации»

Дали новое расширение или конфигурацию 1С и задали вопрос: «Разберись, как работает вот эта подсистема» или «Что нужно доработать, чтобы добавить новый документ». Поднимать RAG ради разовой задачи нецелесообразно — индексация займёт часы, а ответ нужен сейчас. С rlm-tools-bsl: указал путь к каталогу исходников — и агент уже работает.

Кейс 2: «Оцени внедрение»

Прислали целевую конфигурацию и список бизнес-требований, просят быстро подготовить оценку: какие объекты затронуты, что потребует доработки, где готовая функциональность. Разворачивать инфраструктуру для одной оценки — избыточно. RLM позволяет агенту пройтись по исходникам, найти нужные модули и метаданные, и сформировать оценку за один сеанс.

Кейс 3: «Проверяй код команды каждый день»

Ты — тимлид проекта разработки через хранилище 1С. Много коммитов в хранилище каждый день (синхронизируемое с Git через gitsync). RAG переиндексируется по расписанию раз-два в неделю — ждать долго, а проверять код команды нужно ежедневно. RLM работает по актуальным файлам на диске: синхронизировал хранилище → агент сразу видит свежий код.

Кейс 4: «Много активных баз — некогда индексировать»

Ты — разработчик, у которого три и более крупных баз 1С в активной разработке. Пользователи и аналитики постоянно приходят с вопросами, а поднимать и обслуживать RAG-индекс для каждой базы — дорого и долго. Просто указываешь llm + rlm-tools-bsl на каталог с исходниками нужной базы — и отвечаешь на вопросы без какой-либо предварительной подготовки.

Кейс 5: «Запилил фичи — теперь нужна документация»

Ты — разработчик, который долго делал доработки, но не писал документацию и описания «как это работает». Теперь тимлид или архитектор требует описания, а RAG-индекса на твой код ещё нет. Просто указываешь rlm-tools-bsl на исходники своей дев-базы и просишь LLM написать технические описания прямо по коду.

Кейс 6: «Аналитик на новом проекте без RAG»

Ты — аналитик, которому дали чужую базу и несколько подшефных пользователей с постоянными вопросами «а как в программе сделать то, а как это». RAG на проекте нет. Просто указываешь llm + rlm-tools-bsl на исходники базы — и получаешь готовые ответы пользователям, не листая код вручную.

Ещё подходит, если:

  • Нужно проанализировать конкретную подсистему, механизм или блок кастомных доработок
  • Работаешь с любым форматом исходников: CF (выгрузка из Конфигуратора), EDT (1C:EDT), MDO
  • Конфигурация большая (20K+ файлов) и нельзя скормить всё в контекст одной сессии
  • Раньше ты собирал и готовил контекст (модули, граф/стек вызовов, требования) руками и хочешь хотя бы немного облегчить себе жизнь
  • Ты планируешь искать по кодовой базе с детерминированными вопросами ("расскажи как работает проведение документа АвансовыйОтчет", "найди http-сервис ОбменСКорпоративнымиСегментами, опиши его методы" и т.д.)

Когда НЕ использовать

  • Нужен полный граф зависимостей всех объектов конфигурации — для этого нужен RAG/графовый MCP с предварительной индексацией. Для точечного анализа конкретного объекта find_callers_context строит граф BSL-вызовов на лету, а find_references_to_object (v1.9.0, аналог конфигуратора «Найти ссылки → В свойствах») мгновенно показывает все ссылки на объект метаданных из 18 разных источников (реквизиты, подсистемы, планы обмена, функциональные опции, владельцы, ОпределяемыеТипы, роли, команды и т.д.). find_defined_types раскрывает ОпределяемыйТип в список реальных типов
  • Нужен семантический поиск по описаниям объектов — rlm-tools-bsl ищет по файлам и именам, не по эмбеддингам
  • Нечёткие недетерминированные вопросы («как работает бюджетирование в ЕРП», «как работают ячеистые склады в УТ») — для этого нужен полноценный RAG

Сравнение с RAG/графовым подходом

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

СерверКачествоAvg tokensТипЛицензия
rlm-tools-bsl10/10117KRLMбесплатный
code-metadata (08.04)10/10179KRAGплатный
1c-mcp-metacode10/10264Kgraphбесплатный
code-metadata (07.04)7/10206KRAGплатный
graph-metadata5/10538Kgraphплатный
cloud-embeddings4/10265KRAGплатный

Выводы:

  • Три сервера набрали максимум 10/10: rlm-tools-bsl, code-metadata 08.04 и 1c-mcp-metacode — при этом rlm-tools-bsl потребил минимум токенов (117K) и не требует инфраструктуры.
  • Версия code-metadata 08.04 поднялась с 7/10 до 10/10 в том числе после добавления механизмов полнотекстового поиска, заимствованных из rlm-tools-bsl.

Предварительное индексирование (опционально)

Для ускорения работы на больших конфигурациях можно предварительно построить SQLite-индекс методов и графа вызовов — см. docs/INDEXING.md. На ПК с медленными дисками (HDD, сетевые ресурсы) индексирование фактически обязательно: без индекса файловые операции на конфигурациях размера ERP (20K+ BSL-файлов) приводят к таймаутам (60-90с на каждый вызов glob_files/tree/find_files). Помимо ускорения, предварительно созданные индексы помогают слабым моделям (Minimax, Gemini Flash и др.) выполнять качественный анализ на больших кодовых базах — мгновенные ответы хелперов вместо таймаутов устраняют основную причину ошибок.

Реестр проектов

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

rlm_projects(action="add", name="My Config", path="/path/to/1c-sources", password="МойПароль")
rlm_start(project="My Config", query="find module...")

Пароль обязателен при регистрации проекта. Он потребуется при управлении индексами через mcp-tool rlm_index(build/update/drop) и при любых мутирующих операциях с реестром (remove/update/rename — параметр password). Модель запросит пароль у пользователя. Это требуется, чтобы ai-ассистент не выполнял операции без команды и подтверждения со стороны человека. CLI-интерфейс rlm-bsl-index не требует пароля.

Реестр хранится в projects.json рядом с service.json. Подробнее -- docs/PROJECT_REGISTRY.md

Как работает (под капотом)

Пять MCP-инструментов (rlm_projects, rlm_index, rlm_startrlm_executerlm_end), песочница с 55 хелперами (45 BSL-специфичных + 8 стандартных + 2 LLM), сессионные кэши, таймауты, безопасность, пример построения графа вызовов на крупной конфигурации (23K+ файлов) — docs/ARCHITECTURE.md

Полный список хелперов — docs/HELPERS.md | Совместное использование с RAG — docs/ARCHITECTURE.md

Карта модулей и зависимостей — docs/MODULE_MAP.md | Внутренние чеклисты разработчика — docs/DEVELOPER_GUIDE.md

Совместимость с оригинальным rlm-tools

Весь функционал оригинального rlm-tools сохранён. BSL-функционал добавлен поверх, не ломая исходную механику. Подробнее — docs/HELPERS.md

Настройка llm_query (опционально)

В песочнице есть хелперы llm_query(prompt, context) и llm_query_batched(prompts, context) — они вызывают «маленькую» LLM прямо из rlm_execute, не возвращаясь в основной контекст агента. Это позволяет классифицировать, фильтровать и суммировать данные на стороне сервера, экономя расход контекста основной модели.

Поддерживаются OpenAI-совместимые endpoint'ы (OpenRouter, Ollama, vLLM) и Anthropic API. Без настройки LLM все остальные хелперы работают нормально.

Подробная настройка, механика, квоты и примеры — docs/LLM_QUERY.md | Все переменные окружения — docs/ENV_REFERENCE.md

Тестирование на реальных данных

Выполнено на BSL-кодовой базе доработанной ERP 2.5 (формат выгрузки - конфигуратор) Выполнено на BSL-кодовой базе доработанной ERP 2.4 (формат выгрузки - EDT) Выполнено на BSL-выгрузках расширений в обоих форматах

Готовые промпты для комплексных E2E-тестов BSL-хелперов: docs/full_analysis_prompt.md

Лицензия

MIT (наследуется от rlm-tools)

Changelog

История изменений: CHANGELOG.md

Комментарии

Войдите, чтобы оставить комментарий

Войти

Загрузка...