Code Index — структурный поиск по выгрузке кода 1С через MCP

27.04.26

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

Open source-индексатор кода 1С с MCP-протоколом для Claude Code, Cursor и других AI-ассистентов. Понимает BSL и XML-выгрузку конфигуратора как структуру: возвращает функции, граф вызовов, реквизиты объектов, обработчики форм и подписки на события. Полная индексация типовой бухгалтерии — 2.5 минуты, инкрементальные обновления — секунды.

Code Index — структурный поиск по коду 1С через MCP

Зачем это нужно

Когда работаешь с конфигурацией 1С через LLM-агента (Claude Code, Cursor, любой MCP-совместимый клиент) — самая дорогая операция это поиск по коду. Агент гоняет grep по гигабайтам выгрузки, забивает контекст сырыми строками, и через пару итераций ты упираешься в лимит окна. А поиск по BSL осложняется тем, что обычные индексаторы (ctags, ripgrep) не понимают структуру модулей 1С — они ищут текст, а не функции.

Code Index решает обе проблемы: парсит BSL (и ещё 7 языков) в SQLite-индекс, отдаёт по MCP-протоколу готовые функции, классы, граф вызовов. Агент получает не «строки 1234–1267 файла Х», а структурированный ответ: имя процедуры, путь, тело, кто её вызывает.

 

Что умеет (общие инструменты)

  • Поиск функций и классов по имени — найти ОбработкаПроведения во всей конфигурации за миллисекунды
  • Граф вызовов — кто вызывает эту процедуру (get_callers), что вызывает она сама (get_callees)
  • Получение тела функции по точному имени — без чтения всего модуля
  • Карта файла — список всех функций/классов модуля без открытия исходника
  • grep по телам функций — поиск подстроки или regex именно внутри процедур (не в комментариях документации)
  • Полнотекстовый поиск через SQLite FTS5 — мгновенный по любому объёму

 

Специальные инструменты для XML-выгрузки 1С

Поверх обычного BSL-парсера в code-index подключается отдельное расширение bsl-extension, которое разбирает не только модули, но и XML-файлы выгрузки конфигуратора. Эти инструменты появляются в MCP автоматически, если хотя бы один репо помечен language = "bsl".

Что разбирается из XML:

  • Configuration.xml — корневой файл конфигурации (состав, версия, совместимость)
  • <Объект>.xml (справочники, документы, регистры…) — реквизиты, табличные части, синонимы, типы
  • Form.xml — управляемые формы: реквизиты, элементы, обработчики событий
  • EventSubscription.xml — подписки на события (источник → обработчик)
  • ConfigDumpInfo.xml — UUID объектов конфигурации

И на основе этих данных — четыре MCP-инструмента, которых нет в обычных индексаторах:

Инструмент Что делает
get_object_structure Структура объекта по full_name (например Справочник.Контрагенты): meta_type, синоним, все реквизиты с типами, табличные части. Заменяет ручное чтение XML-файла объекта
get_form_handlers Все обработчики события формы: (событие → имя процедуры) для указанной формы. Сразу видно где сидит ПриОткрытииПередЗаписью и т.д.
get_event_subscriptions Все подписки на события репо (с фильтром по модулю-обработчику). Полезно когда нужно понять «кто подписан на запись справочника» — обычно эту информацию приходится искать вручную по всем подпискам
find_path Путь вызовов от одной процедуры к другой через граф proc_call_graph (recursive CTE в SQLite). Отвечает на «как ОбработкаПроведения доходит до СформироватьДвижения» — реальная цепочка через все промежуточные модули

 

Плюс есть enrichment-режим — необязательное обогащение индекса через LLM: для каждой функции генерируется сигнатура и краткое описание, которые потом попадают в FTS-поиск. Запрашивая «найди процедуру, которая считает курсовые разницы» — агент находит её даже если в имени нет ни слова «курс», ни «разниц».

 

Поддерживаемые языки

BSL (1С), Python, Rust, Java, Go, JavaScript, TypeScript, XML. Один индекс — все языки разом.

 

Архитектура

Два процесса:

  • Daemon индексации — отслеживает изменения файлов через mtime, переиндексирует только изменённое
  • HTTP MCP-сервер на 127.0.0.1:8011/mcp — один на все клиенты, читает SQLite в режиме read-only

Подключение к Claude Code / Cursor / любому MCP-клиенту — три строки в .mcp.json:

"code-index": { "type": "http", "url": "http://127.0.0.1:8011/mcp" }

В каждом вызове передаётся алиас репо — один сервер обслуживает сколько угодно конфигураций.

 

Преимущества перед grep / ripgrep / встроенным поиском Конфигуратора

  • Структурный поиск: возвращает функции, а не строки. Агент сразу понимает контекст
  • Граф вызовов из коробки — никаких сторонних утилит
  • Понимает выгрузку 1С как структуру — формы, объекты, подписки, а не просто XML
  • Инкрементальная индексация — после первого прохода обновления почти бесплатные
  • Один индекс на все репо — переключение между конфигурациями без перенастройки
  • Read-only SQLite — несколько агентов параллельно не мешают друг другу
  • Федеративный режим — один MCP-сервер может проксировать запросы к индексам на других машинах

 

Производительность — реальный замер

Прогон на типовой бухгалтерии (выгрузка XML), Linux VM, режим in-memory, NVMe:

  • Файлов в репо: 93 648 (из них ~19 300 .bsl)
  • Размер итогового индекса: 5.2 ГБ
  • Пик RAM: ~14 ГБ (in-memory режим всю БД держит в RAM до финального сброса)

Разбивка по фазам:

Фаза Время Что делается
Сбор кандидатов 5.6 сек walkdir по 93K файлам + stat() — около 17 000 stat-операций в секунду
Парсинг + запись данных 19 сек tree-sitter парсит каждый BSL-файл, извлекает функции/классы/переменные/импорты; батчи по 2000 в SQLite. ~5 000 файлов/сек
Создание B-tree индексов + FTS5 rebuild 78.7 сек строятся индексы на колонки (для join/lookup) и перестраивается полнотекстовый индекс через FTS5 — самая долгая фаза
Финальный flush на диск ~29 сек сброс in-memory БД (5.2 ГБ) на NVMe
Wall-clock итого 2 мин 31 сек  

Почему B-tree + FTS5 занимают 78 секунд — это последовательная операция: для каждой записи в таблицах functions/classes выполняется токенизация и вставка в виртуальную FTS5-таблицу. На объёме 92K+ функций фрагментация во временных структурах вынуждает много random I/O даже на NVMe. Это плата за то, что после индексации поиск работает за миллисекунды.

Инкрементальные обновления — на порядки быстрее: при повторном запуске на тех же 93K файлах daemon сравнивает mtime+size без чтения содержимого и обрабатывает только реально изменённые файлы — обычно секунды вместо минут.

 

Скорости запросов после индексации

  • Поиск функции по имени: <10 мс
  • get_callers / get_callees: <20 мс
  • grep_body по regex с фильтром по языку: <100 мс на репозитории УТ
  • get_object_structure / get_form_handlers: <5 мс (одиночный SELECT по индексу)

 

Установка

Бинарник под Windows / Linux собирается через cargo build --release. Подробная инструкция и release-сборки — в репозитории.

 

Ссылка

GitHub: https://github.com/Regsorm/code-index-mcp

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

1С:Предприятие 8.3 BSL MCP Claude Code Cursor AI-ассистент поиск по коду индексация конфигурации граф вызовов разбор XML 1С tree-sitter open source

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

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

См. также

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

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

24900 руб.

20.08.2024    71965    367    170    

319

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

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

16500 руб.

02.09.2020    262594    1462    421    

1171

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

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

22570 руб.

06.10.2023    38998    108    46    

122

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

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

15250 руб.

25.08.2025    58529    119    34    

129

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

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

6000 руб.

25.02.2026    4170    14    1    

18

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

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    6934    29    40    

44

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

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

9500 руб.

17.05.2024    53764    185    63    

217

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

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

17000 руб.

10.11.2023    25804    95    46    

103
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Viver 27.04.26 17:51 Сейчас в теме
Вроде интересная штука, сам что-то подобное давно хотел сделать
2. GarriSoft 612 27.04.26 18:52 Сейчас в теме
(1)
Вроде ни чего сложного, но зачем писать теперь самому, когда уже есть готово решение.
Автору спасибо!
3. ixijixi 2152 28.04.26 09:53 Сейчас в теме
Спасибо, затестим.

Единственно, не уловил - индексируется только выгрузка DumpConfigToFiles или проект ЕДТ тоже умеет?
5. Sorm 110 28.04.26 10:47 Сейчас в теме
(3)
Единственно, не уловил - индексируется только выгрузка DumpConfigToFiles или проект ЕДТ тоже умеет?


У меня EDT негде протестить, поэтому я ориентировался на DumpConfigToFiles. Но могу исследовать и вопрос по EDT
26. VVi3ard 52 31.05.26 13:14 Сейчас в теме
(5) на самом деле формат edt парсить проще и правильнее чем xml конфигуратора так как edt оптимизирован для работы и парсинга (edt работает с форматом на прямую, хранит в git).

EDT можно бесплатно скачать создать в нем проект пустой и импортировать из любой ИБ. После чего в каталоге проекта появятся файлы.
т.е. формат edt не правильно назвать "выгрузкой в формате EDT" так как для edt это не выгрузка а рабочий проект.

Я недавно только начал использовать ИИ с 1С и удивлен тем как много инструментов для ИИ используют формат XML и Конфигуратор, постоянно выполняя сборку/разборку cf.
На мой взгляд связка EDT+AI работает значительно лучше.
27. Sorm 110 31.05.26 16:30 Сейчас в теме
(26) Не могу ничего сказать, в EDT пока не работал. Но знаю, что исходники там правятся прямо "на лету". Проблема в том что у меня негде это проверить(и найти на это время...пока:):)) и второе - в работе с EDT есть определенные минусы(мне коллеги их (с крупных проектов) перечисляли), где-то у меня даже есть список, и третье - я встречаю сейчас еще вполне рабочие конфигурации на обычных формах(не говоря уж о 7.7), на которых люди работают и уходить никуда не собираются. Там о EDT смысла нет говорить. ПОэтому пока - так. Найду время поднять и попробовать EDT - это станет опцией в проекте, я думаю.
28. VVi3ard 52 31.05.26 23:19 Сейчас в теме
(27)
в работе с EDT есть определенные минусы

А где их нет :)

Но именно для работы с ИИ тот факт что "исходники там правятся прямо "на лету"" как раз решает очень сильно.
Плюс встроенный автокомплит умеет извлекать типы данных из кода + понимает типы из BSL DOC комментариев.
Т.е. пишешь что то типа:

// Получает объект отчета по ссылке на вариант отчета.
//
// Параметры:
//   Параметры - см. ПараметрыФормированияОтчета
//
// Возвращаемое значение:
//   Структура:
//       * СсылкаОтчета - Произвольный     - ссылка отчета.
//       * ПолноеИмя    - Строка           - полное имя отчета.
//       * Метаданные   - ОбъектМетаданных - метаданные отчета.
//       * Объект       - ОтчетОбъект
//                      - ВнешнийОтчет - объект отчета:
//           ** КомпоновщикНастроек - КомпоновщикНастроекКомпоновкиДанных - настройки отчета.
//           ** СхемаКомпоновкиДанных - СхемаКомпоновкиДанных - схема отчета.
//       * КлючВарианта - Строка           - имя предопределенного или идентификатор пользовательского варианта отчета.
//       * АдресСхемы   - Строка           - адрес временного хранилища, по которому размещена схема отчета.
//       * Успех        - Булево           - Истина, если удалось подключить отчет.
//       * ТекстОшибки  - Строка           - текст ошибки.
//
Функция ПодключитьОтчетИЗагрузитьНастройки(Знач Параметры) Экспорт
Показать


И дальше EDT тебе подсказывает ключи структуры в любой переменной куда присвоишь результат.
Если везде писать такие комментарии то крайне упрощается разработка так как он не только подсказывает но и проверяет если ты например удалил какой то ключ а он где то используется.
Получается как в языках со строгой типизацией, но при этом не так "строго" :)

Плюс в EDT есть встроенный ИИ агент "Напарник", он тоже умеет шуршать по проекту, искать, править, умеет читать ошибки и.т.п. Так же удобно всякую рутину автоматизировать в 80% угадывает код который надо написать.
Бывает по 5 минут сидишь и только TAB нажимаешь (принять подсказку ИИ).

Ну и опять же интеграция с git тоже удобная, переключение между фичами, затягивание изменений коллег, привязка к задачам, gitlens и.т.п.

На мой взгляд если нет прям нужды сидеть в конфигураторе в 2026, то надо перебираться на EDT.

На больших проектах по сути все упирается в производительность ПК, на 9700х + 48 DDR5 он достаточно шустро работает даже с ERP, если говорить о режиме: "Запустили утром и весь день пишем код".

Ну и опять же после того как EDT начинаешь пользоваться конфигуратор никуда не исчезает, он так же точно доступен, нажимаешь ПКМ на приложении и открывается конфигуратор. Можно что то сделать в конфигураторе и как правило результаты легко затягиваются обратно (только изменения).

Если использовать с внешними ИИ то однозначно могу рекомендовать плагин: https://github.com/DitriXNew/EDT-MCP
Он добавляет много полезного, и что для меня очень удобно:
Систему тэгов и своих групп. Можно разложить объекты метаданных по группам и раздать им тэги.

Но вот среди MCP нет прямого аналога вашему варианту с графом связей поэтому и заинтересовался.
31. Sorm 110 01.06.26 11:57 Сейчас в теме
(28) За совет спасибо - ну, я пока в Конфигураторе. Не я определяю политику использования сред разработки у нас в конторе, а времени попробовать самому пока нет.
4. ixijixi 2152 28.04.26 10:27 Сейчас в теме
И еще вопрос:
[daemon]
http_port = 0                  # 0 = выбрать свободный порт автоматически
max_concurrent_initial = 1     # папки обрабатываются последовательно при initial reindex

[[paths]]
path = "C:\\RepoUT"

[[paths]]
path = "C:\\RepoBP_1"
debounce_ms = 500              # per-папка переопределение: быстрее чем дефолт 1500 мс
batch_ms    = 1000
Показать

Двойные квадратные скобки в paths не опечатка? Реально так надо?
6. Sorm 110 28.04.26 10:51 Сейчас в теме
(4)
И еще вопрос:
[daemon]
http_port = 0 # 0 = выбрать свободный порт автоматически
max_concurrent_initial = 1 # папки обрабатываются последовательно при initial reindex

[[paths]]
path = "C:\\RepoUT"

[[paths]]
path = "C:\\RepoBP_1"
debounce_ms = 500 # per-папка переопределение: быстрее чем дефолт 1500 мс
batch_ms = 1000
Показать

Двойные квадратные скобки в paths не опечатка? Реально так надо?
Показать


Да. Это штатный синтаксис TOML., элемент "массива таблиц"
7. GarriSoft 612 28.04.26 12:03 Сейчас в теме
Коллега, реально отличный проект, СПАСИБО ОГРОМНОЕ!!!
но, не удалось запустить "Дополнительные инструменты для репозиториев 1C "

Мой кусок из daemon.toml:
[daemon]
# 0 = автоматически выбрать свободный порт
http_port = 0
# Количество папок, индексируемых одновременно
max_concurrent_initial = 1

language = "bsl"

# Укажите ВАШИ проекты (замените пути на реальные)
[[paths]]


Структура проекта:
|-- .ai
|-- .code-index
|-- .codex
|-- scripts
|-- src <---------------- тут выгруженная база из 1с
|-- .env
|-- .gitignore
|-- AGENTS.md
|-- dumpcfg.cmd
|-- loadcfg.cmd
`-- README.md

mcp не видит дополнительных инструментов:
get_object_structure, get_form_handlers и т.д.
Что может быть не так?
9. Sorm 110 28.04.26 13:43 Сейчас в теме
(7) Дело в бинарнике. В релизах на GitHub лежат два артефакта для Windows:
• code-index-windows-x64.zip — универсальный индексатор без 1С-специфики
• bsl-indexer-windows-x64.zip — то же самое плюс инструменты для конфигураций 1С

«Дополнительные инструменты для репозиториев 1С» (get_object_structure, get_form_handlers, get_event_subscriptions, find_path, search_terms) физически линкуются только во второй бинарник. На code-index.exe они никогда не появятся, какой бы конфиг ни написать.

Минимальный рабочий конфиг:

[daemon]
http_port = 0
max_concurrent_initial = 1

[[paths]]
path = "C:\\полный\\путь\\к\\проекту"
После старта вызовите get_stats() — ваш репо должен быть с language: "bsl", и в tools/list появятся пять дополнительных инструментов.
10. GarriSoft 612 28.04.26 14:16 Сейчас в теме
(9)
Коллега, спасибо.
Все понятно, кроме этого:
После старта вызовите get_stats() — ваш репо должен быть с language: "bsl",

Расшифруйте пожалуйста как вызвать get_stats() и где должно именно быть прописано language: "bsl"
11. Sorm 110 28.04.26 14:51 Сейчас в теме
(10)
0. GarriSoft 509 28.04.26 14:16
(9)
Коллега, спасибо.
Все понятно, кроме этого:
После старта вызовите get_stats() — ваш репо должен быть с language: "bsl",

Расшифруйте пожалуйста как вызвать get_stats() и где должно именно быть прописано language: "bsl"


А вы как намерены это использовать? Это MCP-сервер, у него есть метод get_stats().Вызовите его через модель или через curl
12. GarriSoft 612 28.04.26 15:16 Сейчас в теме
(11)
Коллега, я разобрался, спасибо!
8. Sorm 110 28.04.26 13:30 Сейчас в теме
Брали из репозитория какой файл(и запускали какой)? Их там два
13. h3adhunt3r 28.04.26 18:24 Сейчас в теме
Подскажите, на macOS будет работать?
14. Sorm 110 28.04.26 20:25 Сейчас в теме
(13)
Конкретно под MacOS не тестировал, но на Гитхабе компилируется без ошибок.
15. gybson 13 28.04.26 23:26 Сейчас в теме
html-файлы тоже было бы неплохо добавить, для нужд ассистентов
17. Sorm 110 29.04.26 13:00 Сейчас в теме
(15)
html-файлы тоже было бы неплохо добавить, для нужд ассистентов


в следующем обновлении будет.
19. Sorm 110 29.04.26 21:05 Сейчас в теме
(15) Забирайте 0.7.2 с гитхаба
16. Sorm 110 29.04.26 09:52 Сейчас в теме
По обратной связи(не только в чате) сделал ревизию и выкатил обновление. Забирайте на гитхабе.
18. Ibrogim 1797 29.04.26 18:00 Сейчас в теме
Спасибо. то что нужно!
20. Sorm 110 12.05.26 13:56 Сейчас в теме
Там кеширующий сервер появился ещё https://github.com/Regsorm/mcp-cache-ci.
21. alex_4x 88 21.05.26 16:38 Сейчас в теме
Очень интересно! Идея замечательная! Подскажите, а структуру базы и в виде MD или может XML совместимого с StarUML имеет смысл LLM сообщать? Это поможет в процессе рассуждения?
22. Sorm 110 21.05.26 20:33 Сейчас в теме
(21)
Очень интересно! Идея замечательная! Подскажите, а структуру базы и в виде MD или может XML совместимого с StarUML имеет смысл LLM сообщать? Это поможет в процессе рассуждения?

Добрый день! Ну, частично граф у меня уже есть, но это граф вызова кода, "граф вызовов", если можно так сказать. Что касается "графа связи объектов"...
Интересно, может быть, не знаю, граф вызовов и так редко используется моделью, но в качестве базы связей вместе с выгрузкой структуры. Сделать-то можно, это не проблема. Смысл в том, будет ли это использоваться моделью.
23. Sorm 110 21.05.26 23:31 Сейчас в теме
(21) После вашего поста, я напряг модель, она мне поискала запросы, которые можно было оптимизировать с помощью функционала связи объектов. И в общем, есть достаточно большой шанс на то, что данная предложенная вами доработка будет востребована моделью при анализе. Я ее сделал, можно забирать в новом апдейте.Там добавились таблицы связей объектов внутри конфигурации.
24. Sorm 110 22.05.26 12:05 Сейчас в теме
Добавлю описание нового в релизе.

Небольшой апдейт по инструменту:

Граф связей данных (data-graph)
Раньше был только граф вызовов кода («кто кого вызывает»). Теперь добавился отдельный граф связей ДАННЫХ — рёбра «объект → объект» по ссылочным типам реквизитов, измерений регистров и реквизитов табличных частей. То есть модель видит, какой справочник/документ на что ссылается, не обходя структуру вручную.

Два новых инструмента:
• get_data_links(object, direction=out|in|both, depth=1..4) — окрестность объекта: на что ссылается (out), кто ссылается на него (in), на нужную глубину.
• find_data_path(from, to) — цепочка ссылочных связей между двумя объектами.

Зачем: типичный кейс вроде «схлопнуть остатки по ГТД» раньше требовал десятки запросов структуры подряд — теперь это один обход графа. На реальной конфигурации (УТ/БП/ЗУП) это десятки тысяч рёбер связей, парсинг ~1.5 сек на конфигурацию.

Важно не путать: find_path/get_callers — это про ВЫЗОВЫ кода, а get_data_links/find_data_path — про СВЯЗИ данных. Это два разных графа.
25. Sorm 110 30.05.26 15:03 Сейчас в теме
В последней версии (0.11.0) добавил опциональный whitelist MCP-инструментов.

Раньше сервер всегда отдавал клиенту все 25 инструментов (18 универсальных + 7 для 1С/BSL). Теперь в конфиге daemon.toml можно указать секцию [tools] с полем enabled и оставить только нужное подмножество — например, поиск по коду и чтение файла, без остального.

Зачем это нужно:
— меньше токенов на описание инструментов при каждом подключении модели (экономия контекста);
— слабые модели меньше путаются при выборе инструмента, когда их немного;
— сильным моделям ничего не мешает — для них полный набор остаётся доступен.

Поведение по умолчанию не изменилось: если секции [tools] нет или список пуст — доступны все инструменты, как и раньше (полная обратная совместимость). Если в списке опечатка — сервер при старте выдаёт предупреждение, но не падает.
29. moolex 897 01.06.26 07:49 Сейчас в теме
Кому нужен точный и самый быстрый поиск по типовым конфигурациям, есть сайт 1ctester com, пользуюсь им когда надо посмотреть как именно реализованы алгоритмы в типовых.
30. Sorm 110 01.06.26 11:53 Сейчас в теме
Кому нужен точный и самый быстрый поиск по типовым конфигурациям - ключевое слово - "по типовым". А здесь - по своим.
32. mikukrnet 182 01.06.26 18:46 Сейчас в теме
Ну круто же блин

Я сделал замер производительности, и обнаружил, что метод ЗаполнитьЕдиницуЦенуПродажиТабЧасти() из модуля ОбработкаТабличныхЧастей в процессе генерации реализаций вызывается чаще чем надо строк в заказе 5, а метод вызывается 10 раз. Можешь пройтись рекурсивно по вложенным методам в СгенерироватьРеализации (до 3 уровней вложенности) и найти где возможно дублирование вызова ЗаполнитьЕдиницуЦенуПродажиТабЧасти


Да, нашёл наиболее вероятное место ровного удвоения.

Основной путь генерации даёт первый вызов на каждую строку:

СгенерироватьРеализации
-> СгенерироватьИЗаписатьРеализацию
-> ЗаполнениеДокументов.СоздатьРТУ
-> ЗаполнениеДокументов.ЗаполнитьПоОстаткам
-> цикл по ДокументРН.Товары
-> ПриИзмененииНоменклатурыТовары
-> ПриИзмененииНоменклатурыТоваров
-> ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти
...
33. Sorm 110 02.06.26 11:42 Сейчас в теме
34. Dionisiy 4 04.06.26 08:31 Сейчас в теме
Раньше сервер всегда отдавал клиенту все 25 инструментов (18 универсальных + 7 для 1С/BSL).


Отличная программа и потребление памяти и скорость

Попробовал индексацию большого расширения и в ламма срр, модель гемма 4, находит правильно запросы типа - "используй кодекс_индекс репозиторий бла-бла найди всю цепочку команд где пользователь нажимает меню "Привязать документ" вплоть до самой записи в базу данных", контекст конечно быстро забивается, также происходит перебор подходящих инструментов (агент ИИ, наверное сможет скилл создать в итоге) , возможно из ответов инструментов можно убрать ответах всякие /t /n, может быть теги убрать/заменить на более короткие, может быть ответы оформить в MD. Но вот в настройках МСП серверов добавляются только 18, что отвечает за выдачу 7 дополнительных инструментов?

*** Сам нашел причину - хоум нужно было указать где бинарник лежит, как и было в инструкции указано)

export CODE_INDEX_HOME="$HOME/bsl_index/.code-index"
#./bsl-indexer index /mnt/syno/xml_doki # одноразовая индексация
pkill -f "bsl-indexer"
sleep 2
./bsl-indexer daemon run > lol.log 2>&1 & # фоновая индексация по daemon.toml
./bsl-indexer serve --host 0.0.0.0 --transport http --port 8011 --config ./.code-index/daemon.toml

[daemon]
http_host = "0.0.0.0"
[[paths]]
path = "/mnt/syno/xml_doki"
language = "bsl"
alias = "doki"
36. Sorm 110 04.06.26 17:27 Сейчас в теме
(34) перебор подходящих инструментов (агент ИИ, наверное сможет скилл создать в итоге)" - в 14 версии(недавно) стало можно указывать необходимые инструменты как раз для слабых моделей или таких случаев, где модель может путаться. МОжно там указать несколько главных, грубо, и остальные не будут просто отдаваться через MCP, Кстати, надо проверить - раньше с динамическим определением инструментов MCP была проблема, как теперь, интересно(риторический вопрос)..
37. Dionisiy 4 05.06.26 04:13 Сейчас в теме
(36)

Слабая модель которую гугл выкатил на днях гемма 4 12б, она уже не шмогла) хотя кванты Q8 были. Кстати свежее обновление ллама срр чтобы думающий режим включить нужно в системный промт добавить строчку <|think|>, без нее результаты у слабой модели вообще никакие, и сильная на 26б не доходит до конца. Еще теперь нужно писать - продолжай, надо разбираться что не так стало. Полный набор инструментов выкачивает (около 4к токенов), но видимо нужен еще системный промпт - или где-то в инструментах в самом начале, как известно на больших контекстах нужно в начале или конце важное оставлять, там нужно дать объяснение что такое клиент-сервер код, его контексты, модули форм и просто модули, потому что и слабая и сильная модели не используют поиск по взаимосвязям.

Самое первое где затык происходит find_symbol { наме, репо} - пустой ответ {"_meta":{"dependent_files":[]},"result":{"classes":[],"functions":[],"imports":[],"variables":[]}} и продолжаются поиски другими функциями, мне кажется если бы поиск выдал и модули и из модуля все остальное быстро происходило, а так из функций нужно вырабатывать скилл под конкретную модель ИИ.

А так оно добирается до кода лист_файлы и греп_код, рид_файл внутри регексы. Т.е. я задал подсказки что искать - Запись, регистр, у модели нет понимания, что запись у клиента всегда идет через модули сервера, а у них названия могут быть другими, без слов ЗаписатьРегистр и тем более что нужно заглянуть и проверить. Можно написать подробный промпт и он то будет работать, то не будет, можно подписаться на точную модель. Говорят сейчас модно 100 строк промпта, тогда всем проще будет ) Как я понял удел локальных моделей это лист и греп))

Лишить себя инструментов на начальном этапе довольно сложно, но скорее всего это правильно, нужно искать каких именно.
35. Sorm 110 04.06.26 17:26 Сейчас в теме
Надо будет подумать над парой новых инструментов:):)
38. Dionisiy 4 05.06.26 08:04 Сейчас в теме
(35)

Exclude reasoning from context в ллама решает проблему больших простыней от tools
также отключил get_file_summary
было 80к стало 11к

качество ответа даже улучшилось
а нет, пропустило важную часть, где было 80к было точнее, надо смотреть еще
39. Dionisiy 4 05.06.26 10:56 Сейчас в теме
(38)

а нет, как раз более точный был вариант с 11к ))
правда если делать еще один запрос, то начинаются замены кода типа

Новый Структура("ОбнаруженныйСсылка,
на
Новый Структура("ОбнаруженнаяСсылка,
40. Dionisiy 4 05.06.26 17:24 Сейчас в теме
ggml-org на HF перевыложил модель гемма 4 12б-it Q8 и она хоть и сожрала 100к, но обращение к tools буквально один раза делала! чтение файла и дала вариант действий через небольшую вставку совсем в другом месте и практически идеально подходящую, правда на форму не то что надо предложила, но это все равно лучше чем код от большой модели. Получается плотная модель на 12 работает лучше, чем 26 с MoE.
41. Sorm 110 06.06.26 07:11 Сейчас в теме
(40) Посмотрел модель. Dense-сеть -ну неудивительно, что даже при наличии малых размеров показывает относительно хорошее качество. Надо попробовать погонять ее у себя на локальном.
42. Dionisiy 4 07.06.26 17:04 Сейчас в теме
(41)

выложили интересные вещи 120 tok/s on 12GB VRAM with Gemma 4 12B QAT MTP
потестил тот же самый вопрос, скорость выросла в 2 раза, а сама модель Q4 + MTP Q8 опять дала новый код в той же функции, точный и форму даже хорошо предложила оформить. Пробовал модель которая q4 не qat она там выдумала, а эта даже без MTP вполне адекватна
43. Sorm 110 08.06.26 11:04 Сейчас в теме
(42)
выложили интересные вещи 120 tok/s on 12GB VRAM with Gemma 4 12B QAT MTP
- а контекст-то какой? И сколько кеша надо под такое квантование при указанном контексте?
45. Dionisiy 4 09.06.26 07:34 Сейчас в теме
(43)

у меня 9 Гб при 30к занимает 10 Гб при 100к, 13Гб при 240к - это вообще все вместе, а не кеш отдельно. кстати, ллама срр мастер MTP добавили для гем 4. Квантование Q4 QAT это гугл выкатил, других нет, гуфф унслот использую.
46. Sorm 110 09.06.26 10:40 Сейчас в теме
(45) Соблазнительно, соблазнительно... Надо попробовать. НО надо время найти!:):)
44. Sorm 110 08.06.26 11:07 Сейчас в теме
Выкатил обновление , в основном посвященное оптимизации работы, ну и добавилась пара методов.
47. Dionisiy 4 09.06.26 14:15 Сейчас в теме
(44)

Спасибо, потестировал на старых вопросах - стало 17к, а код тот же самый , упорно пытается взять read_file, отключил его, а вот summary гораздо легче стал, после него получить_функцию два раза и все.

добавлял системный промпт
<|think|>
use tool=code-index repo = unf

без него начинаются вопросы в чат, ну и может запустить поиск_функции на миллион токенов {
"name": "ПриСозданииНаСервере",
"repo": "unf"
}
если сказать что функция в этом же модуле, то вот так спросит

Сначала мне нужно увидеть текущий код функции ПриСозданииНаСервере, чтобы понять, куда именно вставить создание таблицы (чтобы она не "развалила" существующую верстку).

Пожалуйста, дай мне код функции ПриСозданииНаСервере (строки 36-73).
48. Sorm 110 14.06.26 20:21 Сейчас в теме
Выкатил множество обновлений за последнее время... Текущая версия 0.36
Для отправки сообщения требуется регистрация/авторизация